海明校验码
- 2^k-1>=n+k
- 用奇偶性来检错和纠错的检验方法
循环冗余校验码CRC
解答:多项式:x^4+x^3+x+1 原始报文”11001010101”
除数是 11011,然后在原始报文加上多项式最高指数的个数位数
然后一直上1,然后余数剩下最高指数个数位数
指令操作数寻址方式
- 立即寻址方式:指令的地址码字段指出的不是地址,而是操作数本身
- 直接寻址方式:在指令的地址字段中直接指出操作数在主存中的地址
- 间接寻址方式:指令地址码字段所指向的存储单元中存储的是操作数的地址
- 寄存器寻址方式:指令中的地址码是寄存器的编号
指令系统
- CISC是复杂指令系统数量多,使用频率差别大,可变长格式,支持多种
- RISC是精简指令系统,数量少,使用频率接近定长格式,支持少,硬布线逻辑控制为主
流水线相关计算
- 流水线周期:指令分成不同执行段,其中执行时间最长的段为流水线周期
- 流水线执行时间:1条指令总执行时间+(总指令条数-1)*流水线周期
- 流水线吞吐率:总指令条数/流水线执行时间
- 流水线加速比:不使用流水线总执行时间/使用流水线总执行时间
快冲突概率高到低
直接映像->组相联映像->全相联映像
总线结构
1.从广义上讲,任何连接两个以上电子元器件的导线都可以称为总线,通常分为以下三类:
- 内部总线:内部芯片级别的总线,芯片与处理器之间通信的总线
- 系统总线:是板级总线,用于计算机内各部分之间的连接,具体分为数据总线(并行数据传输位数),
- 地址总线:(系统可管理的内存空间的 大小),控制总线(传送控制命令)。代表的有ISA总线,EISA总线,PCI总线
- 外部总线:设备一级的总线,微机和外部设备的总线。代表有Rs232 (串行总线),SCSI(并行总线),USB(通用串行总线,即插即用,支持热插拔)
加密技术
对称密钥
- DES:56位密钥,64位数据块,速度快
- 3DES:两个56位的密钥
- AES
- RC-5
- IDEA:128位密钥,64位数据块
非对称加密(公开密钥)
- RSA:512位(或1024位)
- Elgamal
- ECC:椭圆曲线算法
信息摘要算法:MD5(128位),SHA(160位)
同步与互斥
1.互斥信号量:对临界资源采用互斥访问,使用互斥信号量后其他进程无法访问,初值为1
2.同步信号量:对共享资源的访问控制,初值一般是共享资源的数量
死锁
1.死锁计算问题:n个进程,r的资源 发生死锁n * (r - 1);不发生死锁n*(r-1)+1
线程
1.线程是独立调度的最小单位,进程是拥有资源的最小单位
索引文件地址
计算方式:索引文件大小/物理盘大小 = 物理块,然后存放数据就是物理块索引文件大小,这是一级间接
二级间接是 在一级的间接上物理块
位示图
计算方式:在第几个字: 多少号物理块/字长
需要多少个字: 容量/物理块大小/字长
三级模式-两级映像
- 内模式:管理如何存储物理的数据,对应具体物理存储文件
- 模式:我们通常使用的基本表
- 外模式:对应数据库中的视图
外模式-模式映像:表和视图之间的映像。
模式-内模式映像:表和数据的物理存储之间的映射
数据库设计
- 需求分析:及分析数据存储的要求,产出物有数据流图,数据字典,需求说明书
- 概念结构设计:就是设计E-R图,也即实体-属性图
- 逻辑结构设计:将E-R图,转换成关系模式
- 物理设计:根据生成的表的概念,生成物理数据库
模式分解
- 分解p具有无损连接性的充分必要条件:R1 交 R2 -> (R1-R2)或者
- R1 交 R2 -> (R2 - R1)
分布透明性
- 分片透明性:用户或应用程序不需要知道逻辑上访问的表具体是如何分块存储的。
- 位置透明性:应用程序不关心数据存储物理位置的改变
- 逻辑透明性:用户或应用程序无需知道局部使用是那种数据模型
- 复制透明性:用户或应用程序不关心复制的数据从何而来
自上而下语法:最左推导,从左至右。
自下而上语法分析:最右推导,从右至左。
二叉树
- 二叉树第i层上最多有2^i-1个结点
- 高度为k的二叉树最多有2^k-1个结点
- 具有n个结点的完全二叉树的深度为floor(log2n) + 1;
图
- n个节点的连线数为n*(n-1)/2
查找
- 折半查找的时间复杂度为O(log2n);
软件过程模型
- 瀑布模型:只适用于需求明确或者二次开发(需求稳定)
- V模型:增加了很多轮测试,测试贯穿于软件开发的 各个阶段
- 原型:需求不明确的情况
- 螺旋模型:增加了风险分析
- 增量模型:首先开发核心模块功能,每一层增量版本都可作为独立可操作的作品
- 喷泉模型:面向对象的开发方法
进度管理
- Gantt图:无法反应活动之间的依赖关系
- PERT图:无法反应活动之间的并行关系
关键路径
- 最早开始时间:取所有前驱活动最早完成时间的最大值
- 最早完成时间:最早开始时间+活动本身时间
- 关键路径:项目中耗时最长的一条线
- 最晚完成:取后续活动最晚开始时间的最小值
- 最晚开始时间:最晚完成-活动本身时间
- 松弛时间:最晚开始时间-最早开始时间
软件容错技术
- 结构冗余:分为静态和动态,混合冗余
- 信息冗余:为检错和纠错在数据上加上一段额外的信息,例如校验码原理
- 时间冗余:遇到错误是重复执行
- 冗余附加技术:冗余附加技术是指为实现结构,信息和时间冗余技术所需的资源和技术。
配置数据库
- 开发库:专供开发人员使用,其中的信息可能做频繁修改,对其控制相当宽松
- 受控库:在生存期某一阶段工作结束时发布的阶段产品
- 产品库:作为最终产品存入产品库,等待交付用户或现场安装
软件风险
- 不确定性
- 损失
风险控制
- 风险避免
- 风险监控
- RMMM计划(风险缓解,监控和管理计划)
内聚低到高
- 偶然内聚:无直接关系
- 逻辑内聚:逻辑相似,参数决定
- 时间内聚:同时执行
- 过程内聚:指定的过程顺序
- 通信内聚:相同数据结构,相同输入输出
- 顺序内聚:顺序执行,输入为输出
- 功能内聚:共同作用,缺一不可
耦合低到高
- 无直接耦合:无直接关系
- 数据耦合:传递数据值调用
- 标记耦合:传递数据结构
- 控制耦合:控制变量,选择执行某一功能
- 外部耦合:软件外部环境
- 公共耦合:公共数据结构
- 内容耦合:模块内部关联
系统设计
- 概要设计基本任务:设计软件系统总体结构,数据结构及数据库设计,编写概要设计文档,评审
- 详细设计的基本任务:模块内详细算法设计,模块内数据结构设计,数据库的物理设计,其他设计(代码,输入/输出格式,用户界面),编写详细设计说明书,评审。
模块的作用范围应在其控制范围之内
测试阶段
- 单元测试:对单个模块进行测试
- 集成测试:将模块组合起来进行测试
- 确认测试:对已完成的软件进行功能上的测试
- 系统测试:对软件性能测试
- 回归测试:软件修改错误或变更后,进行测试。
设计模式
创建型
- Abstract Factory : 抽象接口
- Builder:类和构造分离
- Factory Method: 子类决定实例化
- Prototype:原型实例,拷贝
- Singleton:唯一实例
结构型
- Adapter: 转换,兼容接口
- Bridge:抽象和实现分离
- Composite:整体-部分树形结构
- Decorator: 附加职责
- Facade:对外统一接口
- Flyweight:细粒度,共享
- Proxy:代理
行为型设计
- Chain of Responsibility: 传递请求,职责,链接
- Command:参数化,日志记录
- Interpreter:文法,解释
- Iterator:顺序访问
- Mediator:不直接引用
- Memento:保存,恢复
- Observe:通知,自动更新
- State:状态变成类
- Strategy:算法替换