大纲
1、数据表示
- R进制转10进制按权展开相加
- 10进制转R进制,按R进行短除法
- 2进制转8进制与16进制(划位转法)
- 原、 反、补、移
| 数值1 | 数值-1 | 1-1 | |
|---|---|---|---|
| 原码 | 0000 0001 | 1000 0001 | 1000 0010 |
| 反码 | 0000 0001 | 1111 1110 | 1111 1111 |
| 补码 | 0000 0001 | 1111 1111 | 0000 0000 |
| 移码 | 1000 0001 | 0111 1111 | 1000 0000 |
- 正数-反码、补码和源码相等
- 负数-反码最高位(符号位)不变,其他按位取反, 负数补码在饭吗的基础上+1
- 移码-补码的基础上将符号位进行取反
- 表示范围
| 整数 | |
|---|---|
| 原码 | -(-2^n-1^-1)~2^n-1^ -1 |
| 反码 | -(2^n-1^-1)~2^n-1^ -1 |
| 补码 | -2^n-1^~2^n-1^ -1 |
- 浮点数运算->对阶-尾数计算-结果格式化
2、计算机结构
1. CPU
- 运算器
- 算术逻辑运算ALU
- 累加存储器AC
- 数据缓冲寄存器DR
- 状态条件寄存器PSW
- 控制器
- 程序计数器PC
- 志林寄存器IR
- 指令译码器
- 时序部件
- 主存储器
2. 计算机体系结构分类-Flynn
| 体系结构类型 | 结构 | 关键性 | 代表 |
|---|---|---|---|
| 单指令流单数据流SISD | 控制器部分:一个 处理器:一个 主存模块:一个 |
单处理器系统 | |
| 单指令流多数据流 SIMD |
控制部分:一个 处理器:多个 主存模块:多个 |
各处理器以异步的形式执行同一条指令 | 并行处理机 阵列处理机 超级向量处理机 |
| 多指令流单数据流 MISD |
控制部分:多个 处理器:一个 主存模块:多个 |
至少证明不可能,至少是不实际 | 目前没有,有文献称流水线计算机为此类 |
| 多指令流多数据流 MIMD |
控制部分:多个 处理器:多个 主存模块:多个 |
能够实现作业、任务、指令等各级全面并行 | 多处理机系统多计算机 |
- CISC与RISC(选择,描述)
指令系统类型 指令 寻址方式 实现方式 其他 类型 CISC(复杂) 数量多,使用频率差别大,可变长格式 支持多种 微程序控制技术(微码) 研制周期长 专用设备,需要预设各个指令 RISC(精简) 数量少,使用频率接近,定长格式,大部分分为单周期指令,操作寄存器,只有Load/Store操作内存 支持方式少 增加了通用寄存器;硬布线逻辑控制为主;适合采用流水线 优化编译,有效支持高级语言 通用设备
3. 流水线
步骤:取指-分析-执行
流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度
流水线计算
流水线吞吐率
流水线的加速比
流水线的效率
4. 存储
层次化存储结构
Cache - 概念
Cache的功能:提高CPU数据输入输出的速率,突破冯诺·依曼瓶颈,即CPU与存储系统间数据传送宽带限制
在计算机的存储系统体系中,Cache是访问速度最快的层次
使用Cache改善系统性能的依据是程序的局部性原理
如果以
h代表对Cache的访问命中率,t1表示Cache的周期时间,t2表示贮存周期时间,以读操作为例,使用Cache+主存存储器的系统的平均周期为t3,则$t
3= h*t1+(1-h)*t2$其中,(1-h)又称为失败率(未命中率)
局部性原理
- 时间局部性
- 空间局部性
- 工作集理论:工作集是进程运行时被频繁访问的页面集合
主存-分类
磁盘结构与参数
总线
根据总线所处的位置不同,总线通常被分为三种类型,分别是
- 内部总线
- 系统总线
- 数据总线
- 地址总线
- 控制总线
- 外部总线
系统可靠性分析-串联系统与并联系统
- 串联 R = R
1x R2x … x Rn失效率 λ = λ1+ λ2+ … + λn - 并联 R = 1- (1-R
1)x(1- R2)x…x(1-Rn)
- 串联 R = R
校验码-循环校验码CRC
校验码-海明校验码
例:求信息1011的海明吗
2^r^ >=4+r+1,确定校验码为3位:2^3^>=4+3+1。分别放在2^0^=1、2^1^=2、2^2^=4位
延伸:2^r^ >=x+r+1
r 为校验码位数,x为待求信息的位数
3、操作系统
1. 进程管理
1. PV操作
同步与互斥
同步-资源共享
互斥-异步操作
- 临界资源:诸进程间需要互斥方式对其进行共享的资源
- 临界区:每个进程中访问临界资源的那段代码称为临界区
- 信号量:是一种特殊的变量
2. 死锁
- 进程管理是操作系统的核心,但如果设计不当,就会出现死锁的问题。如果一个进程在等待一件不可能发生的事,则进程就死锁了。而如果一个或多个进程产生死锁,就会造成系统死锁。
最少需要的资源数:k(n-1)+1
k为进程数,n为需要的资源数 - 死锁问题
graph TB; A((互斥))-->B; B((保持和等待))-->C; C((不剥夺))-->D; D((环路等待))-->A B-->E[死锁的预防]; E-->F[打破四大条件]; B-->G[死锁的避免]; G-->H[有序资源分配法]; G-->I[银行家算法];
- 银行家算法
银行家算法-分配资源的原则- 当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进
- 进程可以分期请求资源,但请求的总数不能超过最大需求量
- 当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配但总能使进程在有限的时间里得到资源
2.存储管理
1. 分区存储组织
分配算法
- 首次适应法-在第一次满足分配的地方进行分配
- 最佳适应法-按大小顺序连成一个链,用最小的一个进行比较,第一个满足的就进行分配—缺点:剩余碎片多
- 最差适应法
- 循环首次适应法-将剩余的区域连成环状,顺次的来分配—分配时比较均匀
2. 页式存储组织
3. 段式存储
4. 段页式存储
5. 快存
快表是一块小容量的相联存储器(Associative Memory),由高速缓存器组成速度快,并且可以从硬件上保证按内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号。
6. 页面置换算法
- 最优(Optimal,OPT) —理论算法
- 算法随机(RAND)算法 —不稳定
- 先进先出(FIFO)算法:有可能产生“抖动”。例如,432143543215序列,用3个页面,比4个缺页要少
- 最近最少使用(LRU)算法:不会“抖动”
注: 程序在运行时,指令是一次性读入,只会产生一次中断
7. 索引文件结构
标准:13个地址(13个地址对应13个盘块,盘块再去存内容)
规定:0-9个物理盘块存直接索引
第10个为物理盘块,又存放物理盘块的地址,一个地址才存一个索引内容 容量大小:父盘块大小*子盘块数量(=复盘块的大小/子盘块的大小)
地址对应盘块,盘块进行内容存储
缺点:间接级别越多访问效率越低
8. 文件和属性目录结构
9. 空闲存储空间管理
- 空闲区表法(空闲文件目录)
- 空闲链表法
- 位示图法 **
- 成组链表法
3.设备管理
1. 数据传输控制方式
2. 虚设备与SPOOLING技术
4.微内核操作系统
| 实质 | 优点 | 缺点 | |
|---|---|---|---|
| 单体内核 | 将图形、设备驱动及文件系统等功能全部在内核中实现,运行在内核状态和同一地址空间。 | 减少进程间通信和状态切换的系统开销,获得较高的运行效率。 | 内核庞大,占用资源较多且不易剪裁。系统的稳定性和安全性不好。 |
| 微内核 | 只实现基本功能,将图形系统、文件系统、设备驱动及通信功能放在内核之外。 | 内核精练,便于剪裁和移植。系统服务程序运行在用户地址空间,系统的可靠性、稳定性和安全性较高。可用于分布式系统 | 用户状态和内核状态需要频繁切换,从而导致系统效率不如单体内核。 |
4、数据库系统
1. 三级模式-两级映射
2. 数据库设计过程
3. E-R图
- 集成的方法:
- 多个局部E-R图一次集成。
- 逐步集成,用累加的方式一次集成两个局部E-R。
- 集成产生的冲突及解决办法:
属性冲突:包括属性域冲突和属性取值冲突。
命名冲突:包括同名异义和异名同义。
结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同。
多对多关系最少需要转成 n-1个实体 n>=2
4. 关系代数
并(∪)、交(∩)、差(补)(-)、笛卡尔积(×)、投影(π)、选择(σ)、联接
5. 规范化理论
1.函数依赖
设R(U)是属性U上的一个关系模式,X和Y是U的子集,r为R的任一关系,如果对于r中的任意两个元组u,v,只要有u[X]=v[X],就有u[Y]=v[Y],则称X函数决定Y,或称Y函数依赖于x,记为X→Y。
2.价值与用途
非规范化的关系模式,可能存在的问题包括:数据冗余、更新异常、插入异常、删除异常
3.键
graph TB; A(超键)--消除多与属性-->B(候选键) A-->C[唯一标识元祖] B--任选一个-->D(主键) E(外键)-->F[其他关系的主键]
4.求解候选键
- 将关系模式的函数依赖关系用“有向图”的方式表示
- 找入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键
- 若入度为O的属性集不能遍历图中所有结点,则需要尝试性的将一些中间结点(既有入度,也有出度的结点)并入入度为0的属性集中,直至该集合能遍历所有结点,集合为候选键
5.范式
graph TB; A(1NF)--消除非主键属性对候选键的依赖-->B A -->E[属性值都是不可分的原子值] B(2NF)--消除非主键属性对候选键的传递依赖-->C C(3NF)--消除主属性对候选键的依赖-->D(BCNF)
- 第一范式
第一范式(1NF):在关系模式R中,当且仅当所有域只包含原子值,即每个分量都是不可再分的数据项,则称R是第一范式。 - 第二范式
第二范式(2NF):当且仅当R是1NF,且每一个非主属性完全依赖主键(不存在部分依赖)时,则称R是第二范式。 - 第三范式
第三范式(3NF):当且仅当R是1NF,且E中没有非主属性传递依赖于码时,则称R是第三范式。 - BC范式
BC范式(BCNF)):设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。
6. 模式分解
- 保持函数依赖分解
设数据库模式p={R1,R2,…,Rk}是关系模式R的一个分解,F是R上的函数依赖集,0中每个模式Ri上的FD集是Fi。如果{F1,F2,…,Fk}与F是等价的(即相互逻辑蕴涵),那么称分解p保持FD - 无损分解
什么是有损,什么又是无损?有损:不能还原。
无损:可以还原。 - 无损联接分解:指将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式
6. 并发控制
1. 存在的问题
- 丢失更新
- 不可重复读
- 读脏数据
2. 封锁协议
- 一级封锁协议。事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。可防止丢失修改
- 二级封锁协议。一级封锁协议加上事务T在读取数据R之前先对其加S锁,读完后即可释放S锁。可防止丢失修改,还可防止读“脏”数据
- 三级封锁协议。一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放。可防止丢失修改、防止读“脏”数据与防止数据重复读
- 两段锁协议。可串行化的。可能发生死锁
3. 数据库完整性约束
- 实体完整性约束
- 参照完整性约束
- 用户自定义完整性约束
- 触发器
目的:提高数据可靠性
7. 数据库安全
| 措施 | 说明 |
|---|---|
| 用户标识和鉴定 | 最外层的安全保护措施,可以使用用户帐户、口令及随机数检验等方式 |
| 存取控制 | 对用户进行授权,包括操作类型(如查找、插入、删除、修改等动作)和数据对象(主要是数据范围)的权限。 |
| 密码存储和传输 | 对远程终端信息用密码传输 |
| 视图的保护 | 对视图进行授权 |
| 审计 | 使用一个专用文件或数据库,自动将用户对数据库的所有操作记录下来 |
8. 数据备份
- 冷备份也称为静态备份,是将数据库正常关闭,在停止状态下,将数据库的文件全部备份(复制)下来。
- 热备份也称为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。
备份方式 \ 有点 优点 缺点 冷备份 非常快速的备份方法(只需复制文件);容易归档(简单复制即可);容易恢复到某个时间点上(只需将文件再复制回去);能与归档方法相结合,做数据库”最佳状态”的恢复﹔低度维护,高度安全 单独使用时,只能提供到某一时间点上的恢复﹔在实施备份的全过程中,数据库必须要作备份而不能做其他工作;若磁盘空间有限只能复制到磁带等其他外部存储设备上,速度会很慢;不能按表或按用户恢复 热备奋 可在表空间或数据库文件级备份,备份的时间短;备份时数据库仍可使用;可达到秒级恢复(恢复到某一时间点上);可对几乎所有数据库实体做恢复﹔恢复是快速的 不能出错,否则后果严重;若热备份不成功所得结果不可用于时间点的恢复;因难于维护,所以要特别小心,不允许”以失败告终” - 完全备份:备份所有数据
- 差量备份:仅备份上一次完全备份之后变化的数据
- 增量备份:备份上一次备份之后变化的数据
(1)静态海量转储:在系统中无运行事务时进行,每次转储全部数据库。
(2)静态增量转储:在系统中无运行事务时进行,每次只转储上一次转储后更新过的数据。
(3)动态海量转储:转储期间允许对数据库进行存取或修改,每次转储全部数据库。
(4)动态增量转储:转储期间允许对数据库进行存取或修改,每次只转储上一次转储后更新过的数据。
日志文件:事务日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中
9. 数据库故障与恢复
| 故障关系 | 故障原因 | 解决方法 |
|---|---|---|
| 事务本身的可预期故障 | 本身逻辑 | 在程序中预先设置Ro11back语句 |
| 事务本身的不可预期故障 | 算术溢出、违反存储保护 | 由DBMS的恢复子系统通过日志,撤消事务对数据库的修改,回退到事务初始状态 |
| 系统故障 | 系统停止运转 | 通常使用检查点法 |
| 介质故障 | 外存被破坏 | 一般使用日志重做业务 |
10. 数据仓库与数据挖掘
- 面向主题
- 集成的
- 相对稳定的(非易失的)
- 反映历史变化(随着时间变化)
1.数据挖掘方法
- 决策树
- 神经网络
- 遗传算法
- 关联规则挖掘算法
2.分类
- 关联分析:挖掘出隐藏在数据间的相互关系。
- 序列模式分析∶侧重点是分析数据间的前后关系(因果关系)。
- 分类分析:为每一个记录赋予一个标记再按标记分类。
- 聚类分析:分类分析法的逆过程。
11. 反规范化技术
由于规范化会使表不断的拆分,从而导致数据表过多。这样虽然减少了数据冗余,提高了增、删、改的速度,但会增加查询的工作量。系统需要进行多次连接,才能进行查询操作,使得系统效率大大下降
技术手段
- 增加派生性冗余列
- 增加冗余列
- 重新组表
- 分割表
12. 大数据
- 数据量-Volume
- 速度-Velocity
- 多样性-Variety
- 值-Value
比较维度 传统数据 大数据 数据量 GB或TB级 PB级或以上 数据分析需求 现有数据的分析与检测 深度分析(关联分析、回归分析) 硬件平台高 端服务器 集群平台 大数据处理系统应该具有的重要特征 - 高度可扩展性
- 高性能
- 高度容错
- 支持异构环境
- 较短的分析延迟
- 易用且开放的接口
- 较低成本
- 向下兼容性
5、计算机网络
1. OSI/RM七层模型
| 层次 | 名称 | 主要功能 | 主要设备及协议 |
|---|---|---|---|
| 7 | 应用层 | 实现具体的应用功能 | POP3、FTP、HTTP、Telnet、SMTP |
| 6 | 表示层 | 数据的格式与表达、加密、压缩 | DHCP、TFTP、SNMP、DNS |
| 5 | 会话层 | 建立、管理和终止会话 | |
| 4 | 传输层 | 端到端的连接 | TCP、UDP |
| 3 | 网络层 | 分组传输和路由选择 | 三层交换机、路由器,ARP、RARP、IP、ICMP、IGMP网桥、交换机、网卡 |
| 2 | 数据链路层 | 传送以帧为单位的信息 | PPTP、L2TP、SLIP、PPP |
| 1 | 物理层 | 二进制传输 | 中继器、集线器 |
2. 网络技术标准与协议
- TCP/IP协议:Internet,可扩展,可靠,应用最广,牺牲速度和效率
- IPX/SPX协议:NOVELL,路由,大型企业网
- NETBEUI协议:IBM,非路由,快速
3. DHCP协议
- 客户机/服务器模型
- 租约默认为8天
- 当租约过半时,客户机需要向DHCP服务器申请续租;
- 当租约超过87.5%时,如果仍然没有和当初提供IP的DHCP服务器联系上,则开始联系其他的DHCP服务器。
- 固定分配、动态分配和自动分配。6、169.254.X.X和0.0.0.0(假地址、ip没有分配成功
4. DNS服务器
主机向本地域名服务器的查询采用递归查询。
本地域名服务器向根域名服务器的查询通常采用迭代查询。
递归查询:服务器必需回答目标IP与域名的映射关系。
迭代查询:服务器收到一次迭代查询回复一次结果,这个结果不一定是目标IP与域名的映射关系,也可以是其它DNS服务器的地址。
5. 计算机网络的分类
拓扑结构
6. 网络规划与设计
1.网络规划原则
- 实用性原则
- 开放性原则
- 先进性原则
2.网络设计任务
- 确定网络总体目标
- 确定总体设计原则
- 通信子网设计
- 资源子网设计
- 设备选型
- 网络操作系统与服务器资源
- 设备网络安全设计
3.网络设计原则
- 可用性:指网络或网络设备可用于执行预期任务时间所占总量的百分比。
- 可靠性:网络设备或计算机持续执行预定功能的可能性。
- 可恢复性:指网络从故障中恢复的难易程度和时间。
- 适应性:指在用户改变应用要求时网络的应变能力。
- 可伸缩性:指网络技术或设备随着用户需求的增长而扩充的能力。
4.网络实施原则
- 可靠性原则
- 安全性原则
- 高效性原则
- 可扩展性原则
5.网络实施步骤
- 工程实施计划
- 网络设备到货验收
- 设备安装
- 系统测试
- 系统试运行
- 用户培训
- 系统转换
6.逻辑网络设计
利用需求分析和现有网络体系分析的结果来设计逻辑网络结构,最后得到一份逻辑网络设计文档,输出内容包括以下几点∶
- 逻辑网络设计图
- IP地址方案
- 安全方案
- 具体的软硬件、广域网连接设备和基本服务
- 招聘和培训网络员工的具体说明
- 对软硬件、服务、员工和培训的费用初步估计
7.物理网络设计
物理网络设计是对逻辑网络设计的物理实现,通过对设备的具体物理分布、运行环境等确定,确保网络的物理连接符合逻辑连接的要求。输出如下内容∶
- 网络物理结构图和布线方案
- 设备和部件的详细列表清单软硬件和安装费用的估算
- 安装日程表,详细说明服务的时间以及期限
- 安装后的测试计划
- 用户的培训计划
8.分层设计
- 接入层:向本地网段提供用户接入
- 汇聚层∶网络访问策略控制、数据包处理、过滤、寻址
- 核心层:数据交换
9.IP地址
1.分类
|类别|点分十进制|二进制|
|—|—-|—|—|
|A类|0.0.0.0|最低|00000000 00000000 00000000 00000000|
|A类|127.255.255.255|最高|01111111111111111111111111111111|
|B类||128.0.0.0|最低|10000000 00000000 00000000 00000000|
|B类|191.255.255.255|最高|10111111111111111111111111111111|
|c类|192.0.0.0|最低|11000000 00000000 00000000 00000000|
|c类|223.255.255.255|最高|11011111111111111111111111111111|
|D类|224.0.0.0|最低|11100000 00000000 00000000 00000000|
|组播|239.255.255.255|最高|11101111111111111111111111111111|
|E类|240.0.0.0|最低|11110000 00000000 00000000 00000000|
|保留|255.255.255.255|最高|11111111111111111111111111111111|
2.子网划分
1、子网掩码
2、将一个网络划分成多个子网(取部分主机号当子网号)
3、将多个网络合并成一个大的网络(取部分网络号当主机号)
网络号由子网号+主机号构成,一般默认前面的为子网号,后面的为主机号
3.无分类编址(无类域间路由)
IP地址::= {<网络前缀>,<主机号>}128.14.32.0/20表示的地址块共有212个地址。这个地址块的起始地址是128.14.32.0。在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20地址块”128.14.32.0/20地址块的最小地址:128.14.32.0128.14.32.0/20地址块的最大地址: 128.14.47.255全О和全1的主机号地址一般不使用。
4.特殊含义的IP地址
| IP | 说明 |
|---|---|
| 127网段 | 回播地址 |
| 网络号全0地址 | 当前子网中的主机 |
| 全1地址 | 本地子网的广播 |
| 主机号全1地址 | 特定子网的广播 |
| 10.0.0.0/8 | 10.0.0.1至10.255.255.254 |
| 172.16.0.0/12 | 172.16.0.1至172.31.255.254 |
| 192.168.0.0/16 | 192.168.0.1至192.168.255.254 |
| 169.254.0.0 | 保留地址,用于DHCP失效(Win) |
| 0.0.0.0 | 保留地址,用于DHCP失效(Linux) |
10.无线网
11.网络接入技术
1.有线接入
- 公用交换电话网络(PSTN)
- 数字数据网(DDN)
- 综合业务数字网(ISDN)
- 非对称数字用户线路(ADSL)
- 同轴光纤技术(HFC)
2. 无线接入
- IEEE802.11(WiFi)
- IEEE802.15(蓝牙Bluetooth)
- 红外(IrDA)
- WAPI
3. 3G/4G
- WCDMA
- CDMA2000
- TD-SCDMA(名义上的国产)
- LTE-Advanced(TDD、FDD)
- WirelessMAN-Advanced(802.16m)(WiMAX)
12.lPv6
IPv6是设计用于替代现行版本IP协议(IPv4)的下一代IP协议。
(1)IPv6地址长度为128位,地址空间增大了296倍;
(2)灵活的IP报文头部格式。使用一系列固定格式的扩展头部取代了IPv4中可变长度的选项字段。IPV6中选项部分的出现方式也有所变化,使路由器可以简单路过选项而不做任何处理,加快了报文处理速度;
(3 ) IPv6简化了报文头部格式,字段只有8个,加快报文转发,提高了吞吐量;
(4)提高安全性。身份认证和隐私权是IPv6的关键特性;(5)支持更多的服务类型;
( 6)允许协议继续演变,增加新的功能,使之适应未来技术的发展;单播地址(Unicast)∶用于单个接口的标识符。任播地址(Anycast):泛播地址。一组接口的标识符,IPv4广播地址。组播地址(Multicast) : IPv6中的组播在功能上与IPv4中的组播类似。
6、系统安全分析与设计
1.信息系统安全属性
1.安全属性
- 保密性:最小授权原则、防暴露、信息加密、物理保密
- 完整性:安全协议、校验码、密码校验、数字签名、公证
- 可用性:综合保障(IP过滤、业务流控制、路由选择控制、审计跟踪)
- 不可抵赖性:数字签名
2. 对称加密
常见对称密钥加密算法∶
- DES:替换+移位、56位密钥、64位数据块、速度快、密钥易产生
- 3DES(三重DES):两个56位的密钥K1、K2加密:K1加密->K2解密->K1加密解密:K1解密->K2加密->K1解密
- AES:高级加密标准Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES。对其要求是”至少与3DES一样安全”。
- RC-5 : RSA数据安全公司的很多产品都使用了RC-5。
- IDEA算法:128位密钥、64位数据块、比DES的加密性好、对计算机功能要求相对低,PGP。
**缺陷:** - 加密强度不局。
- 云分发困难。
3. 非对称加密
常见非对称密钥加密算法:
- RSA:512位(或1024位)密钥、计算量极大、难破解
- Elgamal:其基础是Diffie-Hellman密钥交换算法
- ECC:椭圆曲线算法
- 其它非对称算法包括:背包算法、Rabin、D-H
**缺陷:**加密速度慢
4.信息摘要
单向散列函数(单向Hash函数)、固定长度的散列值。
常用的消息摘要算法有MD5,SHA等,市场上广泛使用的MD5,SHA算法的散列值分别为128和160位,由于SHA通常采用的密钥长度较长,因此安全性高于MD5。
5. 数字签名
6. 数字信封与PGP
·发送方将原文用对称密钥加密传输,而将对称密钥用接收方公钥加密发送给对方。
·接收方收到电子信封,用自己的私钥解密信封,取出对称密钥解密得原文。
- PGP可用于电子邮件,也可以用于文件存储。采用了杂合算法,包括IDEA、RSA、MD5、ZIP数据压缩算法。
- PGP承认两种不同的证书格式:PGP证书和X.509证书。
- PGP证书包含PGP版本号、证书持有者的公钥、证书持有者的信息、证书拥有者的数字签名、证书的有效期、密钥首选的对称加密算法。
- X.509证书包含证书版本、证书的序列号、签名算法标识、证书有效期、以下数据:证书发行商名字、证书主体名、主体公钥信息、发布者的数字签名。
4.网络安全
1. 各个网层次的安全保障
2.网络安全与攻击
| 威胁名称 | 描述 |
|---|---|
| 重放攻击(ARP ) | 所截获的某次合法的通信数据拷贝,出于非法的目的而被重新发送。 |
| 拒绝服务(DOs ) | 对信息或其它资源的合法访问被无条件地阻止。 |
| 窃听 | 用各种可能的合法或非法的手段窃取系统中的信息资源和敏感信息。例如对通信线路中传输的信号进行搭线监听,或者利用通信设备在工作过程中产生的电磁泄露截取有用信息等。 |
| 业务流分析 | 通过对系统进行长期监听,利用统计分析方法对诸如通信频度、通信的信息流向、通信总量的变化等参数进行研究,从而发现有价值的信息和规律。 |
| 信息泄露 | 信息被泄露或透露给某个非授权的实体。 |
| 破坏信息的完整性 | 数据被非授权地进行增删、修改或破坏而受到损失。 |
| 非授权访问 | 某一资源被某个非授权的人、或以非授权的方式使用。 |
3.防火墙
7、数据结构与算法基础
1.数组
| 数组类型 | 存储地址计算 |
|---|---|
| 一维数组a[n] | a[i]的存储地址为: a+i*len |
| 二维数组a[m][n] | a[i][j]的存储地址(按行存储)为: a+(i*n+j)*len a[i][j]的存储地址(按列存储)为: a+(j*m+i)*len |
2.稀疏矩阵
3.数据结构
1.逻辑结构
- 线性结构
- 非线性结构
2. 线性表
- 线性表常见的两种存储结构
顺序存储结构-顺序表
链式存储结构-链表 - 基础操作
- 线性存储与链式存储对比
- 队列与栈
- 队列-先进先出
- 栈-先进后出
- 循环队列-队空:head=tail 队满:(tail+1)%size = head
3. 树与二叉树
- 结点的度、树的度、叶子结点、分支结点、内部结点、父结点、子结点、兄弟结点、层次
- 二叉树的重要特性∶
- 在二叉树的第i层上最多有2-1个结点( i≥1)
- 深度为k的二叉树最多有2k-1个结点(k≥1) ;
- 对任何一棵二叉树,如果其叶子结点数为no,度为2的结点数为n2,则no=n2+1.
- 如果对一棵有n个结点的完全二叉树的结点按层序编号(从第1层到log2n+1层,每层从左到右),则对任一结点i ( 1sisn),有:
如果i=1,则结点i无父结点,是二叉树的根;如果i>1,则父结点是i/2];
如果2i>n,则结点i为叶子结点,无左子结点;否则,其左子结点是结点2i ;如果2i+1>n,则结点i无右子叶点,否则,其右子结点是结点2i+1。
1. 二叉树的遍历
- 前序遍历
- 中序遍历
- 后序遍历
- 层次遍历
2.反向构造二叉树
3. 树转二叉树
孩子结点-左子树结点
兄弟结点-右孩子结点
4. 查找二叉树
- 二叉排序树
- 左孩子小于根
- 右孩子大于根
- 插入结点∶
①若该键值结点已存在,则不再插入
②若查找二叉树为空树,则以新结点为查找二叉树;
③将要插入结点键值与插入后父结点键值比较,就能确定新结点是父结点的左子结点,还是右子结点。 - 删除结点∶
①若待删除结点是叶子结点,则直接删除;
②若待删除结点只有一个子结点,则将这个子结点与待删除结点的父结点直接连接
③若待删除的结点p有两个子结点,则在其左子树上,用中序遍历寻找关键值最大的结点s,用结点s的值代替结点p的值,然后删除节点s,节点s必属于上述,②情况之一
5.最优二叉树(哈弗曼树)
需要了解的基本概念︰
树的路径长度
权
带权路径长度
树的带权路径长度(树的代价)
6.平衡二叉树
任意结点的左右子树深度相差不超过1
每结点的平衡度只能为-1、0或1
4. 图
1.完全图
- 在无向图中,若每对顶点之间都有一条边相连,则称该图为完全图( completegraph )。
- 在有向图中,若每对顶点之间都有二条有向边相互连接,则称该图为完全图。
2.图的存储-邻接矩阵
用一个n阶方阵R来存放图中各结点的关联信息,其矩阵元素Rij定义为∶
3. 邻接表
首先把每个顶点的邻接顶点用链表示出来,然后用一个一维数组来顺序存储上面每个链表的头指针。
4.图的遍历
| 遍历方法 | 说明 |
|---|---|
| 深度优先 | 1.首先访问出发顶点V 2.依次从V出发搜索V的任意一个邻接点W; 3.若W未访问过,则从该点出发继续深度优先遍历它类似于树的前序遍历。 |
| 广度优先 | 1.首先访问出发顶点V 2.然后访问与顶点V邻接的全部未访问顶点W、x、Y… ; 3.然后再依次访问W、x、Y…邻接的未访问的顶点; |
5.拓扑排序
我们把用有向边表示活动之间开始的先后关系。这种有向图称为用顶点表示活动网络,简称AOV网络。
6.图的最小生成树
边权值相加为最小值
普里姆算法-由点求线
克鲁斯卡尔算法-由线求点
4.算法
1.算法的特性
- 有穷性:执行有穷步之后结束。
- 确定性:算法中每一条指令都必须有确切的含义,不能含糊不清。
- 输入(>=0)
- 输出(>=1)
- 有效性:算法的每个步骤都能有效执行并能得到确定的结果。例如a=0 , bla就无效
2.算法的复杂度
时间复杂度
时间复杂度是指程序运行从开始到结束所需要的时间。通常分析时间复杂度的方法是从算法中选取一种对于所研究的问题来说是基本运算的操作,以该操作重复执行的次数作为算法的时间度量。一般来说,算法中原操作重复执行的次数是规模n的某个函数T(n)。由于许多情况下要精确计算T(n)是困难的,因此引入了渐进时间复杂度在数量上估计一个算法的执行时间。其定义如下∶
如果存在两个常数c和m,对于所有的n,当n≥m时有f(n)≤cg(n),则有f(n)=o(g(n))。也就是说,随着n的增大,f(n)渐进地不大于g(n)。例如,一个程序的实际执行时间为T(n)=3n^3^+2n^2^+n,则T(n)=O(n^3^)。
常见的对算法执行所需时间的度量:
O(1)<O(log2n)<O(n)<O(nlog2n)<O(n^2^)<O(n^3^)<O(2^n^)空间复杂度
空间复杂度是指对一个算法在运行过程中临时占用存储空间大小的度量。一个算法的空间复杂度只考虑在运行过程中为局部变量分配的存储空间的大小
3.查找
顺序查找
顺序查找的思想:将待查找的关键字为key的元素从头到尾与表中元素进行比较,如果中间存在关键字为key的元素,则返回成功﹔否则,则查找失败 复杂度:n+1/2=O(n)
二分查找
时间复杂度:log
2n+1散列查找
散列表查找的基本思想是:已知关键字集合U,最大关键字为m,设计一个函数Hash,它以关键字为自变量,关键字的存储地址为因变量,将关键字映射到一个有限的、地址连续的区间T0..n-1中,这个区间就称为散列表,散列查找中使用的转换函数称为散列函数。
散列函数:h=key%p
4.直接插入排序
直接插入排序∶即当插入第i个记录时,R1,R2, ,… Ri-1均已排好序,因此,将第i个记录Ri依次与R1 ,…,R2,R1进行比较,找到合适的位置插入。它简单明了,但速度很慢。
5. 希尔排序
希尔( Shell )排序∶先取一个小于n的整数d1,作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-1,<o<d2,<d1),即所有记录放在同一组中进行直接插入排序为止。该方法实质上是一种分组插入方法。
6. 直接选择排序
直接选择排序的过程是,首先在所有记录中选出排序码最小的记录,把它与第1个记录交换,然后在其余的记录内选出排序码最小的记录,与第2个记录交换.…..….依次类推,直到所有记录排完为止。
7. 堆排序
设有n个元素的序列{K,K,..,K},当且仅当满足下述关系之一时,称之为堆。( (1)ki≤ k 2i,且ki≤k 2i+1;
(2)ki≥k2i,且ki≥k2i+1
其中:(1)称为小顶堆,(2)称为大顶堆
概念:
堆排序的基本思想为︰先将序列建立堆,然后输出堆顶元素,再将剩下的序列建立堆,然后再输出堆顶元素,依此类推,直到所有元素均输出为止,此时元素输出的序列就是一个有序序列。
堆排序的算法步骤如下(以大顶堆为例)∶
(1)初始时将顺序表R[1..n]中元素建立为一个大顶堆,堆顶位于R[1]待序区为R[1..n]。
(2)循环执行步骤3~步骤4,共n-1次。
(3)假设为第i次运行,则待序区为R[1..n-i+1],将堆顶元素R[1]与待序区尾元素R[n-i+1]交换,此时顶点元素被输出,新的待序区为R[1..n-i门]。
(4)待序区对应的堆已经被破坏,将之重新调整为大顶堆。
8.冒泡排序
冒泡排序的基本思想是,通过相邻元素之间的比较和交换,将排序码较小的元素逐渐从底部移向顶部。由于整个排序的过程就像水底下的气泡一样逐渐向上冒,因此称为冒泡算法。
9.快速排序
快速排序采用的是分治法,其基本思想是将原问题分解成若干个规模更小但结构与原问题相似的子问题。通过递归地解决这些子问题,然后再将这些子问题的解组合成原问题的解。
快速排序通常包括两个步骤:
第一步,在待排序的n个记录中任取一个记录,以该记录的排序码为准,将所有记录都分成两组,第1组都小于该数,第2组都大于该数,如图所示。
第二步,采用相同的方法对左、右两组分别进行排序,直到所有记录都排到相应的位置为止。
10.归并排序
归并也称为合并,是将两个或两个以上的有序子表合并成一个新的有序表。若将两个有序表合并成一个有序表,则称为二路合并。合并的过程是:比较A[i]和A[j]的排序码大小,若A[i]的排序码小于等于A[j]的排序码,则将第一个有序表中的元赛A[i]复制到R[k]中,并令i和k分别加1;如此循环下去,直到其中一个有序表比较和复制完,然后再将另一个有序表的剩余元素复制到R中。
11.基数排序
基数排序是一种借助多关键字排序思想对单逻辑关键字进行排序的方法。基数排序不具试于关键字比较的排序方法,它适合于元素很多而关键字较少的序列。基数的选择和关键字的分解是根据关键字的类型来决定的,例如关键字是十进制数,则按个位、十位来分解。
12.复杂度
8、程序设计语言与语言处理程序基础
1.编译过程
graph TB; A(源程序)-->B[词法分析] C(解释型\编译型) -->B B-->D(正规式, 有限自动机) B-->E[语法分析] E-->F(根据语言语法规则) E-->G[语义分析] G-->H(语义检查) G-->I[中间代码生成] I-->J[代码优化] J-->K[目标代码生成] G-->K K-->L(中间代码转低级语言代码,需要考虑硬件系统结构) L-->M(目标程序)
- 词法错误∶非法字符,关键字或标识符拼写错误
- 语法错误∶语法结构出错,ifendif不匹配,缺分号
- 语义错误∶死循环,零除数,其它逻辑错误
2.文法定义
一个形式文法是一个有序四元组G=(V,T,S,P),其中:
- V:非终结符。不是语言组成部分,不是最终结果,可理解为占位符。
- T:终结符。是语言的组成部分,是最终结果。V∩T=∅
- S:起始符。是语言的开始符号。
- P:产生式。用终结符替代非终结符的规则。形如α→β
正则闭包:A^+^=A^1^ U A^2^ U A^3^ ∪…U A ^n^ ∪… (也就是所有幂的组合)。
闭包:A^*^=A^0^ U A^+^(在正则闭包的基础上,加上A^0^={ε})。
1.文法的类型
| 类型 | 别称 | 说明 | 对应自动机 |
|---|---|---|---|
| 0型 | 短语文法 | G的每条产生式α→B满足a属于V的正则闭包目至少含有一个非终结符,而属于V的闭包 | 图灵机 |
| 1型 | 上下文有关文法 | G的任何产生式α→B满足lαl<=lβl:仅仅s→ε例外,但S不得出现在任何产生式右部 | 线性界限自动机 |
| 2型 | 上下文无关文法 | G的任何产生式为A一β,A为非终结符,β为V的闭包 | 非确定的下推自动机 |
| 3型 | 正规文法 | G的任何产生式为A→αB或A→α,a属于非终结符的闭包,A、B都属于非终结符 | 有限自动机 |
2.语法的推导树
特征
- 每个结点都有一个标记,此标记是V的一个符号;
- 根的标记是S;
- 若一结点n至少有一个它自己除外的子孙,并且有标记A,则A肯定在Vw中;
- 如果结点n的直接子孙,从左到右的次序是结点n
1,n2, … ,nk,其标记分别是: A1,A2…Ak,那么A->A1,A2…Ak,一定是P中的一个产生式。
3.有限自动机
M =(S,∑,δ,S0,Z)
- S是一个有限集,每个元素为一个状态
- 二是一个有穷字母表,每个元素为一个输入字符
- δ是转换函数:是一个单值对照
- S0,属于S,是其唯一的初态
- Z是一个终态集(可空)
4.正规式
正规式是描述程序语言单词的表达式,对于字母∑,其上的正规式及其表示的正规集可以递归定义如下。
- ε是一个正规式,它表示集合L(ε)={ε}。
- 若a是∑上的字符,则a是一个正则式,它所表示的正规L(a)={a}。
- 若正规式r和s分别表示正规集L(r)=L(s),则
(a)r|s是正规式,表示集合L(r) U L(s);
(b)r·s是正规式,表示集合L(r)L(s);
(c)r*是正规式,表示集合(L(r))*;
(d)(r)是正规式,表示集合L(r)。
仅由有限次地使用上述三个步骤定义的表达式才是∑上的正规式。由此可见,正规式要么为空,要么由字母、或、连接、闭包运算符组成。其中闭包运算符“*”具有最高的优先级,连接运算具有次高优先级,或运算符“I”具有最低优先级。
3.表达式
- 前缀表达式(+ab)
- 中缀表达式(a+b)
- 后缀表达式(ab+)
graph TB; A[+]-->B((a)) A-->C((b))
4.传值与传址
| 传递方式 | 主要特点 |
|---|---|
| 传值调用 | 形参取的是实参的值,形参的改变不会导致调用点所传的实参的值发生改变 |
| 引用(传址)调用 | 形参取的是实参的地址,即相当于实参存储单元的地址引用因此其值的改变同时就改变了实参的值 |
5.程序语言基础-各种程序语言特点
- Fortran语言(科学计算,执行效率高)
- Pascal语言(为教学而开发的,表达能力强,Delphi )
- C语言(指针操作能力强,高效)
- Lisp语言(函数式程序语言,符号处理,人工智能)
- C++语言(面向对象,高效)
- Java语言(面向对象,中间代码,跨平台)
- C#语言(面向对象,中间代码,.Net )
- Prolog语言(逻辑推理,简洁性,表达能力,数据库和专家系统)
9、法律法规
1.保护期限
2. 知识和产权人的确定
3.侵权判定
中国公民、法人或者其他组织的作品,不论是否发表,都享有著作权。
开发软件所用的思想、处理过程、操作方法或者数学概念不受保护
著作权法不适用于下列情形∶
- 法律、法规,国家机关的决议、决定、命令和其他具有立法、行政、司法性质的文件,及其官方正式译文;
- 时事新闻;
- 历法、通用数表、通用表格和公式。
| 不侵权 | 侵权 |
|---|---|
| 个人学习、研究或者欣赏; | 未经许可,发表他人作品; |
| 适当引用; | 未经合作作者许可,将与他人合作创作的作品当作自己单独创作的作品发表的; |
| 公开演讲内容 | 未参加创作,在他人作品署名; |
| 用于教学或科学研究 | 歪曲、篡改他人作品的; |
| 复制馆藏作品; | 剽窃他人作品的; |
| 免费表演他人作品; | 使用他人作品,未付报酬; |
| 室外公共场所艺术品临摹、绘画、摄影、录像; | 未经出版者许可,使用其出版的图书、期刊的版式设计的。 |
| 将汉语作品译成少数民族语言作品或盲文出版。 |
10、标准化
1.标准的分类
- 国际标准:ISO、IEC等国际标准化组织
- 国家标准:GB—中国、ANSI—美国、BS—英国、JIS—日本
- 区域标准∶又称为地区标准,如PASC—太平洋地区标准会议、CEN—欧洲标准委员会、ASAC—亚洲标准咨询委员会、ARSO—非洲地区标准化组织
- 行业标准:GJB—中国军用标准、MIT-S一美国军用标准、IEEE—美国电气电子工程师协会
- 地方标准:国家的地方一级行政机构制订的标准
- 企业标准
- 项目规范
2.标准的编号
- 国际、国外标准代号∶标准代号+专业类号+顺序号+年代号
- 我国国家标准代号∶强制性标准代号为GB、推荐性标准代号为GB/T
指导性标准代号为GB/Z、实物标准代号GSB - 行业标准代号∶由汉语拼音大写字母组成(如电子行业为SJ)
- 地方标准代号∶由DB加上省级行政区划代码的前两位
- 企业标准代号∶由Q加上企业代号组成
11、多媒体基础
12、软件工程
1.软件开发模型
| 模型 | 说明 |
|---|---|
| 瀑布模型 | 迭代模型/迭代开发方法 |
| 演化模型 | 快速应用开发 |
| 增量模型 | 构件组装模型/基于构件的开发方法 |
| 螺旋模型 | 统一过程/统一开发方法 |
| 快速原型模型 | 敏捷开发方法 |
| 喷泉模型 | 模型驱动的开发方法 |
| V模型 | 基于架构的开发方法 |
1. 瀑布模型(SDLC)
graph LR; A(软件计划)-->B B(需求分析)-->C C(软件设计)-->D D(程序编码)-->E E(软件测试)-->F F(软件维护)-->F E-->D D-->C C-->B B-->A
注意:只适用于需求明确的项目
2.其他经典模型
3.增量模型与螺旋模型
4.V模型
5.构建组装模型(CDSB))
graph LR; A(需求分析和定义)-->B B(软件架构设计)-->C C(构件库的建立)-->D D(应用软件构建)-->E(测试和发布) C-->F(构件库) G(构建获取)-->F H(构建管理)-->F I(构建标准)-->C J(CORBACOM/DCOM/COM+EJB)-->I
6.统一过程
7.敏捷开发法
8.信息系统开发方法
1.结构化法
- 用户至上
- 严格区分工作阶段,每阶段有任务与成果
- 强调系统开发过程的整体性和全局性系统
- 开发过程工程化,文档资料标准化
- 自顶向下,逐步分解(求精)
2.原型法
- 适用于需求不明确的开发
- 包括抛弃式原型和演化式原型
3. 面向对象方法
- 更好的复用性
- 关键在于建立一个全面、合理、统一的模型
- 分析、设计、实现三个阶段,界限不明确
4.面向服务方法
- SO方法有三个主要的抽象级别:操作、服务、业务流程
- SOAD分为三个层次:基础设计层(底层服务构件)、应用结构层(服务之间的接口和服务级协定)和业务组织层(业务流程建模和服务流程编排)
- 服务建模:分为服务发现、服务规约和服务实现三个阶段
9.结构化设计
1.概要设计->详细设计
- 自顶向下、逐步求精
- 信息隐蔽
- 模块独立(高内聚、低耦合、复杂度
2.内聚
| 内聚 | 描述 |
|---|---|
| 功能内聚 | 完成一个单一功能,各个部分协同工作,缺一不可 |
| 顺序内聚 | 处理元素相关,而且必须顺序执行 |
| 通信内聚 | 所有处理元素集中在一个数据结构的区域上 |
| 过程内聚 | 处理元素相关,而且必须按特定的次序执行 |
| 瞬时内聚(时间内聚) | 所包含的任务必须在同一时间间隔内执行 |
| 逻辑内聚 | 完成逻辑上相关的一组任务 |
| 偶然内聚(巧合内聚) | 完成一组没有关系或松散关系的任务 |
3.耦合
| 耦合类型 | 描述 |
|---|---|
| 非直接耦合 | 两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的 |
| 数据耦合 | 一组模块借助参数表传递简单数据 |
| 标记耦合 | 一组模块通过参数表传递记录信息(数据结构) |
| 控制耦合 | 模块之间传递的信息中包含用于控制模块内部逻辑的信息 |
| 外部耦合 | 一组模块都访问同一全局简单变量,而且不是通过参数表传递该全局变量的信息 |
| 公共耦合 | 多个模块都访问同一个公共数据环境 |
| 内容耦合 | 一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;翁襆谈肯一部分程除代码重叠一个模块有多个入口 |
10.测试
1.原则
- 尽早、不断的进行测试
- 程序员避免测试自己设计的程序
- 既要选择有效、合理的数据,也要选择无效、不合理的数据修改后应进行回归测试
- 尚未发现的错误数量与该程序已发现错误数成正比
2.动态测试方法
1.黑测试法
- 等价类划分
- 边界值分析
- 错误推测
- 因果图
2.白盒测试法
- 基本路径测试
- 循环覆盖测试
- 逻辑覆盖测试
3.灰盒测试法
3. 静态测试
- 桌前检查
- 代码走查
- 代码审查
4.测试阶段
5.McCabe复杂度
计算有向图G的环路复杂度公式为:v(G)=m-n+2。
说明:其中V(G)是有向图G中的环路个数,m是G中的有向弧数,n是G中的节点数。
11.系统运行与维护
软件维护是生命周期的一个完整部分。可以将软件维护定义为需要提供软件支持的全部活动,这些活动包括在交付前完成的活动,以及交付后完成的活动。交付前完成的活动包括交付后运行的计划和维护计划等;交付后的活动包括软件修改、培训、帮助资料等
1.可维护性
- 易分析性
- 易改变性
- 稳定性
- 易测试性
2.维护类型
- 改正性维护(25%)
- 适应性维护(20%)
- 完善性维护(50%)
- 预防性维护(5%)
12.CMMI
1.阶段式
| 成熟度等级 | 过程域 |
|---|---|
| 已管理级 | 需求管理、项目计划、配置管理、项目监督与控制、供应商合同管理、度量和分析、过程和产品质量保证 |
| 已定义级 | 需求开发、技术解决方案、产品集成、验证、确认、组织级过程焦点、组织级过程定义、组织级培训、集成项目管理、风险管理、集成化的团队、决策分析和解决方案、组织级集成环境 |
| 定量管理级 | 组织级过程性能、定量项目管理 |
| 优化级 | 组织级改革与实施、因果分析和解决方案 |
2. 连续式
| 连续式分组 | 过程域 |
|---|---|
| 过程管理 | 组织级过程焦点、组织级过程定义、组织级培训、组织级过程性能、组织级改革与实施 |
| 项目管理 | 项目计划、项目监督与控制、供应商合同管理、集成项目管理、风险管理、集成化的团队、定量项目管理 |
| 工程 | 需求管理、需求开发、技术解决方案、产品集成、验证、确认 |
| 支持 | 配置管理、度量和分析、过程和产品质量保证、决策分析和解决方案、组织级集成环境、因果分析和解决方案 |
13.项目管理
1.Gantt图
注意: Gantt图不能侵袭的描述各个任务间的依赖关系
2.风险
分线是指:损失或伤害的可能性
| 风险分类 | 关心内容 |
|---|---|
| 项目风险 | 关心未来 |
| 技术风险 | 关心变化 |
| 商业风险 | 关心选择 |
13、面向对象
1.设计原则
- 单一职责原则∶设计目的单一的类
- 开放-封闭原则∶对扩展开放,对修改封闭李氏(Liskov)替换原则∶子类可以替换父类
- 依赖倒置原则∶要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程
- 接口隔离原则︰使用多个专门的接口比使用单一的总接口要好
- 组合重用原则∶要尽量使用组合,而不是继承关系达到重用目的
- 迪米特(Demeter)原则(最少知识法则):一个对象应当对其他对象有尽可能少的了解
2.需求分析
1.OOA-UML
3. 设计模式的概念
- 架构模式:软件设计中的高层决策,例如C/S结构就属于架构模式,架构模式反映了开发软件系统过程中所作的基本设计决策
- 设计模式:主要关注软件系统的设计,与具体的实现语言无关
- 惯用法∶是最低层的模式,关注软件系统的设计与实现,实现时通过某种特定的程序设计语言来描述构件与构件之间的关系。每种编程语言都有它自己特定的模式,即语言的惯用法。例如引用-计数就是C++语言中的一种惯用法
1.设计模式的分类
1.创建型模式
- 工厂方法(factory method)模式
定义一个创建对象的接口,但由子类决定需要实例化哪一个类。工厂方法使得子类实例化的过程推迟 - 抽象工厂(abstract factory)模式
提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类 - 原型(prototype)模式
用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象 - 单例(singleton)模式
保证一个类只有一个实例,并提供一个访问它的全局访问点 - 构建器(builder)模式
将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示
2.结构型模式
- 适配器(adapter)模式–转换接口
将一个类的接口转换成用户希望得到的另一种接口。它使原本不相容的接口得以协同工作 - 桥接(bridge)模式–继承树拆分
将类的抽象部分和它的实现部分分离开来,使它们可以独立地变化 - 组合(composite)模式属性目录结构
将对象组合成树型结构以表示“整体-部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性 - 装饰(decorator)模式–附加指责
动态地给一个对象添加一些额外的职责。它提供了用子类扩展功能的一个灵活的替代,比派生一个子类更加灵活 - 外观(facade)模式–对外统一交接口
定义一个高层接口,为子系统中的一组接口提供一个一致的外观,从而简化了该子系统的使用 - 享元(flyweight)模式
提供支持大量细粒度对象共享的有效方法 - 代理(proxy)模式
为其他对象提供一种代理以控制这个对象的访问
3.行为型模式
- 职责链(chain of responsibility)模式–传递职责
通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一个对象处理这个请求 - 命令(command)模式–日志记录,可撤销
将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作 - 解释器(interpreter)模式
给定一种语言,定义它的文法表示,并定义一个解释器,该解释器用来根据文法表示来解释语言中的句子 - 迭代器(iterator)模式
提供一种方法来顺序访问一个聚合对象中的各个元素而不需要暴露该对象的内部表示 - 中介者(mediator)模式–不直接引用
用一个中介对象来封装一系列的对象交互。它使各对象不需要显式地相互调用,从而达到低耦合,还可以独立地改变对象间的交互 - 备忘录(memento)模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后将该对象恢复到原先保存的状态 - 观察者(observer)模式
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新 - 状态(state)模式
允许一个对象在其内部状态改变时改变它的行为 - 策略(strategy)模式
定义一系列算法,把它们一个个封装起来,并且使它们之间可互相替换,从而让算法可以独立于使用它的用户而变化 - 模板方法(template method)模式
定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义算法的某些特定步骤 - 访问者(visitor)模式
表示一个作用于某对象结构中的各元素的操作,使得在不改变各元素的类的前提下定义作用于这些元素的新操作
14.数据流图(DFD)
1.基本概念
| 元素 | 说明 | 图例 |
|---|---|---|
| 数据流 | 由一组固定成分的数据组成,表示数据的流向。每个数据流通常有一个合适的名词反映数据流的含义 | —–> |
| 加工 | 加工描述了输入数据流到输出数据流之间的变换,也就是输入数据流做了什么处理后变成了输出数据流 | ○,圆角矩形 |
| 数据存储(文件) | 用来表示暂时存储的数据,每个文件都有名字。流向文件的数据流表示写文件,流出的表示读文件 | |
| 部实体 | 指存在于软件系统外的人员或组织 | 矩形 |
2.数据字典
| 符号 | 含义 | 举例 |
|---|---|---|
| = | 被定义为 | |
| + | 与 | x=a+b,表示x由a和b组成 |
| […,…]或[… | …] | 或 |
| {…} | 重复 | x={a},表示x由0个或多个a组成 |
| (…) | 可选 | x=(a),表示a可在x中出现,也可以不出现 |
3.数据流图平衡原则
- 父子与子图之间的平衡
- 子图内平衡
异常:黑洞-只有输入,没有输出
奇迹-只有输出,没有输入
答题技巧
1.详细分析试题说明
数据管理员可通过中间件进行用户管理、操作管理和权限管理。用户管理维护用户信息,用户信息(用户名、密码)存储在用户表中﹔操作管理维护数据实体的标准操作及其所属的后端数据库信息,标准操作和后端数据库信息存放在操作表中;权限管理维护权限表,该表存储用户可执行的操作信息。
例:
1. 数据管理员是一个外部实体;
2. 中间件中有”用户管理”、“操作管理”、”权限管理”赅些加工;
3. 中间件中有”用户表”这个数据存储,且该存储与”用户管理”相关
4. 后端数据库是一个外部实体;
5. 中间件中有”操作表”这个数据存储,且该存储与”操作管理”相关;
6. 中间件中有”权限表”这个数据存储,且该存储与“权限管理”相关。
2.利用数据平衡原则
15、数据库设计
1.数据库设计过程
2.答题技巧
1.详细分析试题说明
2.熟练掌握基本知识
16、UML建模
1.用例图
- 包含关系-include
- 扩展关系-extend
- 泛化关系
2.类图与对象图
考点:
- 填类名,方法名,属性名
- 填多重度
- 1:表示一个集合中的一个对象对应另一个集合中1个对象。
- 0..*:表示一个集合中的一个对象对应另一个集合中的0个或多个对象。(可以不对应)
- 1..*:表示一个集合中的一个对象对应另一个集合中的一个或多个对象(至少对应一个)
- *∶表示一个集合中的一个对象对应另一个集合中的多个的对象。
- 填关系
3.顺序图
特点:表现出了处理事务的时候,时间顺序情况如何
4.活动图
表现处理流程的基本情况,分支的状态
5.状态图
表示状态的变迁
6.通信图
通信图又称为协作图,是顺序图的另一种表达方式















































