广州大学计算机组成原理课程设计
一.课设性质,目的,任务
《计算机组成与系统结构课程设计》是计算机学院各专业集中实践性环节之一,是学习完《计算机组成与系统结构》课程后进行的一次全面的综合练习。其目的是综合运用所学计算机原理知识,设计并实现一台模型计算机,以便巩固所学的知识,提高分析问题和解决问题的能力。
二.课设基本理论
1、掌握算术、逻辑、移位运算实验,熟悉ALU运算控制位的运用。
2、掌握存储器组织、读写方式及与总路线组成的数据通路,掌握地址总线、数据总线的工作原理。
3、掌握指令结构和指令取指、执行工作过程。
4、掌握CPU的微程序控制原理。
三. 题目
综合运用所学计算机原理知识,设计并实现具有以下16条指令的指令集结构的模型计算机:
编号 | 助记符 | 机器指令码 | 说明 |
0 | SUB Rd,Rs | 0000 RdRs 110 0000 0000 | Rd-Rs→Rd |
1 | ADD Rd,Rs | 0001 RdRs 110 0010 0000 | Rd+Rs→Rd |
2 | AND Rd,Rs | 0010 RdRs 110 0100 0000 | Rd&Rs→Rd (Rd和Rs相与) |
3 | DEC Rd | 0011 Rd00 110 0110 0000 | 将Rd值减1 |
4 | CLR Rd | 0100 Rd00 110 1000 0000 | 将Rd清零 |
5 | RL Rd | 0101 Rd00 110 1010 0000 | Rd循环左移一位 |
6 | RRC Rd | 0110 Rd00 110 1100 0000 | Rd带进位右移一位 |
7 | MOV Rd,Rs | 0111 RdRs 110 1110 0000 | Rs→Rd |
8 | LDI Rd,* | 1000 Rd00 XXXXXXXX 111 0000 0000 | 将指令中的立即数(第二字节)送入Rd |
9 | OUT IOH,Rs | 1001 00Rs Rs送到高字节显示 111 0010 0000 | Rs→i/o(数据开关)高字节 |
10 | LDA Rd,M | 1010 Rd00 XXXXXXXX XXXXXXXX 三个字节 将16位地址取出来 送到Rd寄存器 111 0100 0000 | [M] →Rd |
11 | STA M,Rs | 1011 00Rs XXXXXXXX XXXXXXXX 将Rs内容存到这16位地址中 111 0110 0000 | Rs→[M] |
12 | JMP M | 1100 0000 XXXXXXXX XXXXXXXX 跳转到某个地址 111 1000 0000 | [M]→PC,即跳转到M所指单元 |
13 | JZ M | 1101 0000 XXXXXXXX XXXXXXXX 111 1010 0000 | 当Z=1时,跳转到M所指单元 |
14 | JC M | 1110 0000 XXXXXXXX XXXXXXXX 111 1100 0000 | 当CY=1时,跳转到M所指单元 |
15 | HALT | 1111 0000 111 1110 0000 6A0 | 停机 |
设计提示:
1、上表中,机器指令码的高4位为指令操作码,M为16位存储器地址, Rs为源寄存器,Rd为目的寄存器,占2位,并规定:
Rs或Rd | 选定的寄存器 |
00 01 10 11 | R0 R1 R2 R3 |
2、在微程序中,微地址001为取指,微指令为BF FB F8。
3、各指令指行阶段微程序入口地址的确定方式:
微地址位号 | 10 9 | 8 7 6 5 | 4 3 2 1 0 |
内容 | 1 1 | IR7~IR4 | 0 0 0 0 0 |
例如,第5条指令”RL Rd” 的指令码为0101 Rd00 则指令码的高4位IR7~IR4为0101,由上表知,微程序入口微地址为: 11 0101 00000 ,即6A0H。
4、主要步骤:
(1)按照第3点的方法,给出所有16条指令的微程序入口微地址;
(2)通过分析每条指令的功能明确其的微程序流程,可参考实验指导书图3-4-1、图3-2-2、图3-3-1;
(3)写出每条微指令的微命令,即24个微控制位信号,可参考实验指导书表3.4.1、表3.2.1、表3.3.1和“微控制器编程手册”第2章。
(4)建议采用逐条指令设计实现的方式,一条实现并用汇编语句测试通过后(指令功能、下址顺序均正确)再进行下一条的设计。
5、检查
模型计算机设计完成后,用所给的测试程序check_1.asm(测12条非转移指令)和check_2.asm(测3条转移指令)检查正确性。检查方法:在测试程序中#load s本人的.IS微指令程序,实验箱电源关闭重启并连接,装载后选择“运行”或“单步”执行。
check_1.asm运行的正确结果为:寄存器R0R1R2R3分别显示00112233,IOH显示33。
check_2.asm运行的正确结果为:寄存器R0R1R2R3分别显示00112233,如果显示EE则执行有错误。
四.微程序流程图(树形图)
五.机器指令程序的说明(微指令地址,指令码,助记符)
- 实验源代码
过程分析:
Check20_1.ASM 实验源代码如下:
Check20_1.ASM 实验源代码如下:
2、微指令地址
;分段/RISC模型机指令系统;助记符 操作数 指令码 长度;-----------------------------------------------------;Rd-Rs→RdSUB R0,R0 00 1SUB R0,R1 01 1SUB R0,R2 02 1SUB R0,R3 03 1SUB R1,R0 04 1SUB R1,R1 05 1SUB R1,R2 06 1SUB R1,R3 07 1SUB R2,R0 08 1SUB R2,R1 09 1SUB R2,R2 0A 1SUB R2,R3 0B 1SUB R3,R0 0C 1SUB R3,R1 0D 1SUB R3,R2 0E 1SUB R3,R3 0F 1;Rd+Rs→RdADD R0,R0 10 1ADD R0,R1 11 1ADD R0,R2 12 1ADD R0,R3 13 1ADD R1,R0 14 1ADD R1,R1 15 1ADD R1,R2 16 1ADD R1,R3 17 1ADD R2,R0 18 1ADD R2,R1 19 1ADD R2,R2 1A 1ADD R2,R3 1B 1ADD R3,R0 1C 1ADD R3,R1 1D 1ADD R3,R2 1E 1ADD R3,R3 1F 1;Rd&Rs→Rd (Rd和Rs相与)AND R0,R0 20 1AND R0,R1 21 1AND R0,R2 22 1AND R0,R3 23 1AND R1,R0 24 1AND R1,R1 25 1AND R1,R2 26 1AND R1,R3 27 1AND R2,R0 28 1AND R2,R1 29 1AND R2,R2 2A 1AND R2,R3 2B 1AND R3,R0 2C 1AND R3,R1 2D 1AND R3,R2 2E 1AND R3,R3 2F 1;将Rd值减1DEC R0 30 1DEC R1 34 1DEC R2 38 1DEC R3 3C 1;将Rd清零CLR R0 40 1CLR R1 44 1CLR R2 48 1CLR R3 4C 1;Rd循环左移一位RL R0 50 1RL R1 54 1RL R2 58 1RL R3 5C 1;Rd带进位右移一位RRC R0 60 1RRC R1 64 1RRC R2 68 1RRC R3 6C 1;Rs→RdMOV R0,R0 70 1MOV R0,R1 71 1MOV R0,R2 72 1MOV R0,R3 73 1MOV R1,R0 74 1MOV R1,R1 75 1MOV R1,R2 76 1MOV R1,R3 77 1MOV R2,R0 78 1MOV R2,R1 79 1MOV R2,R2 7A 1MOV R2,R3 7B 1MOV R3,R0 7C 1MOV R3,R1 7D 1MOV R3,R2 7E 1MOV R3,R3 7F 1;将指令中的立即数(第二字节)送入RdLDI R0,* 80 2LDI R1,* 84 2LDI R2,* 88 2LDI R3,* 8C 2;Rs→I/O(数据开关)高字节OUT IOH,R0 90 1OUT IOH,R1 91 1OUT IOH,R2 92 1OUT IOH,R3 93 1;[M] →RdLDA R0,* A0 3LDA R1,* A4 3LDA R2,* A8 3LDA R3,* AC 3;Rs→[M]STA *,R0 B0 3STA *,R1 B1 3STA *,R2 B2 3STA *,R3 B3 3;[M]→PC,即跳转到M所指单元JMP * C0 3;当Z=1时,跳转到M所指单元JZ * D0 3;当CY=1时,跳转到M所指单元JC * E0 3;停机HALT "" F0 1
六.微型机微指令表
微址00002)1) | M23 | M22 | M21 | M20 | M19 | M18 | M17 | M16 | 代码 | M15 | M14 | M13 | M12 | M11 | M10 | M9 | M8 | 代码 | M7 | M6 | M5 | M4 | M3 | M2 | M1 | M0 | 代码 | 后续微址 | 说明 |
E/M | IP | MWR | R/M | o2 | o1 | O0 | OP | M | CN | S2 | S2 | S0 | X2 | X1 | X0 | XP | W | ALU | Iu | IE | IR | Icz | Ids | ||||||
0600 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 07 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 06 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 88 | +1 | Rd->AX |
0601 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 05 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 06 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00 | +1 | Rs->BX |
0602 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0F | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 91 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 92 | 0001 | AX-BX->Rd |
0620 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 07 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 06 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 88 | +1 | Rd->AX |
0621 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 05 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 06 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00 | +1 | Rs->BX |
0622 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0F | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 99 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 92 | 0001 | AX+BX->Rd |
0640 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 07 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 06 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 80 | +1 | Rd->AX |
0641 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 05 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 06 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00 | +1 | Rs->BX |
0642 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0F | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 11 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 92 | 0001 | AX&BX->Rd |
0660 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 07 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 06 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 80 | +1 | Rd->AX |
0661 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0F | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 29 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 92 | 0001 | AX-1->Rd |
0680 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 07 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 06 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | A0 | +1 | Rd->AX |
0681 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0F | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 21 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | B2 | 0001 | Ax=0->Rd |
06A0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 07 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 06 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 80 | +1 | Rd->AX |
06A1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0F | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | A9 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 92 | 0001 | RLA->Rd |
06C0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 07 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 06 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 80 | +1 | Rd->AX |
06C1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0F | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | A1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 92 | 0001 | RRCA->Rd |
06E0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0F | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 06 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 12 | 0001 | Rd=Rs |
0700 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 05 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 04 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00 | +1 | ROM->BX |
0701 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 4F | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 39 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 92 | 0001 | BX->Rd |
0720 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0A | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 06 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 12 | 0001 | Rs->IOH |
0740 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 05 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 04 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 20 | +1 | ROM->BL |
0741 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 44 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 34 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 20 | +1 | ROM->BH |
0742 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 43 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 39 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | C0 | +1 | BX->AR |
0743 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 8F | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 04 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 12 | 0001 | RAM->Rd |
0760 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 05 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 04 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 80 | +1 | ROM->BL |
0761 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 44 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 04 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00 | +1 | ROM->BH |
0762 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 43 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 39 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | C0 | +1 | BX->AR |
0763 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | A0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 06 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 12 | 0001 | Rs->RAM |
0780 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 07 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 04 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00 | +1 | ROM->BL |
0781 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 46 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 04 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00 | +1 | ROM->BH |
0782 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | C1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 01 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | D2 | 0001 | BX->PC |
07A0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 05 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 3C | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00 | +1 | ROM->BL |
07A1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 44 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 3C | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00 | +1 | ROM->BH |
07A2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 40 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 38 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 03 | 07A4 | 判定0标志 |
07A4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 38 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 12 | 0001 | 空操作 |
07A5 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | C1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 38 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | D2 | 0001 | BX->PC |
07C0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 05 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 04 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00 | +1 | ROM->BL |
07C1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 44 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 04 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00 | +1 | ROM->BH |
07C2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 40 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 05 | 07C4 | 判定CY标志 |
07C4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 12 | 0001 | 空操作 |
07C5 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | C1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 39 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | D2 | 0001 | BX->PC |
07E0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 07 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 07 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | C0 | +1 | PC->AX |
07E1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | C0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 29 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | D2 | 07E0 | AX-1->PC |
七.结果与指令调试过程
Check_1(截图)
Check_2(截图)
check20_1.asm程序的运行结果
check20_2.asm程序的运行结果
八.存在的问题和体会
1、过程中出现的问题:
(1)时序问题:
在设计RL(Rd循环左移一位)这条微指令时,由于时序关系设置不正确,导致RL指令执行的时序出错。后来重新检查RL指令对应的微指令的时序关系,并且使用CMStudio的时序分析工具进行调试,最终解决问题。
(2)在设计JZ,JC指令的时候,刚开始没有考虑到设计一个空操作,在逻辑上没有实现当CY进位/Z置零跳转是在标志位为1时,跳转到地址转移的微指令地址的下一个地址,出现直接跳转到地址转移的微指令地址入口的情况。后来分别在07A3和07C3设置空操作,并且在07A2和07C2出分别设置跳转地址07A4和07C4,最终解决问题。
2、心得体会:
- 针对需要取立即数的指令(比如 LDI 指令),在设计相应的微指令时,这些微指令应包括读取 ROM 的操作,同时,对于设置微指令的控制信号,要确保在执行指定指令时,能够将 ROM 中的立即数读取到 AX/BX 寄存器中。
- 在设计微指令时,要注意ROM和RAM的区别
ROM 寄存器(只读存储器): ROM 通常用于存储不变的固定数据,如程序代码或常数。在 CMStudio 中,可以通过设置 ROM 的地址线和数据线,将需要的数据存储在 ROM 中。ROM 寄存器一般是只读的,其内容在运行时不能被修改。
RAM 寄存器(随机存储器): RAM 用于存储可读写的数据,如变量、中间结果等。RAM 在 CMStudio 中设计时需要考虑写入和读取操作,以及地址的变化。RAM 寄存器的内容可以在运行时通过指令进行修改。
相关文章:
广州大学计算机组成原理课程设计
一.课设性质,目的,任务 《计算机组成与系统结构课程设计》是计算机学院各专业集中实践性环节之一,是学习完《计算机组成与系统结构》课程后进行的一次全面的综合练习。其目的是综合运用所学计算机原理知识,设计并实现一台模型计算…...
【漏洞复现】CVE-2021-45788 SQL Injection
漏洞信息 NVD - cve-2021-45788 Time-based SQL Injection vulnerabilities were found in Metersphere v1.15.4 via the “orders” parameter. Authenticated users can control the parameters in the “order by” statement, which causing SQL injection. API: /test…...
【Java基础面试题035】什么是Java泛型的上下界限定符?
回答重点 Java泛型的上下界限定符用于对泛型类型参数进行范围限制,主要有上界限定符和下届限定符。 1)上界限定符 (? extends T): 定义:通配符?的类型必须是T或者T的子类,保证集合元素一定是T或者T的子类作用&…...
无需GPU也能跑的修图神器(祛痣、去水印、去路人)
背景 在这个视觉内容创作盛行的时代,大家对图片质量要求愈发严苛。无论是日常分享的自拍照想祛痣变得完美无瑕,还是摄影作品需去水印彰显原创,亦或是旅游打卡照要去路人还原美景。如今,一款能在 CPU 上流畅运行的修改神器应运而生…...
R语言数据分析案例47-上海译文出版社旗舰店图书分析和可视化
一、研究背景 随着数字化时代的发展,图书出版行业面临着日益激烈的市场竞争。上海译文出版社作为一家知名的出版机构,其旗舰店的图书销售数据蕴含着丰富的信息。对最新入库图书进行深入分析和可视化呈现,有助于出版社更好地了解市场动态、读…...
牵手红娘:牵手App红娘助力“牵手”,脱单精准更便捷
随着互联网的普及,现代青年的社交圈层加速扩大,他们的恋爱观也正经历着前所未有的转变。在繁忙的工作之余,人们希望能够找到一种既高效又真诚的交友方式。于是,线上交友平台成为了他们寻找爱情的新选择。让不同文化背景、不同工作…...
什么是根服务器?有什么作用?
你知道什么是根服务器吗?在互联网的庞大架构中,根服务器很多人对它的了解并不深入。那么,根服务器到底是什么,它有什么作用呢? 什么是根服务器? 根服务器是互联网域名系统(DNS)的一部分,负责管理和维护最顶层的域名信息。简单…...
Tavily人工智能代理和检索增强生成应用设计的搜索引擎
Tavily人工智能代理和检索增强生成应用设计的搜索引擎 Tavily是一款专为人工智能代理和检索增强生成应用设计的搜索引擎.以下是其使用示例: 安装与配置 需先安装相应的包,并获取API密钥来设置环境变量. %pip install -qU "langchain-community>=0.2.11" tavi…...
web的五个Observer API
IntersectionObserver: 一个元素从不可见到可见,从可见到不可见 ??IntersectionObserver是一种浏览器提供的 JavaScript API,用于监测元素与视窗的交叉状态。它可以告诉开发者一个元素是否进入或离开视窗,以及两者的交叉区域的…...
CSS学习记录19
CSS文本效果 CSS text-overflow 属性规定应如何向用户呈现未显示的溢出的内容。 //裁剪 text-overflow: clip; //隐藏 text-overflow: ellipsis; CSS字换行(Word Wrapping) CSS word-wrap 属性使长文字能够被折断并换到下一行。 如果一个单词太长而…...
使用Amazon Bedrock的无服务器的智能工作流
使用Amazon Bedrock的无服务器的智能工作流 智能工作流基于用户输入处理不可预见的任务,比如发起API调用。无服务器架构可以高效地管理这些任务和不同的工作负载,而无需维护服务器,从而加快部署速度。 你将学习如何通过使用带有保护措施的智能…...
SDMTSP:粒子群优化算法PSO求解单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)
一、单仓库多旅行商问题 单仓库多旅行商问题(Single-Depot Multiple Travelling Salesman Problem, SD-MTSP):𝑚个推销员从同一座中心城市出发,访问其中一定数量的城市并且每座城市只能被某一个推销员访问一次&#x…...
Java中的访问修饰符:分类、作用及应用场景
在Java编程中,访问修饰符(Access Modifiers)是控制类、方法、变量和构造函数访问权限的关键工具。通过合理使用访问修饰符,可以有效地封装代码,保护数据,并确保代码的安全性和可维护性。本文将详细介绍Java…...
【day16】Java开发常用API
模块15回顾 在深入探讨模块16之前,让我们回顾一下【day15】中的重点内容: String类: 构造方法:String(), String(String s), String(char[] chars), String(byte[] bytes), String(char[] chars, int offset, int count), String…...
LLaMA-Factory(二)界面解析
这里写目录标题 1. 基础选项语言模型选择模型路径微调方法检查点路径量化等级量化方法提示模板RoPE加速方式 2.模型训练界面训练方式数据集超参数设置其他参数部分参数设置LoRA参数设置RLHF参数设置GaLore参数设置BAdam参数设置训练 3.评估预测界面4.Chat界面5.导出Export界面 …...
(14)CT137A- 动态数码管设计
(1)了解板卡原理图中数码管的特性:共阳极数码管,公共端连接了电源,FPGA IO口低电平有效,另外,可以看到位选端FPGA位选低电平时选通。 (2)刷新时间的设定:众所…...
RT-DETR学习笔记(2)
七、IOU-aware query selection 下图是原始DETR。content query 是初始化为0的label embedding, position query 是通过nn.Embedding初始化的一个嵌入矩阵,这两部分没有任何的先验信息,导致DETR的收敛慢。 RT-DETR则提出要给这两部分(conten…...
JS、JSX 和 TSX 的对比指南
JS、JSX 和 TSX 的对比指南 1. JavaScript (.js) 简介 JavaScript 是一种轻量级的、解释型的编程语言,是 Web 开发中最基础的语言之一。 优点 学习曲线较低,容易入门使用范围广泛,生态系统成熟灵活性高,支持多种编程范式不需…...
【STM32】RTT-Studio中HAL库开发教程十:EC800M-4G模块使用
文章目录 一、简介二、模块测试三、OneNet物联网配置四、完整代码五、测试验证 一、简介 EC800M4G是一款4G模块,本次实验主要是进行互联网的测试,模块测试,以及如何配置ONENET设备的相关参数,以及使用STM32F4来测试模块的数据上报…...
增加nginx配置文件(conf.d), 管理多个项目
1.切换到nginx目录下, 新建conf.d文件夹 mkdir conf.d 2.赋予conf.d权限 chmod 777 conf.d 3.进入conf.d, 编辑conf文件 vim zc_travel.conf server { listen 13101; server_name localhost;location / {root /home/baoxin/app/web/insight-radar-rcfx-pre/html_dev;index …...
服务器中了挖矿病毒-应急响应
事件:客户反映服务器响应很慢,出行卡顿,服务器操作系统为windows server 2008。 现场解决步骤: 1、打开任务管理器,看到一个javs.exe的程序,占用CPU使用率比较高,怀疑可能是木马。 2、右键打开…...
pid学习感悟
飞行控制PID算法——无人机飞控_飞控算法-CSDN博客 首先pid是对现测量值和目标值的差值,即偏差值的操作 p是线性操作,偏差越大,则对于控制单元操作的值越大 d是微分操作,我们知道微分其实就是数值变化的斜率,所以当偏…...
Centos7.9安装openldap+phpldapadmin+grafana配置LDAP登录最详细步骤 亲测100%能行
一、部署LDAP 1、安装LDAP yum install -y openldap-servers openldap-clients openldap openldap-devel compat-openldap openldap-servers-sql systemctl start slapd systemctl enable slapd2、创建第一个管理账号密码(设置为ldapadmin) slappass…...
唯品会C++面试题及参考答案
内存池怎么可以保证不会产生碎片? 内存池通过预先分配一块较大的内存区域,然后对这块内存进行管理,来减少碎片产生。 首先,内存池采用固定大小的内存块分配策略。比如,将内存池划分成大小相同的小块,当有内存分配请求时,就从这些固定大小的块中选取合适的进行分配。这种…...
Flask中@app.route()的methods参数详解
诸神缄默不语-个人CSDN博文目录 在 Flask 中,app.route 是用于定义路由的核心装饰器,开发者可以通过它为应用指定 URL 映射及相应的处理函数。在处理 HTTP 请求时,不同的业务场景需要支持不同的 HTTP 方法,而 app.route 的 metho…...
使用Grafana中按钮插件实现收发HTTP请求
最近项目中需要监控分布式集群的各项指标信息,需要用到PrometheusGrafana的技术栈实现对分布式集群的各个节点状态进行可视化显示,但是要求前端需要提供一个易用的接口让用户可以触发一些操作,例如负载高时进行负载均衡或弹性伸缩。网上找到的…...
workman服务端开发模式-应用开发-vue-element-admin挂载websocket
一、项目根目录main.js添加全局引入 import /utils/websocket 二、在根目录app.vue 中初始化WebSocket连接 <template><div id"app"><router-view /></div> </template><script>import store from ./store export default {n…...
堆排序【东北大学oj数据结构9-4】C++
堆排序是一种基于堆的数据结构的排序,是一种快速排序算法,可以在输入数组中实现排序处理(内存高效)。 堆排序可以实现如下: maxHeapify(A, i) l left(i) r right(i) // select the node which has the m…...
Linux RTC 驱动框架
目录 一、实时时钟(RTC)介绍1.1 概述1.2 功能1.3 应用场景1.4 工作原理1.5 对外接口1.6 常见 RTC 芯片1.7 在 Linux 系统中的应用1.8 注意事项 二、Linux 内核 RTC 驱动框架2.1 相关源码文件介绍2.2 核心数据结构2.2.1 struct rtc_device2.2.2 rtc_class…...
智能订餐:基于JSP的管理系统设计与优化
相关技术介绍 2.1 B/S结构 目前使用较多的开发结构模式大致可以包括C/S模式和B/S模式[5]。其中,C/S模式全称为客户端/服务器模式(Client/Server模式),B/S模式全称为浏览器/服务器模式(Browser/Server模式)。…...
Java基本查询(四)
JPA 查询All示例 JPA教程 - JPA查询All示例 我们可以在JPQL中使用带有子查询的ALL运算符。 List l em.createQuery("SELECT e FROM Professor e WHERE e.salary < " "ALL (SELECT d.salary FROM e.directs d)").getResultList();例子 下面的代码来自…...
【双指针算法】--复写零
文章目录 1. 题目2. 题目解析3. 代码 1. 题目 在线oj 给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 注意:请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改&a…...
leetcode hot100 两两交换链表之中的节点
24. 两两交换链表中的节点 已解答 中等 相关标签 相关企业 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换) # Definition fo…...
Yolo11改进策略:主干网络改进|FastVit与Yolo11完美融合,重参数重构Yolo11网络(全网首发)
文章目录 摘要FastViT:一种使用结构重新参数化的快速混合视觉变换器1、简介2、相关工作3、体系结构3.1、概述3.2、FastViT3.2.1、重新参数化跳过连接3.2.2、线性训练时间过参数化3.2.3、大核卷积4、实验4.1、图像分类4.2、鲁棒性评价4.3、3D Hand网格估计4.4、语义分割和目标检…...
vscode打开下一个文件的时候上一个文件会关闭
解决方法: 你可以通过设置 workbench.editor.enablePreview 来控制在 VS Code 中打开文件时是否会关闭上一个文件。将其设置为 false 可以防止这种行为。 {"workbench.editor.enablePreview": false } 在设置编辑器中显示 "workbench.editor.enab…...
windows使用zip包安装MySQL
windows通过zip包安装MySQL windows通过zip包安装MySQL下载MySQL的zip安装包创建安装目录和数据目录解压zip安装包创建配置目录 etc 和 配置文件 my.ini安装MySQL进入解压后的bin目录执行命令初始化执行命令安装 验证安装查看服务已安装 启动MySQL查看服务运行情况修改密码创建…...
【LeetCode每日一题】——415.字符串相加
文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 字符串 二【题目难度】 简单 三【题目编号】 415.字符串相加 四【题目描述】 给定两个字符…...
基于角色的访问控制(RBAC)在异构系统中的应用
在数字化蓬勃发展的当下,企业运营高度依赖各类异构系统。基于角色的访问控制(RBAC)成为管理这些系统中用户权限的核心策略。RBAC 依据组织内的岗位、职责定义角色,按角色分配权限,用户凭借所属角色获取相应访问权&…...
FPGA实现MIPI转FPD-Link车载同轴视频传输方案,基于IMX327+FPD953架构,提供工程源码和技术支持
目录 1、前言工程概述免责声明 2、相关方案推荐本博主所有FPGA工程项目-->汇总目录我这里已有的 MIPI 编解码方案 3、本 MIPI CSI-RX IP 介绍4、详细设计方案设计原理框图IMX327 及其配置FPD-Link视频串化-解串方案MIPI CSI RX图像 ISP 处理图像缓存HDMI输出工程源码架构 5、…...
远程控制macOS一直卡在100%,能连接上了却只显示了壁纸?
前言 前段时间有个朋友过来咨询关于Windows使用第三方远程软件(向日葵、Todesk等)远程连接控制macOS系统,但出现了一些奇奇怪怪的问题。 比如在连接的时候,一直卡在100%连接,对方的电脑却已经显示已经被控制的状态。…...
springboot中使用gdal将表中的空间数据转shapefile文件
springboot中使用gdal将表中的空间数据转shapefile文件 代码: // 样本导出-将样本表导出为shapefile,复制样本shp文件到临时目录下 sampleDir是文件夹pathpublic void setYbShapeFile(Yb yb, File sampleDir) {// 创建 前时项 和 后时项 文件夹File y…...
捋一捋相关性运算,以及DTD和NLP中的应用
捋一捋相关性运算,以及DTD和NLP中的应用 相关性和相干性,有木有傻傻分不清相关性数字信号的相关运算同维度信号的相关理解 相关--互相关--相干 回声消除过程如何套用这些知识相关性/相干性检测在DT中的应用参考 相关性和相干性,有木有傻傻分不清 这是容易混淆的两个…...
Calcite Web 项目常见问题解决方案
Calcite Web 项目常见问题解决方案 calcite-web Authoritative front-end development resources for Calcite design initiative. Includes extendable base components and styles, as well as a modular and efficient framework for ArcGIS properties. [这里是图片001] 项…...
3090. 每个字符最多出现两次的最长子字符串
题目内容: 给你一个字符串 s ,请找出满足每个字符最多出现两次的最长子字符串,并返回该 子字符串 的 最大 长度。 示例 1: 输入: s "bcbbbcba" 输出: 4 解释: 以下子字符串长…...
基于微信小程序的短视频系统(SpringBoot)+文档
💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…...
Git的简介
文章目录 一.Git是什么二.核心概念三.工作流程四.Git的优势 下载Git 推荐官网下载 官网地址 一.Git是什么 Git是一个分布式版本控制系统,用于跟踪文件的变化并协调多人对同一项目的开发工作。它就像是一个时光机器,能够记录文件在不同时间点的状态&…...
【XR】ATW
异步时间扭曲(Asynchronous Timewarp,简称ATW)是一种在虚拟现实(VR)技术中使用的算法,它通过生成中间帧来减少因帧率不足导致的抖动和延迟,从而提高用户体验。ATW技术在两个线程中完成时间扭曲的…...
记Fastjson2的一个报ConcurrentModificationException的bug
错误背景:fastjson2的parseObject方法,在spring webflux项目中被调用,有时会报java.util.ConcurrentModificationException错误。报错处的代码如下图: 改了半天与并发安全相关的代码,还是会报此错误。后来改变思路搜…...
JAVAweb学习日记(二)JavaScript
一、概念 二、JavaScript引入方式 三、JavaScript书写语法 输出语句: 变量: 数据类型、运算符、流程控制语句: 数据类型: 运算符: 字符串如果是 数字字符构成,先把读到的数字转为数字类型,后续…...
FPGA学习(基于小梅哥Xilinx FPGA)学习笔记
文章目录 一、整个工程的流程二、基于Vivado的FPGA开发流程实践(二选一多路器)什么是二选一多路器用verilog语言,Vivado软件进行该电路实现1、设计输入:Design Sources中的代码2、分析和综合:分析设计输入中是否有错误…...