软考中级软件设计师——计算机系统篇

软考中级软件设计师备考建议 首先我说一下个人对这个考试的一个感受看法,我觉得软件设计师考试并不难,主要是不要被内心的恐惧吓倒,考试中心态真的很重要! 阅读详情

一、数据的表示和运算

1、进制转换

1. 常见进制类型
  • 二进制(B):基数为2(0,1),计算机底层使用。

  • 八进制(O):基数为8(0-7),3位二进制对应1位八进制。

  • 十进制(D):基数为10(0-9),人类常用。

  • 十六进制(H):基数为16(0-9, A-F),4位二进制对应1位十六进制。

2. 进制转换方法
  • 二进制 ↔ 八进制/十六进制:

    • 八进制:每3位二进制分一组,转换为1位八进制。

      例:二进制 101 110 011 → 八进制 5 6 3 → 563O 
      
    • 十六进制:每4位二进制分一组,转换为1位十六进制。

      例:二进制 1010 1111 → 十六进制 A F → AFH  
  • 十进制 ↔ 其他进制:

    • 除基取余法(整数部分):如十进制转二进制,反复除以2取余数,倒序排列。

    • 乘基取整法(小数部分):如十进制小数转二进制,反复乘2取整数部分,正序排列。

    • 示例:

      十进制 25.625 → 二进制  
      整数部分:25 ÷ 2 → 余数1 → 11001B  
      小数部分:0.625 × 2 = 1.25 → 取1,剩余0.25  
                0.25 × 2 = 0.5 → 取0,剩余0.5  
                0.5 × 2 = 1.0 → 取1  
      结果:11001.101B  

2、机器数表示(原码、反码、补码、移码)

1. 原码(Sign-Magnitude)
  • 定义:最高位为符号位(0正1负),其余位表示数值绝对值。

  • 范围:nn位原码范围:

  • 示例:8位原码中,+5 → 00000101,-5 → 10000101。

2. 反码(Ones' Complement)
  • 定义:正数与原码相同;负数符号位不变,数值位取反。

  • 范围:同原码。

  • 示例:-5的反码 → 11111010。

3. 补码(Two's Complement) ⭐️
  • 定义:正数与原码相同;负数符号位不变,数值位取反后+1。

  • 范围:nn位补码范围:

  • 优势:加减法统一为加法运算,无+0和-0歧义。

  • 示例:-5的补码 → 11111011。

4. 移码(Offset Binary)
  • 定义:补码符号位取反,常用于浮点数阶码表示。

  • 特点:方便比较大小(移码大的数实际值更大)。

  • 示例:补码11111011(-5)的移码 → 01111011。

5. 转换关系表(以8位、数值-5为例)
表示法二进制形式解释
原码10000101符号位1,数值部分0000101
反码11111010原码数值位取反
补码11111011反码+1
移码01111011补码符号位取反

3、浮点数表示与规格化

1. 浮点数格式(IEEE 754标准) ⭐️
  • 组成:

    • 符号位(S):1位,0正1负。

    • 阶码(E):移码表示,决定数值范围。

    • 尾数(M):隐含最高位1(规格化数),表示精度。

  • 单精度(32位):S(1) + E(8) + M(23)

  • 双精度(64位):S(1) + E(11) + M(52)

2. 规格化浮点数
  • 目的:通过调整阶码使尾数最高位为1(隐含存储,节省1位)。

  • 步骤:

    1. 将数值转换为二进制科学计数法形式:(B为偏移量,单精度127)。

    2. 调整阶码,使尾数首位为1(隐含不存储)。

  • 示例:

    十进制数 10.25 → 二进制 1010.01 → 规格化:1.01001 × 2^3  
    符号位 S=0  
    阶码 E = 3 + 127 = 130 → 移码表示 10000010  
    尾数 M = 01001(隐含最高位1,实际存储后23位)  
    最终32位表示:0 10000010 01001000000000000000000  
3. 特殊值处理
  • 非规格化数:阶码全0,尾数不隐含1(用于表示接近0的数)。

  • 无穷大:阶码全1,尾数全0。

  • NaN(非数):阶码全1,尾数非0。

4. 浮点数运算步骤
  1. 对阶(小阶向大阶对齐)。

  2. 尾数加减。

  3. 规格化处理。

  4. 舍入处理(可能引入精度误差)。

二、计算机组成与体系结构

1. 计算机体系结构分类

  • Flynn分类法(必考⭐️)

    • SISD:单指令单数据流(传统单核CPU)。

    • SIMD:单指令多数据流(GPU、向量处理器)。

    • MISD:多指令单数据流(理论模型,无实际应用)。

    • MIMD:多指令多数据流(多核CPU、分布式系统)。

  • 真题示例:
    (2022年) 多核处理器属于哪种体系结构?答案:MIMD。

2. 指令系统

1、常见寻址方式及分类

1. 立即寻址(Immediate Addressing)
  • 定义:操作数直接包含在指令中(即立即数)。

  • 特点:

    • 速度快:无需访问内存或寄存器。

    • 灵活性低:操作数为固定值,无法修改。

  • 指令格式:操作码 + 立即数

  • 示例:

    MOV AX, 1234H  ; 将立即数1234H送入AX寄存器
  • 应用场景:初始化寄存器或常量赋值。

2. 直接寻址(Direct Addressing)
  • 定义:指令中直接给出操作数的内存地址。

  • 特点:

    • 需访存:需根据地址访问内存。

    • 地址固定:代码重定位困难(地址硬编码)。

  • 指令格式:操作码 + 内存地址

  • 示例:

    MOV AX, [2000H]  ; 将地址2000H处的数据送入AX
  • 应用场景:访问全局变量或固定地址的硬件端口。

3. 间接寻址(Indirect Addressing)
  • 定义:指令中给出的地址是操作数地址的地址(需两次访存)。

  • 分类:

    • 寄存器间接寻址:地址存储在寄存器中。

      MOV AX, [BX]  ; BX中存储的是操作数的地址
    • 内存间接寻址:地址存储在内存中。

  • 特点:

    • 灵活:通过修改寄存器或内存中的地址,动态定位数据。

    • 速度慢:需多次访存。

  • 应用场景:指针操作、动态数据结构(如链表)。

4. 寄存器寻址(Register Addressing)
  • 定义:操作数直接存储在寄存器中。

  • 特点:

    • 速度最快:无需访存。

    • 资源有限:依赖寄存器数量。

  • 示例:

    ADD AX, BX  ; AX = AX + BX(操作数均在寄存器中)
  • 应用场景:高频运算操作。

5. 寄存器间接寻址(Register Indirect Addressing)
  • 定义:操作数的地址存储在寄存器中。

  • 特点:

    • 灵活性高:通过修改寄存器内容动态寻址。

    • 需一次访存:比寄存器寻址慢,但比内存间接寻址快。

  • 示例:

    MOV AX, [DI]  ; DI中存储操作数的地址
  • 应用场景:数组遍历、函数参数传递。

6. 相对寻址(Relative Addressing)
  • 定义:操作数地址 = 当前程序计数器(PC)值 + 偏移量。

  • 特点:

    • 支持地址重定位:代码可动态加载到内存任意位置。

    • 常用于跳转指令(如循环、条件分支)。

  • 示例:

    JMP +0AH  ; 跳转到PC当前值 + 0AH的地址
  • 应用场景:程序跳转、循环控制。

7. 基址寻址(Base Addressing)
  • 定义:操作数地址 = 基址寄存器内容 + 偏移量。

  • 特点:

    • 支持动态重定位:通过修改基址寄存器,程序可加载到不同内存区域。

    • 操作系统常用:管理进程地址空间。

  • 示例:

    MOV AX, [BP+10H]  ; BP为基址寄存器,偏移量10H
  • 应用场景:栈帧访问、内存分段管理。

8. 变址寻址(Indexed Addressing)
  • 定义:操作数地址 = 变址寄存器内容 + 基址。

  • 特点:

    • 适合数组访问:通过变址寄存器遍历数组元素。

  • 示例:

    MOV AX, ARRAY[SI]  ; SI为变址寄存器,ARRAY为基址
  • 应用场景:数组、字符串处理。

9. 堆栈寻址(Stack Addressing)
  • 定义:操作数通过堆栈指针(SP)隐式寻址。

  • 特点:

    • 后进先出(LIFO):通过PUSH/POP指令操作栈顶。

  • 示例:

    PUSH AX  ; 将AX压入栈顶
    POP BX   ; 将栈顶数据弹出到BX
  • 应用场景:函数调用、中断处理。

寻址方式操作数来源访存次数典型应用
立即寻址指令中的立即数0常量赋值
直接寻址指令中的内存地址1全局变量访问
寄存器寻址寄存器0高速运算
寄存器间接寻址寄存器中存储的地址1指针操作
相对寻址PC值 + 偏移量1条件跳转
基址寻址基址寄存器 + 偏移量1内存分段管理
变址寻址基址 + 变址寄存器1数组遍历

3.CISC vs RISC(对比表格必背⭐️)

特性CISCRISC
指令数量多(200+)少(约100)
指令复杂度复杂(硬件实现)简单(软件优化)
寄存器使用较少较多
典型代表x86架构(Intel/AMD)ARM架构、MIPS
  • 指令执行过程:取指 → 译码 → 执行 → 访存 → 写回。


三、存储系统

1. 存储层次结构(Cache-主存-辅存)

  • 局部性原理:

    • 时间局部性:最近被访问的数据可能再次被访问。

    • 空间局部性:相邻存储单元可能被连续访问。

  • 存储容量与速度关系:速度越快,容量越小(寄存器 > Cache > 内存 > 磁盘)。

2. Cache(高速缓存)

        作用:缓解CPU与主存之间的速度差异(CPU访问Cache比主存快10-100倍)。

        特点:

  • 容量小(KB~MB级)、速度极快(访问时间1~10ns)。

  • 通过硬件自动管理数据交换,对程序员透明。

  • 命中率与平均访问时间计算

    命中率:                

       平均访问时间 :

  • 映射方式:

    映射方式特点应用场景
    直接映射主存块固定映射到Cache的某一特定位置实现简单,冲突率高
    全相联映射主存块可映射到Cache的任意位置冲突率低,实现复杂
    组相联映射Cache分组,主存块映射到组内任意位置折中方案(如4路组相联)

3. 虚拟存储器

  • 页面置换算法

    算法描述特点
    FIFO淘汰最早进入的页面可能产生Belady异常
    LRU淘汰最久未使用的页面基于历史访问,实现复杂
    OPT淘汰未来最长时间不用的页面理论最优,无法实际应用

4.主存储器(内存)

1. 内存类型

  • RAM(随机存取存储器):

    • SRAM:速度快、成本高,用于Cache。

    • DRAM:速度较慢、容量大,用于主存。

  • ROM(只读存储器):存储固件(如BIOS),数据断电不丢失。

2. 内存编址与容量计算

  • 地址总线位数与寻址空间:

  • 真题示例:
    32位地址总线的最大寻址空间是多少?
    答案:

5.存储器分类

按存储介质分类

类别特点典型代表
半导体存储器基于半导体集成电路技术,速度快、体积小,部分断电后数据丢失(易失性)RAM(SRAM 用于高速缓存,速度快、功耗低、成本高;DRAM 用于主存,需定期刷新,容量大、成本低);ROM(PROM 可编程一次;EPROM 紫外线擦除可编程;EEPROM/Flash 电擦除可编程,用于 U 盘、SSD )
磁表面存储器利用磁性材料存储数据,非易失性,容量大,速度较慢硬盘(HDD,通过磁头读写磁盘表面磁道 )、磁带(顺序存取,用于大规模数据备份 )
光存储器利用激光读写数据,非易失性,容量大,便携性强CD - ROM/DVD/Blu - ray(用于软件分发、影视存储 )
新型存储器-相变存储器(PCM,结合 RAM 与非易失性特性 )、铁电存储器(FRAM,高速、低功耗、抗辐射 )

按存取方式分类

类别特点典型代表
随机存取存储器(RAM)可直接访问任意地址,存取时间与位置无关SRAM、DRAM(用于主存、Cache )
顺序存取存储器(SAM)必须按顺序访问数据,存取时间与位置相关磁带
直接存取存储器(DAS)直接定位到数据区域后顺序读取硬盘、光盘

按信息可保存性分类

类别特点典型代表
易失性存储器(Volatile Memory)断电后数据丢失RAM(SRAM、DRAM,用于主存、Cache )
非易失性存储器(Non - Volatile Memory)断电后数据保留ROM、Flash(用于 BIOS、SSD );HDD、光盘(用于长期数据存储 )

按功能与作用分类

类别特点典型代表
主存储器(内存)CPU 直接访问,速度快,容量较小,易失性DRAM(如 DDR4、DDR5 )
辅助存储器(外存)CPU 不能直接访问,需通过 I/O 接口,容量大,非易失性HDD、SSD、U 盘
高速缓存(Cache)位于 CPU 与主存之间,速度极快,容量极小(KB - MB 级)SRAM(L1、L2、L3 Cache )
寄存器位于 CPU 内部,速度最快,容量最小(存储当前指令或数据)-

按读写能力分类

类别特点典型代表
只读存储器(ROM)数据写入后不可修改,用于固件存储BIOS 芯片、嵌入式系统固件
读写存储器(RWM)支持多次读写操作RAM、Flash、HDD

四、中央处理器(CPU)

1. CPU核心组件

1. 运算器(ALU, Arithmetic Logic Unit)

  • 功能:执行算术运算(加减乘除)和逻辑运算(与或非)。

  • 核心部件:

    • ALU:实际执行运算的电路。

    • 累加器(ACC):临时存储运算结果。

    • 通用寄存器:存储中间数据(如AX、BX)。

2. 控制器(Control Unit)

  • 功能:从内存取指令、译码并控制各部件协同工作。

  • 核心部件:

    • 程序计数器(PC):存放下一条指令的地址。

    • 指令寄存器(IR):存放当前执行的指令。

    • 指令译码器(ID):解析指令操作码。

    • 时序发生器:生成时钟信号,同步各部件操作。

3. 寄存器组

  • 功能:高速存储单元,用于暂存指令、数据和地址。

  • 常见寄存器:

    • 数据寄存器(AX、BX、CX、DX)。

    • 地址寄存器(SP堆栈指针、BP基址指针)。

    • 状态寄存器(PSW):存储标志位(如进位、零标志)。

2. 流水线技术(必考计算题⭐️)

  • 原理:将指令处理过程分解为多个阶段并行执行,提高吞吐率。

  • 5级流水线:取指(IF)、译码(ID)、执行(EX)、访存(MEM)、写回(WB)。

  • 性能计算:

    • 吞吐率:

    • 加速比:

                

3.主频(时钟频率)

  • 定义:CPU每秒的时钟周期数(单位:GHz)。

  • 公式

        

4. CPI(Clock Per Instruction)

  • 定义:每条指令平均消耗的时钟周期数。

  • 公式:

5. MIPS(Million Instructions Per Second)

  • 定义:每秒执行百万条指令数。

  • 公式:

    ​

6. FLOPS(Floating-point Operations Per Second)

  • 定义:每秒浮点运算次数,衡量科学计算能力。

        


五、总线系统

1. 总线分类

1. 按功能分类(数地控⭐️)

总线类型功能特点
数据总线传输数据(双向)总线宽度决定一次传输的数据量(如32位总线一次传4字节)。
地址总线指定内存或设备的物理地址(单向)总线宽度决定寻址空间(如32位总线寻址4GB)。
控制总线传输控制信号(如时钟、中断、读写信号)协调各部件操作,确保时序正确。
2. 按位置分类
  • 片内总线:CPU内部寄存器与ALU之间的总线。

  • 系统总线:连接CPU、内存和I/O接口(如前端总线FSB)。

  • 外部总线:连接计算机与外设(如USB、SATA)。

3. 按传输方式分类
  • 并行总线:多位数据同时传输(如PCI、ISA),速度快但成本高。

  • 串行总线:数据逐位传输(如USB、SATA),成本低、抗干扰强。

2. 总线带宽计算

  • 公式:

3.常见总线标准

总线标准类型特点应用场景
PCI并行总线支持即插即用,带宽133MB/s(32位/33MHz)扩展卡(显卡、网卡)
PCIe串行总线点对点传输,高带宽(如PCIe 4.0 x16 ≈ 32GB/s)高性能显卡、SSD
USB串行总线热插拔、多设备级联,USB 3.2带宽20Gbps外设连接(U盘、鼠标)
SATA串行总线专为存储设计,SATA III带宽6Gbps硬盘、SSD
I²C串行总线两线制(时钟+数据),低成本嵌入式系统(传感器)

六、可靠性与校验码

1. 奇偶校验码(Parity Check)
  • 原理:在数据位后添加1位奇偶校验位,使整个数据中“1”的个数为奇数(奇校验)或偶数(偶校验)。

  • 特点:只能检测奇数位错误,无法纠错,码距为2。

  • 示例:数据 1010001,偶校验时校验位为 1(总共有4个1,偶数),完整数据为 10100011。


2. 海明码(Hamming Code) ⭐️(码距>=3 )
  • 功能:检测并纠正1位错误,检测2位错误。

  • 原理:

    • 校验位分布在数据位中特定位置(2^k2k位,如1,2,4,8…)。

    • 每个校验位覆盖特定数据位的奇偶性。

  • 计算步骤:

    1. 确定校验位数量:

      例:数据位4位 → 需3位校验位(2^3=8 >=4+3+1=8)。

    2. 分配校验位位置:

      • 校验位位于位置 P_1(1), P_2(2), P_4(4)。

    3. 计算校验位值:

      • 每个校验位覆盖其位置对应二进制中某位为1的数据位。

        校验位覆盖位(二进制标记)
        P_11,3,5,7,...(最低位为1)
        P_22,3,6,7,...(次低位为1)
        P_4P4,5,6,7,...(第三位为1)
    4. 纠错:

      • 接收方重新计算校验位,通过异或操作定位错误位。


3. 循环冗余校验码(CRC, Cyclic Redundancy Check) ⭐️
  • 功能:检测多位错误,广泛用于网络传输(如以太网、ZIP文件)。

  • 原理:

    • 通过多项式除法生成校验码,附加到数据末尾。

    • 关键参数:生成多项式(如CRC-16: x^{16} + x^{15} + x^2 + 1x16+x15+x2+1)。

  • 计算步骤:

    1. 数据左移:数据末尾补0(补位数=生成多项式次数)。

    2. 模2除法:用生成多项式对补0后的数据做模2除法,余数为CRC校验码。

    3. 附加校验码:将余数附加到原始数据后。

  • 示例(数据 110101,生成多项式 x^3 + x + 1x3+x+1 → 二进制 1011):

    1. 数据补3个0 → 110101000

    2. 模2除法求余数:

           1011 ) 110101000
                  ^1011
                   ------
                    1100
                   ^1011
                    ------
                     1110
                    ^1011
                     -----
                      1010
                     ^1011
                      -----
                        010  (余数为010)

      CRC码为 010,完整传输数据为 110101010。

4. 系统可靠性计算
  • 串联系统:

                

  • 并联系统:

                                


七、输入输出(I/O)系统

1. I/O控制方式

1. 程序查询方式(轮询)
  • 原理:CPU通过循环检测设备状态寄存器,确认设备是否就绪。

  • 特点:

  • CPU和I/0(外设)只能串行工作CPU需要一直轮询检查,长期处于忙等状态。CPU利用率低

  • 一次只能读/写一个宇

  • 由CPU将数放入内存。

2. 中断驱动方式
  • 原理:设备就绪后向CPU发送中断请求,CPU暂停当前任务处理I/O。

  • 特点:

  • I/O设备通过中断信号主动报告I/O操作已完成

  • CPU和I/0(外设)可并行工作

  • CPU利用率得到提升

  • 由CPU将数放入内存

3. DMA(直接存储器访问)方式 ⭐️
  • 原理:由DMA控制器直接管理数据传输,无需CPU干预。

  • 特点:

  • CPU和I/O(外设)可并行工作

  • 仅在传送数据块的开始和结束时需要CPU的干预

  • 由外设直接将数据放入内存

  • 一次读写的单位为“块”而不是字

4. 通道控制方式
  • 原理:专用I/O处理器(通道)管理多个设备,进一步解放CPU。

  • 特点:

    • 适用于大型系统(如服务器、数据中心)。

    • 通道类型:选择通道、多路通道。

2. 中断处理过程

1. 中断触发与请求
  • 触发条件:

    • 外部中断:硬件设备(如键盘、磁盘)通过中断控制器(如8259A)发送中断请求信号(IRQ)。

    • 内部中断:CPU执行指令时检测到异常(如除零、缺页)。

    • 软中断:程序主动调用中断指令(如INT 0x80触发系统调用)。

  • 中断请求信号:设备将中断请求发送到中断控制器,控制器汇总后向CPU发送INT信号。

2. 中断响应与现场保存
  • 中断响应条件:

    • CPU处于中断使能状态(IF标志位为1,对可屏蔽中断有效)。

    • 当前中断优先级高于正在处理的中断(若允许嵌套)。

  • 硬件自动完成的操作:

    1. 关中断:CPU自动清除IF标志位(防止中断嵌套,除非支持优先级抢占)。

    2. 保存现场:

      • 将程序计数器(PC) 和 程序状态字(PSW) 压入栈中。

      • 部分架构会保存部分通用寄存器(如x86由软件手动保存)。

    3. 获取中断向量:

      • 通过中断控制器或内部逻辑获取中断类型号(如IRQ0对应向量号0x08)。

      • 根据中断向量号查询中断向量表(IDT),获取中断服务程序(ISR)入口地址。

3. 中断服务程序(ISR)执行
  • ISR任务:

    1. 保护现场:手动保存其他寄存器(如AX、BX等)到栈中(硬件未自动保存时)。

    2. 处理中断:

      • 读取设备状态寄存器,确认中断来源(如键盘缓冲区有数据)。

      • 执行设备相关操作(如读取键盘输入、处理磁盘I/O完成)。

      • 清除设备中断请求(向设备发送确认信号)。

    3. 恢复现场:从栈中恢复手动保存的寄存器。

  • 中断嵌套处理(可选)

4. 中断返回与现场恢复
  • 中断返回指令

  • 硬件自动完成的操作:

    1. 从栈中恢复PC和PSW。

    2. 开中断:恢复IF标志位(CPU重新允许响应中断)。

  • 继续执行原程序:CPU从保存的PC地址继续执行被中断的任务。

特性中断(Interrupt)异常(Exception)
触发源外部设备或程序(异步)CPU执行指令时出错(同步)
处理方式可延迟响应(可屏蔽)必须立即处理(如缺页、除零)
返回行为通常返回到下一条指令可能终止程序或重新执行故障指令

八、加密技术与认证技术

1.加密技术分类

1. 对称加密(Symmetric Encryption)(私钥加密)
  • 原理:使用同一个密钥进行加密和解密。

  • 特点:加密速度快,适合大数据量加密。

  • 常见算法:

    • AES(Advanced Encryption Standard):128/192/256位密钥,广泛用于文件加密和网络通信(如Wi-Fi WPA2)。

    • DES(Data Encryption Standard):56位密钥,已因安全性不足被淘汰。

    • 3DES:DES的增强版,三次加密,速度较慢。

2. 非对称加密(Asymmetric Encryption)(公钥加密)
  • 原理:使用公钥加密、私钥解密(或私钥签名、公钥验证)。

  • 特点:解决密钥分发问题,支持数字签名。

  • 常见算法:

    • RSA:基于大素数分解,支持加密和签名,密钥长度通常2048位。

    • ECC(椭圆曲线加密):相同安全强度下密钥更短(如256位ECC ≈ 3072位RSA)。


2.认证技术

1. 数字摘要(Hash)
  • 原理:通过哈希函数(如SHA-256)生成固定长度的唯一摘要。

  • 特点:

    • 不可逆性:无法从摘要还原原始数据。

    • 抗碰撞性:不同数据生成相同摘要的概率极低。

  • 常见算法:

    • SHA-256:比特币、数字证书默认算法。

    • MD5(已不推荐):128位摘要,易受碰撞攻击。

2. 数字签名(Digital Signature)
  • 原理:

    1. 发送方用私钥对数据摘要加密,生成签名(不可否认性)。

    2. 接收方用公钥解密签名,验证摘要与数据是否一致。

  • 作用:

    • 完整性:数据未被篡改。

    • 不可否认性:发送方无法否认签名行为。

3. 数字证书(Digital Certificate)
  • 原理:由CA(证书颁发机构) 颁发的电子文件,包含公钥、持有者信息、CA签名等。

  • 标准格式:X.509。

  • 证书链验证:浏览器验证证书是否由受信任的CA签发(根证书 → 中间证书 → 终端证书)


3.混合加密系统

  • 原理:
    结合对称与非对称加密的优势:

    1. 使用非对称加密交换对称密钥(如TLS握手阶段)。

    2. 使用对称加密加密实际传输数据。


4.加密算法对比

类型算法示例密钥管理速度典型应用
对称加密AES、DES密钥分发困难快文件加密、会话加密
非对称加密RSA、ECC公钥公开,私钥保密慢密钥交换、数字签名
哈希算法SHA-256、MD5无密钥快数据完整性验证
软考中级|软件设计师-知识点整理 软件设计师考点知识卡片 阅读详情

相关推荐

软考中级-软件设计师 知识点整理(一篇就过了 建议收藏)

软考中级-软件设计师上午题知识点总结

片言可决讼,半纸能缚龙 17万+

中级软件设计师看这一篇就够了

我与我的小伙伴们在自己经历过中级软件设计师的报名、备考、以及考试之后给以后想要考中级软件设计师的你,提供了我们的一些经验与总结,希望你跟我们一样都可以顺利通过这个考试!

gurenchang的博客 2万+

从Oracle迁移数据到Hadoop

目标:把Oracle 下的数据文件迁移到 Hadoop , 数据表都是上亿条,每个数据表的空间都超过100G。 关键是建立数据文件是UTF8格式,这样数据中的汉字在Hadoop 里显示才正常。 平台:CentOS 6.10 工具:Python 2.7 cx_Oracle 库 Oracle10.2.0.4.0 Hadoop 2.7.2-transwarp-5.2.1 1. 查看表...

预则立 4237

带你了解二进制(基础篇)

1.什么是二进制 学习概念: 二进制是计算机技术中广泛采用的一种数制,二进制的数据用0和1表示,它的基数是二,进位原则是“”“逢二进一”(例01=1,11=2的一次方加1=3),借位规则是“借一当二”。 2.二进制转其他进制(基础) 1.二进制八进制 (注;三个数字为一个阶段,用二进制把一个阶段一个阶段拼起来) 例子:100001100 0012^2 141 2.二进制→十进制 (注;没有分阶段,十进制比较特殊,需要把每个数字代表...

m0_59619191的博客 1万+

SAP ABAP实战:如何用CVI_EI_INBOUND_MAIN批量更新BP邮箱(附完整代码)

本文深入解析了SAP ABAP中CVI_EI_INBOUND_MAIN函数在业务伙伴(BP)邮箱地址批量维护场景下的应用。通过详细讲解数据结构构建、关键参数(如任务参数'5')配置及完整代码示例,为开发者提供了一套高效、稳定的批量更新解决方案,并分享了性能优化与错误处理的最佳实践。

weixin_29228781的博客 77

UART全功能测试指南:环路/DMA/RS485/硬件流控实战

UART(通用异步收发器)是嵌入式系统中最基础的串行通信接口,其核心原理基于起始位、数据位、校验位与停止位的异步帧结构,依赖精确的波特率时钟同步与采样重建机制。在工业与物联网场景中,UART不仅需保障基本通信可靠性,更需支持DMA卸载、RS485半双工自动方向控制、RTS/CTS硬件流控等进阶能力,以提升实时性、抗干扰性与系统资源效率。典型应用涵盖调试日志输出、传感器数据采集、Modbus RTU总线通信及固件空中升级。本指南聚焦UART外设测试实践,覆盖环路自检、DMA吞吐验证、RS485时序对齐、硬件流

weixin_42599908的博客 133

中级软件设计师知识总结

内容包括:1.数据库模式2.ER模型3.关系代数与元组演算4.规范化理论5.并发控制6.数据库完整性约束7.分布式数据库8.数据仓库与数据挖掘文法的定义一个形式文法是一个有序四元组G=(V,T,S,P),其中:V:非终结符。不是语言组成部分,不是最终结果,可理解为占位符。大写字母代表,这种符号是可以推出其他符号的。T: 终结符。是语言的组成部分,是最终结果。以小写字母代表S:起始符。是语言的开始符号P:产生式。用终结符替代非终结符的规则文法的类型分为0型、1型、2型、3型。

weixin_38009144的博客 6万+

在后端设计中,GDSLL,LEF,DEF,SDF,SPEF,SDC各代表什么意思?前端和中端流程中,SVF,SAIF又代表什么意思?

在后端设计中,GDSLL,LEF,DEF,SDF,SPEF,SDC区别?前端和中端流程中,SVF,SAIF代表什么意思?

weixin_43274923的博客 1万+

软件设计师概述【软考】

计算机技术与软件专业技术资格(水平)考试——软件设计师【中级】概述

绯樱殇雪的博客 5008

实测对比:DJI O3、Walksnail Avatar、HDZero三大高清图传,谁才是低延迟王者?

本文对DJI O3、Walksnail Avatar V2和HDZero三大高清图传系统进行了实测对比,重点分析其在FPV飞行中的低延迟表现。通过专业测试环境和量化数据,揭示HDZero在原生低延迟架构上的优势,DJI O3在画质与延迟间的平衡,以及Walksnail的动态码率调整特点,为不同场景下的选购提供决策依据。

weixin_30756499的博客 446

EBSD数据转ABAQUS的inp文件实操指南

晶体塑性有限元模拟中,如何将材料微观组织表征数据转化为可计算的有限元模型,是连接实验与仿真的关键环节。EBSD技术能够获取材料表面的晶体取向、晶粒形貌和晶界分布信息,但这类数据需要经过格式解析、欧拉角转换、网格生成等步骤,才能被ABAQUS等有限元软件读取。通过将扫描点坐标映射为节点、按像素邻域生成单元,并将Bunge约定欧拉角变换为局部坐标系方向余弦,用户可以准确构建包含真实微观结构的inp文件模型。这一流程广泛应用于金属材料形变、织构演化及应力集中分析等研究场景,有效提升仿真结果与实验的一致性。围绕数据

weixin_42509513的博客 311

软考(中级-软件设计师)计算机系统篇(0921)

数值的转换、计算机内数据的表示,算术运算和逻辑运算,计算机系统组成。体系结构的分类和特性,存储系统。

简单分享个人成长之路 1633

Unity中语法糖带来的GC问题 ——那些看起来优雅、实际上在背后偷偷生垃圾的代码

*语法糖(Syntactic Sugar)**指的是编程语言中为了让代码更简洁、易读而提供的简便写法。比如C#中的foreachlambda表达式LINQ自动属性等。语法糖本身不是坏事,但在Unity等对GC敏感的环境下,要警惕语法糖带来的隐式内存分配。合理使用语法糖,关键场合用更“丑陋”但高效的写法,才能保证游戏流畅运行。下面我将更深入地分析Unity中语法糖导致GC的原理、具体场景、检测与优化技巧,并补充一些容易忽视的细节。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 518

软考(中级-软件设计师)计算机系统篇(1024)

排序,线性表,二叉树。查找,排序

简单分享个人成长之路 1975

《网络安全自学教程》- Windows基线检查加固

Windows安全配置,基线检查标准,基线加固方式

wangyuxiang946的博客 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

软考(中级-软件设计师)计算机系统篇(1018)

存储技术、层次结构、分类、Cache、性能分析、主存编址、主存扩展、Cache的三种映像、总线系统、磁盘阵列

简单分享个人成长之路 1198

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

软考(中级-软件设计师)计算机系统篇(1020)

算法、线性表、存储结构、栈、队列、数组、串、矩阵、广义表

简单分享个人成长之路 359

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【愚公系列】软考中级-软件设计师 001-计算机系统知识(考点简介)

软考中级-软件设计师是根据国家软件职业资格标准制定的一种软件设计师资格认证考试。该考试旨在评估考生在软件设计理论、软件工程方法和软件设计实践等方面的能力。软考中级-软件设计师考试内容包括软件工程基础知识、需求分析与软件设计、软件架构设计、软件详细设计、软件设计实践、软件设计管理和软件设计规范等方面的内容。考试形式主要为选择题和案例分析题,通过考试可以获得软考中级-软件设计师资格证书。软考中级-软件设计师资格证书是国家承认的软件设计师资格证明,具有一定的市场竞争力和职业发展空间。

愚公智库 9万+

软考--软件设计师——自学路线总结

对自己自学备考 软件设计师 进行总结,方便各位进行自学备考

m0_63932300的博客 7368

软考中级,软件设计师考试那些内容,考试大纲什么的?

(1)计算机与软件工程知识,考试时间为150分钟,笔试,选择题;(2)软件设计,考试时间为150分钟,笔试,问答题。上午综合知识选择题和下午软件设计题满分都是75分, 45分合格。软件设计师考试上午的综合知识选择题,覆盖的知识范围非常广,基本上涵盖了IT行业所需的大部分知识体系,包括硬件、操作系统、数据库、软件工程、面向对象等等。(1)掌握数据表示、算术和逻辑运算;(2)掌握相关的应用数学、离散数学的基础知识;(3)掌握计算机体系结构以及各主要部件的性能和基本工作原理;(4)掌握操作系统、程序设计语言的基础

qq123yyy的博客 2万+

软考中级-软件设计师 准备

软件设计师考试前期准备

Hanson的博客 2464

软考中级-软件设计师

cpu的组成:运算器、控制器、寄存器组、内部总线在汇编语言程序中,程序员可以直接访问通用寄存器以存取数据,可以访问状态寄存器以获取有关数据处理结果的相关信息,可以通过相对程序计数器进行寻址,但是不能访问指令寄存器。寻址方式:立即寻址方式:操作数直接在指令中,速度快,灵活性差直接寻址方式:指令存放的是操作数地址间接寻址方式:指令中存放了一个地址,这个地址对于的内容是操作数的地址寄存器寻址方式:寄存器存放操作数寄存器间接寻址方式:寄存器内存放的是操作数的地址。

weixin_65704814的博客 2197

软考中级软件设计师知识点总结

计算机组成与体系结构 CPU的组成(运算器与控制器) CPU执行指令的过程中,会自动修改PC的内容,PC是**指令计数器**,用来存放将要执行的下一条指令 ​ **对于指令寄存器**((IR)存放即将执行的指令, ​ **指令译码器(ID)**对指令中的操作码字段进行分析和解释, ​ **地址寄存器(AR)**,不是我们常用的CPU内部部件,其作用是用来保存当前CPU所要访问的内存单元或I/O设备的地址。 层次化存储体系 BIOS** (Basic Input Output System)(

qq_46030018的博客 6165

软考中级软件设计师-【计算机系统】必考题完整汇总【1】

进入专栏可以看到软件设计师所有上午题的题型总结。

潜意识Java的博客 2557

软件设计师考试都考什么内容

软件设计师是软考中级热门的科目之一,想要了解更多的软考中级软件设计师看这篇就够了,看完别忘记给我点个赞嘞!软设其实不难考,但是得花点时间去备考,理清所有的考点,教材虽厚并不是都是重点。因为已经考过了,一次通过。知识点考的范围挺多的但是中级软件设计师考的点没有很深入。(1)计算机与软件工程知识,考试时间为150分钟,笔试,选择题;(2)软件设计,考试时间为150分钟,笔试,问答题。上午综合知识选择题和下午软件设计题满分都是75分, 45分合格。软件设计师考试上午的综合知识选择题,覆盖的知识范围非常广,基本上涵

zzjjia的博客 6317
上一篇: 软考中级软件设计师——设计模式篇
下一篇: 软考中级软件设计师——数据结构篇
widder_
博客等级 码龄4年 244粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值