软考系统架构设计师 · 知识体系总览
软考系统架构设计师 · 知识体系总览
基于 1355 篇考证公众号文章主题聚类 + 系统架构设计师官方大纲整理。
覆盖 16 大知识域、1280 篇文章已按主题归位。
每章含:知识点清单 / 关联关系 / 易混淆点 / 思维导图 / 顺口溜+谐音口诀。
第〇部分 总览
0.1 知识体系一图流(Mermaid 思维导图)
mindmap
root((软考架构师))
计算机基础
数据表示
进制转换
原反补移码
浮点IEEE754
校验码 海明/CRC
硬件结构
CPU 运算器+控制器
总线 数据/地址/控制
存储层次 寄存器→Cache→主存→辅存
磁盘 RAID0/1/3/5/6/10
数据结构与算法
线性 表栈队列数组串
树 二叉/平衡/B+/B-/红黑/Huffman
图 邻接矩阵/邻接表/遍历/最短路/最小生成树
算法 排序/查找/分治/动态规划/贪心/回溯
复杂度 主定理/递推
操作系统
进程管理 PV/死锁/调度
存储管理 分页/分段/虚拟/页面置换
文件管理 FAT/索引/目录
设备管理 Spooling/中断/DMA
计算机网络
OSI七层 TCP/IP四层
协议 TCP/UDP/HTTP/DNS/DHCP
网络设备 路由器/交换机/网关
子网划分 CIDR/VLSM
数据库
关系模型 关系代数/函数依赖/范式1-4BCNF
事务 ACID/并发/锁/隔离级别
分布式 CAP/BASE/两阶段提交
数据仓库 星型/雪花/OLAP/OLTP/ETL
NoSQL KV/列族/文档/图
软件工程
开发模型 瀑布/螺旋/增量/迭代/敏捷/V模型
需求工程 获取/分析/规约/验证/管理
软件设计 概要/详细/面向对象
软件测试 白盒/黑盒/路径覆盖/McCabe
质量管理 CMM/CMMI/ISO9000
配置管理 基线/版本/变更控制
系统架构设计【核心】
架构风格 数据流/调用返回/独立构件/虚拟机/仓库
质量属性 性能/可用/安全/可修改/可测试/易用/可靠
ABSD 基于架构的软件设计
架构评估 ATAM/SAAM/CBAM/ARID
中间件 消息/事务/数据库/远程调用
SOA与微服务 ESB/REST/RPC/服务网格
设计模式
创建型5 单例/工厂/抽象工厂/建造者/原型
结构型7 适配器/桥接/组合/装饰/外观/享元/代理
行为型11 责任链/命令/解释器/迭代器/中介者/备忘录/观察者/状态/策略/模板/访问者
软件可靠性
指标 MTBF/MTTR/可用度/失效率
容错 N版本/恢复块/检查点
恢复 前向/后向/重启动
软件安全
加密 对称AES/DES 非对称RSA Hash/MD5/SHA
认证 PKI/CA/数字签名/Kerberos
访问控制 DAC/MAC/RBAC
协议 SSL/TLS/IPSec/SET
攻防 防火墙/IDS/IPS/SQL注入/XSS/CSRF
项目管理
进度 甘特/PERT/关键路径
成本 挣值EV/PV/AC CPI/SPI
风险 识别/分析/应对/监控
配置 基线/变更/版本
数学与经济
投资 NPV/IRR/现值/终值/盈亏平衡
图论 最小生成树/最短路/匹配
排队论 M/M/1
知识产权
著作权/专利/商标/商业秘密
软件著作权 保护期/归属
数学逻辑
命题逻辑 真值表/推理/等价
谓词逻辑 量词/前束范式
离散 集合/关系/函数/代数系统
专业英语
术语/阅读理解
0.2 三大题型与知识域对应
| 题型 | 分值 | 主考知识域 | 命题特点 |
|---|---|---|---|
| 综合知识(选择75题) | 75分 | 全部16域 | 广而浅,记忆为主 |
| 案例分析(5题选3) | 75分 | 架构设计、质量属性、架构评估、设计模式、软件工程、数据库 | 深而专,需结合场景 |
| 论文(4题选1) | 75分 | 架构风格应用、质量属性提升、ABSD、SOA/微服务、可靠性、安全 | 需项目经验+理论结合 |
0.3 高频考点口诀总览(详见各章)
- 质量六属性:性可安易可修(性能/可用/安全/易用/可靠/可修改)
- 架构五大风格:数调仓虚独(数据流/调用返回/仓库/虚拟机/独立构件)
- 设计模式234:5创7构11行(5创建7结构11行为)
- CMM五级:初可定义优(初始/可重复/已定义/已管理/优化)
- OSI七层:物数网传会表应(物理/数据链路/网络/传输/会话/表示/应用)
- 范式四级:一消非二消部三消传BC消决定(1NF消非主/2NF消部分/3NF消传递/BCNF消决定因子)
- 加密三对称:DES三重AES(DES/3DES/AES)
第一部分 16 大知识域详解
第1章 计算机系统基础知识
1.1 知识点清单
1.1.1 数据表示与编码
- 进制转换:二↔八↔十六↔十;小数转换注意精度;按权展开求和法
- 机器数编码:原码、反码、补码、移码
- 原码:符号位+绝对值,0有两种表示(+0/-0)
- 反码:正数同原码,负数符号位1数值位取反
- 补码:正数同原码,负数反码+1,0唯一表示,加减统一
- 移码:补码符号位取反,用于浮点阶码,便于比较大小
- 浮点数 IEEE754:数符1位+阶码8位(移码)+尾数23位;规格化尾数隐含1
- 单精度32位,双精度64位
- 阶码全0:非规格化/零;阶码全1:无穷/NaN
- 校验码:
- 奇偶校验:检1位错,不能纠错
- 海明码:检纠错,公式 2^k ≥ n+k+1(k校验位,n数据位)
- CRC循环冗余:检错强,多项式除法求余
1.1.2 计算机硬件结构
- CPU = 运算器(ALU+累加器+状态寄存器)+ 控制器(PC+IR+指令译码器+时序)
- 总线分类:数据总线、地址总线、控制总线;按位置分内部/外部/系统总线
- 指令周期:取指→间址→执行→中断
- 指令流水线:吞吐率 = 1 / 最长段;加速比 = 顺序时间 / 流水时间
- CISC vs RISC:复杂指令 vs 精简指令;RISC硬布线控制、寄存器多、单周期
1.1.3 存储体系
- 层次:寄存器 → Cache → 主存 → 辅存(磁盘/磁带)
- Cache映射方式:
- 直接映射:主存块固定到一行,硬件简单冲突率高
- 全相联映射:任意行,冲突低查找慢
- 组相联映射:分组直接+组内全相联,折中
- 地址映像与变换、替换算法(LRU/LFU/FIFO/随机)
- 虚拟存储:页表/TLB/缺页中断
1.1.4 磁盘与RAID
- RAID0:条带无冗余,速度最快无容错
- RAID1:镜像,容错强利用率50%
- RAID3:位级奇偶校验,专用校验盘
- RAID5:块级分布式奇偶校验,最常用,允许坏1盘
- RAID6:双校验,允许坏2盘
- RAID10:1+0,镜像条带,性能与容错兼顾
1.2 关联关系
- 补码↔ALU:补码让加减统一,简化运算器设计
- 移码↔浮点阶码:移码便于阶码比较大小,浮点对阶操作
- 海明码↔存储/传输:内存ECC、磁盘校验的基础
- Cache↔程序局部性:时间局部性+空间局部性是Cache有效的理论依据
- 流水线↔RISC:RISC单周期指令是流水线高效的前提
- RAID↔可用性:RAID级别直接决定系统MTBF
1.3 易混淆点
| 易混点 | 区分 |
|---|---|
| 移码 vs 补码 | 移码=补码符号位取反;移码只用于浮点阶码,补码用于整数 |
| 反码 vs 补码 | 反码数值位取反;补码=反码+1;负数补码才统一加减 |
| 海明码公式 vs CRC | 海明 2^k≥n+k+1 纠错;CRC多项式除法检错 |
| 直接映射 vs 全相联 | 直接:块固定行(hash取模);全相联:任意行(要全表比较) |
| RAID3 vs RAID5 | RAID3位级+专用校验盘;RAID5块级+校验分布各盘 |
| CISC vs RISC | CISC指令复杂变长微程序控制;RISC精简定长硬布线 |
| 流水线吞吐率 vs 加速比 | 吞吐率=1/最长段;加速比=顺序总时间/流水总时间 |
1.4 思维导图
mindmap
root((计算机基础))
数据表示
进制转换 按权展开
原反补移码
原码 符号+绝对值 0两种
反码 负数取反
补码 反码+1 加减统一
移码 补码符号取反 阶码专用
IEEE754 数符阶码尾数
校验码
奇偶 检1位
海明 2k≥n+k+1 检纠
CRC 多项式除法
硬件结构
CPU 运算器+控制器
总线 数据地址控制
指令流水 吞吐=1/最长段
CISC vs RISC
存储层次
寄存器→Cache→主存→辅存
Cache映射 直接/全相联/组相联
替换 LRU/LFU/FIFO
磁盘RAID
RAID0 速度无容错
RAID1 镜像50
RAID5 分布校验 最常用
RAID10 镜像+条带
1.5 顺口溜+谐音口诀
机器码四兄弟(原反补移):
原始符号加绝对,反码负数位取反,
补码反码加个一,移码补码符号翻。
加减统一用补码,比较阶码用移码。
海明码公式(2^k ≥ n+k+1):
海明 k 校验,二^k 大于等于 n+k+1;
记忆:2的k次方,要罩住全部位加1(n数据+k校验+1位区分无错)。
Cache三映射:
直接映射定行号,全相联任意找,组相联折中好。
谐音:直全组 → “只全组”(只全组员都参与)。
RAID级别:
0条1镜3位校,5块分布6双校,10镜像加条带。
谐音:0无1镜3专5散6双10复合。
流水线公式:
吞吐率 = 1 / 最长段;加速比 = 顺序 / 流水。
口诀:吞吐看瓶颈,加速看比值。
第2章 数据结构与算法基础
2.1 知识点清单
2.1.1 线性结构
- 顺序表:随机访问O(1),插入删除O(n)
- 链表:单链/双链/循环链;插入删除O(1)(已知节点),访问O(n)
- 栈:LIFO后进先出;出栈序列数 = 卡特兰数 C(n) = C(2n,n)/(n+1)
- 队列:FIFO先进先出;循环队列判满:(rear+1)%n==front
- 串:KMP匹配O(n+m),next数组;朴素匹配O(n*m)
2.1.2 树
- 二叉树性质:n0 = n2 + 1(叶子=度2节点+1);第i层最多2^(i-1)节点;深度k最多2^k-1
- 满二叉树 / 完全二叉树 / 平衡二叉树(AVL)
- 二叉树遍历:前序/中序/后序/层序;前+中 或 后+中 唯一确定树,前+后不唯一
- 二叉排序树BST:左<根<右;中序遍历得有序序列
- 平衡二叉树AVL:|平衡因子|≤1;插入需LL/RR/LR/RL旋转
- B树/B+树:多路平衡,磁盘友好;B+树叶子链表,数据库索引首选
- 红黑树:弱平衡,插入删除O(log n),STL map/set底层
- Huffman树:带权路径最短,左0右1编码前缀码;n个叶子n-1次合并
- 堆:大根堆/小根堆;建堆O(n);插入删除O(log n)
2.1.3 图
- 存储:邻接矩阵O(n²) / 邻接表O(n+e)
- 遍历:DFS(栈/递归)/ BFS(队列)
- 连通分量 / 强连通分量 / 生成树
- 最短路径:Dijkstra(非负权,O(n²))/ Floyd(全源,O(n³))/ Bellman-Ford(负权)
- 最小生成树:Prim(稠密图)/ Kruskal(稀疏图,并查集)
- 拓扑排序:DAG,每次取入度0节点
- 关键路径:AOE网,源点→汇点最长路径
2.1.4 算法设计
- 排序:
- 插入/冒泡/选择:O(n²) 稳定(选择不稳定)
- 快排:平均O(nlogn) 最坏O(n²) 不稳定
- 归并:O(nlogn) 稳定 需O(n)空间
- 堆排:O(nlogn) 不稳定
- 基数/计数:非比较,线性时间
- 查找:顺序O(n) / 二分O(log n) / 分块 / Hash O(1)
- 递归 → 主定理 T(n)=aT(n/b)+f(n)
- 分治 / 动态规划 / 贪心 / 回溯 / 分支限界
2.1.5 复杂度
- 主定理三种情形:f(n) < n^(log_b a) / = / >
- 常见递推:T(n)=2T(n/2)+n → O(nlog n)(归并/快排平均)
2.2 关联关系
- 栈↔递归↔DFS:递归调用栈即隐式栈,DFS显式用栈
- 队列↔BFS:BFS层序遍历用队列
- Huffman↔前缀码:Huffman树构造的编码必为前缀码,无歧义解码
- B+树↔数据库索引:B+树叶子链表适合范围查询,DB索引底层
- 红黑树↔STL map:C++ map/set/Java TreeMap底层红黑树
- Dijkstra↔贪心:Dijkstra是贪心算法,每步取当前最短
- 动态规划↔最优子结构:DP需最优子结构+重叠子问题
- 关键路径↔项目管理:AOE网关键路径即项目最长工期路径
2.3 易混淆点
| 易混点 | 区分 |
|---|---|
| 满二叉树 vs 完全二叉树 | 满:每层都满;完全:除最后层全满且最后层左对齐 |
| 前序+后序 vs 前序+中序 | 前+中 / 后+中 唯一确定;前+后不唯一 |
| Dijkstra vs Floyd | Dijkstra单源非负权O(n²);Floyd全源含负权O(n³) |
| Prim vs Kruskal | Prim从点扩展(稠密图);Kruskal按边并查集(稀疏图) |
| 快排 vs 归并 | 快排不稳定平均O(nlogn);归并稳定O(nlogn)需O(n)空间 |
| AVL vs 红黑 | AVL严格平衡查找快插入慢;红黑弱平衡综合优 |
| BST中序 vs 二叉树中序 | BST中序得有序序列;普通二叉树中序无序 |
| DP vs 贪心 | DP需最优子结构+重叠子问题;贪心需贪心选择性质 |
| Huffman vs B+树 | Huffman编码树(带权最短);B+树索引树(多路平衡) |
2.4 思维导图
mindmap
root((数据结构算法))
线性
顺序表 随机O1插入On
链表 插入O1访问On
栈 LIFO 卡特兰数
队列 FIFO 循环判满
串 KMP next数组
树
二叉树 n0=n2+1
遍历 前中后层 前中/后中唯一
BST 左根右
AVL 平衡因子≤1
B+树 数据库索引
红黑树 STL底层
Huffman 左0右1 前缀码
堆 建堆On
图
邻接矩阵On2 邻接表On+e
DFS栈 BFS队列
最短路 Dijkstra/Floyd/Bellman
最小生成树 Prim/Kruskal
拓扑 DAG入度0
关键路径 AOE最长
算法
排序 冒泡n2/快排nlogn/归并稳定/堆排
查找 二分logn/Hash O1
设计 分治/DP/贪心/回溯
复杂度
主定理 Tn=aTn/b+fn
2.5 顺口溜+谐音口诀
二叉树性质:
n0 = n2 + 1,叶子比度2多一个;
第 i 层最多 2 的 (i-1) 次方,k 深度最多 2 的 k 次方减 1。
谐音:叶子等二度加一。
遍历唯一性:
前+中、后+中能定树,前+后不行;
口诀:中序是骨架,前后定左右。
排序稳定性:
冒插归基稳,快选堆希不稳。
(冒泡/插入/归并/基数 稳定;快排/选择/堆排/希尔 不稳定)
最短路径三兄弟:
Dijkstra 单源非负用贪心,Floyd 全源含负三重循环,Bellman-Ford 负权可检测负环。
谐音:地弗贝(D-F-B):单源→全源→带负环。
最小生成树:
Prim 稠密图从点扩,Kruskal 稀疏图按边并查集。
口诀:稠密选P,稀疏选K。
主定理:
T(n) = aT(n/b) + f(n),比 n^(log_b a):
小则大(取 n^(log_b a)),大则小(取 f(n)),等则乘 log n。
口诀:小取大,大取小,相等加个log。
第3章 操作系统
3.1 知识点清单
3.1.1 进程管理
- 进程三态:就绪/运行/阻塞;五态增加新建/终止
- 进程切换 vs 线程切换:进程切需换地址空间,线程切同进程内只换栈
- 进程间通信:管道/消息队列/共享内存/信号量/Socket
- PV操作(P=wait减,V=signal加):
- P:S=S-1,若S<0则阻塞
- V:S=S+1,若S≤0则唤醒
- 互斥:P(S)临界区V(S),S初值1
- 同步:前操作后V(S),后操作前P(S),S初值0
- 死锁四条件:互斥/保持等待/不剥夺/环路等待
- 死锁处理:预防(破坏四条件之一)/避免(银行家算法)/检测/解除
- 银行家算法:安全序列判断,Available/Max/Allocation/Need矩阵
- 进程调度算法:FCFS/SJF/优先级/时间片轮转/多级反馈队列
3.1.2 存储管理
- 连续分配:单一连续/固定分区/可变分区
- 分页管理:页表/页大小/地址=页号+页内偏移;缺页中断
- 分段管理:段表/逻辑地址=段号+段内偏移;便于共享保护
- 段页式:先分段再分页
- 虚拟存储:请求分页/请求分段;页面置换算法
- OPT:最优,未来最久不用(理论下界)
- FIFO:先进先出,可能Belady异常(增加页框缺页反增)
- LRU:最近最少用,无Belady,性能近似OPT
- LFU:最少访问次数
- 位示图:磁盘块空闲管理,1位表示1块
3.1.3 文件管理
- 文件结构:逻辑结构(记录式/流式)+ 物理结构(连续/链接/索引)
- FAT文件系统:文件分配表,链式
- 索引文件:单级/多级索引(inode)
- 目录结构:单级/两级/树形/无环图
- 文件存储空间管理:空闲表/空闲链/位示图/成组链接
3.1.4 设备管理
- I/O控制方式:程序查询/中断/DMA/通道
- Spooling:假脱机,将独占设备改造成共享设备(打印机典型)
- 缓冲技术:单缓冲/双缓冲/循环缓冲/缓冲池
- 磁盘调度:FCFS/SSTF/SCAN/LOOK/C-SCAN
3.2 关联关系
- PV操作↔进程同步互斥:PV是信号量机制的实现,解决并发同步互斥
- 死锁↔资源分配图:资源分配图有环则可能死锁(每种资源单实例则必有死锁)
- 银行家↔死锁避免:银行家算法通过安全序列避免死锁
- LRU↔局部性原理:LRU基于时间局部性,与Cache替换一致
- 虚拟内存↔局部性:只装入活跃部分,基于空间局部性
- Spooling↔共享设备:将独占设备虚拟成共享,提高利用率
- DMA↔中断:DMA进一步解放CPU,大批量数据传输
3.3 易混淆点
| 易混点 | 区分 |
|---|---|
| 进程 vs 线程 | 进程有独立地址空间;线程共享进程资源;线程切换开销小 |
| 死锁 vs 活锁 vs 饥饿 | 死锁互相等待;活锁主动让步仍冲突;饥饿长期得不到服务 |
| 预防 vs 避免 vs 检测 | 预防破坏条件(保守);避免运行时判断(银行家);检测事后发现 |
| FIFO vs LRU | FIFO有Belady异常;LRU无Belady近似OPT |
| 分页 vs 分段 | 分页大小固定硬件管理;分段大小可变逻辑单位便于共享 |
| P操作 vs V操作 | P减可能阻塞;V加可能唤醒;P前V后 |
| 互斥信号量 vs 同步信号量 | 互斥初值1同一资源;同步初值0先后顺序 |
| Spooling vs 缓冲 | Spooling用磁盘假脱机改独占为共享;缓冲在内存缓解速度匹配 |
3.4 思维导图
mindmap
root((操作系统))
进程管理
三态 就绪运行阻塞
PV操作 P减V加
死锁四条件 互斥保持不剥夺环路
银行家 安全序列
调度 FCFS/SJF/RR/多级反馈
存储管理
连续/分页/分段/段页式
虚拟存储 请求分页
页面置换 OPT/FIFO/LRU/LFU
Belady FIFO异常
文件管理
逻辑 记录式流式
物理 连续链接索引
FAT/inode
目录 树形无环图
设备管理
I/O 查询中断DMA通道
Spooling 独占改共享
缓冲 单双循环池
磁盘调度 SSTF/SCAN/CSCAN
3.5 顺口溜+谐音口诀
PV操作:
P 减一,小于零就阻塞;V 加一,小于等于零唤一个。
互斥初值1,同步初值0。
谐音:P减阻,V加唤,互1同0。
死锁四条件:
互斥、保持等待、不剥夺、环路等待。
口诀:互保不环(互相保持不放手,形成环)。
谐音:互保不环 → “护宝不还”。
页面置换四算法:
OPT最优不可实现,FIFO先进先出有Belady,LRU最近最少用近似最优,LFU次数最少。
口诀:O最F贝L近L次(最优FIFO-LRU-LFU)。
I/O控制四方式:
查询、中断、DMA、通道。
口诀:查中D通(查中断通)。
谐音:茶中地通——喝茶中间地铁通了。
解放CPU程度:查询<中断<DMA<通道。
磁盘调度:
FCFS先来先服务,SSTF最短寻道,SCAN电梯单向,C-SCAN循环单向。
口诀:F最S电C循。
第4章 计算机网络
4.1 知识点清单
4.1.1 网络体系结构
- OSI七层:物理→数据链路→网络→传输→会话→表示→应用
- TCP/IP四层:网络接口→网际→传输→应用
- 各层设备:物理层(中继器/集线器)/数据链路层(网桥/交换机)/网络层(路由器)/传输及以上(网关)
- 各层PDU:物理位/链路帧/网络包/传输段/应用报文
4.1.2 协议
- 物理层:RS-232、V.35
- 数据链路层:HDLC、PPP、CSMA/CD、VLAN(802.1Q)
- 网络层:IP、ICMP、ARP、RARP、OSPF、RIP、BGP
- 传输层:TCP(可靠面向连接)/UDP(不可靠无连接)
- 应用层:HTTP/HTTPS、FTP、SMTP/POP3/IMAP、DNS、DHCP、SNMP、Telnet、SSH
- TCP三次握手/四次挥手;SYN/ACK/FIN/RST标志
- TCP流量控制(滑动窗口)/拥塞控制(慢启动/拥塞避免/快重传/快恢复)
4.1.3 IP地址与子网
- IPv4 32位,A/B/C/D/E类
- 私有地址:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16
- 子网划分:借主机位作网络位;子网数=2^借位,每子网主机=2^剩余位-2
- CIDR无类域间路由:/n掩码;VLSM可变长子网掩码
- IPv6 128位,冒号十六进制;双栈/隧道过渡
4.1.4 网络设备与设计
- 路由器:网络层,路由表,最长前缀匹配
- 交换机:链路层,MAC地址表,VLAN划分
- 三层架构:核心层(高速交换)/汇聚层(策略路由VLAN)/接入层(终端接入)
- NAT:地址转换,缓解IPv4不足
4.2 关联关系
- OSI vs TCP/IP:TCP/IP是OSI的简化实现,工业标准
- ARP↔IP↔MAC:ARP将IP解析为MAC,跨网络层与链路层
- TCP三次握手↔可靠传输:握手保证双方收发能力,SYN同步序号
- 子网划分↔VLSM↔CIDR:从定长子网→可变长子网→无类路由,逐步灵活
- DNS↔应用层:DNS将域名解析为IP,应用层协议基于UDP/TCP
- VLAN↔交换机↔Trunk:VLAN隔离广播域,Trunk承载多VLAN
- 三层架构↔网络规划:核心-汇聚-接入是园区网标准设计
4.3 易混淆点
| 易混点 | 区分 |
|---|---|
| OSI七层 vs TCP/IP四层 | OSI理论模型;TCP/IP实际标准;TCP/IP合并了表示会话到应用 |
| 交换机 vs 路由器 | 交换机链路层MAC转发;路由器网络层IP转发最长前缀匹配 |
| 集线器 vs 网桥 vs 交换机 | 集线器物理层广播;网桥链路层两端口;交换机多端口网桥 |
| TCP vs UDP | TCP可靠面向连接有序;UDP不可靠无连接无序但快 |
| 三次握手 vs 四次挥手 | 握手3次(SYN/SYN+ACK/ACK);挥手4次(FIN/ACK/FIN/ACK)因全双工 |
| 子网掩码 vs CIDR | 掩码点分十进制;CIDR的/n斜线表示法;本质相同 |
| ARP vs RARP | ARP IP→MAC;RARP MAC→IP(无盘工作站启动) |
| RIP vs OSPF | RIP距离向量跳数上限15;OSPF链路状态Dijkstra |
4.4 思维导图
mindmap
root((计算机网络))
体系结构
OSI七层 物数网传会表应
TCP/IP四层 接口网际传输应用
设备 中继器集线器网桥交换机路由器网关
协议
链路 HDLC/PPP/VLAN
网络 IP/ICMP/ARP/OSPF/RIP/BGP
传输 TCP可靠/UDP不可靠
应用 HTTP/FTP/DNS/DHCP/SMTP
TCP三次握手四次挥手
IP地址
A/B/C/D/E类
私有 10/172.16/192.168
子网划分 借位
CIDR/VLSM
IPv6 128位
网络设计
三层架构 核心汇聚接入
NAT地址转换
VLAN广播域隔离
最长前缀匹配
4.5 顺口溜+谐音口诀
OSI七层(物理→数据链路→网络→传输→会话→表示→应用):
物数网传会表应。
谐音:物数网传会表应 → “物(理)数(链)网传会表应” → “五叔网传会表应”——五叔上网传话表哥答应。
助记:请数据网络传输会话表示应用 → “物数网传会表应”。
TCP/IP四层:
网络接口、网际、传输、应用。
口诀:接际传用。
TCP三次握手:
客户SYN→服务SYN+ACK→客户ACK。
口诀:SYN、SYN+ACK、ACK,三步建连。
TCP四次挥手:
主动FIN→被动ACK→被动FIN→主动ACK。
口诀:FIN、ACK、FIN、ACK,四次断连(全双工各自关)。
私有地址三段:
10.0.0.0/8、172.16.0.0/12、192.168.0.0/16。
口诀:10八172十六十二192十六 → “十八一七二点一六到三十一,一九二点一六八”。
子网划分:
借主机位作网络位,子网数=2^借,主机=2^余-2(去网络和广播)。
口诀:借位翻倍,剩余减二。
路由协议:
RIP距离向量跳数15,OSPF链路状态Dijkstra,BGP路径向量自治间。
口诀:R跳O链B路径(RIP跳数OSPF链路BGP路径)。
第5章 数据库系统
5.1 知识点清单
5.1.1 关系模型
- 关系代数:选择σ、投影π、连接⋈、除÷、并∪、差-、笛卡尔积×
- 函数依赖:X→Y,X决定Y
- 完全函数依赖:X的任何真子集都不能决定Y
- 部分函数依赖:X的某真子集能决定Y
- 传递函数依赖:X→Y,Y→Z,Y不→X
- 候选键:能唯一确定元组且无冗余的最小属性集
- 主键 / 主属性 / 非主属性
- Armstrong公理:自反/增广/传递;导出合并/分解/伪传递
5.1.2 范式(重点)
- 1NF:属性不可再分(消除非原子)
- 2NF:在1NF基础上,消除非主属性对候选键的部分函数依赖(即非主属性完全依赖于候选键)
- 3NF:在2NF基础上,消除非主属性对候选键的传递函数依赖
- BCNF:在3NF基础上,消除主属性对候选键的部分和传递依赖(即每个决定因子都包含候选键)
- 4NF:消除非平凡的多值依赖
- 规范化程度越高,冗余越少但查询性能可能下降
5.1.3 事务与并发控制
- ACID:原子性Atomicity / 一致性Consistency / 隔离性Isolation / 持久性Durability
- 并发问题:丢失更新 / 脏读 / 不可重复读 / 幻读
- 隔离级别(从低到高):读未提交→读已提交→可重复读→串行化
- 读未提交:脏读
- 读已提交:避免脏读(Oracle默认)
- 可重复读:避免脏读+不可重复读(MySQL默认,MVCC可避免幻读)
- 串行化:全避免但性能差
- 锁:
- 共享锁S(读锁)/ 排他锁X(写锁)
- 两阶段锁协议:扩展阶段只加锁,收缩阶段只解锁,可串行化但可能死锁
- 意向锁IS/IX/SIX(表级意向,提高加锁效率)
- MVCC多版本并发控制:读不阻塞写,写不阻塞读
5.1.4 数据库设计
- E-R模型:实体/属性/联系(1:1 / 1:n / m:n)
- E-R图转关系模式:
- 1:1:任一方加外键
- 1:n:n端加外键
- m:n:新建关系,包含两端主键
- 函数依赖公理闭包 / 属性闭包 / 候选键求解
5.1.5 分布式数据库
- CAP定理:一致性C / 可用性A / 分区容错P,只能三选二
- CP:强一致牺牲可用(Zookeeper、HBase)
- AP:高可用牺牲一致(Cassandra、DynamoDB)
- CA:单机无分区(传统RDBMS)
- BASE理论:基本可用Basically Available / 软状态Soft state / 最终一致Eventually consistent
- 两阶段提交2PC / 三阶段提交3PC / Paxos / Raft
- 分片Sharding / 复制Replication / 分区Partition
5.1.6 数据仓库与NoSQL
- 数据仓库:面向主题、集成、非易失、时变;OLAP分析
- 星型模型:事实表+维度表,维度非规范化
- 雪花模型:维度规范化展开
- 粒度:数据汇总级别
- ETL:抽取-转换-加载
- OLTP vs OLAP:联机事务处理 vs 联机分析处理
- NoSQL四类:
- KV:Redis、Memcached
- 列族:HBase、Cassandra
- 文档:MongoDB、CouchDB
- 图:Neo4j
5.2 关联关系
- 函数依赖↔范式↔候选键:范式等级由函数依赖决定,候选键是判断依据
- ACID↔隔离级别↔锁:隔离级别越高越接近ACID但性能下降,锁是实现手段
- MVCC↔读已提交/可重复读:MVCC实现快照读,避免读写互锁
- CAP↔BASE:CAP是分布式不可能三角;BASE是AP系统的妥协哲学
- 2PC↔原子提交:2PC保证跨节点事务原子性,但同步阻塞
- 星型↔雪花↔维度建模:星型查询快冗余多;雪花规范但join多
- E-R↔关系模式:E-R概念模型转关系模式逻辑模型,m:n需独立表
5.3 易混淆点
| 易混点 | 区分 |
|---|---|
| 2NF vs 3NF vs BCNF | 2NF消非主部分依赖;3NF消非主传递依赖;BCNF消主属性部分/传递依赖 |
| 候选键 vs 主键 | 候选键可有多个;主键是选中的一个候选键 |
| 部分依赖 vs 传递依赖 | 部分:子集决定;传递:X→Y→Z |
| 脏读 vs 不可重复读 vs 幻读 | 脏读读未提交;不可重复读同行两次变;幻读范围新增删除 |
| 共享锁 vs 排他锁 | S读锁可并发读;X写锁独占读写都阻塞 |
| CAP的CP vs AP | CP强一致(ZK);AP高可用(Cassandra) |
| ACID vs BASE | ACID强一致传统库;BASE最终一致分布式 |
| 星型 vs 雪花 | 星型维度非规范冗余多查询快;雪花维度规范join多 |
| OLTP vs OLAP | OLTP事务短小当前数据;OLAP分析历史聚合 |
| 2PC vs 3PC | 2PC同步阻塞协调者单点;3PC引入CanCommit减阻塞 |
5.4 思维导图
mindmap
root((数据库))
关系模型
关系代数 选择投影连接除
函数依赖 完全部分传递
候选键 主键主属性
Armstrong公理
范式
1NF 消非原子
2NF 消非主部分依赖
3NF 消非主传递依赖
BCNF 消主属性部分传递
4NF 消多值依赖
事务并发
ACID 原一隔持
隔离级别 读未提交读已提交可重复读串行化
并发问题 脏读不可重复读幻读
锁 S/X/意向/两阶段
MVCC 多版本
数据库设计
E-R模型 实体属性联系
E-R转关系 1:1/1:n/m:n
分布式
CAP 一致可用分区
CP ZK vs AP Cassandra
BASE 基本可用软状态最终一致
2PC/3PC/Paxos/Raft
数据仓库NoSQL
数据仓库 主题集成非易失时变
星型 vs 雪花
ETL 粒度
OLTP vs OLAP
NoSQL KV列族文档图
5.5 顺口溜+谐音口诀
范式四级(1NF→2NF→3NF→BCNF):
1NF消非原子,2NF消非主部分,3NF消非主传递,BCNF消主属性部分传递。
口诀:一非二部三传BC主。
谐音:一非二部三传BC主 → “一飞二步三穿B C主”——一步飞二步穿到BC主楼。
ACID:
原子性、一致性、隔离性、持久性。
口诀:原一隔持。
谐音:原一隔持 → “元一隔世”——元一隔世(道长)。
隔离级别四档:
读未提交、读已提交、可重复读、串行化。
口诀:未已可串。
谐音:未已可串 → “魏已可串”——老魏已经可以串门了。
严格性递增:未<已<可<串。
并发三问题:
脏读、不可重复读、幻读。
口诀:脏不幻(脏读/不可重复/幻读)。
谐音:脏不幻 → “脏不换”——脏衣服不换。
CAP定理:
一致性C、可用性A、分区容错P,三选二。
口诀:CAP三选二,CP强一致,AP高可用,CA单机。
谐音:CP抓AP用——警察抓人,APP用得着。
BASE:
基本可用、软状态、最终一致。
口诀:基软终。
谐音:基软终 → “鸡软终”——鸡软了终(结局)。
NoSQL四类:
KV、列族、文档、图。
口诀:KV列文图。
代表:Redis/HBase/MongoDB/Neo4j。
星型vs雪花:
星型维度非规范查询快,雪花维度规范join多。
口诀:星快雪省(星型快,雪花省空间)。
第6章 软件工程
6.1 知识点清单
6.1.1 软件开发模型
- 瀑布模型:线性顺序,文档驱动,需求明确且不变时适用;缺点难应对变更
- V模型:瀑布的测试对应版,开发-测试左右对称
- 增量模型:分批交付,先核心后扩展;可尽早上市
- 螺旋模型:瀑布+迭代+风险分析,每周期四阶段(目标/风险/开发/评估);大型复杂项目
- 迭代/喷泉模型:多次迭代,每次产出可用子集
- 原型模型:抛弃式/演化式;需求不明确时快速验证
- 敏捷开发:Scrum/Kanban/XP;迭代短、客户参与、拥抱变更
- Scrum:Sprint/产品Backlog/每日站会/Sprint评审/回顾
- RUP统一过程:用例驱动、以架构为中心、迭代增量;四阶段(初始/精化/构造/移交)
- 构件/CBSD:基于构件的软件工程,复用构件组装
6.1.2 需求工程
- 需求分类:功能需求 / 非功能需求(性能/安全/可用等)/ 约束需求
- 需求获取:访谈/问卷/观察/JAD/原型
- 需求分析:结构化(DFD数据流图、数据字典)/ 面向对象(UML用例图)
- 需求规约:SRS软件需求规格说明书
- 需求验证:需求评审/原型验证
- 需求管理:基线/变更控制/需求跟踪矩阵/版本管理
6.1.3 软件设计
- 概要设计(体系结构设计):模块划分、接口、数据结构
- 详细设计:每个模块的算法、数据结构、流程
- 结构化设计:DFD→结构图;模块内聚/耦合
- 内聚(从低到高):偶然/逻辑/时间内/过程/通信/顺序/功能
- 耦合(从低到高):非直接/数据/标记/控制/外部/公共/内容
- 面向对象设计:SOLID原则、设计模式
- 软件体系结构设计:见第7章
6.1.4 软件测试
- 测试分类:
- 单元测试:模块级,白盒为主
- 集成测试:模块间接口,自顶向下/自底向上/三明治
- 确认测试:验证需求,黑盒
- 系统测试:整体,黑盒
- 验收测试:用户确认Alpha/Beta
- 白盒测试:基于代码结构
- 语句覆盖(最弱)< 判定覆盖 < 条件覆盖 < 判定-条件覆盖 < 条件组合覆盖 < 路径覆盖(最强)
- 黑盒测试:基于功能
- 等价类划分 / 边界值分析 / 错误推测 / 因果图 / 判定表
- McCabe圈复杂度:V(G) = 边数 - 节点数 + 2 = 判定节点数 + 1
- 独立路径数 = V(G)
- 回归测试 / 自动化测试 / 性能测试(负载/压力/并发)
- 测试用例数下界:路径覆盖需 V(G) 个
6.1.5 软件质量与维护
- CMM五级:初始→可重复→已定义→已管理→优化
- L1初始:无序
- L2可重复:项目级过程可重复
- L3已定义:组织级标准过程
- L4已管理:定量管理
- L5优化:持续改进
- CMMI:CMM集成版,阶段式/连续式表示
- ISO 9000 / ISO 9001 / ISO 9000-3(软件)
- 软件维护四类:改正性 / 适应性 / 完善性 / 预防性
- 完善性维护占比最大(约50%-66%)
6.1.6 软件配置管理
- 配置项:代码/文档/数据/环境
- 基线:经过评审正式固定的配置项集合
- 版本控制 / 变更控制 / 配置状态报告 / 配置审计
- 逆向工程 / 再工程 / 重构
6.2 关联关系
- 瀑布↔需求明确:瀑布要求需求稳定,变更代价高
- 螺旋↔风险:螺旋每周期做风险分析,适合高风险项目
- 敏捷↔变更:敏捷拥抱变更,迭代短
- 内聚耦合↔模块独立性:高内聚低耦合是模块设计目标
- 白盒覆盖↔McCabe:路径覆盖需V(G)条独立路径
- CMM↔过程成熟度:CMM等级反映组织过程规范化程度
- 配置管理↔基线↔变更控制:基线是变更控制的起点
- 需求工程↔测试:需求是确认测试/验收测试的依据
6.3 易混淆点
| 易混点 | 区分 |
|---|---|
| 瀑布 vs 螺旋 vs 增量 | 瀑布线性无回溯;螺旋迭代含风险分析;增量分批交付 |
| 原型抛弃式 vs 演化式 | 抛弃式验证后丢掉重写;演化式原型演进为最终产品 |
| 内聚 vs 耦合 | 内聚模块内聚合程度(高好);耦合模块间依赖(低好) |
| 白盒 vs 黑盒 | 白盒看代码结构覆盖路径;黑盒看功能输入输出 |
| 语句覆盖 vs 路径覆盖 | 语句最弱;路径最强;语句<判定<条件<判定条件<条件组合<路径 |
| 单元 vs 集成 vs 确认 vs 系统 | 单元模块级白盒;集成接口;确认需求黑盒;系统整体 |
| CMM L2 vs L3 | L2项目级可重复;L3组织级标准过程 |
| 改正性 vs 适应性 vs 完善性 | 改正修bug;适应改环境;完善加新功能(占比最大) |
| 基线 vs 配置项 | 配置项是单个版本化对象;基线是经评审的配置项集合 |
| 逆向工程 vs 再工程 | 逆向恢复设计;再工程逆向+重构改进 |
6.4 思维导图
mindmap
root((软件工程))
开发模型
瀑布 线性文档驱动
V模型 测试对称
增量 分批交付
螺旋 风险分析
原型 抛弃演化
敏捷 Scrum/XP/Kanban
RUP 用例驱动架构中心
CBSD 构件复用
需求工程
获取 访谈问卷原型
分析 DFD/UML
规约 SRS
管理 基线变更跟踪
软件设计
概要 模块划分
详细 算法流程
内聚 偶逻时过通顺功
耦合 非数标控外公内
SOLID原则
软件测试
单元集成确认系统验收
白盒 语句判定条件路径
黑盒 等价类边界值因果图
McCabe 圈复杂度
回归测试
质量维护
CMM五级 初可定义优
CMMI 集成版
维护 改适完预
配置管理
配置项 基线 变更控制
逆向再工程重构
6.5 顺口溜+谐音口诀
开发模型选型:
需求明确用瀑布,高风险用螺旋,分批交付用增量,需求模糊用原型,拥抱变更用敏捷。
口诀:明瀑险螺增批糊原变敏。
内聚七级(从低到高:偶然→逻辑→时间内→过程→通信→顺序→功能):
偶然逻辑时间内,过程通信顺序功。
口诀:偶逻时过通顺功。
谐音:偶逻时过通顺功 → “偶罗时过通顺公”——偶(然)罗(辑)时(间)过(程)通(信)顺(序)公(功能)。
记忆:功能内聚最高,设计目标。
耦合七级(从低到高:非直接→数据→标记→控制→外部→公共→内容):
非数标控外公内。
口诀:非数标控外公内。
谐音:非数标控外公内 → “飞鼠标控外公内”——飞鼠标控制外公内(人)。
记忆:非直接耦合最低,内容耦合最高要避免。
白盒覆盖六层(语句<判定<条件<判定条件<条件组合<路径):
语判条判条组路。
口诀:语判条双组路(语句/判定/条件/判定-条件/条件组合/路径)。
谐音:语判条双组路 → “鱼判条双组路”——鱼判(一)条双组路。
强弱:路径最强,语句最弱。
McCabe圈复杂度:
V(G) = E - N + 2 = P + 1(判定节点+1)。
口诀:边减点加二,判定加一。
独立路径数 = V(G)。
CMM五级(初始→可重复→已定义→已管理→优化):
初可定义优。
口诀:初可定义优。
谐音:初可定义优 → “初可定义优”——初(始)可(重复)定义(已定义)优(优化)。
完整:初始、可重复、已定义、已管理、优化。
软件维护四类:
改正性、适应性、完善性、预防性。
口诀:改适完预。
谐音:改适完预 → “改是顽玉”。
完善性维护占比最大(50%-66%)。
第7章 系统架构设计【核心重点】
本章是案例分析与论文的绝对核心,分值占比最高。
7.1 知识点清单
7.1.1 软件架构概念
- 架构 = 构件 + 连接件 + 约束
- 架构是系统的高层结构,决定质量属性能否达成
- 4+1视图:逻辑视图/开发视图/进程视图/物理视图/场景视图
- 架构描述语言ADL:ADL描述构件、连接件、配置
7.1.2 架构风格(核心)
- 数据流风格:
- 批处理序列(顺序执行)
- 管道-过滤器(流式处理,Unix管道典型)
- 特点:松耦合,适合数据处理;不支持交互
- 调用/返回风格:
- 主程序-子程序
- 面向对象风格(封装继承多态)
- 层次结构(OSI七层、操作系统层)
- 特点:控制清晰,适合大多数系统;层间依赖
- 独立构件风格:
- 进程通信(消息传递)
- 事件驱动(隐式调用,发布订阅)
- 特点:松耦合可扩展;难调试
- 虚拟机风格:
- 解释器(解释执行,如JVM)
- 基于规则的系统(AI专家系统)
- 特点:灵活易扩展;性能低
- 仓库风格:
- 数据库系统(中央数据+多构件访问)
- 超文本系统(Web链接)
- 黑板系统(知识源+黑板+控制,AI求解)
- 特点:数据集中共享;同步开销
- C2风格:构件+连接件,严格分层,消息双向
7.1.3 质量属性(核心)
- 性能:响应时间、吞吐量、并发数
- 可用性:MTBF/(MTBF+MTTR),故障恢复能力
- 可靠性:MTBF,无故障运行时间
- 安全性:机密性、完整性、可用性(CIA三要素)
- 可修改性:修改成本,模块化、低耦合
- 可测试性:测试难易程度
- 易用性:用户使用难易
- 可移植性:跨平台能力
- 质量属性场景:刺激源+刺激+环境+制品+响应+响应度量
- 质量属性效用树:ATAM评估核心工具
7.1.4 ABSD基于架构的软件设计
- ABSD方法三阶段:
- 架构需求:质量属性场景、约束、偏好
- 架构设计:选择架构风格、设计模式、构件
- 架构文档化:4+1视图、ADL
- ABSD强调架构驱动需求,迭代演进
7.1.5 架构评估(核心)
- ATAM架构权衡分析法:
- 方法:呈现方法→建立效用树→分析架构方法→产生质量属性效用树→分析敏感点/权衡点/风险点/非风险点
- 输出:风险点、非风险点、敏感点、权衡点、关键点
- 敏感点:影响一个质量属性的参数
- 权衡点:影响多个质量属性的参数(如缓存大小影响性能和内存)
- 风险点:可能不满足质量属性的决策
- 非风险点:已满足质量属性的决策
- SAAM软件架构分析法:场景→架构→评估,主要评估可修改性
- CBAM成本效益分析法:在ATAM基础上加经济效益
- ARID主动设计评审:针对部分架构
7.1.6 中间件
- 消息中间件:MQ、Kafka、RocketMQ;异步解耦削峰
- 事务中间件:Tuxedo、CICS;分布式事务
- 数据库访问中间件:ODBC、JDBC
- 远程过程调用:RPC、RMI、gRPC
- 分布式对象中间件:CORBA、DCOM、EJB
- Web服务中间件:SOAP、WSDL、UDDI
- 缓存中间件:Redis、Memcached
7.1.7 SOA与微服务
- SOA面向服务架构:
- 服务:独立、自描述、可复用、可组合
- ESB企业服务总线:路由、转换、编排
- Web服务:SOAP+WSDL+UDDI
- 微服务架构:
- 服务拆分:按业务能力
- 独立部署、独立数据库、去中心化
- 服务注册发现:Eureka、Consul、Nacos
- API网关:Spring Cloud Gateway、Kong
- 服务通信:REST、gRPC、消息队列
- 服务网格:Istio、Linkerd(Sidecar)
- 配置中心:Apollo、Nacos
- 链路追踪:SkyWalking、Zipkin
- 熔断降级:Hystrix、Sentinel
- SOA vs 微服务:SOA用ESB集中集成;微服务去中心化独立部署
7.1.8 其他架构
- MVC:Model-View-Controller,分离视图与业务
- B/S vs C/S:浏览器/服务器 vs 客户端/服务器
- REST:资源+HTTP动词,无状态
- RPC:远程过程调用,像本地一样调远程
- 事件驱动EDA:事件触发处理,松耦合
- CQRS:命令查询职责分离
- DDD领域驱动设计:聚合根、限界上下文
7.2 关联关系
- 架构风格↔质量属性:不同风格擅长不同质量属性
- 数据流→可修改性、性能
- 调用返回→可修改性、可靠性
- 独立构件→可扩展性、可修改性
- 虚拟机→可移植性、灵活性
- 仓库→可修改性、数据集成
- ATAM↔效用树↔敏感点/权衡点:效用树组织质量属性,分析得敏感/权衡点
- ABSD↔架构评估:ABSD设计,ATAM评估,形成闭环
- 中间件↔分布式架构:中间件解决分布式透明性
- SOA→微服务:微服务是SOA的细化去中心化版
- 质量属性↔架构决策:架构决策为达成质量属性
- MVC↔B/S:MVC常用于B/S Web应用
- REST↔无状态↔可伸缩:REST无状态利于水平扩展
7.3 易混淆点
| 易混点 | 区分 |
|---|---|
| 管道过滤器 vs 批处理 | 管道过滤器流式增量并发;批处理顺序整批 |
| 事件驱动 vs 进程通信 | 事件驱动隐式调用发布订阅;进程通信显式消息点对点 |
| 解释器 vs 基于规则 | 解释器解释执行程序;规则系统基于知识库推理 |
| 黑板 vs 数据库仓库 | 黑板有控制策略协调知识源;数据库被动响应查询 |
| 可靠性 vs 可用性 | 可靠性MTBF无故障时间;可用性=MTBF/(MTBF+MTTR)含修复 |
| 敏感点 vs 权衡点 | 敏感点影响1个质量属性;权衡点影响多个(可能冲突) |
| 风险点 vs 非风险点 | 风险点可能不满足;非风险点已满足 |
| ATAM vs SAAM | ATAM权衡多质量属性;SAAM主要评估可修改性 |
| SOA vs 微服务 | SOA用ESB集中集成粗粒度;微服务去中心化细粒度独立部署 |
| REST vs RPC | REST资源+HTTP无状态;RPC像本地调用有状态stub |
| MVC中Controller vs View | Controller处理输入调度;View展示Model |
| ESB vs API网关 | ESB企业集成重路由转换;API网关轻量外部接入 |
7.4 思维导图
mindmap
root((系统架构设计))
架构概念
构件连接件约束
4+1视图 逻辑开发进程物理场景
ADL
架构风格
数据流 批处理管道过滤器
调用返回 主子OO层次
独立构件 进程通信事件驱动
虚拟机 解释器规则系统
仓库 数据库超文本黑板
C2严格分层
质量属性
性能 可用性 可靠性 安全性
可修改性 可测试性 易用性 可移植性
效用树 场景六要素
ABSD
需求 设计 文档化
架构驱动迭代
架构评估
ATAM 权衡分析 敏感权衡风险
SAAM 可修改性
CBAM 成本效益
ARID 部分架构
中间件
消息 事务 数据库 远程 对象 Web 缓存
SOA微服务
SOA ESB SOAP/WSDL/UDDI
微服务 独立部署去中心
注册发现 网关 熔断 链路追踪
服务网格 Sidecar
其他
MVC B/S C/S REST RPC
EDA CQRS DDD
7.5 顺口溜+谐音口诀
架构五大风格(数据流/调用返回/独立构件/虚拟机/仓库):
数据流、调用返回、独立构件、虚拟机、仓库。
口诀:数调独虚仓。
谐音:数调独虚仓 → “数调独虚仓”——数调(参数调)独虚仓(独立虚拟仓库)。
助记:数据流管道、调用返回分层、独立事件、虚拟解释、仓库黑板。
质量六属性(性能/可用/安全/可修改/可靠/可测试,加易用可移植):
性能、可用、安全、可修改、可靠、可测试。
口诀:性可安可修可测 → 简化 性可安易可修。
谐音:性可安易可修 → “星可安一可修”——星可安(装)一可修(复)。
完整:性能可用安全可修改可靠可测试易用可移植。
ATAM四输出(敏感点/权衡点/风险点/非风险点):
敏感点影响一个,权衡点影响多个,风险点可能不满足,非风险点已满足。
口诀:敏一权多险不满非已满。
谐音:敏一权多险不满非已满 → “敏一权多险不满,非已满”——敏一(个)权多(个)险不满,非已满。
架构评估三方法:
ATAM权衡分析,SAAM可修改性,CBAM成本效益。
口诀:A权S可C本。
谐音:A权S可C本 → “阿权司可资本”——阿权(人)司(公司)可资本。
SOA vs 微服务:
SOA用ESB集中集成粗粒度,微服务去中心化细粒度独立部署。
口诀:SOA总线粗,微服去中细。
谐音:SOA总线粗,微服去中细 → “SOA总线粗,微服去中心细”。
中间件七类:
消息、事务、数据库访问、远程调用、分布式对象、Web服务、缓存。
口诀:消事数远对网缓。
谐音:消事数远对网缓 → “消事数远对网缓”——消(息)事(务)数(据库)远(程)对(象)网(服务)缓(存)。
4+1视图:
逻辑、开发、进程、物理、场景。
口诀:逻开进物场。
谐音:逻开进物场 → “罗开进物场”——罗开进(入)物(流)场。
第8章 设计模式
8.1 知识点清单
8.1.1 创建型模式(5种)——对象创建
- 单例Singleton:确保唯一实例;饿汉/懒汉/双检锁/静态内部类
- 工厂方法Factory Method:定义创建接口,子类决定实例化
- 抽象工厂Abstract Factory:创建一系列相关产品族
- 建造者Builder:分步构建复杂对象,分离构造与表示
- 原型Prototype:通过克隆创建对象
8.1.2 结构型模式(7种)——类/对象组合
- 适配器Adapter:转换接口,使不兼容类协作(类适配器继承/对象适配器组合)
- 桥接Bridge:分离抽象与实现,独立变化
- 组合Composite:树形结构,统一对待个体和组合
- 装饰Decorator:动态加职责,比继承灵活
- 外观Facade:为复杂子系统提供统一接口
- 享元Flyweight:共享细粒度对象,节省内存
- 代理Proxy:控制访问,延迟加载/权限/远程
8.1.3 行为型模式(11种)——对象交互
- 责任链Chain of Responsibility:请求沿链传递,直到处理
- 命令Command:封装请求为对象,可撤销排队
- 解释器Interpreter:定义语言文法,解释执行
- 迭代器Iterator:顺序访问聚合元素,不暴露内部
- 中介者Mediator:集中对象交互,降低耦合
- 备忘录Memento:保存对象状态,可恢复
- 观察者Observer:一对多依赖,状态变更通知
- 状态State:状态变行为变,消除条件分支
- 策略Strategy:封装算法,可互换
- 模板方法Template Method:定义骨架,子类实现步骤
- 访问者Visitor:对结构加操作,数据与操作分离
8.2 关联关系
- 创建型↔对象创建:封装实例化,解耦创建与使用
- 结构型↔组合:通过组合/继承获得新结构
- 行为型↔交互:对象间职责分配
- 适配器 vs 桥接 vs 代理:适配器转接口;桥接分离维度;代理控制访问
- 装饰 vs 代理:装饰加职责;代理控制访问
- 策略 vs 状态:策略主动选择算法;状态状态驱动行为
- 观察者 vs 中介者:观察者一对多通知;中介者多对多集中
- 命令 vs 备忘录:命令封装操作可撤销;备忘录保存状态可恢复
8.3 易混淆点
| 易混点 | 区分 |
|---|---|
| 工厂方法 vs 抽象工厂 | 工厂方法单产品;抽象工厂产品族多相关产品 |
| 适配器 vs 外观 | 适配器转单个接口;外观简化整个子系统 |
| 适配器 vs 桥接 | 适配器事后兼容;桥接事前设计分离维度 |
| 装饰 vs 继承 | 装饰运行时叠加;继承编译时静态 |
| 装饰 vs 代理 | 装饰加职责;代理控制访问(创建/权限/远程) |
| 组合 vs 装饰 | 组合树形统一个体组合;装饰加职责链 |
| 享元 vs 单例 | 享元多共享实例;单例唯一实例 |
| 策略 vs 状态 vs 模板 | 策略换算法;状态换行为;模板定骨架子类填 |
| 观察者 vs 中介者 | 观察者一对多广播;中介者多对多集中协调 |
| 命令 vs 备忘录 | 命令封装操作可undo;备忘录存状态可恢复 |
| 责任链 vs 策略 | 责任链链上多个都可能处理;策略选一个执行 |
8.4 思维导图
mindmap
root((设计模式23))
创建型5
单例 唯一实例
工厂方法 子类决定创建
抽象工厂 产品族
建造者 分步构建
原型 克隆
结构型7
适配器 转接口
桥接 分离抽象实现
组合 树形统一
装饰 动态加职责
外观 子系统统一接口
享元 共享细粒度
代理 控制访问
行为型11
责任链 链上传递
命令 封装请求
解释器 文法解释
迭代器 顺序访问
中介者 集中交互
备忘录 保存状态
观察者 一对多通知
状态 状态变行为变
策略 算法互换
模板方法 骨架子类填
访问者 数据操作分离
8.5 顺口溜+谐音口诀
23种模式分类(5创建7结构11行为):
创建5、结构7、行为11,共23。
口诀:5创7构11行。
谐音:5创7构11行 → “五创七构十一行”——五(个)创(建)七(个)构(造)十一(个)行(为)。
创建型5(单例/工厂方法/抽象工厂/建造者/原型):
单工抽建原。
口诀:单工抽建原。
谐音:单工抽建原 → “单工抽建原”——单(单例)工(工厂)抽(抽象工厂)建(建造者)原(原型)。
结构型7(适配器/桥接/组合/装饰/外观/享元/代理):
适桥组装外享代。
口诀:适桥组装外享代。
谐音:适桥组装外享代 → “适桥组装外享代”——适(配)桥(接)组(合)装(装饰)外(观)享(元)代(理)。
行为型11(责任链/命令/解释器/迭代器/中介者/备忘录/观察者/状态/策略/模板方法/访问者):
责命解迭中备观状策模访。
口诀:责命解迭中备观状策模访。
谐音:责命解迭中备观状策模访 → “责命解迭中备观状策模访”——责(任链)命(令)解(释器)迭(代器)中(介者)备(忘录)观(察者)状(态)策(略)模(板)访(问者)。
易混三组对照:
适配转接口,桥接分维度,代理控访问。
装饰加职责,代理控访问。
策略选算法,状态变行为,模板定骨架。
口诀:适转桥分代控,装加代控,策选态变模定。
第9章 软件可靠性
9.1 知识点清单
9.1.1 可靠性指标
- MTBF平均无故障时间:相邻故障间平均运行时间
- MTTR平均修复时间:故障后平均修复时间
- 可用性A = MTBF / (MTBF + MTTR)
- 失效率λ = 1 / MTBF
- 可靠度R(t) = e^(-λt)(指数分布)
- 软件可靠性不同于硬件:软件不老化,可靠性由设计决定
9.1.2 容错技术
- N版本程序设计:多独立版本并行,多数表决;防共性故障需独立设计
- 恢复块:主块+备用块,主块失败切换备用;向后恢复
- 检查点/回滚:定期保存状态,故障回滚到检查点
- 冗余:
- 硬件冗余:双机热备/集群
- 软件冗余:N版本/恢复块
- 时间冗余:重试
- 信息冗余:校验码
- 防卫式程序设计:断言、异常处理、防御性检查
9.1.3 恢复技术
- 前向恢复:继续推进,跳过错误(适合不可逆错误)
- 后向恢复:回滚到正确状态(适合可回滚)
- 重启动:系统级恢复
9.1.4 可靠性分析
- 可靠性模型:MTBF模型、故障树FTA、失效模式FMEA
- 软件可靠性测试:注入故障、运行剖面测试
9.2 关联关系
- MTBF↔MTTR↔可用性:可用性由MTBF和MTTR共同决定
- N版本↔表决:N版本需表决机制,多版本独立设计防共性缺陷
- 恢复块↔后向恢复:恢复块是后向恢复的典型实现
- 检查点↔回滚:检查点为回滚提供恢复点
- 容错↔冗余:容错通过冗余实现(硬件/软件/时间/信息)
- 可靠性↔测试:可靠性测试验证MTBF指标
9.3 易混淆点
| 易混点 | 区分 |
|---|---|
| 可靠性 vs 可用性 | 可靠性MTBF无故障时长;可用性含修复时间占比 |
| MTBF vs MTTR | MTBF故障间运行时长(大好);MTTR修复时长(小好) |
| N版本 vs 恢复块 | N版本并行表决前向;恢复块串行切换后向 |
| 前向 vs 后向恢复 | 前向继续跳过;后向回滚重做 |
| 硬件冗余 vs 软件冗余 | 硬件双机集群;软件N版本恢复块 |
| 软件可靠 vs 硬件可靠 | 软件不老化设计决定;硬件会老化需维护 |
9.4 思维导图
mindmap
root((软件可靠性))
指标
MTBF 无故障时间
MTTR 修复时间
可用性 MTBF/(MTBF+MTTR)
失效率 1/MTBF
可靠度 e-λt
容错
N版本 并行表决
恢复块 主备切换
检查点回滚
冗余 硬软件时间信息
防卫式编程
恢复
前向 跳过继续
后向 回滚重做
重启动
分析
FTA故障树
FMEA失效模式
可靠性测试
9.5 顺口溜+谐音口诀
可靠性三指标:
MTBF无故障,MTTR修复,可用性=MTBF/(MTBF+MTTR)。
口诀:M无M修可除。
谐音:M无M修可除 → “M无M修可除”——M(TBF)无(故障)M(TTR)修(复)可(用性)除(法)。
容错双雄:
N版本并行表决,恢复块主备切换。
口诀:N并表恢主备。
谐音:N并表恢主备 → “N并表恢主备”——N(版本)并(行)表(决)恢(复块)主备。
恢复两向:
前向跳过继续,后向回滚重做。
口诀:前跳后回。
谐音:前跳后回 → “前跳后回”——前跳后回(家)。
冗余四类:
硬件、软件、时间、信息。
口诀:硬软时信。
谐音:硬软时信 → “硬软时信”——硬软时(间)信(息)。
第10章 软件安全
10.1 知识点清单
10.1.1 加密体制
- 对称加密:加密解密同一密钥;快但密钥分发难
- 分组密码:DES(56位密钥,64位块)、3DES、AES(128/192/256位)、IDEA、RC4(流)
- 工作模式:ECB/CBC/CFB/OFB/CTR
- 非对称加密:公钥加密私钥解密;慢但解决密钥分发
- RSA(基于大数分解)、ECC(椭圆曲线)、ElGamal(离散对数)、DH(密钥交换)
- Hash单向散列:定长摘要,不可逆
- MD5(128位,已不安全)、SHA-1(160位)、SHA-256/512
- 数字签名:私钥签名,公钥验签;防篡改+防否认
- 数字信封:对称密钥加密数据,非对称加密对称密钥
- 数字证书:CA用私钥签名用户公钥+身份信息;X.509格式
10.1.2 认证与访问控制
- PKI公钥基础设施:CA签发证书、RA注册、CRL吊销列表、OCSP在线验证
- Kerberos:对称密钥+票据TGT+KDC(AS+TGS),单点登录
- 访问控制三模型:
- DAC自主访问控制:客体拥有者决定;灵活但分散
- MAC强制访问控制:系统强制安全等级(密级);严格但死板
- RBAC基于角色:用户-角色-权限;企业常用
10.1.3 安全协议
- SSL/TLS:传输层安全,HTTPS=HTTP+TLS;握手协商密钥+加密传输
- IPSec:网络层,AH认证+ESP加密;VPN常用
- SET:安全电子交易,信用卡支付
- PGP:邮件加密
10.1.4 安全攻击与防护
- 网络攻击:
- 被动攻击:窃听、流量分析(难检测,靠加密防御)
- 主动攻击:篡改、伪造、重放、拒绝服务DoS
- Web攻击:
- SQL注入:恶意SQL拼接;参数化查询防御
- XSS跨站脚本:注入脚本到页面;输出编码防御
- CSRF跨站请求伪造:借用用户身份;Token防御
- 文件上传:上传恶意文件;白名单+重命名防御
- 防护设备:
- 防火墙:网络层过滤,包过滤/状态检测/应用网关;不能防内部攻击
- IDS入侵检测:旁路监测,误用/异常检测;被动告警
- IPS入侵防御:串路阻断,主动防御
- WAF:Web应用防火墙
- 堡垒机:运维审计跳板
- 等保2.0:五级,从用户自主→系统审计→安全标记→结构化→访问验证
10.1.5 安全管理
- 安全策略 / 安全审计 / 安全评估 / 应急响应
- 风险评估 = 资产 × 威胁 × 脆弱性
10.2 关联关系
- 对称↔非对称↔混合加密:实际用混合(非对称传密钥+对称加密数据)
- Hash↔数字签名↔完整性:签名用Hash摘要+非对称加密
- CA↔PKI↔证书:CA是PKI核心,签发证书建立信任链
- Kerberos↔单点登录:Kerberos实现SSO,票据机制
- DAC/MAC/RBAC↔访问控制:从自主→强制→角色,灵活性递减再增
- SSL/TLS↔HTTPS:HTTPS基于TLS,传输加密
- IPSec↔VPN:IPSec是VPN主流协议
- IDS↔IPS:IDS旁路告警;IPS串路阻断
- SQL注入/XSS/CSRF↔Web安全:Web三大攻击,分别参数化/编码/Token防御
10.3 易混淆点
| 易混点 | 区分 |
|---|---|
| 对称 vs 非对称加密 | 对称同密钥快分发难;非对称公私钥慢解决分发 |
| DES vs AES | DES 56位已不安全;AES 128+位现代标准 |
| MD5 vs SHA | MD5 128位已破;SHA-1 160位弱;SHA-256安全 |
| 数字签名 vs 数字信封 | 签名私钥签公钥验(认证);信封对称加密数据非对称加密密钥(保密) |
| DAC vs MAC vs RBAC | DAC自主灵活;MAC强制密级;RBAC角色企业常用 |
| SSL vs TLS | SSL早期已弃用;TLS是SSL继任者 |
| IDS vs IPS | IDS旁路被动告警;IPS串路主动阻断 |
| 防火墙 vs IDS | 防火墙过滤边界;IDS监测内部异常 |
| SQL注入 vs XSS vs CSRF | 注入拼接SQL;XSS注入脚本;CSRF借身份请求 |
| 主动 vs 被动攻击 | 主动篡改伪造可检测;被动窃听难检测靠加密 |
| Kerberos vs PKI | Kerberos对称密钥票据;PKI非对称证书 |
10.4 思维导图
mindmap
root((软件安全))
加密
对称 DES/3DES/AES
工作模式 ECB/CBC/CFB/OFB
非对称 RSA/ECC/ElGamal/DH
Hash MD5/SHA
数字签名 私签公验
数字信封 对称加密数据非对称加密密钥
数字证书 CA X.509
认证访问
PKI CA/RA/CRL/OCSP
Kerberos 票据KDC单点登录
DAC 自主
MAC 强制密级
RBAC 角色
安全协议
SSL/TLS 传输层 HTTPS
IPSec 网络层 VPN
SET 电子交易
PGP 邮件
攻击防护
被动 窃听流量分析
主动 篡改伪造重放DoS
SQL注入 参数化
XSS 输出编码
CSRF Token
防火墙 包过滤状态检测
IDS 旁路告警
IPS 串路阻断
WAF Web防护
堡垒机 运维审计
等保2.0
五级 用户自主系统审计安全标记结构化访问验证
10.5 顺口溜+谐音口诀
加密三体制:
对称快分发难,非对称慢解分发,Hash单向不可逆。
口诀:对快非慢哈单向。
谐音:对快非慢哈单向 → “对快非慢哈单向”——对(称)快(但)非(对称)慢(但)哈(希)单向。
对称三算法:
DES、3DES、AES。
口诀:DES三AES。
谐音:DES三AES → “DES三AES”——DES三(重)AES。
非对称四算法:
RSA、ECC、ElGamal、DH。
口诀:RE艾迪。
谐音:RE艾迪 → “R E 艾迪”——R(SA)E(CC)艾(尔Gamal)迪(H)。
访问控制三模型:
DAC自主、MAC强制、RBAC角色。
口诀:自强角。
谐音:自强角 → “自强角”——自强(的)角(色)。
灵活→严格:DAC→MAC→RBAC。
Web三攻击:
SQL注入、XSS、CSRF。
口诀:注X C。
防御:参数化、输出编码、Token。
谐音:注X C → “注XC”——注(射)X C。
IDS vs IPS:
IDS旁路告警,IPS串路阻断。
口诀:I旁告I串阻。
谐音:I旁告I串阻 → “I旁告I串阻”——I(D)S旁(路)告(警)I(P)S串(路)阻(断)。
等保五级:
用户自主、系统审计、安全标记、结构化、访问验证。
口诀:用系安结访。
谐音:用系安结访 → “用系安结访”——用(户)系(统)安(全)结(构化)访(问验证)。
第11章 项目管理
11.1 知识点清单
11.1.1 进度管理
- 甘特图Gantt:横道图,任务-时间条形;直观但不显示依赖
- PERT网络图:计划评审技术,事件-活动网络;显示依赖+关键路径
- AOA vs AON:箭线表示活动 vs 节点表示活动
- 关键路径法CPM:源点→汇点最长路径;决定项目最短工期
- 最早开始ES / 最早完成EF = ES+工期
- 最晚完成LF / 最晚开始LS = LF-工期
- 总浮动 = LS-ES = LF-EF;关键路径总浮动=0
- 三点估算:TE = (a+4m+b)/6(乐观+4最可能+悲观)
11.1.2 成本管理(挣值管理EVM)
- PV计划价值:计划完成工作的预算
- EV挣值:已完工作的预算
- AC实际成本:已完工作的实际成本
- 偏差:
- SV进度偏差 = EV - PV(>0超前)
- CV成本偏差 = EV - AC(>0节约)
- 绩效指数:
- SPI进度绩效 = EV / PV(>1进度快)
- CPI成本绩效 = EV / AC(>1成本省)
- 预测:
- EAC完工估算 = AC + (BAC - EV) / CPI
- ETC完工尚需 = EAC - AC
- VAC完工偏差 = BAC - EAC
11.1.3 风险管理
- 风险识别 / 定性分析 / 定量分析 / 风险应对 / 风险监控
- 应对策略:
- 消极威胁:规避/转移/减轻/接受
- 积极机会:开拓/分享/提高/接受
- 定量工具:决策树、EMV期望货币值、敏感性分析、蒙特卡洛
11.1.4 配置管理与范围
- WBS工作分解结构:可交付成果层次分解
- 基线:正式批准的配置项集合
- 变更控制委员会CCB:审批变更
- 配置项 / 版本控制 / 配置审计
11.2 关联关系
- 甘特图↔PERT:甘特直观无依赖;PERT有依赖可求关键路径
- 关键路径↔最短工期:关键路径长度即项目最短工期
- PV/EV/AC↔偏差指数:三者推导SV/CV/SPI/CPI
- CPI/SPI↔EAC预测:用CPI/SPI预测完工成本
- WBS↔范围管理:WBS分解项目范围
- 基线↔变更控制:基线后变更需CCB审批
11.3 易混淆点
| 易混点 | 区分 |
|---|---|
| 甘特图 vs PERT | 甘特条形直观无依赖;PERT网络图有依赖求关键路径 |
| PV vs EV vs AC | PV计划预算;EV已完预算;AC已完实际 |
| SV vs CV | SV=EV-PV进度;CV=EV-AC成本 |
| SPI vs CPI | SPI=EV/PV进度绩效;CPI=EV/AC成本绩效 |
| EAC vs ETC | EAC完工总估算;ETC完工尚需=EAC-AC |
| 关键路径 vs 最长路径 | 关键路径就是源到汇最长路径,总浮动0 |
| 规避 vs 转移 vs 减轻 | 规避消除风险;转移给第三方;减轻降低概率影响 |
11.4 思维导图
mindmap
root((项目管理))
进度
甘特图 直观无依赖
PERT 网络图有依赖
关键路径 最长总浮动0
ES/EF/LS/LF
三点估算 a+4m+b/6
成本挣值
PV计划 EV挣值 AC实际
SV=EV-PV CV=EV-AC
SPI=EV/PV CPI=EV/AC
EAC=AC+(BAC-EV)/CPI
风险
识别定性定量应对监控
消极 规避转移减轻接受
积极 开拓分享提高接受
决策树EMV蒙特卡洛
范围配置
WBS工作分解
基线 CCB变更控制
版本控制配置审计
11.5 顺口溜+谐音口诀
挣值三基础:
PV计划、EV挣值、AC实际。
口诀:P计E挣A实。
谐音:P计E挣A实 → “P计E挣A实”——P(V)计(划)E(V)挣(值)A(C)实(际)。
挣值四公式:
SV=EV-PV,CV=EV-AC,SPI=EV/PV,CPI=EV/AC。
口诀:S减C减S除C除(进度差进度除,成本差成本除)。
谐音:S减C减S除C除 → “S减C减S除C除”——S(V)减(PV)C(V)减(AC)S(PI)除(PV)C(PI)除(AC)。
记忆:EV永远在前,进度配PV,成本配AC。
关键路径:
源到汇最长,总浮动为零。
口诀:最长零浮动。
风险应对消极四策略:
规避、转移、减轻、接受。
口诀:规转减接。
谐音:规转减接 → “规转减接”——规(避)转(移)减(轻)接(受)。
三点估算:
TE = (a + 4m + b) / 6。
口诀:乐加四最加悲除以六。
谐音:乐加四最加悲除以六 → “乐加四最加悲除以六”——乐(观)加四最(可能)加悲(观)除以六。
第12章 数学与经济管理
12.1 知识点清单
12.1.1 投资分析
- 现值PV:未来资金折现到现在 = FV/(1+i)^n
- 终值FV:现在资金到未来 = PV*(1+i)^n
- 净现值NPV = Σ CFt/(1+i)^t - 初始投资;NPV>0可行
- 内部收益率IRR:使NPV=0的折现率;IRR>基准收益率可行
- 静态投资回收期:累计净现金流回正时间(不考虑时间价值)
- 动态投资回收期:折现累计回正时间
- 盈亏平衡点BEP:收入=成本时的产量/销量
- BEP产量 = 固定成本 / (单价 - 单位变动成本)
12.1.2 折旧
- 直线折旧:(原值-残值)/年限
- 年数总和法:(原值-残值) × 剩余年数/年数总和
- 双倍余额递减法:账面价值 × 2/年限
12.1.3 图论应用
- 最小生成树:Prim/Kruskal(见第2章)
- 最短路径:Dijkstra/Floyd
- 匹配 / 网络流 / 旅行商TSP
12.1.4 排队论
- M/M/1:泊松到达+指数服务+单服务台
- 平均队长 L = ρ/(1-ρ),ρ=λ/μ
- 平均等待时间 W = 1/(μ-λ)
- M/M/c:多服务台
12.1.5 决策与博弈
- 决策树 / 期望值准则 / 最大最小(悲观)/ 最大最大(乐观)/ 后悔值
- 零和博弈 / 纳什均衡
12.2 关联关系
- NPV↔IRR:NPV绝对值,IRR相对收益率,互为补充
- 现值↔终值↔折现:现值终值互为折现/复利
- 盈亏平衡↔固定成本↔边际贡献:BEP=固定/边际贡献
- 静态vs动态回收期:动态考虑时间价值更长
- 排队论↔系统性能:M/M/1分析系统吞吐延迟
12.3 易混淆点
| 易混点 | 区分 |
|---|---|
| 现值 vs 终值 | 现值未来折现到现在;终值现在到未来 |
| NPV vs IRR | NPV绝对金额;IRR相对收益率百分比 |
| 静态 vs 动态回收期 | 静态不折现;动态折现更长 |
| 直线 vs 加速折旧 | 直线每年等额;加速前期多折旧 |
| 盈亏平衡 vs 投资回收 | 盈亏平衡收入=成本;回收期累计回本时间 |
12.4 思维导图
mindmap
root((数学经济))
投资分析
现值PV 终值FV
NPV 净现值大于零可行
IRR 内部收益率大于基准可行
静态回收期
动态回收期 折现
盈亏平衡 固定/边际贡献
折旧
直线
年数总和
双倍余额递减
图论
最小生成树
最短路径
匹配网络流TSP
排队论
M/M/1 λ/μ
平均队长ρ/1-ρ
等待时间1/μ-λ
决策博弈
决策树EMV
悲观乐观后悔值
纳什均衡
12.5 顺口溜+谐音口诀
投资决策两指标:
NPV大于零可行,IRR大于基准可行。
口诀:N大零I大基。
谐音:N大零I大基 → “N大零I大基”——N(PV)大(于)零(),I(RR)大(于)基(准)。
盈亏平衡:
BEP = 固定成本 / (单价 - 单位变动成本)。
口诀:固除边(固定除以边际贡献)。
谐音:固除边 → “固除边”——固(定)除(以)边(际贡献)。
现值终值:
现值 = 终值 / (1+i)^n;终值 = 现值 × (1+i)^n。
口诀:现除终乘(现值除复利,终值乘复利)。
排队论M/M/1:
平均队长 = ρ/(1-ρ),等待时间 = 1/(μ-λ),ρ=λ/μ。
口诀:队用ρ等用μ减λ。
谐音:队用ρ等用μ减λ → “队用ρ等用μ减λ”——队(长)用ρ(除1减ρ)等(待)用μ减λ。
第13章 知识产权与法规
13.1 知识点清单
13.1.1 著作权(版权)
- 著作权 = 人身权(发表/署名/修改/保护完整)+ 财产权(复制/发行/出租/展览/表演/放映/广播/信息网络传播/摄制/改编/翻译/汇编)
- 软件著作权:程序+文档;不含算法思想
- 保护期:
- 作者终身+死后50年(个人)
- 发表后50年(单位/法人)
- 软件著作权:发表后50年
- 软件著作权归属:
- 职务作品:利用法人物质技术条件创作,归属法人(特殊情况除外)
- 委托开发:合同约定;无约定归受托人
- 合作开发:共同享有
- 软件著作权自完成创作之日起自动产生,无需登记(登记仅为证据)
13.1.2 专利权
- 三类:发明(20年)/实用新型(10年)/外观设计(15年)
- 保护期从申请日起算
- 软件不能申请专利(但软件相关的方法/系统可申请发明专利)
- 先申请原则(中国)
13.1.3 商标权
- 保护期10年,可无限续展(每次10年)
- 注册原则
- 驰名商标特殊保护
13.1.4 商业秘密
- 不公开的技术经营信息
- 无保护期限制(只要保密)
- 采取保密措施是构成要件
13.1.5 反不正当竞争
- 商业贿赂 / 虚假宣传 / 侵犯商业秘密 / 诋毁商誉
13.2 易混淆点
| 易混点 | 区分 |
|---|---|
| 著作权 vs 专利权 | 著作权自动产生;专利需申请审查授权 |
| 发明 vs 实用新型 vs 外观 | 发明20年;实用新型10年;外观15年 |
| 软件著作权 vs 专利 | 软件著作权保护表达不保护思想;专利保护技术方案 |
| 职务作品归属 | 利用法人条件创作归法人;一般职务作品作者享有 |
| 委托开发归属 | 合同约定;无约定归受托人 |
| 商业秘密 vs 专利 | 商业秘密不公开无期限;专利公开有期限 |
13.3 顺口溜+谐音口诀
专利三保护期:
发明20实用10外观15。
口诀:发20实10外15。
谐音:发20实10外15 → “发20实10外15”——发(明)20(年)实(用新型)10(年)外(观)15(年)。
软件著作权归属:
职务归法人,委托看合同,合作共同享。
口诀:职法委合共。
谐音:职法委合共 → “职法委合共”——职(务归)法(人)委(托看)合(同)共(同享)。
知识产权四兄弟:
著作权、专利权、商标权、商业秘密。
口诀:著专商秘。
谐音:著专商秘 → “著专商秘”——著(作权)专(利)商(标)秘(密)。
第14章 数学逻辑
14.1 知识点清单
14.1.1 命题逻辑
- 联结词:¬非 / ∧与 / ∨或 / →蕴含 / ↔等价
- 蕴含P→Q:仅当P真Q假时为假;等价于 ¬P∨Q
- 真值表 / 等价演算 / 主析取范式 / 主合取范式
- 重言式(永真)/ 矛盾式(永假)/ 可满足式
- 推理规则:假言推理P, P→Q ⊢ Q;拒取式;析取三段论;假言三段论
- 自然演绎系统
14.1.2 谓词逻辑
- 量词:∀全称 / ∃存在
- 谓词、量词、个体词、函数
- 前束范式:所有量词前置
- 量词否定:¬∀xP(x) ≡ ∃x¬P(x);¬∃xP(x) ≡ ∀x¬P(x)
14.1.3 集合论
- 集合运算:并∪ / 交∩ / 差- / 补 / 对称差
- 幂集 / 笛卡尔积 / 基数
- 关系:
- 性质:自反 / 反自反 / 对称 / 反对称 / 传递
- 等价关系:自反+对称+传递;划分等价类
- 偏序关系:自反+反对称+传递;偏序集
- 闭包:自反闭包r® / 对称闭包s® / 传递闭包t®
- 函数:单射(一对一)/ 满射(映满)/ 双射(一一对应)
14.1.4 代数系统
- 半群(封闭+结合)/ 独异点(半群+单位元)/ 群(独异点+逆元)
- 群:封闭+结合+单位元+逆元
- 阿贝尔群(交换群)/ 循环群
- 环:加群+乘半群+分配律
- 域:环+乘法群(非零元)
- 格:偏序+任意两元素有上下确界
- 布尔代数:有补分配格
14.2 易混淆点
| 易混点 | 区分 |
|---|---|
| 蕴含P→Q vs 等价P↔Q | 蕴含单向P真Q假为假;等价双向同真同假 |
| 重言式 vs 矛盾式 vs 可满足 | 重言永真;矛盾永假;可满足至少一真 |
| ∀ vs ∃ | ∀所有;∃存在 |
| 等价关系 vs 偏序关系 | 等价自反对称传递;偏序自反反对称传递 |
| 单射 vs 满射 vs 双射 | 单射一对一;满射映满;双射一一对应 |
| 半群 vs 独异点 vs 群 | 半群封闭结合;独异点加单位元;群加逆元 |
| 环 vs 域 vs 格 | 环加群乘半群;域非零元成群;格偏序有上下确界 |
14.3 顺口溜+谐音口诀
蕴含真值:
P→Q 仅 P真Q假为假,其余为真。
口诀:真前假后假,其余真。
谐音:真前假后假 → “真前假后假”——真(P)前(则)假(Q)后(为)假。
关系三性质:
自反、对称、传递;等价三具备,偏序反反对称。
口诀:等自对传偏自反传。
谐音:等自对传偏自反传 → “等自对传偏自反传”——等(价)自(反)对(称)传(递)偏(序)自(反)反(对称)传(递)。
代数系统升级链:
半群→独异点→群→阿贝尔群。
口诀:半独群阿。
谐音:半独群阿 → “半独群阿”——半(群)独(异点)群(群)阿(贝尔群)。
每步加:结合→单位元→逆元→交换。
第15章 专业英语
15.1 知识点清单
- 综合知识末5题英语阅读理解
- 主题:软件工程、架构、网络、数据库、安全等术语
- 高频词汇:
- architecture 架构 / component 构件 / connector 连接件
- quality attribute 质量属性 / performance 性能 / availability 可用性
- reliability 可靠性 / scalability 可扩展性 / maintainability 可维护性
- encapsulation 封装 / inheritance 继承 / polymorphism 多态
- coupling 耦合 / cohesion 内聚 / abstraction 抽象
- middleware 中间件 / distributed 分布式 / transaction 事务
- authentication 认证 / authorization 授权 / encryption 加密
- throughput 吞吐量 / latency 延迟 / concurrency 并发
- 备考策略:术语对照+上下文推断
15.2 顺口溜
英语术语速记:
架构 component connector,质量 performance availability;
封装继承 polymorphism,耦合 coupling 内聚 cohesion;
中间 middleware 分布 transaction,认证 authorization 加密 encryption。
口诀:架构三件质量六,面向三特耦合内,中间三件认证三。
第16章 网络规划设计师专题(链接覆盖补充)
注:用户链接中约 64 篇属网络规划设计师科目,单列以兼容。
16.1 知识点清单
16.1.1 网络生命周期
- 四阶段:构思规划→分析设计→实施构建→运行维护;可重叠,小项目适用
- 五阶段(最重要):需求规范→通信规范→逻辑网络设计→物理网络设计→实施;瀑布式,大项目
- 六阶段:需求分析→逻辑设计→物理设计→设计优化→实施及测试→监测及性能优化;强调优化循环,大型项目
16.1.2 网络开发过程(五阶段)
- 需求分析:业务/用户/应用/技术/未来需求 → 需求规范说明书
- 通信规范分析:流量/负载/协议/QoS → 通信规范说明书
- 逻辑网络设计:拓扑/协议/IP/安全策略 → 逻辑网络设计文档
- 物理网络设计:设备选型/布线/机房/冗余 → 物理网络设计文档
- 安装和维护:部署/测试/运维
16.1.3 网络设计方法
- 层次化设计:核心-汇聚-接入三层
- 企业复合网络模型:园区+分支+数据中心+远程
- 扁平化大二层网络:Spine-Leaf,数据中心
16.1.4 网络设计约束
- 政策约束 / 预算约束 / 时间约束 / 应用目标约束
16.1.5 网络设计文档
- 各阶段交付物:需求规范/通信规范/逻辑设计/物理设计/实施文档
16.2 易混淆点
| 易混点 | 区分 |
|---|---|
| 四阶段 vs 五阶段 vs 六阶段 | 四可重叠小项目;五瀑布大项目;六加优化循环超大项目 |
| 逻辑设计 vs 物理设计 | 逻辑拓扑协议IP;物理设备布线机房 |
| 层次化 vs 大二层 | 层次化核心汇聚接入;大二层Spine-Leaf扁平 |
16.3 顺口溜+谐音口诀
网络生命周期三模型:
四阶段可重叠小项目,五阶段瀑布大项目,六阶段优化循环超大项目。
口诀:四叠五瀑六循环。
谐音:四叠五瀑六循环 → “四叠五瀑六循环”——四(阶段)叠(可重叠)五(阶段)瀑(布)六(阶段)循环。
网络开发五阶段交付物:
需求规范→通信规范→逻辑设计→物理设计→实施运维。
口诀:需通逻物实。
谐音:需通逻物实 → “需通逻物实”——需(求)通(信)逻(辑)物(理)实(施)。
第二部分 跨章易混淆知识点汇总
以下为跨章节高频混淆点,按对比维度组织,案例选择题易错。
2.1 编码与校验
| 对比 | 区分 |
|---|---|
| 原码/反码/补码/移码 | 原码符号+绝对值;反码负数取反;补码反码+1加减统一;移码补码符号取反用于阶码 |
| 海明码 vs CRC | 海明 2^k≥n+k+1 检纠错;CRC多项式除法检错 |
2.2 树与图算法
| 对比 | 区分 |
|---|---|
| 满二叉树 vs 完全二叉树 | 满每层满;完全除最后层满且左对齐 |
| 前中/后中 vs 前后 | 前+中、后+中唯一确定;前+后不唯一 |
| Dijkstra vs Floyd vs Bellman | D单源非负O(n²);F全源O(n³);B负权可测负环 |
| Prim vs Kruskal | P从点扩稠密图;K按边并查集稀疏图 |
2.3 操作系统
| 对比 | 区分 |
|---|---|
| 死锁 vs 活锁 vs 饥饿 | 死锁互相等;活锁让步仍冲突;饥饿长期不得服务 |
| FIFO vs LRU | FIFO有Belady异常;LRU无Belady近似OPT |
| 互斥信号量 vs 同步信号量 | 互斥初值1同资源;同步初值0先后序 |
2.4 网络
| 对比 | 区分 |
|---|---|
| OSI七层 vs TCP/IP四层 | OSI理论;TCP/IP实际合并表示会话到应用 |
| 交换机 vs 路由器 | 交换机链路层MAC;路由器网络层IP最长前缀 |
| TCP三次握手 vs 四次挥手 | 握手3次建连;挥手4次断连(全双工各自关) |
| RIP vs OSPF | RIP距离向量跳数15;OSPF链路状态Dijkstra |
2.5 数据库
| 对比 | 区分 |
|---|---|
| 2NF vs 3NF vs BCNF | 2消非主部分;3消非主传递;BC消主属性部分传递 |
| 脏读 vs 不可重复读 vs 幻读 | 脏读未提交;不可重复同行变;幻读范围增删 |
| CAP的CP vs AP | CP强一致ZK;AP高可用Cassandra |
| 星型 vs 雪花 | 星型维度非规范快;雪花规范省空间 |
2.6 软件工程
| 对比 | 区分 |
|---|---|
| 瀑布 vs 螺旋 vs 增量 | 瀑布线性;螺旋风险迭代;增量分批交付 |
| 内聚 vs 耦合 | 内聚模块内(高好);耦合模块间(低好) |
| 白盒覆盖六层 | 语句<判定<条件<判定条件<条件组合<路径 |
| CMM L2 vs L3 | L2项目级可重复;L3组织级标准过程 |
| 改正性 vs 适应性 vs 完善性维护 | 改bug/适应环境/加功能(完善占比最大) |
2.7 架构设计
| 对比 | 区分 |
|---|---|
| 管道过滤器 vs 批处理 | 管道流式增量并发;批处理顺序整批 |
| 事件驱动 vs 进程通信 | 事件隐式发布订阅;进程显式点对点 |
| 可靠性 vs 可用性 | 可靠MTBF无故障时长;可用=MTBF/(MTBF+MTTR)含修复 |
| 敏感点 vs 权衡点 | 敏感影响1个质量属性;权衡影响多个 |
| ATAM vs SAAM | ATAM权衡多属性;SAAM主评可修改性 |
| SOA vs 微服务 | SOA用ESB集中粗粒度;微服务去中心化细粒度独立部署 |
| REST vs RPC | REST资源无状态可伸缩;RPC像本地调用有状态stub |
2.8 设计模式
| 对比 | 区分 |
|---|---|
| 工厂方法 vs 抽象工厂 | 工厂方法单产品;抽象工厂产品族 |
| 适配器 vs 桥接 vs 代理 | 适配转接口;桥接分维度;代理控访问 |
| 装饰 vs 代理 | 装饰加职责;代理控访问 |
| 策略 vs 状态 vs 模板 | 策略选算法;状态变行为;模板定骨架 |
| 观察者 vs 中介者 | 观察者一对多广播;中介者多对多集中 |
2.9 可靠性与安全
| 对比 | 区分 |
|---|---|
| MTBF vs MTTR | MTBF无故障时长(大好);MTTR修复时长(小好) |
| N版本 vs 恢复块 | N版本并行表决前向;恢复块串行切换后向 |
| 对称 vs 非对称加密 | 对称同密钥快分发难;非对称公私钥慢解分发 |
| DAC vs MAC vs RBAC | DAC自主灵活;MAC强制密级;RBAC角色企业常用 |
| IDS vs IPS | IDS旁路告警;IPS串路阻断 |
| SQL注入 vs XSS vs CSRF | 注入拼接SQL;XSS注入脚本;CSRF借身份请求 |
2.10 项目管理与数学
| 对比 | 区分 |
|---|---|
| 甘特图 vs PERT | 甘特条形无依赖;PERT网络图有依赖求关键路径 |
| PV vs EV vs AC | PV计划预算;EV已完预算;AC已完实际 |
| NPV vs IRR | NPV绝对金额>0可行;IRR相对收益率>基准可行 |
| 静态 vs 动态回收期 | 静态不折现;动态折现更长 |
2.11 知识产权
| 对比 | 区分 |
|---|---|
| 著作权 vs 专利权 | 著作权自动产生;专利需申请审查 |
| 发明 vs 实用新型 vs 外观 | 发明20年;实用新型10年;外观15年 |
| 职务作品 vs 委托作品 | 职务归法人;委托看合同无约定归受托人 |
第三部分 全部口诀汇总(过目不忘版)
按知识域编排,顺口溜+谐音双轨,考前突击背诵。
3.1 计算机基础
- 机器码四兄弟:原反补移 → 原始符号加绝对,反码负数位取反,补码反码加个一,移码补码符号翻。加减统一用补码,比较阶码用移码。
- 海明码:2^k ≥ n+k+1 → “2的k次方罩住全部位加1”
- Cache三映射:直全组 → “只全组”(只全组员都参与)
- RAID级别:0无1镜3专5散6双10复合
- 流水线:吞吐看瓶颈(1/最长段),加速看比值(顺序/流水)
3.2 数据结构算法
- 二叉树性质:n0=n2+1 → “叶子等二度加一”
- 遍历唯一性:中序是骨架,前后定左右
- 排序稳定性:冒插归基稳,快选堆希不稳
- 最短路径:地弗贝(D-F-B)单源→全源→带负环
- 最小生成树:稠密选P(Prim),稀疏选K(Kruskal)
- 主定理:小取大,大取小,相等加个log
3.3 操作系统
- PV操作:P减阻,V加唤,互1同0
- 死锁四条件:互保不环 → “护宝不还”
- 页面置换:O最F贝L近L次
- I/O控制:查中D通 → “茶中地通”
- 磁盘调度:F最S电C循
3.4 计算机网络
- OSI七层:物数网传会表应 → “五叔网传会表应”
- TCP/IP四层:接际传用
- TCP握手挥手:SYN/SYN+ACK/ACK三步建连;FIN/ACK/FIN/ACK四次断连
- 私有地址:10八172十六到三十一192十六
- 子网划分:借位翻倍,剩余减二
- 路由协议:R跳O链B路径
3.5 数据库
- 范式四级:一非二部三传BC主 → “一飞二步三穿BC主”
- ACID:原一隔持 → “元一隔世”
- 隔离级别:未已可串 → “魏已可串”
- 并发问题:脏不幻 → “脏不换”
- CAP:CAP三选二,CP强一致,AP高可用 → “CP抓AP用”
- BASE:基软终 → “鸡软终”
- NoSQL四类:KV列文图
- 星型vs雪花:星快雪省
3.6 软件工程
- 开发模型选型:明瀑险螺增批糊原变敏
- 内聚七级:偶逻时过通顺功 → “偶罗时过通顺公”
- 耦合七级:非数标控外公内 → “飞鼠标控外公内”
- 白盒覆盖六层:语判条双组路 → “鱼判条双组路”
- McCabe:边减点加二,判定加一
- CMM五级:初可定义优
- 维护四类:改适完预 → “改是顽玉”(完善占比最大)
3.7 系统架构设计
- 架构五大风格:数调独虚仓 → “数调独虚仓”
- 质量六属性:性可安易可修 → “星可安一可修”
- ATAM四输出:敏一权多险不满非已满
- 架构评估三方法:A权S可C本 → “阿权司可资本”
- SOA vs 微服务:SOA总线粗,微服去中细
- 中间件七类:消事数远对网缓
- 4+1视图:逻开进物场 → “罗开进物场”
3.8 设计模式
- 23种分类:5创7构11行 → “五创七构十一行”
- 创建型5:单工抽建原
- 结构型7:适桥组装外享代
- 行为型11:责命解迭中备观状策模访
- 易混对照:适转桥分代控,装加代控,策选态变模定
3.9 软件可靠性
- 可靠性三指标:M无M修可除
- 容错双雄:N并表恢主备
- 恢复两向:前跳后回
- 冗余四类:硬软时信
3.10 软件安全
- 加密三体制:对快非慢哈单向
- 对称三算法:DES三AES
- 非对称四算法:RE艾迪(RSA/ECC/ElGamal/DH)
- 访问控制:自强角(DAC/MAC/RBAC)
- Web三攻击:注XC,防御参数化编码Token
- IDS vs IPS:I旁告I串阻
- 等保五级:用系安结访
3.11 项目管理
- 挣值三基础:P计E挣A实
- 挣值四公式:S减C减S除C除(EV永远在前,进度配PV,成本配AC)
- 关键路径:最长零浮动
- 风险应对:规转减接
- 三点估算:乐加四最加悲除以六
3.12 数学经济
- 投资决策:N大零I大基
- 盈亏平衡:固除边
- 现值终值:现除终乘
- 排队论:队用ρ等用μ减λ
3.13 知识产权
- 专利保护期:发20实10外15
- 软件著作权归属:职法委合共
- 知识产权四兄弟:著专商秘
3.14 数学逻辑
- 蕴含真值:真前假后假,其余真
- 关系三性质:等自对传偏自反传
- 代数升级链:半独群阿(每步加:结合→单位元→逆元→交换)
3.15 网络规划设计师
- 网络生命周期:四叠五瀑六循环
- 网络开发五阶段:需通逻物实
3.16 终极记忆图(全口诀一图)
mindmap
root((软考架构师口诀总图))
计算机基础
原反补移 加减统一补码
海明 2k≥n+k+1
Cache 直全组
RAID 0无1镜3专5散6双10复合
数据结构
n0=n2+1
中序骨架前后定左右
冒插归基稳快选堆希不稳
地弗贝 稠密P稀疏K
操作系统
P减阻V加唤互1同0
互保不环
查中D通
网络
物数网传会表应
SYN三步FIN四步
R跳O链B路径
数据库
一非二部三传BC主
原一隔持 未已可串
CAP三选二 BASE基软终
软件工程
明瀑险螺增批糊原变敏
偶逻时过通顺功
非数标控外公内
语判条双组路
初可定义优
架构设计
数调独虚仓
性可安易可修
A权S可C本
SOA总线粗微服去中细
设计模式
5创7构11行
单工抽建原
适桥组装外享代
责命解迭中备观状策模访
可靠性
M无M修可除
N并表恢主备
前跳后回 硬软时信
安全
对快非慢哈单向
DES三AES RE艾迪
自强角 注XC
I旁告I串阻
项目管理
P计E挣A实
S减C减S除C除
规转减接
数学
N大零I大基
固除边
队用ρ等用μ减λ
知识产权
发20实10外15
职法委合共
著专商秘
逻辑
真前假后假
等自对传偏自反传
半独群阿
第四部分 关键选型权衡(技术选型决策矩阵)
不限于链接内容,覆盖架构师考试与工程实践中所有高频选型决策。
每个选型含:候选方案 / 对比维度 / 决策原则 / 典型场景 / 避坑提示。
4.1 软件开发模型选型
| 维度 | 瀑布 | V模型 | 增量 | 螺旋 | 原型 | 敏捷Scrum | RUP |
|---|---|---|---|---|---|---|---|
| 需求变化 | 极低 | 低 | 中 | 高 | 极高(探索) | 极高 | 中高 |
| 风险控制 | 差 | 差 | 中 | 极强 | 中 | 中 | 强 |
| 交付节奏 | 一次 | 一次 | 分批 | 迭代 | 快速验证 | 短迭代(1-4周) | 迭代 |
| 文档要求 | 极高 | 高 | 高 | 高 | 低 | 低 | 高 |
| 用户参与 | 低 | 低 | 中 | 中 | 极高 | 极高 | 中 |
| 适用规模 | 中小 | 中小 | 中大 | 大型复杂 | 小探索 | 中小团队 | 大型 |
| 典型场景 | 嵌入式/军工 | 严谨测试 | 渐进交付 | 高风险大型 | 需求模糊 | 互联网 | 企业级 |
决策原则:
- 需求明确且不变 → 瀑布/V模型
- 需求模糊需验证 → 原型
- 高风险大型 → 螺旋(唯一强调风险分析)
- 互联网快速迭代 → 敏捷Scrum
- 大型企业全过程 → RUP
- 渐进交付先核心 → 增量
避坑:
- 螺旋模型必须有风险分析环节,无风险分析的不是螺旋
- 敏捷≠无文档,关键文档仍需保留
- 增量模型第一批必须是核心可运行子集
4.2 架构风格选型
| 架构风格 | 擅长质量属性 | 劣势 | 典型应用 |
|---|---|---|---|
| 数据流-管道过滤器 | 可修改性、性能(流式) | 不支持交互、难错误处理 | 编译器、ETL、Unix管道 |
| 数据流-批处理 | 可修改性 | 顺序无并行 | 早期批处理作业 |
| 调用返回-层次 | 可修改性、可移植性 | 层间依赖、性能损耗 | OSI、操作系统、OS |
| 调用返回-OO | 可修改性、可复用 | 性能、对象关系复杂 | 大多数业务系统 |
| 独立构件-事件驱动 | 可扩展性、可修改性 | 难调试、控制流隐式 | GUI、消息系统、IoT |
| 虚拟机-解释器 | 可移植性、灵活性 | 性能低 | JVM、脚本语言 |
| 虚拟机-规则系统 | 灵活性、易改规则 | 性能、调试难 | 专家系统、风控引擎 |
| 仓库-数据库 | 数据集成、可修改 | 中心瓶颈 | MIS、ERP |
| 仓库-黑板 | 不确定性问题求解 | 复杂、控制难 | AI、语音识别、KBS |
| C2 | 可扩展、严格分层 | 复杂 | GUI框架 |
决策原则:
- 数据处理流式 → 管道过滤器
- 层次清晰隔离 → 层次结构
- 事件触发松耦合 → 事件驱动
- 跨平台可移植 → 解释器
- 知识推理不确定 → 黑板/规则系统
- 数据集中共享 → 仓库
避坑:
- 管道过滤器不支持用户交互,交互式系统别选
- 黑板系统仅适合不确定性AI问题,业务系统别滥用
- 事件驱动调试困难,关键路径慎用
4.3 数据库选型
4.3.1 关系型 vs NoSQL
| 维度 | 关系型RDBMS | KV(Redis) | 列族(HBase) | 文档(MongoDB) | 图(Neo4j) |
|---|---|---|---|---|---|
| 事务ACID | 强 | 弱(部分) | 弱 | 弱(单文档) | 弱 |
| 查询灵活性 | SQL强 | 仅K | 扫描+行键 | JSON丰富 | 图遍历 |
| Schema | 严格固定 | 无 | 灵活 | 灵活 | 灵活 |
| 扩展性 | 垂直为主 | 水平易 | 水平强 | 水平 | 水平难 |
| 一致性 | 强一致 | 最终 | 强一致(CP) | 最终 | 强一致 |
| 适用 | 事务核心、复杂查询 | 缓存、计数 | 海量时序、宽表 | 半结构、内容 | 关系网络、推荐 |
决策原则:
- 强事务+复杂查询 → 关系型(MySQL/PostgreSQL/Oracle)
- 缓存/计数/排行榜 → Redis
- 海量稀疏宽表/时序 → HBase/Cassandra
- 半结构文档/内容 → MongoDB
- 社交关系/推荐/路径 → Neo4j
- 跨节点强一致 → CP系(HBase/ZK);高可用最终一致 → AP系(Cassandra)
4.3.2 MySQL vs PostgreSQL vs Oracle
| 维度 | MySQL | PostgreSQL | Oracle |
|---|---|---|---|
| 许可 | 开源GPL | 开源BSD | 商业收费 |
| 生态 | 互联网最广 | 企业增长快 | 传统企业 |
| 复杂查询 | 一般 | 强(优化器优) | 强 |
| JSON | 支持 | 强(JSONB) | 支持 |
| 事务 | InnoDB行锁 | MVCC无锁读 | 强 |
| 扩展 | 插件少 | 扩展强 | 强 |
| 适用 | Web互联网 | 复杂分析/GIS | 金融核心 |
4.3.3 OLTP vs OLAP vs HTAP
| 维度 | OLTP | OLAP | HTAP |
|---|---|---|---|
| 用途 | 事务处理 | 分析决策 | 混合 |
| 数据 | 当前实时 | 历史聚合 | 两者 |
| 操作 | 增删改查短 | 复杂查询大 | 两者 |
| 量级 | GB-TB | TB-PB | TB-PB |
| 代表 | MySQL/Oracle | 数据仓库/ClickHouse/Doris | TiDB/OceanBase |
决策原则:
- 业务事务 → OLTP(MySQL)
- 报表分析 → OLAP(数据仓库+星型/雪花模型)
- 事务+分析混合 → HTAP(TiDB)
避坑:
- NoSQL不等于替代RDBMS,核心事务仍用关系型
- MongoDB多文档事务弱,跨文档事务慎用
- Redis不能当主库,持久化非其强项
- 分库分表破坏跨库JOIN和事务,需引入分布式事务
4.4 缓存选型
| 维度 | 本地缓存(Caffeine/Guava) | Redis | Memcached |
|---|---|---|---|
| 分布式 | 否 | 是 | 是 |
| 数据结构 | 对象 | 丰富(5种) | 仅KV字符串 |
| 持久化 | 否 | RDB+AOF | 否 |
| 集群 | 否 | Cluster | 客户端分片 |
| 事务 | 否 | 有(弱) | 无 |
| 适用 | 单机高频读 | 分布式缓存/会话/排行榜 | 纯KV缓存 |
决策原则:
- 单机高频读 → 本地缓存(Caffeine)
- 分布式共享/会话/排行榜/发布订阅 → Redis
- 纯KV极致简单 → Memcached
- 多级 → 本地+Redis多级缓存
避坑:
- 缓存穿透(查不存在)→ 布隆过滤器/缓存空值
- 缓存击穿(热点过期)→ 互斥锁/永不过期
- 缓存雪崩(批量过期)→ 过期时间加随机值
- Redis大Key → 拆分;热Key → 本地缓存+多副本
- 缓存与DB一致性 → 延迟双删/Canal监听binlog
4.5 消息队列选型
| 维度 | Kafka | RocketMQ | RabbitMQ | Pulsar |
|---|---|---|---|---|
| 吞吐 | 极高(百万) | 高(十万) | 万级 | 极高 |
| 延迟 | ms级 | ms级 | μs级最低 | ms级 |
| 顺序 | 分区内有序 | 严格有序 | 队列有序 | 分区有序 |
| 事务 | 弱(幂等) | 强事务消息 | 强(AMQP) | 强 |
| 可靠 | 高(副本) | 高(同步刷盘) | 高(ACK) | 高 |
| 适用 | 日志/大数据/流式 | 金融事务/电商 | 企业集成/低延迟 | 多租户/云 |
决策原则:
- 大数据日志/流计算 → Kafka
- 金融事务/电商订单 → RocketMQ(事务消息)
- 企业应用集成/低延迟 → RabbitMQ
- 云原生多租户 → Pulsar
避坑:
- Kafka不保证全局有序,仅分区内有序
- RocketMQ事务消息需实现回查接口
- 消费幂等必须自己保证(消息可能重复投递)
- 消息积压 → 扩消费者/临时队列
4.6 架构模式选型:单体 vs SOA vs 微服务
| 维度 | 单体 | SOA | 微服务 |
|---|---|---|---|
| 部署 | 单包 | 多服务+ESB | 独立部署 |
| 数据库 | 共享 | 共享/部分共享 | 每服务独立库 |
| 通信 | 进程内 | ESB集中(SOAP) | REST/gRPC/MQ去中心 |
| 粒度 | 粗 | 粗 | 细(业务能力) |
| 治理 | 简单 | ESB统一 | 服务网格/注册中心 |
| 扩展 | 整体 | 服务级 | 服务级独立 |
| 复杂度 | 低 | 中 | 高(运维/链路) |
| 适用 | 小型/初创 | 企业集成 | 大型互联网 |
决策原则:
- 小型/初创/MVP → 单体(别过早微服务)
- 企业内异构系统集成 → SOA+ESB
- 大型互联网/组织多团队 → 微服务
避坑:
- 别一上来就微服务:单体→模块化单体→微服务渐进
- 微服务数据库必须独立,否则退化为分布式单体
- 微服务运维复杂度激增:需K8s+监控+链路追踪+熔断
- 服务粒度别太细(纳米服务反模式),按业务能力+团队边界
4.7 通信协议选型:REST vs RPC vs gRPC vs GraphQL
| 维度 | REST/HTTP | RPC(Dubbo) | gRPC | GraphQL |
|---|---|---|---|---|
| 风格 | 资源+动词 | 像本地调用 | 像本地调用 | 查询语言 |
| 序列化 | JSON文本 | 二进制高效 | Protobuf高效 | JSON |
| 跨语言 | 极强 | Java为主 | 强(多语言) | 强 |
| 浏览器 | 原生支持 | 需网关 | 需gRPC-Web | 原生 |
| 流式 | HTTP/2可 | 可 | 强(双向流) | 否 |
| 状态 | 无状态可伸缩 | 有状态stub | 有状态 | 无状态 |
| 适用 | 对外API/前后端 | 内部Java服务 | 内部多语言高性能 | 复杂前端聚合 |
决策原则:
- 对外开放API/前后端分离 → REST
- 内部Java服务间高频调用 → Dubbo RPC
- 内部多语言高性能 → gRPC
- 前端需聚合多后端/按需取字段 → GraphQL
避坑:
- REST无状态利于水平扩展,别引入session状态
- gRPC浏览器不原生支持,对外API需gRPC-Web或网关转REST
- RPC耦合度高(接口契约),对外慎用
4.8 设计模式选型(按场景)
| 场景 | 首选模式 | 备选 |
|---|---|---|
| 唯一实例(配置/日志) | 单例 | — |
| 创建对象不指定具体类 | 工厂方法 | — |
| 创建产品族(跨UI主题) | 抽象工厂 | 工厂方法 |
| 分步构建复杂对象 | 建造者 | — |
| 克隆已有对象 | 原型 | — |
| 接口不兼容需转换 | 适配器 | — |
| 两维度独立变化 | 桥接 | — |
| 树形结构统一处理 | 组合 | — |
| 动态加职责(不加子类) | 装饰 | — |
| 简化复杂子系统访问 | 外观 | — |
| 大量细粒度对象共享 | 享元 | — |
| 控制访问(延迟/权限/远程) | 代理 | — |
| 请求沿链传递多处理者 | 责任链 | — |
| 封装请求可撤销排队 | 命令 | — |
| 顺序访问聚合不暴露内部 | 迭代器 | — |
| 多对象交互集中协调 | 中介者 | — |
| 保存恢复对象状态 | 备忘录 | — |
| 一对多依赖变更通知 | 观察者 | — |
| 状态变行为变消分支 | 状态 | — |
| 算法可互换 | 策略 | — |
| 定义骨架子类填步骤 | 模板方法 | — |
| 对稳定结构加新操作 | 访问者 | — |
避坑:
- 别为模式而模式:简单逻辑别硬套模式增加复杂度
- 单例注意线程安全(双检锁/静态内部类)
- 抽象工厂产品族扩展难(加新产品需改接口)
- 观察者注意内存泄漏(及时取消订阅)
- 装饰层数别太深(难调试)
4.9 加密选型
| 场景 | 选型 | 理由 |
|---|---|---|
| 大量数据加密 | 对称AES | 快 |
| 密钥分发/数字签名 | 非对称RSA/ECC | 解决分发 |
| 完整性校验 | Hash(SHA-256) | 单向 |
| 密码存储 | bcrypt/scrypt | 慢Hash防彩虹表 |
| HTTPS传输 | TLS+对称+非对称 | 混合 |
| 数字签名 | 私钥签Hash | 防篡改否认 |
| 数字信封 | 对称加密数据+非对称加密密钥 | 兼顾速度与分发 |
| VPN | IPSec | 网络层 |
| 邮件 | PGP/S/MIME | 端到端 |
避坑:
- 别用MD5/SHA-1做安全场景(已破)
- 别用DES(56位密钥太短),至少3DES或AES
- RSA别加密大数据(慢),用数字信封
- 密码别明文存,别用MD5(彩虹表),用bcrypt
- 对称密钥别硬编码,用KMS/密钥管理
4.10 部署与运行时选型
| 维度 | 物理机 | 虚拟机 | 容器Docker | K8s |
|---|---|---|---|---|
| 隔离 | 硬件级 | OS级 | 进程级 | 进程级+编排 |
| 启动 | 慢 | 慢(分钟) | 秒级 | 秒级+自愈 |
| 资源 | 独占 | 超分 | 共享高效 | 共享+调度 |
| 密度 | 低 | 中 | 高 | 高 |
| 运维 | 手工 | 一般 | 一般 | 复杂但自动化 |
| 适用 | 特殊硬件 | 传统多OS | 微服务打包 | 大规模集群编排 |
决策原则:
- 单应用简单部署 → Docker
- 大规模微服务集群 → K8s
- 强隔离多OS → 虚拟机
- 特殊硬件需求 → 物理机
4.11 负载均衡选型
| 维度 | 硬件(F5) | Nginx/LVS | 四层LVS | 七层Nginx |
|---|---|---|---|---|
| 性能 | 极高 | 高 | 极高(转发) | 中(解析HTTP) |
| 灵活 | 一般 | 强 | 协议无关 | 按URL/Cookie |
| 价格 | 贵 | 免费 | 免费 | 免费 |
| 适用 | 金融大流量 | 通用Web | 四层入口 | 七层路由 |
决策原则:
- 四层高性能入口 → LVS
- 七层灵活路由 → Nginx
- 超大流量+预算 → F5硬件
- 常用组合:LVS(四层)→Nginx(七层)→应用
4.12 监控日志选型
| 维度 | Prometheus+Grafana | Zabbix | ELK | Loki |
|---|---|---|---|---|
| 对象 | 云原生/时序 | 传统主机 | 日志 | 日志 |
| 模型 | 拉取+时序 | 推送+Agent | 收集+索引 | 轻量不索引 |
| 适用 | K8s/微服务指标 | 主机/网络 | 全文检索日志 | 海量日志低成本 |
决策原则:
- K8s/微服务指标 → Prometheus+Grafana
- 传统主机监控 → Zabbix
- 日志全文检索 → ELK
- 海量日志低成本 → Loki
4.13 存储选型
| 类型 | 块存储(SAN) | 文件存储(NAS) | 对象存储(S3/OSS) |
|---|---|---|---|
| 访问 | 块级+SCSI/iSCSI | 文件级+NFS/CIFS | HTTP REST API |
| 性能 | 最高 | 中 | 中高 |
| 共享 | 难 | 易 | 易 |
| 海量 | 一般 | 一般 | 极强 |
| 适用 | 数据库/虚拟机盘 | 共享文件/家目录 | 图片/视频/备份/静态 |
决策原则:
- 数据库/VM磁盘 → 块存储(SAN)
- 共享文件目录 → NAS
- 海量图片/视频/备份 → 对象存储(S3/OSS)
4.14 选型权衡总口诀
- 模型:明瀑险螺增批糊原变敏
- 架构风格:数调独虚仓(按质量属性选)
- 数据库:事务关系型,缓存Redis,宽表HBase,文档Mongo,图Neo4j
- 消息队列:日志Kafka,事务Rocket,集成Rabbit
- 架构模式:小单大微,别过早微服务
- 通信:对外REST,内部gRPC
- 加密:大量对称,分发非对称,完整性Hash,密码bcrypt
- 部署:单应用Docker,集群K8s
- 负载均衡:四层LVS,七层Nginx
- 存储:库用块,人用文件,物用对象
—## 第五部分 易混淆与避坑指南(深度版)
每条含:错误认知 / 陷阱 / 正确理解 / 避坑要点。
按考试失分率排序,案例选择题高频陷阱。
5.1 数据库范式避坑
① 2NF vs 3NF vs BCNF 判断
- ❌ 错误认知:“3NF就是没有传递依赖”
- ⚠️ 陷阱:忽略了"非主属性"限定词;BCNF忘记主属性也要满足
- ✅ 正确:
- 2NF:消除非主属性对候选键的部分函数依赖
- 3NF:消除非主属性对候选键的传递函数依赖
- BCNF:每个决定因子都必须包含候选键(即所有X→Y,X必含候选键),兼顾主属性
- 💡 避坑:BCNF比3NF多管"主属性"的部分/传递依赖;若关系只有单一候选键,3NF=BCNF
② 候选键求解
- ❌ 错误:把能确定部分属性的当候选键
- ✅ 正确:候选键=能函数决定所有属性且无冗余的最小属性集
- 💡 避坑:用属性闭包判断;只出现在函数依赖左部的属性必在候选键中
③ 无损连接 vs 保持函数依赖
- ❌ 错误:认为规范化一定无损
- ✅ 正确:分解可能不保持函数依赖;3NF分解可同时无损+保持依赖,BCNF分解可无损但不一定保持依赖
- 💡 避坑:BCNF分解可能丢失依赖,这是BCNF的代价
5.2 事务并发避坑
① 隔离级别对应问题
- ❌ 错误:“可重复读就能避免所有问题”
- ⚠️ 陷阱:标准SQL可重复读不能避免幻读;MySQL InnoDB用MVCC+间隙锁额外避免幻读
- ✅ 正确对应:
- 读未提交 → 脏读
- 读已提交 → 避免脏读,有不可重复读+幻读
- 可重复读 → 避免脏读+不可重复读,标准下仍有幻读(MySQL InnoDB避免)
- 串行化 → 全避免
- 💡 避坑:考试按标准SQL答(可重复读有幻读),除非题干明确InnoDB
② 锁升级
- ⚠️ 陷阱:行锁太多可能升级为表锁,影响并发
- 💡 避坑:大批量更新用分批或直接用表锁
③ 两阶段锁协议
- ❌ 错误:两阶段锁=不会死锁
- ✅ 正确:两阶段锁保证可串行化,但可能死锁(扩展阶段只加锁不释放)
- 💡 避坑:可串行化≠无死锁
④ MVCC
- ❌ 错误:MVCC=完全无锁
- ✅ 正确:MVCC仅读不阻塞写、写不阻塞读;写写仍需锁
5.3 架构评估避坑
① 敏感点 vs 权衡点 vs 风险点
- ❌ 错误:把影响多个属性的都叫敏感点
- ✅ 正确:
- 敏感点:影响一个质量属性的参数(如缓存大小影响性能)
- 权衡点:影响多个质量属性的参数(如缓存大小影响性能和内存)
- 风险点:可能不满足质量属性的架构决策
- 非风险点:已满足质量属性的决策
- 💡 避坑:同一参数既可是敏感点也可是权衡点,取决于影响几个属性
② ATAM vs SAAM
- ❌ 错误:SAAM也评估多质量属性
- ✅ 正确:ATAM权衡多质量属性;SAAM主要评估可修改性单一属性
- 💡 避坑:题目问"权衡分析"→ATAM;问"可修改性分析"→SAAM
③ 效用树
- ⚠️ 陷阱:效用树叶子是质量属性场景,不是架构决策
- 💡 避坑:ATAM用效用树组织质量属性场景,再分析架构方法对场景的支持
5.4 设计模式避坑
① 工厂方法 vs 抽象工厂
- ❌ 错误:抽象工厂=多个工厂方法
- ✅ 正确:工厂方法创建单一产品(子类决定实例化哪个);抽象工厂创建产品族(一系列相关产品)
- 💡 避坑:跨UI主题(按钮+文本框+菜单)用抽象工厂;单产品扩展用工厂方法
② 适配器 vs 桥接 vs 代理
- ❌ 错误:三者都"转换接口"
- ✅ 正确:
- 适配器:事后兼容已有不匹配接口(转换)
- 桥接:事前设计时分离两个独立变化维度(解耦)
- 代理:控制访问(延迟/权限/远程),不转换接口
- 💡 避坑:适配器改接口;代理同接口控制访问;桥接事前设计
③ 装饰 vs 代理
- ❌ 错误:都加间接层难区分
- ✅ 正确:装饰加职责(多层叠加);代理控制访问(创建/权限/远程)
- 💡 避坑:装饰关注"加什么";代理关注"控访问"
④ 策略 vs 状态 vs 模板方法
- ❌ 错误:都消除if-else
- ✅ 正确:
- 策略:主动选择算法,客户端决定
- 状态:状态驱动行为,状态变行为自动变
- 模板方法:定义骨架,子类填具体步骤
- 💡 避坑:策略换算法;状态变行为;模板定流程
⑤ 观察者 vs 中介者
- ❌ 错误:都协调多对象
- ✅ 正确:观察者一对多广播(发布订阅);中介者多对多集中协调(避免N²互调)
- 💡 避坑:通知一对多用观察者;多对象互调用中介者
5.5 可靠性避坑
① MTBF vs 可用性
- ❌ 错误:MTBF高=可用性高
- ✅ 正确:可用性 A = MTBF/(MTBF+MTTR),还依赖MTTR;MTBF高但MTTR也高则可用性未必高
- 💡 避坑:提高可用性既要增MTBF也要降MTTR
② 串联 vs 并联可靠度
- ❌ 错误:并联系统可靠度=1-(1-R1)(1-R2)…(这个是对的,但常算错)
- ✅ 正确:
- 串联:R = R1×R2×…×Rn(任一坏则系统坏)
- 并联:R = 1-(1-R1)(1-R2)…(1-Rn)(全坏才坏)
- 混联:先局部串/并再整体
- 💡 避坑:串联相乘,并联用1减各不可靠相乘;混联分块计算
③ N版本 vs 恢复块
- ❌ 错误:都是容错差不多
- ✅ 正确:N版本并行+表决+前向恢复;恢复块串行+主备切换+后向恢复
- 💡 避坑:N版本需独立设计防共性故障;恢复块需可回滚
5.6 网络避坑
① 子网划分 -2 陷阱
- ❌ 错误:子网数也减2
- ✅ 正确:主机数=2^主机位-2(去网络号和广播);子网数=2^借位(现代CIDR不减2,老式有类借位全0全1不用才减2)
- 💡 避坑:题目说"老式有类"或"全0全1不用"才减2;现代CIDR子网数不减2
② CIDR vs VLSM
- ❌ 错误:两者一样
- ✅ 正确:VLSM可变长子网掩码(同一网络内不同子网不同掩码);CIDR无类域间路由(/n表示法,消除ABC类)
- 💡 避坑:VLSM是子网划分技术;CIDR是路由聚合表示
③ ARP vs RARP vs DNS
- ❌ 错误:ARP解析域名
- ✅ 正确:ARP IP→MAC(同网段);RARP MAC→IP(无盘启动);DNS 域名→IP
- 💡 避坑:ARP工作在二层和网络层之间;DNS应用层
④ TCP vs UDP 端口
- ⚠️ 陷阱:TCP和UDP端口空间独立,同端口号可分别用于TCP和UDP
- 💡 避坑:说端口时注意协议
5.7 项目管理避坑
① 挣值正负号
- ❌ 错误:SV>0是成本节约
- ✅ 正确:
- SV=EV-PV:>0进度超前(做的比计划多)
- CV=EV-AC:>0成本节约(实际花得比挣的少)
- SPI=EV/PV:>1进度快
- CPI=EV/AC:>1成本省
- 💡 避坑:EV永远在前;进度配PV,成本配AC;>0/>1都是好
② 关键路径浮动
- ❌ 错误:关键路径浮动最大
- ✅ 正确:关键路径总浮动=0,是最长路径,决定最短工期
- 💡 避坑:浮动=LS-ES=LF-EF;非关键路径浮动>0可延后
③ 三点估算
- ❌ 错误:用(a+b)/2
- ✅ 正确:TE=(a+4m+b)/6(乐观+4×最可能+悲观)/6;标准差σ=(b-a)/6
- 💡 避坑:最可能权重4,乐观悲观各1,除以6
5.8 软件工程避坑
① 内聚耦合判断
- ❌ 错误:高内聚低耦合=模块小
- ✅ 正确:内聚看模块内元素关联强弱(功能内聚最高);耦合看模块间依赖程度(非直接耦合最低)
- 💡 避坑:内聚从低到高:偶逻时过通顺功;耦合从低到高:非数标控外公内
② 白盒覆盖强弱
- ❌ 错误:语句覆盖最强
- ✅ 正确:语句<判定<条件<判定-条件<条件组合<路径(路径最强)
- 💡 避坑:路径覆盖需V(G)条独立路径;条件组合覆盖注意是每个判定的条件组合
③ McCabe圈复杂度
- ❌ 错误:V(G)=边数-节点数+1
- ✅ 正确:V(G)=边数-节点数+2=判定节点数+1=区域数
- 💡 避坑:是+2不是+1;独立路径数=V(G)
④ 维护类型占比
- ❌ 错误:改正性维护占比最大
- ✅ 正确:完善性维护占比最大(50%-66%),其次适应性、改正性、预防性
- 💡 避坑:完善性=加新功能(用户需求扩展)
5.9 安全避坑
① 对称 vs 非对称混用
- ❌ 错误:非对称加密数据
- ✅ 正确:对称加密数据(快);非对称加密密钥/签名(慢);实际用数字信封混合
- 💡 避坑:RSA加密大数据极慢,用对称加密数据+非对称加密对称密钥
② 签名与加密顺序
- ❌ 错误:先加密后签名
- ✅ 正确:先签名后加密(先签名保证身份,再加密保护内容);或签名对密文
- 💡 避坑:先加密后签名可能被替换签名攻击
③ Hash vs 加密
- ❌ 错误:Hash是双向的
- ✅ 正确:Hash单向不可逆,仅完整性校验;加密双向可解密
- 💡 避坑:密码存储用**慢Hash(bcrypt)**不用MD5(彩虹表)
④ CA证书链
- ⚠️ 陷阱:根CA自签;中间CA由根签;终端证书由中间签
- 💡 避坑:验证时沿链向上直到根CA
5.10 数据结构避坑
① 遍历唯一性
- ❌ 错误:前序+后序能确定二叉树
- ✅ 正确:前+中或后+中唯一确定;前+后不唯一(无法区分左右子树)
- 💡 避坑:中序是骨架,前序定根左右,后序定根且左在右前
② 排序稳定性
- ❌ 错误:快排稳定
- ✅ 正确:冒泡/插入/归并/基数稳定;快排/选择/堆排/希尔不稳定
- 💡 避坑:稳定=相等元素相对顺序不变
③ 二叉树性质
- ❌ 错误:n0=n2
- ✅ 正确:n0=n2+1(叶子=度2节点+1)
- 💡 避坑:注意是度2节点,不含度1
④ 哈夫曼编码
- ❌ 错误:哈夫曼编码唯一
- ✅ 正确:哈夫曼树WPL唯一,但编码不唯一(左右0/1可换,相同权值合并顺序可换)
- 💡 避坑:前缀码保证无歧义解码
5.11 操作系统避坑
① PV信号量初值
- ❌ 错误:互斥初值0
- ✅ 正确:互斥初值1(同一资源);同步初值0(先后顺序,前操作V后操作P)
- 💡 避坑:互斥P在前V在后;同步前操作V后操作P
② 死锁 vs 饥饿
- ❌ 错误:饥饿=死锁
- ✅ 正确:死锁互相等待永久阻塞;饥饿长期得不到服务但不阻塞(如短作业优先下长作业饿死)
- 💡 避坑:死锁必饥饿,饥饿未必死锁
③ FIFO的Belady异常
- ❌ 错误:增加页框缺页一定减少
- ✅ 正确:FIFO有Belady异常(增加页框缺页反增);LRU无Belady(属于栈算法)
- 💡 避坑:FIFO异常是考点;LRU/OPT/LFU无异常
④ 进程调度平均周转时间
- ⚠️ 陷阱:周转时间=完成-到达;带权周转=周转/运行;平均周转=各周转之和/n
- 💡 避坑:SJF平均等待时间最短但可能饥饿长作业
5.12 计算机基础避坑
① 海明码公式
- ❌ 错误:2^k≥n+k
- ✅ 正确:2^k≥n+k+1(n数据位+k校验位+1位区分"无错")
- 💡 避坑:那个+1是区分"无错误"状态
② 流水线吞吐率
- ❌ 错误:吞吐率=1/各段之和
- ✅ 正确:吞吐率=1/最长段(瓶颈段决定);加速比=顺序时间/流水时间
- 💡 避坑:流水时间=第一条指令各段之和+(n-1)×最长段
③ Cache映射
- ❌ 错误:直接映射冲突率低
- ✅ 正确:直接映射冲突率高(固定行);全相联冲突低但查找慢;组相联折中
- 💡 避坑:直接映射用hash取模定行;全相联需全表比较
④ 补码 vs 移码
- ❌ 错误:移码用于整数
- ✅ 正确:移码仅用于浮点阶码(便于比较大小);补码用于整数(加减统一)
- 💡 避坑:移码=补码符号位取反
5.13 避坑总口诀
- 范式:非主部分2NF,非主传递3NF,决定因子含候选键BCNF
- 隔离:未脏已不重可幻串全免(MySQL InnoDB可重复读额外免幻读)
- ATAM:敏一权多险不满非已满
- 模式:适转桥分代控,装加代控,策选态变模定
- 可靠:串联相乘并联1减,可用性MTBF比MTBF加MTTR
- 子网:主机减2子网不减2(CIDR)
- 挣值:EV在前,进度配PV成本配AC,>0/>1好
- 关键路径:最长零浮动
- 三点:乐加四最加悲除六
- 内聚耦合:偶逻时过通顺功,非数标控外公内
- 白盒:语判条双组路,路径最强
- McCabe:边减点加2
- 维护:完善占比最大
- 加密:大量对称分发非对称,密码bcrypt
- 签名:先签后加密
- 遍历:前中后中唯一,前后不唯一
- 排序稳定:冒插归基稳,快选堆希不稳
- PV:互1同0,P减V加
- Belady:FIFO有LRU无
- 海明:2^k≥n+k+1
- 流水:吞吐看最长段
- 补移码:补码整数移码阶码
—## 第六部分 各类计算题型汇总(公式+步骤+例题+口诀)
覆盖软考架构师全部计算题型。每题含:公式 / 解题步骤 / 例题 / 口诀。
上午综合75题中约15-20题含计算,案例分析亦有计算。
6.1 海明码校验位计算
公式:2^k ≥ n + k + 1(k校验位,n数据位)
步骤:代入n,从小到大试k使不等式成立
例题:数据位n=8,求校验位k
- k=4:2^4=16 ≥ 8+4+1=13 ✓
- 答案:k=4
口诀:2的k次方罩住n加k加1
6.2 流水线计算
公式:
- 流水时间 T = (t1+t2+…+tm) + (n-1)×max(ti)(n条指令,m段)
- 吞吐率 TP = n / T ≈ 1/max(ti)(n大时)
- 加速比 S = (n×Σti) / T
- 效率 E = S / m
例题:4段流水线各段5,3,4,2 ns,10条指令 - 最长段=5,Σ=14
- T = 14 + (10-1)×5 = 14+45 = 59 ns
- 吞吐率 = 10/59 ≈ 0.169 条/ns
- 加速比 = (10×14)/59 ≈ 2.37
口诀:吞吐看最长段,加速看比值;T=首条各段和+(n-1)×最长
6.3 Cache计算
公式:
- 命中率 h = 命中次数/访问总次数
- 平均访问时间 t = h×tc + (1-h)×(tc+tm)(tc Cache时间,tm主存时间)
- 若同时访:t = h×tc + (1-h)×tm(假设Cache未命中再访主存)
例题:命中率95%,Cache 10ns,主存 100ns - t = 0.95×10 + 0.05×(10+100) = 9.5 + 5.5 = 15 ns
口诀:命中乘Cache,未命中乘两者和
6.4 内存编址与芯片扩展
公式:
- 内存容量 = 末地址 - 首地址 + 1
- 芯片数 = 总容量/单片容量 × (总位宽/单片位宽)
例题:地址A0000H到DFFFFH,求容量 - DFFFF - A0000 + 1 = 40000H = 4×16^4 = 262144 字节 = 256KB
例题2:用16K×4位芯片组成64K×8位存储器,需几片 - 片数 = (64K/16K) × (8/4) = 4 × 2 = 8 片
口诀:末减首加一;容量除容量,位宽除位宽
6.5 磁盘容量与传输
公式:
- 容量 = 磁头数×柱面数×扇区数×每扇区字节
- 数据传输率 = 转速(r/s) × 每道扇区数 × 每扇区字节
- 平均寻道时间 = (最大+最小)/2;平均旋转延迟 = 1/(2×转速)
例题:7200转/分,每道100扇区,每扇区512B,求传输率 - 7200转/分 = 120转/秒
- 传输率 = 120 × 100 × 512 = 6144000 B/s ≈ 6 MB/s
口诀:转速乘扇区乘字节
6.6 McCabe圈复杂度
公式:V(G) = E - N + 2 = P + 1 = 区域数(E边,N节点,P判定节点)
例题:流程图15边12节点
- V(G) = 15 - 12 + 2 = 5
- 独立路径数 = 5
口诀:边减点加二,判定加一
6.7 二叉树性质计算
公式:
- n0 = n2 + 1(叶子=度2+1)
- n = n0 + n1 + n2
- 第i层最多 2^(i-1) 节点
- 深度k最多 2^k - 1 节点
- 完全二叉树n节点深度 = ⌊log2(n)⌋ + 1
例题:二叉树68个叶子,度2节点? - n2 = n0 - 1 = 68 - 1 = 67
口诀:叶子等二度加一
6.8 排序比较次数
公式:
- 冒泡/插入/选择最坏 n(n-1)/2
- 快排平均 nlog2n,最坏 n(n-1)/2
- 归并 nlog2n
- 堆排 nlog2n
例题:100个元素快排平均比较次数 - ≈ 100 × log2(100) ≈ 100 × 6.64 ≈ 664
口诀:平方三兄弟,快归堆nlog
6.9 子网划分计算
公式:
- 借n位作网络位:子网数=2^n(CIDR不减2)
- 剩m位主机位:主机数=2^m - 2
- 掩码:网络位全1,主机位全0
例题:192.168.1.0/24 划分8个子网 - 借位 n=3(2^3=8)
- 新掩码 /27(24+3),即 255.255.255.224
- 每子网主机 = 2^5 - 2 = 30
例题2:/28掩码,主机数? - 主机位=32-28=4,主机=2^4-2=14
口诀:借位翻倍,剩余减二
6.10 IP地址分类
| 类 | 首位 | 网络位 | 范围 | 默认掩码 |
|---|---|---|---|---|
| A | 0 | 8 | 1-126 | /8 |
| B | 10 | 16 | 128-191 | /16 |
| C | 110 | 24 | 192-223 | /24 |
| D | 1110 | - | 224-239 组播 | - |
| E | 1111 | - | 240-255 保留 | - |
- 私有:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16
- 127.0.0.0/8 环回
口诀:A一二B一二八C一九二
6.11 关键路径计算
步骤:
- 从源点正向算 ES最早开始(取前驱EF最大),EF=ES+工期
- 从汇点逆向算 LF最晚完成(取后续LS最小),LS=LF-工期
- 总浮动 = LS-ES = LF-EF;浮动=0在关键路径
例题:A(3)→B(2)→C(4),A→D(5)→C
- 路径ABC=9,路径ADC=8
- 关键路径=A-B-C,工期9
- D总浮动 = 9-8 = 1
口诀:正向最早取大,逆向最晚取小,浮动零关键
6.12 挣值管理计算
公式:
- SV = EV - PV(进度偏差,>0超前)
- CV = EV - AC(成本偏差,>0节约)
- SPI = EV / PV(进度绩效,>1快)
- CPI = EV / AC(成本绩效,>1省)
- EAC = AC + (BAC - EV) / CPI(完工估算)
- ETC = EAC - AC
- VAC = BAC - EAC
例题:BAC=100万,PV=40万,EV=30万,AC=50万 - SV = 30-40 = -10(落后)
- CV = 30-50 = -20(超支)
- SPI = 30/40 = 0.75
- CPI = 30/50 = 0.6
- EAC = 50 + (100-30)/0.6 = 50 + 116.7 = 166.7万
口诀:EV在前,进度配PV成本配AC,>0/>1好
6.13 三点估算
公式:
- 期望 TE = (a + 4m + b) / 6
- 标准差 σ = (b - a) / 6
- 方差 σ² = ((b-a)/6)²
例题:乐观10天,最可能15天,悲观20天 - TE = (10 + 4×15 + 20)/6 = 90/6 = 15天
- σ = (20-10)/6 ≈ 1.67
口诀:乐加四最加悲除六
6.14 可靠性串并联计算
公式:
- 串联:R = R1 × R2 × … × Rn
- 并联:R = 1 - (1-R1)(1-R2)…(1-Rn)
- MTBF = 1/λ(λ失效率)
- 可用性 A = MTBF/(MTBF+MTTR)
例题:两设备R=0.9并联 - R = 1 - (1-0.9)² = 1 - 0.01 = 0.99
例题2:三设备R=0.9串联 - R = 0.9³ = 0.729
例题3:MTBF=1000h,MTTR=10h - A = 1000/(1000+10) = 0.9901 ≈ 99.01%
口诀:串联相乘,并联一减各不可靠相乘
6.15 现值终值与NPV/IRR
公式:
- 现值 PV = FV/(1+i)^n
- 终值 FV = PV×(1+i)^n
- NPV = Σ CFt/(1+i)^t - I0(t=1…n,I0初始投资)
- IRR:使NPV=0的i
- 决策:NPV>0 或 IRR>基准收益率 → 可行
例题:投资100万,3年收益40,50,60万,折现率10% - NPV = 40/1.1 + 50/1.21 + 60/1.331 - 100
- = 36.36 + 41.32 + 45.08 - 100 = 22.76万 > 0 可行
口诀:现除终乘;N大零I大基
6.16 盈亏平衡计算
公式:
- BEP产量 = 固定成本F / (单价P - 单位变动成本V)
- BEP销售额 = F / (1 - V/P)
- 边际贡献率 = (P-V)/P
例题:固定成本10万,单价100,单位变动成本60 - BEP = 100000/(100-60) = 2500件
口诀:固除边(固定除以边际贡献)
6.17 排队论M/M/1
公式:
- ρ = λ/μ(利用率,λ到达率,μ服务率)
- 平均队长 L = ρ/(1-ρ) = λ/(μ-λ)
- 平均等待队长 Lq = ρ²/(1-ρ)
- 平均逗留时间 W = 1/(μ-λ)
- 平均等待时间 Wq = ρ/(μ-λ) = λ/μ(μ-λ)
例题:λ=2人/分,μ=3人/分 - ρ = 2/3
- L = (2/3)/(1/3) = 2人
- W = 1/(3-2) = 1分
口诀:队用ρ等用μ减λ
6.18 PV操作与信号量
规则:
- P(S):S=S-1,若S<0阻塞
- V(S):S=S+1,若S≤0唤醒
- 互斥:P(S)临界区V(S),S初值1
- 同步:前操作后V(S),后操作前P(S),S初值0
- S初值n:表示初始有n个资源
例题:3个缓冲区,生产者消费者 - 互斥信号量mutex初值1
- 空缓冲区empty初值3
- 满缓冲区full初值0
- 生产:P(empty) P(mutex) 放 V(mutex) V(full)
- 消费:P(full) P(mutex) 取 V(mutex) V(empty)
口诀:互1同0,P减阻V加唤;先同步后互斥(避免死锁)
6.19 进程调度平均周转时间
公式:
- 周转时间 = 完成时间 - 到达时间
- 带权周转 = 周转/运行时间
- 平均周转 = Σ周转/n
- 平均等待 = Σ等待/n
例题:4进程到达均0,运行2,4,6,8,SJF调度 - 顺序:2,4,6,8
- 等待:0,2,6,12
- 平均等待 = (0+2+6+12)/4 = 5
口诀:完成减到达;SJF平均等待最短
6.20 页面置换缺页次数
步骤:按访问序列走,缺页则调入,按算法选淘汰
- OPT:淘汰未来最久不用
- FIFO:淘汰最先调入
- LRU:淘汰最近最久未用
例题:3页框,访问序列 7,0,1,2,0,3,0,4,FIFO - 7(缺)→0(缺)→1(缺)→2(缺,淘汰7)→0(命中)→3(缺,淘汰0)→0(缺,淘汰1)→4(缺,淘汰2)
- 缺页6次(注意0被淘汰后又访问)
口诀:O最F先L近
6.21 功能点估算
公式:FP = UFC × TCF
- UFC未调整功能点 = Σ(各信息域项数×权重)
- 信息域:外部输入EI/外部输出EO/外部查询EQ/内部文件ILF/外部文件EIF
- TCF技术复杂度因子 = 0.65 + 0.01×ΣFi(Fi共14项0-5)
例题:UFC=100,ΣFi=35 - TCF = 0.65 + 0.01×35 = 1.0
- FP = 100 × 1.0 = 100
口诀:UFC乘TCF,TCF六五加零点零一ΣF
6.22 代码行估算(COCOMO)
公式:
- 基本COCOMO:E = a×(KLOC)^b(E人月)
- 有机:a=2.4,b=1.05
- 半分离:a=3.0,b=1.12
- 嵌入:a=3.6,b=1.20
例题:有机型,50KLOC
- E = 2.4 × 50^1.05 ≈ 2.4 × 57.1 ≈ 137 人月
口诀:a乘KLOC的b次方
6.23 风险EMV期望货币值
公式:EMV = Σ(概率i × 收益i)
例题:方案A:0.7概率赚100万,0.3概率亏20万
- EMV = 0.7×100 + 0.3×(-20) = 70 - 6 = 64万
口诀:概率乘收益求和
6.24 决策树计算
步骤:从叶到根,每节点算EMV,选最大
例题:建大厂(0.7×200+0.3×-40=128万-投资100=28) vs 建小厂(0.7×60+0.3×20=48-50=-2)
- 选建大厂,EMV=28
口诀:从叶到根算期望,减成本选最大
6.25 加密密钥空间与暴力破解
公式:
- 密钥空间 = 2^密钥位数
- 破解时间 = 密钥空间 / 破解速度
例题:AES-128,每秒试10^12次 - 空间 = 2^128 ≈ 3.4×10^38
- 时间 = 3.4×10^38 / 10^12 = 3.4×10^26 秒 ≈ 10^19 年
口诀:2的密钥位次方除速度
6.26 磁盘RAID容量计算
公式:
- RAID0:N×单盘
- RAID1:N/2×单盘
- RAID3/5:(N-1)×单盘
- RAID6:(N-2)×单盘
- RAID10:N/2×单盘
例题:5块2TB盘RAID5 - 容量 = (5-1)×2 = 8TB
口诀:0全1半3/5减1,6减2,10半
6.27 网络图计算(AOA)
公式:
- 最早时间:正向取大
- 最晚时间:逆向取小
- 自由浮动 = 后继最早开始 - 本活动最早完成
- 总浮动 = LS - ES
口诀:正早取大,逆晚取小,总浮LS减ES
6.28 浮点数表示计算
IEEE754单精度:数符1位+阶码8位(移码偏移127)+尾数23位
- 值 = (-1)^s × 1.尾数 × 2^(阶码-127)
例题:阶码=130,尾数=1.1(隐含1) - 实际阶 = 130-127 = 3
- 值 = 1.5 × 2^3 = 12
口诀:阶码减127,尾数隐含1
6.29 进制转换
- 二→十六:4位一组
- 二→八:3位一组
- 十→R:除R取余倒序
- R→十:按权展开
- 小数:乘R取整正序
例题:25.625转二 - 25 = 11001
- 0.625×2=1.25取1,0.25×2=0.5取0,0.5×2=1取1 → 101
- 结果 11001.101
口诀:整数除余倒,小数乘整正
6.30 校验码计算(CRC)
步骤:
- 数据后加k个0(k=生成多项式最高次)
- 模2除(异或)生成多项式
- 余数即CRC校验码
口诀:补零模二除,余数即校验
6.31 计算题型总口诀
mindmap
root((计算题型30))
计算机基础
海明 2k≥n+k+1
流水 T=首条和+(n-1)最长
Cache 命中乘Cache未命中乘和
内存 末减首加一
磁盘 转速乘扇区乘字节
浮点 阶码减127尾数隐含1
进制 整除余倒小乘整正
CRC 补零模二除
数据结构
McCabe 边减点加2
二叉树 n0=n2+1
排序 nlog或n2
操作系统
PV 互1同0P减V加
调度 完成减到达
置换 O最F先L近
网络
子网 借位翻倍剩余减二
IP A1B128C192
项目管理
关键路径 正早取大逆晚取小浮动零
挣值 EV在前进度PV成本AC
三点 乐加四最加悲除六
可靠性
串联相乘并联一减
可用性 MTBF比MTBF加MTTR
数学经济
现值终值 现除终乘
NPV 折现求和减投资
盈亏 固除边
排队 队用ρ等用μ减λ
估算
功能点 UFC乘TCF
COCOMO a乘KLOC的b
EMV 概率乘收益求和
安全
密钥空间 2密钥位除速度
RAID
0全1半5减1
6.32 计算题避坑速查
| 题型 | 高频坑 |
|---|---|
| 海明码 | 漏+1(应为n+k+1) |
| 流水线 | 吞吐率误用各段和(应1/最长段) |
| Cache | 未命中时间是否含Cache时间(看题干"同时访"还是"先Cache后主存") |
| 内存 | 末地址-首地址**+1** |
| McCabe | 用+1(应+2) |
| 子网 | 子网数减2(CIDR不减) |
| 关键路径 | 浮动最大(应=0) |
| 挣值 | EV放后面(应在前);正负号搞反 |
| 三点估算 | 用(a+b)/2(应(a+4m+b)/6) |
| 串联可靠 | 用加法(应乘法) |
| 并联可靠 | 忘记1-(应1-各不可靠相乘) |
| 现值 | 乘复利(应除复利) |
| 盈亏平衡 | 忘记减变动成本(应除边际贡献) |
| 排队论 | ρ用μ/λ(应λ/μ) |
| PV | 互斥初值0(应1) |
| 页面置换 | FIFO不报Belady(注意缺页次数) |
| RAID5 | 用N×单盘(应(N-1)×单盘) |
| 浮点阶码 | 直接用阶码(应减127) |
- 点赞
- 收藏
- 关注作者
评论(0)