软件设计师考试

目录

1. DONE 知识点分布

  • 软件工程基础知识
  • 面向对象
  • 数据结构与算法
  • 程序设计语言
  • 计算机硬件基础
  • 操作系统
  • 数据库系统
  • 计算机网络
  • 信息安全知识
  • 多媒体基础
  • 知识产权与标准化

2. DONE 计算机组成与体系结构

2.1. DONE 前言

  • 数据表示
  • 计算机结构
  • Flynn 分类法
  • CISC 与 RISC (指令集)
  • 流水线技术
  • 储存系统
  • 总线系统
  • 可靠性
  • 校验码

2.2. DONE 数据的表示

2.2.1. DONE 进制转换

  1. 转十进制,按权展开
    • 二进制: 101.01 = 1*22 + 1*20 + 1*2-2
    • 七进制: 602.03 = 6*72 + 2*70 + 3*7-2
  2. 十进制转R进制,短除法
    2 | 94  --- 0
    2 | 47  --- 1
    2 | 23  --- 1
    2 | 11  --- 1
    2 | 5  --- 1
    2 | 2  --- 0
      | 0  --- 1
    
    -- 结果是 1011110
    
  3. 2 进制转换 8 或 16

    1011110,

    • 转8: 3个为一组: 001 | 011 | 110
    • 转16: 4个为一组: 0101 | 1110

2.2.2. DONE 原码/反码/补码/移码

  表示1 表示-1 1-1结果 解释 范围 备注
原码 00000001 100000001 100000010 结果为 2 高位为符号为,0正数,1负数 -2n-1 ~ 2n-1 不适合负数运算
反码 00000001 111111110 111111111 结果为 -0 高位为符号为,0正数,1负数。对于负数,非符号位在原码的基础上取反 -2n-1 ~ 2n-1  
补码 00000001 111111111 00000000 结果为0 对于负数,在原码的基础上,取反+1 -2n ~ 2n-1 计算机的实际储存方式
移码 100000001 011111111 100000000 结果为0 在补码的基础上, 符号位取反 -2n ~ 2n -1 在处理浮点数时使用

对于原码和反码, 因为有 -0 这个数, 所以范围少了1

对于补码, 没有 -0 , -128 可通过 -127 - 1 计算, 也就是 100000001 + 111111111 = 100000000

数据到计算机内存的过程:

数据(-1) -> 原码(100000001) -> 反码 (111111110) -> 补码(111111111) -> 计算机内存

2.2.3. DONE 浮点数运算

浮点数表示: N = M * Re

  • M 尾数
  • R 基础
  • e 指数

运算步骤

  • 对阶: 指数按高次对齐
  • 尾数计算
  • 结果格式化: 确保 尾数 小数点左边为个位数,且不为0

2.3. DONE 计算机结构

主机

  • 主储存器
  • CPU
    • 运算器
      • 算数逻辑单元 ALU
      • 累加寄存器 AC : 储存运算中需要运算的值
      • 数据缓冲寄存器 DR : 读写内存时暂存数据
      • 状态条件寄存器 PSW : 储存运算过程中相关的标识位,比如说进位
    • 控制器
      • 程序计数器 PC : 用来下一条指令的位置寻址
      • 指令寄存器 IR
      • 指令译码器
      • 时序部件

2.4. DONE Flynn 分类法

体系结构类型 结构 关键特性 代表
单指令/单数据流 SISD 控制部分:1;处理器:1;主存模块:1   单处理器
单指令/多数据流 SIMD 控制部分:1;处理器:多;主存模块:多 各处理器以异步形式执行同一条指令 并行处理器;阵列处理器;超级向量处理器
多指令/单数据流 MISD 控制部分:多;处理器:1;主存模块:多 被证明不实际
多指令/多数据流 MIMD 控制部分:多;处理器:多;主存模块:多 能够实现作业、任务、指令等各级全面并行 多处理器系统

2.5. DONE CISC 和 RISC

指令系统类型 指令 寻址方式 实现方式 其他
CISC 数量多,使用频率差别大,可变长格式 支持多种 微程序控制技术(微码) 研制周期长
RISC 数量少,使用频率接近,大部分为单周期指令,操作寄存器,只有Load/Store操作内存 支持方式少 增加了通用寄存器;硬布线逻辑控制为主;适合采用流水线 优化编译,有效支持高级语言
  • CISC 属于过去计算机少的年代的产物。 很多指令都是厂商定制的
  • RISC 为了通用性,对指令做了简化,精简指令集

2.6. DONE 流水线

2.6.1. DONE 概念

流水线指在程序执行时,多条指令重叠进行操作的一种准并行处理实现技术

2023-04-17_21-52-44_screenshot.png

2.6.2. DONE 流水线计算

  • 流水线的周期: 执行时长最长的一段
  • 流水线的总执行时间:
    • 理论公式: 1条指令的执行时间 + (指令条数-1)* 流水线周期。 \((k+n-1)*\Delta t\)
    • 实践公式: 假定每个步骤的时间与周期相等, 如上图,总的步骤为 (指令条数+单条指令的步骤数-1), 再乘以周期则为总时间
  • 示例: 若指定流水线分为取指、分析、执行3部分,时间分别为2ns 2ns 1ns, 那么周期是多少?100条指令全部执行完需要多久?
    • 周期为 2ns
    • 按照理论公式: (2+2+1)+ 99*2 = 203
    • 按照实践公式: (3+99)*2= 204

2.6.3. DONE 流水线吞出率计算

  • 吞吐率(Though Put rate, TP)指单位时间内流水线完成的任务数量
\begin{equation} TP = \frac{指令条数}{流水线执行时间} \end{equation}
  • 对于上述例子,TP=100/203
  • 最大吞吐率
\begin{equation} TP_max=\lim_{n->\infty}\frac{n}{(k+n-1)*\Delta t} = \frac{1}{\Delta t} \end{equation}
  • 相当于看成每条指令的执行时间都为周期。n 无穷大时,可以忽略流水线的建立时间

2.6.4. DONE 流水线的加速比

\begin{equation} 加速比=\frac{不使用流水线的执行时间}{使用流水线的执行时间} \end{equation}

上述例子: 5*100/203

2.6.5. DONE 流水线的效率

流水线的效率指的是流水线的设备利用率

\begin{equation} 流水线的效率E = \frac{n个任务占用的时空区}{k个流水线段的总时空区} = \frac{T_0}{kT_k} \end{equation}

2023-05-01_19-00-32_screenshot.png

上述的效率为 E=(1+1+1+3)*4 / (15*4)

2.7. DONE 储存结构

2.7.1. DONE 层次化储存结构

2023-05-01_19-17-39_screenshot.png

2.7.2. DONE Cache-概念

  • Cache的功能: 提交CPU数据输入输出的速率,突破冯诺依曼瓶颈,即CPU与储存系统间数据传输的带宽限制
  • 程序执行的局部性原理,当引入Cache时,会大大加快执行效率。 例如把循环语句的变量储存到Cache中,就大大减少寻址时间
  • 计算系统的平均周期: 假定 h 为Cache的命中率, t1 为Cache的周期时间, t2 为主存的周期时间, 那么两者结合的系统平均周期为:
\begin{equation} t_3 = h * t_1 + (1-h)*t_2 \end{equation}

如果 h=95%, t1 = 1ns , t2=1000ns, 得到 t3= 50.95ns, 而没有Cache时,t3 会是 1000ns.

2.7.3. DONE 局部性原理

  • 时间局部性: 例如 循环语句变量的储存
  • 空间局部性: 例如 数组的储存
  • 工作集理论:工作集指的是进程运行时被频繁访问的页面集合

2.7.4. DONE 主存-分类

  • 随机存取储存器(RAM): 我们常说的内存。 断电后信息丢失
  • 只读存储器(ROM): 比如说 BIOS。 断电后信息不丢失

2.7.5. DONE 主存-编址

2023-05-02_08-07-50_screenshot.png

  • 主存的编址指的是把芯片组成响应的储存器
  • 内存地址忽略后面的 H , 且是16进制
  • 上图中, 8*4 表示有8个地址单元, 每个地址单元有 4bit
  • 芯片组成储存器时,可以并排或竖排
  • (c7fff+1-ac000)/1024, 共 112 个地址单元
  • (112*16)/(28*16)=4 位

2.7.6. DONE 磁盘结构与参数

2023-05-02_08-13-36_screenshot.png

\begin{equation} 存取时间=寻道时间+等待时间(平均定位时间+转动延时) \end{equation}
  • 机械硬盘,软盘等: 扇区储存数据,磁头读取数据
  • 寻道时间指磁头移动到磁道所需的时间
  • 等待时间为等待读写的扇区转到磁头下方所用的时间

2023-05-02_08-29-50_screenshot.png

  • 注意,磁头经过后,才算读取完。对于上述,读取需要3ms
  • 单缓冲区意味着缓冲只能储存一个物理块的信息
  • 处理记录时,磁盘还是会继续转动
  • 最长: (33+3)*10+(3+3)=366
  • 最短: (3+3)*11=66 , 处理当前的物理块,磁盘刚好准备读下一个物理块

2.8. DONE 总线

根据所处位置不同

  • 内部总线: 微机中外围芯片与处理器的总线
  • 系统总线: 微机中插件板与系统的总线
    • 数据总线
    • 地址总线
    • 控制总线
  • 外部总线: PCI等

2.9. DONE 系统可靠性分析-串联系统与并联系统

2.9.1. DONE 串联系统

2023-05-02_08-44-59_screenshot.png

  • 可靠度 = 所有系统的可靠度之积

2.9.2. DONE 并联系统

2023-05-02_08-47-47_screenshot.png

  • R 为可靠度
  • u 为失效率

2.9.3. DONE 模冗余系统

2023-05-02_08-51-54_screenshot.png

  • R1 -> Rm 为功能相同的冗余系统

2.9.4. DONE 混合系统

2023-05-02_08-54-42_screenshot.png

  • R 可靠度

2.10. TODO 校验码

2.10.1. DONE 差错控制-CRC与海明校验码

  • 检错: 检查出错误
  • 纠错: 检查出错误并纠正。 (通过冗余信息)
  • 码距: 整个编码系统中任意两个码字的最小距离 (即变化多少位可以得到另外一个码字)
    • 若用1位二进制编码, A=0,B=1, 那么码距为1。假设传输时0变成1,无法检错,因为0/1都是合法的
    • 若用2位,A=00,B=11, 那么码距为2。假设传输时有个0变成1,可以检错,因为编码出来的是非法的
    • 若用3位,A=000,B=111,码距为3,可以检错。也可以纠错,比如把110看成111

2.10.2. TODO 海明校验码

  • 2n 放校验位 (n从0算起)

    2023-05-02_09-08-31_screenshot.png

\begin{equation} 2^r >= I + r +1 \end{equation}

根据上述公式,算出有 I 个信息位时,需要多少校验位

2.10.3. TODO 循环校验码-CRC

3. DONE 操作系统基本原理

3.1. DONE 概述

  • 进程管理
  • 存储管理
  • 文件管理
  • 作业管理
  • 设备管理
  • 微内核操作系统

3.2. DONE 进程管理

3.2.1. DONE 进程状态

  1. 三态模型

    2023-05-03_08-54-52_screenshot.png

    • 等待状态: 缺少资源(比如说外设的资源)
    • 就绪状态: 除了CPU,其他资源都准备好
    • 运行状态: 所有资源都准备好
    • 一个进程,从就绪到运行,只允许运行一个时间片
  2. 五态模型

    2023-05-03_08-55-28_screenshot.png

    • 多了 静止就绪,静止阻塞
    • 运行/活跃就绪可以人工挂起成静止就绪
    • 活跃阻塞挂起成静止阻塞

3.2.2. DONE 前趋图

2023-05-03_09-02-02_screenshot.png

  • 前趋图用来表达完成一系列任务的先后的约束关系

3.2.3. DONE 进程的同步与互斥

2023-05-03_09-06-13_screenshot.png

  • 互斥,在某一个时刻,某个资源只允许一个进程使用
  • 同步,当差距较大时,速度大的等待速度小的

    2023-05-03_09-11-26_screenshot.png

  • 市场是互斥问题,只能生产者或消费者之一入场
  • 入市场是同步问题,生产者需要等消费者消费完,才能再次将商品搬入市场

3.2.4. DONE PV操作

2023-05-03_09-14-54_screenshot.png

  • 临界资源: 进程间需要互斥方式对其进行共享的资源,如打印机等
  • 临界区: 每个进程中访问临界资源的那段代码
  • 信号量: 运用于PV操作中的特殊变量,如上图S
  • P操作:当 S<0 时,将进程放入进程的等待队列, (阻塞)
  • V操作:当 S<=0 时, 将进程从等待队列取出, (唤醒)即使F也不会阻塞
  • PV操作用来解决并发进程间某些约束关系的问题

    2023-05-03_09-31-19_screenshot.png

  • 生产者和消费者分别执行PV操作,可以防止缓冲区溢出

    2023-05-03_10-10-09_screenshot.png

  • 主要注意, P操作会阻塞,V操作不会阻塞

    2023-05-03_10-12-27_screenshot.png

  • 将前趋图转成PV操作

3.2.5. DONE 死锁问题

  • 如果一个进程在等待不可能发生的事情,则发生 死锁
  • 如果一个或多个进程发生死锁,则造成 系统死锁

2023-05-03_10-25-08_screenshot.png

  • 13个, 因为多出来的一个资源分配给其他一个进程后,他的资源满足了,从而运行下去直至资源释放。

    2023-05-03_10-27-54_screenshot.png

  • 满足四大条件才会产生死锁
    • 互斥
    • 保持和等待
    • 不剥夺
    • 环路等待

3.2.6. DONE 银行家算法

分配资源的原则:

  • 当进程需要的资源,不超过系统所能提供的最大资源时,可以接纳该进程
  • 进程可以分期请求资源,但请求的总数不能超过最大的需求量
  • 当系统的资源不能满足进程的请求资源时,可以推迟分配,但总能使进程在有限的时间内得到资源

3.3. DONE 储存管理

3.3.1. DONE 分区储存组织

2023-05-03_10-50-48_screenshot.png

  • 最佳适应算法会导致很多小的内存块

3.3.2. DONE 页式储存组织

  • 使用分区储存,可能无法提供足够大的连续内存给用户空间。

2023-05-03_10-57-02_screenshot.png

  • 当内存分成相同大小的块状(比如4K)
  • 逻辑地址记录页号,从0算起
  • 物理地址使用块号,可能不是从0算起,使用页表查询出来。

    2023-05-03_11-06-17_screenshot.png

  • 4k表示 212, 说明地址的后12位是页内地址, 为A29
  • 剩余的5即是页号,其物理块号就是页帧号,为6
  • 可以淘汰的页号需要是没访问的,也就是访问位为0,为1

3.3.3. DONE 段式储存组织

  • 段大小可以不一致
  • 段表储存 段号,段长,基址

    2023-05-03_11-12-17_screenshot.png

3.3.4. DONE 段页式存储

2023-05-03_11-12-53_screenshot.png

  • 先分段,再分页

3.3.5. DONE 快表

  • 小容量的相联存储器
  • 由高速缓存组成,速度快
  • 从硬件上保证内容按并行查找
  • 一般存放当前访问最频繁的少数活动页面的页号

3.3.6. DONE 页面置换算法

  • 解决系统能提供的页数少于程序申请的页数的问题
  • 最优算法 OPT
  • 随机算法 RAND
  • 先进先出算法 FIFO: 可能产生抖动,即分配的页数多,反而效率低了(如下图)
  • 最近最少使用算法 LRU: 不会产生抖动

2023-05-03_11-38-35_screenshot.png

  • 缺页:页不在内存中

    2023-05-03_11-48-35_screenshot.png

  • 没有快表,说明每读一次块,需要两次内存访问(因为要查表)
  • 指令只产生一次缺页中断

3.4. DONE 文件管理

3.4.1. DONE 索引文件结构

2023-05-04_07-23-03_screenshot.png

  • 一般是13个节点
  • 一个盘块4K
  • 一个索引节点可以储存 4k/4 = 1024 个地址

2023-05-04_07-33-40_screenshot.png

  • 逻辑块号从0开始计数

3.4.2. DONE 文件与树形目录结构

2023-05-04_19-46-34_screenshot.png

3.4.3. DONE 空闲储存空间的管理

  • 空闲区表法
  • 空闲链表法
  • 位示图法
  • 成组链接法

    2023-05-04_19-52-24_screenshot.png

  • 用 0(空闲) 1(占用)表示物理块

2023-05-04_19-57-55_screenshot.png

  • x个字中,从1算法, 第x位置,从0算起
  • 4195号物理块,是第4196个物理块
  • 4196/32=131.125, 说明前131个字占满了,故放在132个字中
  • 131*32=4192, 4196-4192=4, 故放在该字的第4个,也就是第3位置

3.5. DONE 设备管理

3.5.1. DONE 数据传输控制方式

内存与外设间的传输控制方案:

  • 程序控制方式: 又称为程序查询方式,CPU介入最多。需要CPU每隔一段时间询问外设传输状态
  • 程序中断方式: 如果外设完成数据传输,会发出中断信号
  • DMA方式: 有专门的DMA控制器管控内存与外设的数据交换,CPU参与少
  • 通道
  • 输入输出处理机

3.5.2. DONE 虚设备与SPOOLING技术

2023-05-04_20-14-50_screenshot.png

  • 将输入的内存先放入缓冲区
  • 类似于任务队列

3.6. DONE 微内核操作系统

  实质 优点 缺点
单体内核 将图形、驱动、文件系统等功能全部在内核中实现,运行在内核态 减少进程间通信和状态切换的系统开销,获得较高的运行效率 内核庞大,占用资源多,不易剪裁。系统稳定性和安全性不好
微内核 只实现基本功能,将图形等放在内核之外 内核精简,便于剪裁和移植,可用于分布式系统 用户态和内核态需要频繁切换导致效率降低

微内核

2023-05-04_20-36-13_screenshot.png

4. DONE 数据库系统

4.1. DONE 概述

  • 数据库模式
  • ER模型
  • 关系代数与元组演算
  • 规范化理论
  • 并发控制
  • 数据库完整性约束
  • 分布式数据库
  • 数据仓库与数据挖掘

4.2. DONE 数据库模式

4.2.1. DONE 三级模式-两级映射

2023-05-04_20-44-19_screenshot.png

  • 内模式:与物理数据库关联, 关注数据的储存方式
  • 概念模式:数据表
  • 外模式:视图
  • 外模式-概念模式映射
  • 概念模式-内模式映射

4.2.2. DONE 数据库设计过程

2023-05-04_20-50-48_screenshot.png

4.3. DONE ER模型

2023-05-05_06-54-08_screenshot.png

  • 椭圆 - 属性
  • 矩形 - 实体
  • 菱形 - 联系

集成产生的冲突

  • 属性冲突:包括属性域冲突和属性取值冲突,例如性别的值一个实体用的是男女,另一个male/female
  • 命名冲突:同名异义,异名同义。例如:一个实体用教师命名属性,另一个用老师
  • 结构冲突:一个对象在不同的应用中有不同的抽象。例如属性个数不一样

2023-05-05_07-07-49_screenshot.png

  • 1:1 联系至少0个
  • 1:n 联系至少0个
  • m:n 联系至少1个
  • 一个实体转成一个关系模式
  • 联系可转一个,选C
  • 简单把关系模式对应地看成表

4.4. DONE 关系代数

  • 并 \(S_1 \cup S_2\)
  • 交 \(S_1 \cap S_2\)
  • 差 \(S_1 - S_2\)
  • 笛卡尔积: 两张表的所有属性都包含 m x n。 S1 X S2
  • 投影: 选择特定列 π(col1,col2) (S1)
  • 选择: 选择特定行 σ(col1=value) (S1)
  • 联接: 与笛卡尔积的区别是相同的属性会合并成一个列,如果没有条件,就是自然联接 \(S_1 \bowtie S_2\)

4.5. DONE 规范化理论

4.5.1. DONE 函数依赖

  • 如果函数X可以决定函数Y, 那么称 Y 依赖于 X,记作 X->Y
  • 比如,在数据库中, 根据 学号 确定 姓名
  • 部分函数依赖: 主键是多个组合字段, 但是其中一个字段也可以确定一条记录。 (A+B)->C , A->C
  • 传递函数依赖: A->B , B->C , 可以得出 A->C ,(注意 B->A 不能成立)

4.5.2. DONE 价值与用途

非规范化的关系模式存在的问题:

  • 数据冗余
  • 更新异常
  • 插入异常
  • 删除异常

4.5.3. DONE

2023-05-05_19-47-38_screenshot.png

  • 超键可能存在多余属性, 而候选键不存在
  • 候选键可以有多个,主键只有一个

4.5.4. DONE 求候选键

2023-05-05_19-59-02_screenshot.png

  • 画出有向图
  • 留意 ABD->E 这个的箭头

4.5.5. DONE 范式

2023-05-05_20-04-39_screenshot.png

  1. 第一范式
    • 属性值都是不可分的原子值
    • 例子, 不存在两个字段可以组成新的字段的情况
  2. 第二范式
    • 不存在部分依赖
    • 例如: A+B 为主键 A+B->C , A->D, 那么R(A,B,C,D) 就存在部分依赖
    • 需要拆分表
  3. 第三范式
    • 不存在非主属性的传递依赖
    • R(A,B,C,D), A->B, A->C, A->D, C->D .有 C->D的传递依赖
    • 需要拆表
  4. BC范式
    • 画出函数依赖后, 左边的都是候选键

4.5.6. DONE 模式分解

  • 保持函数依赖的分解
    • p={A,B,C} 存在 A->B B->C 如果有两个关系模式 {A,B} {B,C} ,就保持了函数依赖。如果是 {A,B} {A,C} 则没有, 因为无法推出 B->
  • 无损分解
    • 有损,不能还原
    • 无损,可以还原. 就是通过联表操作,可以还原成原来的整表

4.6. DONE 并发控制

4.6.1. DONE 基本概念

事务:

  • 原子性
  • 一致性: 执行之前和之后状态一致, 比如转账操作,执行前后金额总数相同
  • 隔离性
  • 持续性: 事务执行后,结果与影响是持续的

并发产生的问题:

2023-05-06_06-59-28_screenshot.png

  • 丢失更新
  • 不可重复读问题
  • “脏”数据的读出

4.6.2. DONE 封锁协议

  • 一级封锁协议: 事务T在修改数据R之前必须对其进行加X锁(写锁),直到 事务结束 后释放。 (可以防止丢失更新)
  • 二级封锁协议: 在一级封锁协议的前提下,再加S锁(读锁), 直到 读取 完后释放。(可以防止丢失更新和脏数据的读出)
  • 三级封锁协议: 与二级封锁协议不同的是,直到 事务结束 后释放。 (三个问题都可以防止)
  • 两段锁协议: 可串行化, 可能发生死锁

4.7. DONE 完整性约束

  • 实体完整性约束。 (设置主键)
  • 参照完整性约束。 (设置外键)
  • 用户自定义完整性约束。
  • 触发器。 (编写函数)

4.8. DONE 数据库安全

措施 说明
用户标识和鉴定 最外层的机制,指账户登陆
存取控制 操作类型(读/写)和对象的限制设置
密码的储存和传输 对远程终端信息用密码传输
视图的保护  
审计 使用一个文件和数据库专门自动记录用户对数据库的所有操作

4.9. DONE 数据备份

  • 冷备份(静态备份)。 停止数据库后,对数据库文件的备份
  • 热备份(动态备份)。 在运行状态下进行备份
    • 可以按表按用户恢复
  • 完全备份
  • 差量备份: 仅备份上次 完全备份 之后变化的数据
  • 增量备份: 仅备份上次 备份 后变化的数据, 备份快

说明例子:

  • 如上,如果要恢复到周二的数据, 那么需要依次执行 日、一、二
  • 如果是周三,那么是 日、三
  • 静态海量转储:无事务运行时,转储全部数据库
  • 静态增量转储
  • 动态海量转储
  • 动态增量转储

日志文件:记录对数据库的任何操作,并将记录结果保存在独立的文件中。也可以用来恢复数据

4.10. DONE 数据库故障与恢复

故障关系 故障原因 解决方法
事务本身的可预期故障 本身逻辑 rollback
事务本身的不可预期故障 算术溢出、违反储存保护 由DBMS通过日志文件撤销修改,回退到事务初始状态
系统故障 系统停止运转 使用检查点法
介质故障 外存被破坏 使用日志重做业务

4.11. DONE 数据仓库与数据挖掘

2023-05-07_07-56-12_screenshot.png 数据仓库的特点

  • 面向主题
  • 集成的
  • 相对稳定(非易失), 一般不修改
  • 反映历史变化
  • 数据集市: 部门级的数据仓库, 可集成成企业级的仓库

4.12. DONE 数据挖掘方法分类

数据挖掘: 可以挖掘到未知的数据

方法:

  • 决策树
  • 神经网络
  • 遗传算法
  • 关联规则挖掘算法

分类:

  • 关联分析:挖掘出隐藏在数据间的相互关系
  • 序列模式分析:侧重点是分析数据间的前后关系(因果关系)
  • 分类分析:为每一条记录赋予一个标记再按标记分类
  • 聚类分析:分类分析法的逆过程

4.13. DONE 反规范化

规范化的缺点

  • 导致数据表过多,增加查询工作量
  • 系统需要通过多次联接才能进行查询操作,使得系统效率大大降低

技术手段:

  • 增加派生性冗余列
  • 增加冗余列
  • 重新组表
  • 分割表

4.14. DONE 大数据

4V

  • 数据量 Volume
  • 速度 Velocity
  • 多样性 Variety
  • 值 Value
比较维度 传统数据 大数据
数据量 GB,TB PB
数据分析需求 现有数据的分析与检测 深度分析(关联分析,回归分析)
硬件平台 高性能服务器 集群

大数据处理系统应有的特征

  • 高度可扩展性
  • 高性能
  • 高容错
  • 支持异构环境
  • 较短的分析延时
  • 易用且开放的接口
  • 较低的成本
  • 向下兼容性

5. DONE 计算机网络

5.1. DONE OSI/RM 七层模型

  • 物理层: 二进制传输, 中继器、集线器
    • 中继器: 延长传输距离,例如将两条100米的网线连接起来
  • 数据链路层: 传送以帧为单位的信息, 网桥、网卡、交换器、PPTP、L2TP、SLIP、PPP
    • 网桥:用来连接相同类型的网络
    • 交换机: 多端口网桥
  • 网络层: 分组传输和路由选择, 三层交换机、路由器、IP、ICMP
  • 传输层: 端到端的连接,TCP、UDP
  • 会话层: 建立、管理和中止会话
  • 表示层: 数据的格式与表达、加密、压缩
  • 应用层: 实现具体的应用功能

2023-05-07_08-41-44_screenshot.png

  • IP广播只能在局域网内
  • 通过1,2层设备连接的属于同一局域网
  • 路由器是网络层设备(3层),故 P,S不是同一个局域网, 选B

5.2. 网络技术标准与协议

5.2.1. DONE 协议组

  • TCP/IP协议: Internet, 可扩展,可靠,应用最高,牺牲速度和效率
  • IPX/SPX协议: 路由,大型企业网, 局域网对战游戏
  • NETBEUI协议: IBM, 不支持路由,速度快

    2023-05-07_16-11-41_screenshot.png

TCP/IP 协议组

  • ARP: IP -> Mac
  • RARP: Mac -> IP

5.2.2. DONE DHCP

  • 基于UDP, 动态分配IP
  • 特殊的IP:
    • 169.254.X.X window
    • 0.0.0.0 linux
    • 说明没有和 DHCP 联系上

5.2.3. DONE DNS

2023-05-07_16-25-53_screenshot.png

  • 主机向本地域名服务器的查询采用 递归查询 。 服务器必须回答映射关系
  • 本地域名服务器向根域名服务器的查询采用 迭代查询 。 服务器收到一次回复一次,该结果可能是其他DNS服务器地址

5.3. DONE 计算机网络拓扑结构

  • 按分布范围
    • 局域网 LAN
    • 城域网 MAN
    • 广域网 WAN
    • 因特网
  • 按拓扑结构

    2023-05-07_16-31-40_screenshot.png

5.4. DONE 网络规划与设计

2023-05-07_16-36-14_screenshot.png

5.4.1. DONE 逻辑网络设计

2023-05-07_16-38-28_screenshot.png

5.4.2. DONE 物理网络设计

2023-05-07_16-39-12_screenshot.png

5.4.3. DONE 分层设计

2023-05-07_16-39-30_screenshot.png

  • 核心层一般有冗余机器, 防止出故障

5.5. DONE IP地址

  • A类, 0.0.0.0 -> 127.255.255.255
    • 前1段是网络号
    • 后3段才是主机地址, 其中全0为网络地址,全1为广播地址,不分给主机用
    • 共有 224-2 个主机地址
  • B类, 128.0.0.0 -> 191.255.255.255
    • 前2段是网络号
    • 后2段是主机地址
    • 共 216-2 个主机地址
  • C类, 192.0.0.0 -> 223.255.255.255
    • 前3段是网络号
    • 共 28-2 个主机地址
  • D类, 组播 224.0.0.0 -> 239.255.255.255
  • E类, 保留 240.0.0.0 -> 255.255.255.255

5.6. DONE 子网划分

  • 子网掩码
  • 将一个网络划分成多个网络 (取部分主机号当子网号)
  • 将多个网络合并成一个大网络 (取部分网络号当成主机号)

2023-05-07_16-58-05_screenshot.png

  • 1010 1000 1100 0011 0000 0000 0000 0000
  • B类网络前16位是网络号
  • 25=32>27 取5位主机号当成子网号
  • 子网掩码中, 1为网络号, 0为主机号
  • 子网掩码 1111 1111 1111 1111 1111 1000 0000 0000 255.255.248.0

2023-05-07_17-07-55_screenshot.png

  • 1010 1000 1100 0011 0000 0000 0000 0000
  • 2k-2 要刚好大于等于 700 , k=10,
  • 子网掩码 1111 1111 1111 1111 1111 1100 0000 0000 255.255.252.0

如何判断两个IP地址属不属于相同的子网

  • 转成10进制
  • 分析网络号和子网号分别是多少位
  • 如果前面的位数相同,那么在同一子网

5.7. DONE 无分类编址

  • 类似 172.18.129.0/24, 表示前24位为网络号, 也就是只能容纳 254 台主机

    2023-05-07_17-16-14_screenshot.png

  • 32-20=12 有12位作为主机号
  • C类网络前 24 位网络号
  • 24-20 = 4 , 故16个

5.8. DONE 特殊含义的IP地址

2023-05-07_17-19-16_screenshot.png

5.9. DONE html

5.10. DONE 无线网

2023-05-07_17-28-53_screenshot.png

5.11. DONE 网络接入技术

2023-05-07_17-30-34_screenshot.png

  • PSTN 老式的电话拨号上网
  • ADSL 也是用电话线
  • HFC 家里电视的机顶盒

5.12. DONE IPv6

2023-05-07_17-46-14_screenshot.png

6. DONE 系统安全分析与设计

6.1. DONE 信息系统安全属性

  • 保密性: 最小授权原则、防暴露、物理加密、信息加密
  • 完整性: 安全协议、校验码、密码校验、数字签名、公证
  • 可用性: 综合保障(IP过滤、业务流控制、路由选择控制、审计跟踪)
  • 不可抵赖性: 数字签名

6.2. DONE 加密技术

6.2.1. DONE 对称加密

  • 加密密钥和解密密钥一致
  • DES: 替换+移位、56位密钥、64位数据块、速度快、密钥易产生
  • 3DES(3重DES): 两个56位密钥K1,K2
    • 加密 K1加密->K2解密->K1加密
    • 解密 K1解密->K2加密->K1解密
  • AES
  • RC-5
  • IDEA
  • 加密速度快
  • 加密强度不高
  • 密钥分发困难

6.2.2. DONE 非对称加密

  • 有公钥和私钥
  • 加密速度慢
  • 公钥加密,私钥解密
  • RSA: 512(现在1024)位密钥、计算量大、难破解
  • Elgamal
  • ECC
  • 其他算法:背包算法、Rabin、D-H

6.3. DONE 信息摘要

  • 单向散列函数,固定长度的hash值
  • MD5: 128位 4 * 32
  • SHA: 160位
  • SHA256: 4*64

6.4. DONE 数字签名

  • A 传输数据给 B
    • A用私钥A加密, B用公钥A解密
    • 因为公钥A只能解密出私钥A的信息,故可以证明信息是由A产生的
    • 一般把这种说法说成: A用私钥A签名, B用公钥A验签。 (因为该传递过程没有保密性)
  • 在正常使用过程中, 一般 A 把信息生成摘要, 然后对摘要进行签名

6.5. DONE 数字信封与PGP

数字信封

  • A将原文用对称加密后传输,然后 用公钥B 加密密钥发送给B
  • B用私钥B解密出密钥,然后解密密文

数字证书

  • 可以把公钥和持有者绑定起来
  • 有 PGP证书 和 X.509证书
  • PGP

6.6. DONE 网络安全

6.6.1. DONE 各个网络层次的安全保障

2023-05-09_06-44-49_screenshot.png

6.6.2. DONE 网络威胁与攻击

威胁 描述
重放攻击(ARP) 截获某次合法通信,拷贝后重复发送
拒绝服务(DOS) 对信息或其他资源的合法访问被无条件阻止
窃听 窃取系统中的信息资源和敏感信息。例如对通信线路中的传输信号进行搭线监听
业务流分析 长期窃听 , 利用统计分析方法对通信频度、信息流向进行研究
信息泄漏  
破坏信息的完整性  
非授权访问  
假冒  
旁路控制 利用系统的安全缺陷获取非授权的权利
授权侵犯 也被称为“内部攻击”, 被授权的某个人将此权限用于其他目的
特洛伊木马 木马程序,被执行时会破坏用户的安全
陷阱门 某个系统设置了“机关”,使得当提供特定的输入数据时,允许违反安全策略
抵赖 一种来自用户的的攻击,例如:否认自己发布过的某条消息

6.6.3. DONE 防火墙

2023-05-09_07-01-48_screenshot.png

7. DONE 数据结构与算法基础

7.1. DONE 数组

数组类型 储存地址计算
一维数组a[n] a[i]的储存地址: a+i*len
二维数组a[m][n] a[i][j](按行存储):a+(i*n+j)*len, (按列储存): a+(i+j*m)*le n

7.2. DONE 稀疏矩阵

2023-05-09_07-42-48_screenshot.png 做题时,直接用带入法

7.3. DONE 数据结构的定义

  • 线性结构: 比如线性表
  • 非线性结构: 比如树、图

7.4. DONE 线性表

7.4.1. DONE 定义

  • (a1, a2, … , an)
  • 两种存储方式
    • 顺序表:储存空间连续
    • 链表: 储存空间不一定连续 (会包含下一个位置的指针)
      • 单链表
      • 循环链表
      • 双向链表

7.4.2. DONE 线性储存与链式储存对比

  顺序储存 链式存储
储存密度 1,更优 <1
容量分配 事先确定 动态改变
查找运算 O(n/2),有序时更优 O(n/2)
读运算 O(1) O([n+1]/2) good:1, bad:n
插入运算 O(n/2),good:0,bad:1 O(1)
删除 O([n-1]/2) O(1)

7.4.3. DONE 队列与栈

  • 循坏队列
    • 队空条件: head = tail
    • 队满条件: head = (tail+1)%size

7.5. DONE 广义表

  • 通常以递归形式定义
  • 类似: LS1 = (a, (b, c), (d, e)), 即元素也可以是一个广义表
  • 长度: 最外层的表的长度
  • 深度: 递归定义的重数, 上述为2
  • head(LS1) = 第一个元素
  • tail(LS1) = 除了第一个元素剩下的 ((b,c), (d,e))

7.6. DONE 树与二叉树

7.6.1. DONE 定义

2023-05-10_07-14-02_screenshot.png

  • 节点的度: 一个节点拥有的child的个数. 上述,1的度为2; 3为1; 7为0
  • 树的度: 树中所有节点最大的度,上述为2
  • 叶子节点: 度为0的节点
  • 分支节点:
  • 内部节点: 非叶子和根, 2,3,6
  • 父节点:
  • 子节点:
  • 兄弟节点:同一层次的节点
  • 层次:

2023-05-10_07-19-36_screenshot.png

  • 满二叉树: 没有缺失的节点
  • 完全二叉树: 最底层只缺了右边的节点,其他的层的节点都是满的

二叉树的特性:

  • 层次从1开始算
  • 第i层最多有 2(i-1) 个节点
  • 深度为k的二叉树, 最多有 2i - 1 个节点
  • 叶子节点 n0 与度为2的节点 n2 , 满足 n0=n2+1
  • 如果对有 n 个节点的完全二叉树有以下特征:
    • 如果 i = 1, 则无父节点; 如果 i>1, 其父节点为 |i/2|(向下取整)
    • 如果 2i > n, 则i为叶子节点,无左子节点;否则,其左子节点是2i
    • 如果 2i + 1 > n, 则 i 无右子节点;否则,其有子节点为 2i+1

7.6.2. DONE 二叉树遍历

2023-05-10_07-31-59_screenshot.png

  • 层次遍历: 1 2 3 4 5 6 7 8
  • 前序遍历: (根 -> 左子树 -> 右子树) 1 2 4 5 7 8 3 6
  • 中序遍历: (左子树 -> 根 -> 右子树) 4 2 7 8 5 1 3 6
  • 后序遍历: (左子树 -> 右子树 -> 根) 4 8 7 5 2 6 3 1

7.6.3. DONE 反向构造二叉树

  • 根据已知的二叉树遍历序列,还原出二叉树
  • 前+中 或 中+后 可以构建出
  • 如果只有 前+后 不可以构建

7.6.4. DONE 树转二叉树

  • 孩子节点 -> 左子树节点
  • 兄弟节点 -> 右孩子节点

    2023-05-10_19-53-56_screenshot.png

7.6.5. DONE 查找二叉树

2023-05-11_07-07-02_screenshot.png

  • 左子树小于根
  • 根小于右子树
  • 又称排序二叉树
  • 极大提高查找效率
  • 不能有相同的节点

7.6.6. DONE 最优二叉树(哈夫曼树)

2023-05-11_07-16-40_screenshot.png

  • 常用用于哈夫曼编码(无损压缩)
  • 树的路径长度:树中的路径累加的值, (上面的12, 为2)
  • 权: 节点的值
  • 带权路径长度: 路径长度乘以权(上面的12 为 2*12 = 24)
  • 树的带权路径长度: 叶子节点带权路径长度之和 (左树为 2*2+4*3+8*3+1=41)
  • 哈夫曼的树的树的带权路径长度最小

    2023-05-11_07-25-11_screenshot.png

  • 构造哈夫曼树时,只有叶子节点才是初始的权值

7.6.7. DONE 线索二叉树

2023-05-11_07-33-43_screenshot.png

  • 为了方便遍历,利用其叶子节点的指针
  • 前序线索二叉树
    • 叶子的左指针指向前序遍历的左边,右指向右边
    • 上述的,前序遍历顺序为 ABDEHCFGI
    • 故D左指向B,右指向E
  • 中序和后序类似

7.6.8. DONE 平衡二叉树

2023-05-12_20-28-46_screenshot.png

  • 同一序列,排序二叉树会有多种
  • 任意节点的左右子树深度相差不超过1
  • 每个节点的平衡度只能为 +1 0 -1
    • 平衡度的计算, 左子树深度为正, 右子树为-

7.7. DONE

7.7.1. DONE 定义

2023-05-12_20-36-07_screenshot.png

  • 无向图: 节点之间没有方向, 若每个顶点间都有边相连,则是 完全图
  • 有向图: 节点之间有方向,若每个顶点间都有两条有向边相连 , 则是 完全图

7.7.2. DONE 图的储存

  1. 邻接矩阵

    2023-05-13_07-45-41_screenshot.png

    • 用一个n阶方阵R来存放图中各个节点的关联信息,其矩阵元素 R(ij) 定义如上
    • n 为节点个数
  2. 邻接表

    2023-05-13_07-50-41_screenshot.png

    • 将每个节点的相邻节点用链表记录顶点和距离
    • 然后用一维数组储存上述的链表的头指针

7.7.3. DONE 图的遍历

2023-05-13_15-01-43_screenshot.png

  • 深度优先遍历 (上->下, 左->右): V1 V2 V4 V8 V5 V3 V6 V7
  • 广度优先遍历 (左->右,上->下): V1 V2 V3 V4 V5 V6 V7 V8

    2023-05-13_15-05-12_screenshot.png

  • 广度优先: 从 0 的链表开始, 先访问完当前链表,再递归访问。 0 4 3 1 6 2 7 5
  • 深度优先: 从 0 的链表开始, 从当前链表第一个就开始递归访问。 0 4 6 7 1 2 5 3

7.7.4. DONE 拓扑排序

2023-05-13_15-18-21_screenshot.png

  • 用有向边表示活动的先后关系。这种有向图称之为 AOV网络
  • 上图的拓扑排序有:02143567 01243567 02143657 01243657

7.7.5. DONE 图的最小生成树

  • 图有环路,树没有环路
  • 假设有 n 个节点, 那么树的边最多 n-1 条, 故图的最小生成树有 n-1 边

    2023-05-13_15-33-52_screenshot.png

  1. 普里姆算法
    • 从任意节点出发, 如上 A, 将其加入 红点集
    • 选择与 红点集 相连的最短节点(非红点集), 如上 B (100), 将其加入 红点集
    • 重复上一步, 加入 E (200) F(250) D(200) C(300)

      2023-05-13_15-37-45_screenshot.png

    • 最小生成树不会有环路
    • 边之和最短
  2. 克鲁斯卡尔算法
    • 总是选最短边
    • 不能形成环路
    • 故上述会选 100 200 200 250 300 这些边

7.8. DONE 算法基础

7.8.1. DONE 特性

  • 有穷性: 执行有穷步骤后结束
  • 确定性: 指令必须明确
  • 输入 >=0
  • 输出 >=1
  • 有效性: 算法每个步骤能有效执行并得到确定的结果, 例如 b=0 , a/b 就是无效的

7.8.2. DONE 复杂度

  • 时间复杂度: O(1) < O(lgn) < O(n) < O(nlgn) < O(n2) < O(n3) < O(2n)
  • 空间复杂度: 执行过程中需要用到的临时空间

7.8.3. DONE 查找

  1. 顺序查找

    时间复杂度: O(n)

  2. 二分查找
    • 必须是有序序列
    • 时间复杂度: O(lgn)
  3. 散列表
    • 设计hash函数
    • 时间复杂度: O(1)
  4. 散列表冲突的解决方法
    • 线性探测法
    • 伪随机数法

7.8.4. DONE 排序

  1. 概念
    • 稳定与不稳定排序: 例如 21 0 21 这串数字, 稳定的,第一个21必然在第二个21之前,不稳定的不保证
    • 内排序与外排序
  2. 直接插入排序
    • 将插入的第 i 个元素, 依次与 R1, R2…R(i-1) 比较,找到合适位置插入
    • 双层 for 循环, 时间复杂度 O(n2), 空间复杂度 O(1)
  3. 希尔排序
    • 有数组 n
    • 取小于 n 的整数 d1 , 将其分成 d1 个组, 所有距离为 d1 整数倍的记录放在同一组
    • 对这 d1 个组分别进行插入排序
    • 取第二个增量 d2 < d1, 重复上述分组排序步骤
    • 直到 dt = 1, 也就是对整个数组进行插入排序
  4. 直接选择排序
    • 将所有记录中,选择最小的,与第1个记录交换
    • 在剩余的记录中,选择最小的,与第2个交换
    • 依次类推
  5. 堆排序

    2023-05-13_16-38-30_screenshot.png

    • 它是一个完全二叉树
    • 建立小顶堆,取走根元素
    • 然后重建堆
    • 重复上述步骤
    • 就可以得到排好序的数组
    • 在选择 TopN 的场景, 非常高效

    2023-05-13_16-45-07_screenshot.png 建立大顶堆的过程

    • 先按照创建完全二叉树
    • 调整最后一个建立的非叶子节点:将其与子节点比较,以取3个节点中最大的作为根为目的进行交换。如上:5与8交换
    • 以上述方式调整倒数第二个非叶子节点
    • 如果交换的节点是其他节点的根,那么需要递归交换。如上图1.3:3和8交换后,3与5还要进行交换

    调整堆的过程:

    2023-05-13_16-56-36_screenshot.png

    • 取走根元素后, 将最后一个节点放到根元素位置
    • 然后从根结点开始进行调整
  6. 冒泡排序
    • 通过相邻元素进行对比交换
    • 依次交换到顶

      2023-05-13_17-01-27_screenshot.png

  7. 快速排序
    • 确定一个基准
    • 将小于基准的放在左边,大于的放在右边
    • 然后递归对左右两边重复运行上述步骤
  8. 归并排序
    • 将两个或两个以上的 有序表 合并成一个新的
    • 取两个数组头部的最小值,放到新的数组
    • 重复上述步骤
  9. 基数排序

    2023-05-13_18-10-18_screenshot.png

    • 先按照个位数分组,进行排序,然后依次按照十位/百位进行
  10. 各算法的复杂度

    2023-05-13_18-11-34_screenshot.png

8. DONE 程序设计语言与语言处理程序基础

8.1. DONE 编译过程

2023-05-15_07-15-06_screenshot.png

8.2. DONE 文法定义

一个形式文法是一个有序四元组定义, G=(V,T,S,P)

  • V: 非终结符。不是语言组成部分,不是最终结果,可理解为占位符
  • T: 终结符。是语言的组成部分,是最终结果。
  • S: 起始符。语言开始的符号
  • P: 产生式。用终结符替代非终结符的规则。形如 \aplha -> β

    2023-05-15_07-22-17_screenshot.png

8.3. DONE 语法推导树

2023-05-15_07-25-52_screenshot.png

8.4. DONE 有限自动机

2023-05-15_07-28-01_screenshot.png

8.5. DONE 正规式

2023-05-16_07-17-13_screenshot.png

2023-05-16_07-20-57_screenshot.png

  • D
  • C

8.6. DONE 程序语言基础

8.6.1. DONE 表达式

2023-05-16_07-27-09_screenshot.png

  • 按照计算优先级依据中缀遍历构造树
  • D

8.6.2. DONE 函数调用-传值与传址

2023-05-16_07-32-14_screenshot.png

8.6.3. DONE 各种程序语言特点

2023-05-16_07-41-22_screenshot.png

9. DONE 法律法规

9.1. DONE 保护期限

2023-05-17_07-27-23_screenshot.png

9.2. DONE 知识产权人确定

2023-05-17_07-32-49_screenshot.png

2023-05-17_07-37-37_screenshot.png

9.3. DONE 侵权判定

2023-05-17_07-42-53_screenshot.png

9.4. DONE 标准化知识

2023-05-18_07-19-45_screenshot.png

2023-05-18_07-19-24_screenshot.png

10. DONE 多媒体基础

10.1.

10.2. DONE 音频

2023-05-18_07-26-37_screenshot.png

10.3. DONE 图像

2023-05-20_07-15-49_screenshot.png

10.4. DONE 媒体的种类

2023-05-20_07-16-06_screenshot.png

10.5. DONE 多媒体相关计算问题

2023-05-20_07-17-15_screenshot.png

10.6. DONE 常见的多媒体标准

2023-05-20_07-32-07_screenshot.png

10.7. DONE 数据压缩基础

2023-05-20_07-42-59_screenshot.png

10.8. DONE 有损压缩与无损压缩

2023-05-20_07-43-12_screenshot.png

11. DONE 软件工程

11.1. DONE 软件开发模型

11.1.1. DONE 瀑布模型SDLC

2023-05-20_07-53-23_screenshot.png

  • 适合需求明确,二次开发
  • 应用于结构化开发

11.1.2. DONE 其他经典模型

  1. 增量模型与螺旋模型

    2023-05-20_07-54-15_screenshot.png

    2023-05-20_08-02-07_screenshot.png

    • 原型化方法,用来应付需求不明确的场景
  2. V 模型

    2023-05-20_08-17-29_screenshot.png

11.1.3. DONE 构建组装模型CBSD

2023-05-20_08-27-13_screenshot.png

11.1.4. DONE 统一过程

2023-05-20_08-27-36_screenshot.png

11.1.5. DONE 敏捷开发方法

2023-05-20_08-38-52_screenshot.png

  • 中小型项目

11.1.6. DONE 信息系统开发方法

2023-05-20_08-45-39_screenshot.png

11.2. DONE 需求开发

11.2.1. DONE 需求分类与需求获取

2023-05-20_08-58-09_screenshot.png

11.2.2. DONE 需求分析-OOA

  1. 相关概念

    2023-05-20_19-26-15_screenshot.png

  2. UML

    2023-05-20_19-24-56_screenshot.png

11.3. DONE 系统设计

11.3.1. DONE 结构化设计

  1. 基本原则

    2023-05-20_09-04-45_screenshot.png

  2. 内聚与耦合

    2023-05-20_09-39-08_screenshot.png

  3. 系统结构/模块结构

    2023-05-20_09-39-23_screenshot.png

11.4. DONE 软件测试

11.4.1. DONE 测试原则与类型

2023-05-20_09-39-49_screenshot.png

11.4.2. DONE 测试用例设计

2023-05-20_09-51-05_screenshot.png

11.4.3. DONE 测试阶段

2023-05-20_10-07-26_screenshot.png

11.4.4. DONE McCabe复杂度

2023-05-20_10-17-33_screenshot.png

11.5. DONE 系统运行与维护

2023-05-20_10-55-02_screenshot.png

11.6. DONE 软件过程改进-CMMI

2023-05-20_18-26-51_screenshot.png

11.7. DONE 项目管理

2023-05-20_18-36-43_screenshot.png

  • 甘特图不能清晰的描述各任务之间的依赖关系

2023-05-20_18-49-46_screenshot.png

  • 先正推算出最早开始时间,在逆推算出最晚开始时间
  • C

2023-05-20_18-50-46_screenshot.png

12. DONE 系统设计

12.1. DONE 面向对象设计

12.1.1. DONE 设计原则

2023-05-20_19-04-03_screenshot.png

12.1.2. DONE 设计模式的概念

  • 架构模式: 软件设计中的高层决策,例如 C/S 结构就属于架构模式, 架构模式反映了开发软件系统过程中所作的基本设计决策
  • 设计模式: 比架构模式低一个层次。关注软件系统的设计, 与具体的实现语言无关。
  • 惯用法: 最底层的模式,关注软件系统的设计与实现,与语言相关

12.1.3. DONE 设计模式的分类

  1. 创建型模式
    • 工厂方法模式
    • 抽象工厂模式
    • 原型模式
    • 单例模式
    • 构建器模式
  2. 结构型模式
    • 适配器模式
    • 侨接模式
    • 组合模式
    • 装饰模式
    • 外观模式
    • 享元模式
    • 代理模式
  3. 行为型模式
    • 职责链模式
    • 命令模式
    • 解释器模式
    • 迭代器模式
    • 中介者模式
    • 备忘录模式
    • 观察者模式
    • 状态模式
    • 策略模式
    • 模板方法模式
    • 访问者模式

13. DONE 数据流图DFD

13.1. DONE 基本概念

2023-05-21_19-16-19_screenshot.png

2023-05-21_19-21-21_screenshot.png

13.2. DONE 数据字典

符号 含义 例子
= 被定义为  
+ x=a+b, 表示x由a与b组成
[…,…] x=[a,b], 表示x由a或b组成
{…} 重复 x={a}, 表示x由0个或多个a组成
(…) 可选 x=(a), 表示a可以在x中出现,也可以不出现

例子:

  • 机票=姓名+日期+终点+起点+费用
  • 终点=[长沙|北京|上海]

13.3. DONE 平衡原则

  • 父图与子图之间的平衡
  • 子图内的平衡

    2023-05-21_19-34-01_screenshot.png

    2023-05-21_19-34-14_screenshot.png

绘制数据流图时,绘制加工的输入、输出可能出现的错误

  • 黑洞, 有输入,没输出
  • 奇迹, 有输出,没输出
  • 输出输出名称一样
  • 输入加工后不可能产生命名的输入流

14. DONE 数据库设计

14.1. DONE 设计过程

2023-05-22_07-22-06_screenshot.png

14.2. DONE ER模型

  • 实体间联系类型

2023-05-22_07-24-58_screenshot.png

15. DONE UML建模

15.1. DONE 用例图

2023-05-24_20-20-50_screenshot.png

15.2. DONE 类图与对象图

2023-05-24_20-21-23_screenshot.png

2023-05-24_20-24-08_screenshot.png

  • 聚合: 菱形处表示整体一方
  • 多重度
    • 0..*
    • 0..1

15.3. DONE 顺序图

2023-05-24_20-25-26_screenshot.png

15.4. DONE 活动图

2023-05-24_20-28-03_screenshot.png

2023-05-24_20-28-46_screenshot.png

15.5. DONE 状态图

2023-05-24_20-29-54_screenshot.png

15.6. DONE 通信图

2023-05-24_20-33-31_screenshot.png

16. 数据结构与算法应用

16.1. 分治法

16.1.1. 递归技术

16.1.2. 二分查找

16.2. 回溯法

16.3. 贪心法

16.4. 动态规划法

日期: 2023-04-06

Validate