系统架构设计师 · 详细复习手册(强化版)

针对理论与计算短板,含大量例题解析 | 软考高级 | 2025-2026 备考


目录

  • 第一部分:操作系统核心理论与计算
  • 第二部分:计算机网络与通信
  • 第三部分:数据库系统
  • 第四部分:软件工程与开发模型
  • 第五部分:软件架构风格详解
  • 第六部分:设计模式精讲
  • 第七部分:质量属性与架构评估
  • 第八部分:分布式与微服务
  • 第九部分:嵌入式与系统集成
  • 第十部分:安全性与密码学
  • 第十一部分:算术题专题(含详解)
  • 第十二部分:案例分析样例题
  • 第十三部分:论文写作指南
  • 第十四部分:考前冲刺策略

第一部分:操作系统核心理论与计算

1.1 进程与线程

进程的三种基本状态(必考)
        时间片用完/被抢占
就绪态 ←——————————————— 执行态
   ↓ ↑                    ↓
   ↑ |调度器分配CPU       |
   ↑ ←—————————————       |等待I/O/资源
   |                      ↓
   ←————I/O完成———————— 阻塞态

关键转换:

转换 触发原因
就绪→执行 调度器分配CPU
执行→就绪 时间片用完、被高优先级抢占、主动让出CPU(yield)
执行→阻塞 等待I/O、申请资源不满足、等待信号量
阻塞→就绪 I/O完成、资源到达、信号量释放

注意: 阻塞态不能直接转执行态,必须先到就绪态。

进程 vs 线程
进程 线程
资源 拥有独立资源 共享进程资源
调度 调度开销大 调度开销小
通信 IPC(管道/消息/共享内存) 共享变量直接通信
健壮性 一个进程崩溃不影响其他 一个线程崩溃可能拖垮整个进程

1.2 死锁

死锁的四个必要条件
  1. 互斥条件:资源一次只能被一个进程占用
  2. 请求与保持:占有资源的同时请求新资源
  3. 不可抢占:已分配资源不能被强制夺取
  4. 循环等待:进程间形成等待环路
死锁处理策略
策略 方法 特点
预防 破坏4个必要条件之一(互斥不能破坏) 简单但限制大
避免 银行家算法 运行时判断
检测+解除 资源分配图检测 允许死锁发生
忽略 鸵鸟策略 假装看不到
死锁避免最少资源数公式(必考)

公式: 最少资源数 = R × (N-1) + 1

  • R = 进程数
  • N = 每个进程需要的最大资源数

例题: 系统有5个进程,每个进程需要3个同类资源,至少需要多少个资源才能保证不发生死锁?

  • 解:5×(3-1)+1 = 11个
  • 原理:每个进程都拿到N-1个不会死锁,再多1个就够某个进程完成

1.3 存储管理

页式存储位示图计算(高频)

位示图(Bitmap):每页对应1位,0表示空闲,1表示已分配

计算步骤:

  1. 统一单位
  2. 总页数 = 内存大小 ÷ 页大小
  3. 位数 = 总页数(每页1位)
  4. 字节数 = 位数 ÷ 8

例题1: 内存16GB,页大小4KB,位示图占多少?

总页数 = 16GB ÷ 4KB
      = (16×1024×1024 KB) ÷ 4 KB
      = 4,194,304 页
位示图字节数 = 4,194,304 ÷ 8 = 524,288 B
            = 524,288 ÷ 1024 = 512 KB

答案:512 KB

例题2: 内存4GB,页大小8KB,位示图占多少KB?

总页数 = 4×1024×1024 KB ÷ 8 KB = 524,288 页
字节数 = 524,288 ÷ 8 = 65,536 B = 64 KB

答案:64 KB

页面置换算法
算法 原理 优缺点
OPT 置换将来最长时间不用的 理想算法,无法实现
FIFO 先进先出 简单,可能Belady异常
LRU 最近最久未使用 性能好,开销大
LFU 最近最少使用 反映访问频率
Clock 时钟算法(LRU近似) 折衷方案
虚拟内存命中率计算

有效访问时间 EAT = h×T_cache + (1-h)×T_main

  • h = 命中率,T = 访问时间

例题: Cache命中率90%,Cache访问10ns,主存100ns,平均访问时间?

  • EAT = 0.9×10 + 0.1×100 = 9 + 10 = 19 ns

1.4 嵌入式实时系统

实时系统分类
  • 硬实时:必须在截止时间内完成(导弹控制)
  • 软实时:偶尔超时可接受(视频播放)
实时调度算法
算法 全称 特点
RM Rate Monotonic 周期短的优先级高,静态优先级
EDF Earliest Deadline First 截止时间近的优先,动态优先级
LLF Least Laxity First 松弛时间最小优先
嵌入式OS分类(考过多次)
  • 实时:VxWorks、QNX、μC/OS-II、RT-Linux
  • 非实时:Android、iOS、WinCE、嵌入式Linux

第二部分:计算机网络与通信

2.1 OSI七层模型 vs TCP/IP四层

OSI七层 TCP/IP四层 协议示例 数据单位
应用层 应用层 HTTP/FTP/SMTP/DNS/Telnet 报文
表示层 (合并) SSL/TLS -
会话层 (合并) RPC -
传输层 传输层 TCP/UDP 段(TCP)/数据报(UDP)
网络层 网际层 IP/ICMP/ARP/RARP
数据链路层 网络接口层 PPP/Ethernet
物理层 (合并) RS-232 比特

2.2 TCP vs UDP

TCP UDP
连接 面向连接(三次握手) 无连接
可靠性 可靠(确认重传) 不可靠
顺序 保证顺序 不保证
速度
头部 20字节 8字节
应用 HTTP/FTP/SMTP/SSH DNS/SNMP/视频/游戏
TCP三次握手
客户端          服务器
  | --- SYN ---→ |
  | ←-- SYN+ACK -|
  | --- ACK ---→ |
TCP四次挥手
客户端          服务器
  | --- FIN ---→ |
  | ←-- ACK -----|
  | ←-- FIN -----|
  | --- ACK ---→ |

2.3 IP地址与子网划分(计算重点)

IP地址分类
范围 默认掩码 网络号位/主机号位
A 1-126 255.0.0.0 8/24
B 128-191 255.255.0.0 16/16
C 192-223 255.255.255.0 24/8
D 224-239 - 组播
E 240-255 - 保留
子网划分计算

关键公式:

  • 借n位 → 划分为 2^n 个子网
  • 主机数 = 2^(主机位) - 2(减去网络地址和广播地址)

例题: 192.168.1.0/24 划分为4个子网,每个子网最多多少主机?

  • 借2位(2²=4个子网),主机位剩6位
  • 主机数 = 2^6 - 2 = 62台
  • 子网掩码 = /26 = 255.255.255.192

例题: 一个C类地址需要支持30台主机,子网掩码应该是?

  • 主机数 ≥ 30,需要主机位 = 5(2^5-2=30)
  • 主机位5,网络位32-5=27
  • 掩码 = /27 = 255.255.255.224

2.4 信道容量计算(必考)

奈奎斯特定理(无噪声)

C = 2 × B × log₂N

  • C = 信道容量(bps)
  • B = 带宽(Hz)
  • N = 信号状态数

例题1: 带宽3000Hz,32种信号状态,最大传输速率?

  • C = 2×3000×log₂32 = 2×3000×5 = 30,000 bps = 30 kbps
香农定理(有噪声)

C = B × log₂(1 + S/N)

  • S/N 是线性值,dB转线性:S/N = 10^(dB/10)

例题2: 带宽4000Hz,信噪比30dB,最大传输速率?

  • S/N = 10^(30/10) = 10³ = 1000
  • C = 4000 × log₂(1001) ≈ 4000×10 = 40 kbps

例题3: 带宽3000Hz,信噪比20dB,最大传输速率?

  • S/N = 10^(20/10) = 100
  • C = 3000 × log₂(101) ≈ 3000 × log₂128 = 3000×7 ≈ 20 kbps

2.5 编码与调制

  • 基带传输:直接传数字信号
  • 调制传输:调幅(AM)/调频(FM)/调相(PM)
  • PCM脉冲编码:采样→量化→编码

奈奎斯特采样定理: 采样频率 ≥ 2倍最高频率


第三部分:数据库系统

3.1 数据库三级模式

外模式(用户视图) - 多个
    ↕ 外模式/模式映射
模式(概念模式) - 1个
    ↕ 模式/内模式映射
内模式(存储模式) - 1个

3.2 关系完整性

类型 含义 示例
实体完整性 主键非空唯一 学号不能为空
参照完整性 外键引用合法 选课表的学号必须在学生表存在
用户定义完整性 业务规则约束 性别只能"男"或"女"

3.3 范式(重点)

范式 定义 解决的问题
1NF 属性不可再分 原子性
2NF 1NF + 非主属性完全依赖主键 部分函数依赖
3NF 2NF + 非主属性不传递依赖主键 传递函数依赖
BCNF 3NF + 主属性也不传递依赖 主属性间传递依赖
4NF BCNF + 无非平凡多值依赖 多值依赖

例题: 关系R(学号, 课程号, 成绩, 教师, 教师电话)

  • 主键(学号, 课程号)
  • 教师电话依赖于教师,教师依赖于课程号 → 传递依赖
  • 当前是2NF,分解后达到3NF

3.4 关系代数运算

运算 符号 含义
选择 σ 选行(满足条件的元组)
投影 π 选列(取属性子集)
连接 两表组合
自然连接 同名属性自动连接
笛卡尔积 × 所有组合
两表元组合并
两表共同元组
- 第一表去掉第二表元组
÷ 求满足所有条件的元组

3.5 SQL连接类型

  • 内连接(INNER JOIN):两表都满足条件
  • 左外连接(LEFT JOIN):左表全保留
  • 右外连接(RIGHT JOIN):右表全保留
  • 全外连接(FULL JOIN):两表全保留

3.6 索引类型

类型 特点
B树/B+树索引 范围查询好,最常用
Hash索引 等值查询快,不支持范围
位图索引 适合低基数列
聚簇索引 数据按索引顺序存储,每表一个
非聚簇索引 数据与索引分离,可多个

3.7 事务ACID

特性 含义
Atomicity 原子性 事务全部完成或全部不做
Consistency 一致性 数据库从一个一致状态到另一个
Isolation 隔离性 并发事务相互隔离
Durability 持久性 提交后永久保存

3.8 隔离级别与并发问题

隔离级别 脏读 不可重复读 幻读
读未提交 可能 可能 可能
读已提交 不会 可能 可能
可重复读 不会 不会 可能
串行化 不会 不会 不会

3.9 分布式数据库CAP定理

三选二原则:

  • Consistency 一致性
  • Availability 可用性
  • Partition tolerance 分区容错性

典型选择:

  • CP:HBase、MongoDB(保证一致性,分区时不可用)
  • AP:Cassandra、CouchDB(高可用,最终一致)
  • CA:单机数据库(不分布式)

3.10 BASE理论

  • Basically Available 基本可用
  • Soft state 软状态
  • Eventually consistent 最终一致性

是CAP中AP的延伸,牺牲强一致性换取可用性。

3.11 数据仓库

  • OLTP(联机事务处理):日常交易,强调ACID
  • OLAP(联机分析处理):决策分析,强调多维查询

数据仓库特点:

  • 面向主题、集成的、相对稳定的、反映历史变化

ETL流程: Extract抽取 → Transform转换 → Load加载


第四部分:软件工程与开发模型

4.1 软件生命周期

6个阶段: 计划 → 需求分析 → 设计 → 编码 → 测试 → 运行维护

4.2 开发模型对比

模型 特点 适用场景
瀑布模型 线性顺序、文档驱动 需求明确稳定
原型模型 快速构建原型迭代 需求不明确
增量模型 分批交付 核心功能优先
螺旋模型 风险驱动+迭代 大型复杂高风险项目
敏捷开发 拥抱变化、快速迭代 需求频繁变化
RAD快速应用开发 短周期(60-90天) 适合需求明确的中小项目
RUP统一过程 用例驱动、迭代 大中型项目
V模型 测试驱动 强调测试
喷泉模型 面向对象、迭代无缝 面向对象开发

4.3 RUP四阶段

阶段 任务 里程碑
初始 定义范围、愿景 生命周期目标
细化 设计架构、制定计划 生命周期架构
构造 编码实现 初始运行能力
移交 部署交付 产品发布

九大工作流: 业务建模、需求、分析与设计、实现、测试、部署、配置与变更管理、项目管理、环境

4.4 CMMI 5级成熟度

级别 名称 关键特征
1 初始级 混乱、无序、靠英雄主义
2 已管理级 项目级过程管理、可重复
3 已定义级 组织级标准过程
4 量化管理级 用数据量化管理质量
5 优化级 持续过程改进

4.5 软件测试

黑盒测试方法
  • 等价类划分:把输入分成等价类
  • 边界值分析:测试边界(最常出bug)
  • 错误推测:经验推测错误位置
  • 因果图:输入条件与输出结果关系
  • 正交实验设计:减少测试用例
白盒测试覆盖(强度递增)
  1. 语句覆盖(弱)
  2. 判定覆盖
  3. 条件覆盖
  4. 判定/条件覆盖
  5. 条件组合覆盖
  6. 路径覆盖(强)
测试阶段
  • 单元测试:测试单个模块(白盒为主)
  • 集成测试:测试模块组合
  • 系统测试:测试完整系统
  • 验收测试:用户验收(α测试、β测试)
  • 回归测试:修改后验证

4.6 内聚与耦合(必考)

内聚类型(高→低)

口诀:功顺通过时逻偶

等级 类型 说明
7 功能内聚 完成单一明确功能
6 顺序内聚 前一个输出是后一个输入
5 通信内聚 操作同一数据集
4 过程内聚 按特定次序执行
3 时间内聚 同时间段执行(初始化模块)
2 逻辑内聚 逻辑相似的操作分组
1 偶然内聚 关系松散偶然组合
耦合类型(低→高)

口诀:非数标控外公内

等级 类型 说明
1 非直接耦合 没有直接联系
2 数据耦合 传递简单数据参数
3 标记耦合 传递数据结构
4 控制耦合 传递控制信号
5 外部耦合 共享外部数据格式
6 公共耦合 共享全局数据
7 内容耦合 直接访问内部数据(最差)

4.7 净室软件工程

理论基础: 函数理论 + 抽样理论

核心思想: 避免缺陷而非修复缺陷

特点: 形式化方法、统计过程控制、增量开发


第五部分:软件架构风格详解

5.1 数据流风格

管道-过滤器
[输入] → [过滤器1] → 管道 → [过滤器2] → 管道 → [过滤器3] → [输出]

特点:

  • 过滤器之间无状态
  • 数据流单向流动
  • 过滤器独立、可替换、可重用

优点:

  • 松耦合
  • 支持并行处理
  • 易于添加新过滤器

缺点:

  • 不适合交互式应用
  • 数据格式转换可能影响效率
  • 错误处理困难

典型应用: 编译器(词法→语法→语义→优化→代码生成)、Unix Shell管道、ETL

批处理
  • 与管道-过滤器类似,但是数据完整传递(不是流式)

5.2 调用/返回风格

主程序-子程序
  • 单线程控制
  • 层次分解
面向对象
  • 数据封装、继承、多态
  • 对象间通过消息传递
分层架构
表示层  ← 用户接口
业务层  ← 业务逻辑
持久层  ← 数据访问
数据层  ← 数据库

优点:

  • 关注点分离
  • 易维护和扩展
  • 标准化接口

缺点:

  • 性能损耗(穿透多层)
  • 不是所有系统都能完美分层
  • 跨层依赖难处理

典型: OSI七层、TCP/IP四层、MVC、MVP、MVVM

5.3 独立构件风格

事件驱动(隐式调用)
  • 构件不直接调用,而是发布事件
  • 其他构件订阅感兴趣的事件

优点:

  • 极度松耦合
  • 易于添加新订阅者

缺点:

  • 难以保证执行顺序
  • 难调试
  • 数据交换复杂

典型: GUI框架(按钮点击事件)、消息队列、发布订阅、Reactor模式

进程通信
  • 独立进程通过消息传递通信
  • 比事件驱动更显式

5.4 虚拟机风格

解释器

核心: 输入程序 → 解释器 → 输出结果

优点:

  • 灵活性高
  • 可动态改变行为
  • 支持热部署

缺点:

  • 性能较差

典型: Java JVM、Python解释器、正则表达式引擎、SQL引擎

基于规则的系统
  • 规则库 + 推理引擎 + 工作内存
  • 用于专家系统、AI

5.5 仓库风格

数据库系统
  • 中央数据存储 + 独立的事务
  • 数据一致性由数据库保证
黑板系统
        知识源1  知识源2  知识源3
          ↓        ↓        ↓
        ┌─────────────────────┐
        │      黑板(共享数据) │
        └─────────────────────┘
                ↑
              控制器

特点:

  • 知识源独立工作
  • 通过黑板间接通信
  • 控制器协调

典型应用: 语音识别、AI推理、协同设计

5.6 C/S 与 B/S 架构

C/S B/S
部署 客户端需安装 浏览器即可
维护 升级要更新所有客户端 服务端升级即可
性能 受网络限制
安全 较好 较弱
跨平台
三层C/S架构
表示层(客户端) → 业务层(应用服务器) → 数据层(数据库服务器)

5.7 SOA面向服务架构

核心特征:

  • 服务粒度粗
  • 服务之间松耦合
  • 通过ESB(企业服务总线)通信
  • 标准化接口(WSDL/SOAP/REST)

关键技术:

  • WSDL:服务描述
  • SOAP:服务通信协议
  • UDDI:服务注册发现
  • ESB:服务总线
  • BPEL:业务流程编排

5.8 微服务架构

与SOA对比:

SOA 微服务
服务粒度
通信 重量级ESB 轻量级HTTP/REST
数据 共享数据库 每服务独立数据库
部署 集中 独立部署

详见第八部分。


第六部分:设计模式精讲

6.1 设计原则(SOLID)

原则 含义
SRP 单一职责 一个类只负责一件事
OCP 开闭原则 对扩展开放、对修改关闭
LSP 里氏替换 子类可以替换父类
ISP 接口隔离 多个专一接口比一个总接口好
DIP 依赖倒置 依赖抽象而非具体实现

其他原则:

  • 迪米特原则(最少知识):模块只与朋友通信
  • 合成复用原则:优先使用组合而非继承

6.2 创建型模式(5个)

工厂方法
  • 意图:定义创建对象接口,子类决定实例化哪个类
  • 场景:根据条件创建不同对象
  • 示例:日志工厂创建文件日志/数据库日志
抽象工厂
  • 意图:创建一系列相关或相互依赖的对象
  • 场景:UI主题(按钮+输入框+对话框成套出现)
  • 关键词:产品族
单例
  • 意图:保证一个类仅有一个实例
  • 场景:配置管理、连接池、日志
  • 实现:私有构造函数 + 静态实例 + getInstance方法
建造者
  • 意图:分离复杂对象的构建与表示
  • 场景:构建复杂对象(如StringBuilder、SQL查询构造器)
原型
  • 意图:通过克隆已有对象创建新对象
  • 场景:对象创建成本高、需要副本

6.3 结构型模式(7个)

适配器
  • 意图:接口转换,让不兼容的接口能合作
  • 场景:旧系统集成、第三方库适配
桥接
  • 意图:将抽象与实现分离,独立变化
  • 场景:跨平台开发(抽象=形状,实现=渲染方式)
组合
  • 意图:表示部分-整体的层次结构
  • 场景:树形结构(文件系统、组织架构)
装饰器
  • 意图:动态添加职责
  • 场景:Java IO流、给对象增加额外功能不修改原类
外观
  • 意图:提供统一简化的接口
  • 场景:复杂子系统的总入口(如电源开关控制整套设备)
享元
  • 意图:共享细粒度对象
  • 场景:String常量池、连接池、对象池
代理
  • 意图:控制对对象的访问
  • 场景:远程代理(RPC)、虚拟代理(懒加载)、保护代理(权限)

6.4 行为型模式(11个)

观察者★
  • 意图:一对多依赖,对象状态变化通知所有依赖者
  • 场景:事件驱动、MVC、发布订阅
策略★
  • 意图:定义算法族,可互相替换
  • 场景:支付方式选择、排序算法选择
模板方法★
  • 意图:定义算法骨架,子类实现具体步骤
  • 场景:流程固定但细节不同(如游戏AI的总流程)
状态★
  • 意图:状态改变时行为改变
  • 场景:订单状态机、TCP连接状态
命令★
  • 意图:将请求封装为对象
  • 场景:撤销/重做、菜单命令、事务
责任链★
  • 意图:请求沿着链传递,直到被处理
  • 场景:审批流程、日志级别处理、Servlet过滤器
迭代器
  • 意图:顺序访问聚合对象元素
  • 场景:集合的遍历
中介者
  • 意图:用中介对象封装一系列对象的交互
  • 场景:聊天室、机场塔台
备忘录
  • 意图:保存对象状态以便恢复
  • 场景:编辑器Undo、游戏存档
解释器
  • 意图:定义语言文法,解释语句
  • 场景:表达式解析、规则引擎
访问者
  • 意图:在不修改对象结构的情况下定义新操作
  • 场景:编译器AST处理、报表生成

6.5 设计模式选择速查

根据需求选择:

  • 想灵活创建对象?→ 工厂/抽象工厂/建造者
  • 想全局唯一?→ 单例
  • 想兼容老接口?→ 适配器
  • 想简化复杂调用?→ 外观
  • 想懒加载/权限控制?→ 代理
  • 想动态添加功能?→ 装饰器
  • 想算法可替换?→ 策略
  • 想状态机?→ 状态
  • 想发布订阅?→ 观察者
  • 想撤销重做?→ 命令/备忘录
  • 想流程定制?→ 模板方法/责任链

第七部分:质量属性与架构评估

7.1 软件质量属性

六大核心质量属性
属性 含义 战术
可用性 系统正常运行时间比 故障检测、冗余、自动恢复
可修改性 变更成本和容易程度 抽象、信息隐藏、接口设计
性能 响应时间、吞吐量 缓存、并发、资源调度
安全性 抵御未授权访问 认证、授权、加密、审计
可测试性 缺陷发现的难易程度 接口隔离、依赖注入、可观测
易用性 用户使用的容易程度 学习曲线、操作效率、满意度

7.2 质量属性场景六要素(必考)

┌──────┐    ┌──────┐    ┌──────┐    ┌──────┐    ┌──────┐    ┌──────┐
│刺激源│ → │ 刺激 │ → │ 环境 │ → │ 制品 │ → │ 响应 │ → │ 度量 │
└──────┘    └──────┘    └──────┘    └──────┘    └──────┘    └──────┘
要素 含义
刺激源 谁/什么产生刺激(用户、攻击者、系统)
刺激 到达系统的事件(请求、攻击、故障)
环境 刺激发生时系统的状态(正常、过载、降级)
制品 被影响的部分(整个系统/某个组件/数据)
响应 系统采取的行动(处理、拒绝、报警)
响应度量 如何度量响应(时间、次数、百分比)
各属性的响应度量
属性 度量方式
可用性 故障间隔时间、修复时间、可用时间百分比
性能 响应时间、吞吐量、延迟
安全性 抵御攻击的时间、检测攻击的时间
可修改性 修改成本、修改时间、影响范围
可测试性 测试覆盖率、发现缺陷的概率
易用性 学习时间、任务完成时间、满意度

7.3 可用性具体指标

可用性 年停机时间 月停机时间
99% (2个9) 87.6小时 7.2小时
99.9% (3个9) 8.76小时 43.2分钟
99.99% (4个9) 52.6分钟 4.32分钟
99.999% (5个9) 5.26分钟 26秒

7.4 ATAM架构权衡分析法(必考)

四个核心概念
概念 定义
敏感点 影响某一质量属性的架构决策
权衡点 影响多个质量属性的决策(一好一坏)
风险点 可能导致问题的决策
非风险点 经分析确认安全的决策
ATAM九步流程
  1. 表述ATAM
  2. 表述商业动机
  3. 表述架构
  4. 识别架构方法
  5. 生成质量属性效用树
  6. 分析架构方法
  7. 集体讨论场景并确定优先级
  8. 分析架构方法(深入)
  9. 表述结果
质量属性效用树
效用
├─ 性能
│  ├─ 响应时间 < 2s(高,高)
│  └─ 吞吐量 > 1000 TPS(高,中)
├─ 可用性
│  ├─ 99.9%可用性(高,高)
│  └─ 故障恢复 < 5min(中,高)
└─ 安全性
   └─ 防SQL注入(高,中)

括号内是(重要性,难度)

7.5 SAAM软件架构分析方法

主要评估:可修改性

步骤: 开发场景 → 描述架构 → 场景分类 → 单个场景评估 → 场景交互评估 → 总体评估

7.6 CBAM成本效益分析法

结合ATAM,加入成本和收益分析,进行ROI评估


第八部分:分布式与微服务

8.1 微服务核心特征

  1. 服务独立:每个服务可独立开发、部署、扩展
  2. 业务能力划分:按业务能力而非技术能力划分
  3. 去中心化治理:每个服务团队自治
  4. 基础设施自动化:CI/CD、容器化
  5. 失败容忍:熔断、降级、重试

8.2 服务拆分原则

  • 单一职责原则(SRP):每个服务只做一件事
  • 高内聚低耦合:服务内部紧密、服务间松散
  • 数据自治:每个服务有自己的数据库
  • API版本管理:兼容旧版本

8.3 微服务通信

同步通信
  • REST:基于HTTP,简单通用
  • gRPC:基于HTTP/2 + Protobuf,性能高
  • GraphQL:灵活查询
异步通信
  • 消息队列:RabbitMQ、Kafka、RocketMQ
  • 事件驱动:发布订阅模式

8.4 服务治理(必考)

断路器模式(Circuit Breaker)
┌─────────┐  失败次数达阈值  ┌─────────┐
│  关闭   │ ───────────────→ │  打开   │
│ Closed  │                   │  Open   │
└─────────┘                   └─────────┘
    ↑                              │
    │                       超时后 │
   成功                            ↓
    │                         ┌─────────┐
    └──────────────────────── │  半开   │
                              │Half-Open│
                              └─────────┘
                                  │
                              失败 │
                                  ↓
                              重新打开

三种状态:

  • 关闭(Closed):正常工作,记录失败次数
  • 打开(Open):直接拒绝请求,等待超时
  • 半开(Half-Open):允许少量请求测试,成功则关闭
熔断、降级、限流区别
概念 含义 触发条件
熔断 保护下游 下游故障
降级 保护核心 资源不足/异常
限流 保护自己 请求量过大
限流算法
算法 原理 特点
计数器 时间窗口内计数 简单,临界问题
滑动窗口 细分时间窗口 解决临界问题
漏桶 固定速率流出 平滑流量
令牌桶 固定速率添加令牌 允许突发流量

8.5 微服务关键组件

组件 作用 主流方案
服务注册发现 服务地址管理 Eureka、Consul、Nacos、Zookeeper
配置中心 集中配置管理 Spring Cloud Config、Apollo、Nacos
网关 统一入口 Zuul、Spring Cloud Gateway、Kong
负载均衡 请求分发 Ribbon、Nginx、F5
熔断 故障隔离 Hystrix、Sentinel、Resilience4j
链路追踪 调用链跟踪 Zipkin、Jaeger、SkyWalking
日志聚合 集中日志 ELK、EFK、Loki
监控 系统监控 Prometheus、Grafana

8.6 分布式事务

2PC两阶段提交
  1. 准备阶段:协调者询问,参与者表态
  2. 提交阶段:根据投票结果统一提交或回滚

问题: 同步阻塞、单点故障、数据不一致

3PC三阶段提交

增加CanCommit阶段,超时机制

TCC(Try-Confirm-Cancel)
  • Try:尝试预留资源
  • Confirm:确认执行
  • Cancel:取消并释放资源
Saga

长事务拆分成多个短事务,失败时执行补偿操作

最终一致性

通过消息队列+幂等性实现

8.7 一致性算法

算法 用途 特点
Paxos 分布式一致性 经典,难懂
Raft 分布式一致性 易理解,实用
ZAB Zookeeper协议 类Paxos
Gossip 最终一致性 去中心化

8.8 容器与编排

技术 作用
Docker 容器化打包
Kubernetes 容器编排
Istio 服务网格
Helm K8s包管理

8.9 云计算服务模式

模式 全称 提供 例子
IaaS 基础设施即服务 虚拟机、存储、网络 AWS EC2、阿里云ECS
PaaS 平台即服务 运行环境、数据库 Heroku、阿里云RDS
SaaS 软件即服务 完整应用 钉钉、Office 365
FaaS 函数即服务 函数运行时 AWS Lambda、阿里函数计算

第九部分:嵌入式与系统集成

9.1 嵌入式系统特点

  • 专用性:为特定应用定制
  • 可裁剪:根据需求选择组件
  • 实时性:及时响应
  • 可靠性:长时间稳定运行
  • 低功耗:能耗优化

9.2 嵌入式硬件

  • 嵌入式微处理器(MPU):高性能(ARM Cortex-A)
  • 嵌入式微控制器(MCU):低功耗(51单片机、STM32)
  • 嵌入式DSP:数字信号处理
  • 嵌入式SoC:片上系统集成

9.3 嵌入式OS分类(考过)

  • 实时:VxWorks、QNX、μC/OS、RT-Linux、FreeRTOS
  • 非实时:Android、iOS、WinCE、嵌入式Linux

9.4 工作温度等级(考过)

等级 温度范围
民用级 0~70℃
工业级 -40~85℃
军用级 -55~150℃

9.5 系统集成

集成方式
方式 特点
表示集成 UI层集成(门户)
数据集成 共享数据库或数据交换
控制集成 通过API调用
业务流程集成 BPM工作流
中间件分类
  • 数据库中间件:JDBC、ODBC
  • 远程过程调用:RPC、gRPC
  • 面向消息:MQ、Kafka
  • 对象请求代理:CORBA
  • 事务处理:Tuxedo

第十部分:安全性与密码学

10.1 安全四大特性

特性 含义 防什么
机密性 不泄露给未授权 防窃听
完整性 不被篡改 防篡改
不可否认性 不能否认操作 防抵赖
可控性 控制信息传播 防扩散

10.2 加密体系

对称加密
算法 密钥长度 特点
DES 56位 已不安全
3DES 168位 DES加强
AES 128/192/256位 当前主流
IDEA 128位 PGP使用
非对称加密
算法 特点
RSA 基于大数分解,最常用
ECC 椭圆曲线,密钥短
DH 密钥交换
DSA 数字签名
散列算法
算法 长度 安全性
MD5 128位 已破解
SHA-1 160位 已破解
SHA-256 256位 安全
SHA-3 可变 最新

10.3 数字签名

过程:

  1. 发送方用私钥加密消息摘要 → 数字签名
  2. 接收方用公钥解密签名 → 摘要
  3. 接收方计算消息摘要,对比验证

保证: 完整性 + 不可否认性

10.4 数字证书

  • 由CA颁发,包含公钥和身份信息
  • X.509标准

PKI公钥基础设施组件:

  • CA:证书颁发机构
  • RA:注册机构
  • CRL:证书撤销列表
  • OCSP:在线证书状态协议

10.5 安全协议层次

层次 协议
应用层 PGP(邮件)、S/MIME、HTTPS
传输层 SSL/TLS
网络层 IPSec
数据链路层 PPTP、L2TP

10.6 网络攻击类型

攻击 描述 防御
SQL注入 在SQL中注入恶意代码 参数化查询
XSS 跨站脚本 输入过滤、CSP
CSRF 跨站请求伪造 Token、Referer校验
DDoS 分布式拒绝服务 流量清洗、CDN
中间人 截获双方通信 TLS加密
重放 重发已捕获的消息 时间戳、Nonce

10.7 访问控制模型

模型 全称 特点
DAC 自主访问控制 资源所有者决定权限
MAC 强制访问控制 系统决定权限(军方)
RBAC 基于角色 主流方案
ABAC 基于属性 灵活,复杂

10.8 安全等级

国家信息安全等级保护2.0:

  • 一级:自主保护
  • 二级:指导保护
  • 三级:监督保护(一般业务系统)
  • 四级:强制保护(重要系统)
  • 五级:专控保护(涉密)

第十一部分:算术题专题(含详解)

11.1 操作系统计算

例题1:位示图

题: 系统采用页式存储管理,内存4GB,页面大小4KB,位示图占多少?

解:
1. 总页数 = 4GB ÷ 4KB = 4×1024×1024÷4 = 1,048,576 页
2. 位数 = 1,048,576 位
3. 字节数 = 1,048,576 ÷ 8 = 131,072 B = 128 KB
答:128KB
例题2:死锁避免

题: 系统中有6个进程,每个进程需要4个R类资源,最少多少个R资源能避免死锁?

解:R×(N-1)+1 = 6×(4-1)+1 = 19
答:19个
例题3:页面置换LRU

题: 内存3个页框,访问序列:1,2,3,4,1,2,5,1,2,3,4,5,使用LRU算法,缺页几次?

解:
访问1:[1]      缺页 ✓
访问2:[1,2]    缺页 ✓
访问3:[1,2,3]  缺页 ✓
访问4:[2,3,4]  缺页(淘汰1)✓
访问1:[3,4,1]  缺页(淘汰2)✓
访问2:[4,1,2]  缺页(淘汰3)✓
访问5:[1,2,5]  缺页(淘汰4)✓
访问1:[2,5,1]  命中
访问2:[5,1,2]  命中
访问3:[1,2,3]  缺页(淘汰5)✓
访问4:[2,3,4]  缺页(淘汰1)✓
访问5:[3,4,5]  缺页(淘汰2)✓
共10次缺页
答:10次

11.2 网络计算

例题4:奈奎斯特公式

题: 信道带宽4kHz,使用4种信号状态,最大数据传输速率?

解:C = 2B·log₂N = 2×4000×log₂4 = 2×4000×2 = 16,000 bps = 16 kbps
答:16 kbps
例题5:香农公式

题: 信道带宽3kHz,信噪比30dB,最大数据传输速率?

解:
S/N = 10^(30/10) = 1000
C = B·log₂(1+S/N) = 3000×log₂1001 ≈ 3000×9.97 ≈ 30,000 bps
答:约30 kbps
例题6:子网划分

题: 192.168.10.0/24需要划分为6个子网,子网掩码?每个子网最多主机数?

解:
1. 6个子网,需要借3位(2³=8>6)
2. 子网掩码 = /27 = 255.255.255.224
3. 主机位 = 32-27 = 5
4. 每子网最多主机 = 2⁵-2 = 30
答:掩码255.255.255.224,每子网30台主机
例题7:传输时延

题: 1MB文件通过100Mbps链路传输,时延多少?

解:
1MB = 8×1024×1024 = 8,388,608 bit
传输时间 = 数据量÷带宽 = 8,388,608÷(100×10⁶) ≈ 0.084秒
答:约84ms

11.3 可靠性计算

例题8:串联系统可靠性

题: 三个组件串联,可靠性分别0.9、0.8、0.95,系统可靠性?

解:R = 0.9×0.8×0.95 = 0.684
答:0.684
例题9:并联系统可靠性

题: 两个组件并联,可靠性都是0.8,系统可靠性?

解:R = 1-(1-0.8)(1-0.8) = 1-0.04 = 0.96
答:0.96
例题10:混合系统可靠性

题: A、B并联后再与C串联,A=B=0.9,C=0.95,系统可靠性?

解:
并联部分:R_AB = 1-(1-0.9)(1-0.9) = 0.99
总系统:R = R_AB × R_C = 0.99×0.95 = 0.9405
答:0.9405
例题11:MTTF与MTBF

题: 系统MTBF=1000小时,MTTR=2小时,可用性?

解:可用性 = MTBF/(MTBF+MTTR) = 1000/1002 = 0.998 = 99.8%
答:99.8%

11.4 关键路径计算

例题12:项目工期

题: 项目网络图如下,求关键路径和工期。

活动 | 前驱 | 工期
A    | -    | 3
B    | -    | 5
C    | A    | 4
D    | B    | 2
E    | A,B  | 3
F    | C,D  | 6
G    | E    | 4

解:
路径1:A→C→F = 3+4+6 = 13
路径2:B→D→F = 5+2+6 = 13
路径3:A→E→G = 3+3+4 = 10
路径4:B→E→G = 5+3+4 = 12

关键路径:A→C→F 或 B→D→F(都是13)
项目工期:13天

11.5 海明码计算

海明码冗余位公式

2^k ≥ n+k+1

  • n = 数据位
  • k = 冗余位
例题13:海明码

题: 8位数据需要多少位海明码冗余位?

解:2^k ≥ 8+k+1
k=3:2³=8 < 12 ✗
k=4:2⁴=16 ≥ 13 ✓
答:4位冗余位

11.6 哈夫曼编码

例题14:哈夫曼编码长度

题: 字符A、B、C、D出现频率分别为4、2、1、1,哈夫曼编码总长度?

解:
1. 构造哈夫曼树
   合并最小的:C(1)+D(1)=CD(2)
   再合并:B(2)+CD(2)=BCD(4)
   最后:A(4)+BCD(4)=Root(8)
2. 编码:A=0, B=10, C=110, D=111
3. 总长度 = 4×1 + 2×2 + 1×3 + 1×3 = 14
   平均码长 = 14/8 = 1.75
答:总长度14,平均1.75

11.7 项目管理EVM

例题15:挣值管理

题: 项目计划100万,预计10个月完成。第6个月时,已完成预期的40%,已花费50万。求各指标。

已知:BAC=100万,时间过半周期=60%
解:
PV = 100×60% = 60万(计划价值)
EV = 100×40% = 40万(挣值)
AC = 50万(实际成本)

CV = EV-AC = 40-50 = -10万(成本超支)
SV = EV-PV = 40-60 = -20万(进度滞后)
CPI = EV/AC = 40/50 = 0.8(成本绩效,<1差)
SPI = EV/PV = 40/60 = 0.67(进度绩效,<1差)

EAC = BAC/CPI = 100/0.8 = 125万(预计完工成本)
答:项目超支且滞后,预计要花125万

11.8 数据库计算

例题16:B+树高度

题: 一个数据块4KB,每条索引项16B,叶节点指针10B(每条记录),求100万记录的B+树高度。

解:
非叶节点扇出 = 4096/16 = 256
叶节点扇出 = 4096/10 ≈ 410

H=1:可存410条
H=2:可存256×410=104,960条
H=3:可存256²×410=26,869,760条 > 1,000,000

答:高度3

第十二部分:案例分析样例题

样例1:架构风格选择

题目: 某企业要开发一个新闻聚合系统,需要从多个数据源采集新闻、清洗去重、分类、推送给用户。请回答:

  1. 适合采用什么架构风格?
  2. 该架构风格的核心组件是什么?
  3. 优缺点分别是什么?

参考答案:

  1. 管道-过滤器风格
  2. 核心组件:
    • 过滤器(Filter):执行数据处理(采集、清洗、去重、分类)
    • 管道(Pipe):连接过滤器,传输数据
  3. 优缺点:
    • 优点:松耦合,过滤器可独立开发替换;支持并行处理;新增数据源容易
    • 缺点:批处理效率高但不适合实时交互;过滤器之间数据格式转换有开销

样例2:质量属性场景

题目: 描述以下需求的质量属性场景:
“系统在被攻击时,应能在30秒内检测到并采取措施”

参考答案:

要素 内容
刺激源 攻击者(恶意外部用户)
刺激 DDoS攻击/SQL注入等
环境 系统正常运行
制品 整个系统/特定服务
响应 检测攻击并触发防御措施(封IP、限流、报警)
响应度量 30秒内检测,措施在60秒内生效

属于安全性质量属性。


样例3:ATAM架构评估

题目: 某系统采用主备数据库设计:

  • 主库写,备库读
  • 主备同步使用异步复制

请识别敏感点、权衡点、风险点。

参考答案:

  • 敏感点: “主备同步使用异步复制”——影响一致性和性能
  • 权衡点: 同上决策——异步复制提升性能(写不等待),但牺牲一致性(主备数据短暂不一致)
  • 风险点: 主库宕机时未同步的数据丢失;读备库可能读到旧数据
  • 缓解措施: 增加半同步复制;关键业务读主库

样例4:微服务设计

题目: 一个电商系统要做微服务改造,原有功能:用户管理、商品管理、订单管理、支付、物流、营销。请回答:

  1. 如何拆分微服务?
  2. 服务间通信怎么设计?
  3. 数据一致性如何保证?

参考答案:

  1. 服务拆分(按业务能力):

    • 用户服务、商品服务、订单服务、支付服务、物流服务、营销服务
    • 每个服务独立数据库
  2. 服务间通信:

    • 同步:订单查商品库存(REST或gRPC)
    • 异步:下单后发消息给物流和营销(Kafka/RabbitMQ)
    • 网关:统一入口,路由、鉴权、限流
  3. 数据一致性:

    • 订单+库存+支付涉及分布式事务
    • 方案:Saga模式
      • 创建订单 → 扣库存 → 支付 → 通知物流
      • 失败时执行补偿(取消订单、还库存、退款)
    • 最终一致性:通过MQ+幂等性保证

样例5:数据库设计

题目: 设计一个图书馆借阅系统,包含读者、图书、借阅记录。请:

  1. 设计E-R图(描述实体和关系)
  2. 转换为关系模式
  3. 说明达到第几范式

参考答案:

  1. E-R图描述:

    • 实体:读者(读者ID, 姓名, 联系方式)、图书(ISBN, 书名, 作者, 出版社)
    • 关系:借阅(借阅日期, 归还日期),读者与图书是多对多
  2. 关系模式:

    读者(读者ID, 姓名, 联系方式) PK=读者ID
    图书(ISBN, 书名, 作者, 出版社) PK=ISBN
    借阅(读者ID, ISBN, 借阅日期, 归还日期) PK=(读者ID, ISBN, 借阅日期), FK=读者ID, ISBN
    
  3. 范式分析:

    • 1NF:所有属性原子 ✓
    • 2NF:非主属性完全依赖主键 ✓
    • 3NF:非主属性不传递依赖主键 ✓
    • 达到3NF

样例6:分布式事务

题目: 跨行转账(A行账户向B行账户转账100元),如何保证一致性?

参考答案:

方案1:TCC

  • Try:A行预冻结100元,B行预登记100元
  • Confirm:A行扣款,B行入账
  • Cancel:A行解冻,B行取消

方案2:消息事务(最终一致)

  • A行扣款 + 发送消息(同一本地事务)
  • 消息中间件保证至少一次投递
  • B行消费消息,幂等入账

方案3:Saga

  • 步骤:扣A → 加B → 通知完成
  • 失败补偿:还A → 减B → 通知失败

第十三部分:论文写作指南

13.1 论文结构详解

摘要(300-400字)
├─ 项目背景一句话
├─ 你的角色一句话
├─ 关键技术列举
└─ 取得效果量化

正文(2000-2500字)
├─ 一、项目概述(200-300字)
│   ├─ 项目名称、行业、规模
│   ├─ 时间、团队
│   └─ 你的角色和职责
├─ 二、需求与挑战(300-400字)
│   ├─ 业务需求
│   ├─ 质量属性需求
│   └─ 约束条件
├─ 三、技术方案(1200-1500字)★重点
│   ├─ 整体架构选择及理由
│   ├─ 关键技术决策(紧扣题目)
│   └─ 实现细节(用数据)
└─ 四、效果与反思(200-300字)
    ├─ 量化成果
    └─ 不足与改进

13.2 论文样例摘要

题目:论软件架构风格在系统设计中的应用

摘要:
2024年初,本人作为架构师参与了某市政府"智慧城市数据中台"项目,
该项目需要整合12个委办局的业务数据,日处理数据量超过50TB。

针对该项目的特点,我们采用了"管道-过滤器+事件驱动"的混合架构风格:
数据采集层使用管道-过滤器进行流式ETL处理;业务调度层采用事件驱动
实现各模块间的解耦通信。同时引入Kafka作为消息中枢,使用Flink进行
实时计算,HDFS+ClickHouse作为存储。

项目历时8个月完成,系统支持每秒10万条消息的吞吐量,平均处理延迟
低于500毫秒,可用性达到99.95%。本文将详细介绍架构风格的选择依据、
具体实现方案和过程中遇到的问题及解决办法。

13.3 高频论文主题模板

主题1:论软件架构风格的应用

重点: 描述2-3种架构风格特点,结合项目说明为何选择某种风格

主题2:论微服务架构设计与实现

重点: 服务拆分原则、通信方式、治理方案、数据一致性

主题3:论软件架构评估

重点: ATAM/SAAM方法,识别敏感点/权衡点/风险点

主题4:论质量属性需求设计

重点: 选定一个质量属性(如可用性/性能/安全),用六要素场景描述需求,给出战术

主题5:论分布式数据库设计

重点: 分库分表、读写分离、CAP权衡、一致性保证

主题6:论云原生架构

重点: 容器化、K8s、服务网格、DevOps

主题7:论中间件技术应用

重点: 消息队列、缓存、RPC、ESB等中间件选型与应用

主题8:论AI大模型在系统中的应用(新热点)

重点: Transformer架构、API/微调/RAG、提示工程、安全合规

13.4 论文写作技巧

  1. 必须有真实项目背景(即使虚构也要细节丰富)
  2. 数据要量化(用户数、QPS、响应时间、成本节约等)
  3. 要有取舍(不能光说好处,要承认权衡)
  4. 紧扣题目关键词(不要跑题)
  5. 避免纯理论(每个理论都要结合项目说应用)
  6. 避免技术堆砌(说"为什么用"比"用了什么"更重要)

13.5 时间分配

  • 审题:5分钟
  • 列提纲:10分钟
  • 写摘要:10分钟
  • 写正文:80分钟
  • 检查:10分钟
  • 总计:120分钟

第十四部分:考前冲刺策略

14.1 每日复习计划(最后2周)

第1-3天:综合知识刷题

  • 上午:刷历年真题选择题
  • 下午:错题整理 + 知识点回顾
  • 晚上:背速查卡

第4-7天:案例分析专项

  • 每天精读1套案例分析真题
  • 总结答题模板和套话
  • 重点:架构风格对比、质量属性、ATAM、微服务

第8-12天:论文准备

  • 准备3篇论文模板(覆盖架构、微服务、质量属性)
  • 每篇手写1遍
  • 准备2-3个项目背景素材

第13-14天:模拟考试 + 查漏补缺

  • 完整模拟3科考试
  • 总结薄弱点,针对性强化

14.2 考场技巧

综合知识
  • 不会的题不要纠结,先选直觉答案
  • 排除法:先排除明显错误的
  • 常识题:政策法规、知识产权题靠常识
  • 计算题:单位一定要统一
案例分析
  • 必答题:仔细审题,按要求作答
  • 选答题:先看哪题最熟悉
  • 答题技巧
    • 先答关键词,再展开
    • 用列表/表格清晰呈现
    • 字迹工整很重要
论文
  • 不要换题目:选定后就不要换
  • 结构清晰:用一二三四标题
  • 写满字数:不够2000字基本不及格
  • 结合项目:每个理论都要落到项目

14.3 必背重点(考前一晚)

  1. 7种内聚(功顺通过时逻偶)
  2. 7种耦合(非数标控外公内)
  3. 23种设计模式分类
  4. 4+1视图模型
  5. ATAM四个概念(敏感点/权衡点/风险点/非风险点)
  6. 质量属性6要素(源激环制响度)
  7. CAP定理
  8. 微服务断路器三状态
  9. 死锁公式 R(N-1)+1
  10. 位示图计算 = 内存÷页÷8
  11. 奈奎斯特/香农公式
  12. 可靠性串并联公式
  13. CMMI 5级
  14. RUP 4阶段
  15. 安全四特性

14.4 心态调整

  • 软考通过率不高(30%左右),不要给自己太大压力
  • 每科45分及格,不需要追求满分
  • 论文是关键,提前准备好模板能极大提升通过率
  • 考试中断思路时,先做下一题,回头再补

附录:常用术语对照

中文 英文 缩写
软件架构 Software Architecture SA
架构风格 Architectural Style -
设计模式 Design Pattern DP
质量属性 Quality Attribute QA
架构权衡分析法 Architecture Trade-off Analysis Method ATAM
软件架构分析方法 Software Architecture Analysis Method SAAM
成本效益分析法 Cost Benefit Analysis Method CBAM
面向服务架构 Service-Oriented Architecture SOA
企业服务总线 Enterprise Service Bus ESB
一致性可用性分区容错 Consistency-Availability-Partition tolerance CAP
基本可用软状态最终一致 Basically-Available Soft-state Eventually-consistent BASE
可用性 Availability A
平均故障间隔时间 Mean Time Between Failures MTBF
平均修复时间 Mean Time To Repair MTTR
平均无故障时间 Mean Time To Failure MTTF

祝你考试顺利!记住:理解原理 + 多刷真题 + 论文准备充分 = 通过!


补充篇(第二版增强)

以下为高频但容易遗漏的考点补充


补充一:UML建模(必考)

UML 14种图(UML 2.x)

结构图(7种)——描述静态结构
用途
类图(Class Diagram) 类、属性、方法、关系
对象图(Object Diagram) 类的实例快照
组件图(Component Diagram) 软件组件及依赖
部署图(Deployment Diagram) 软件到硬件的映射(4+1物理视图
包图(Package Diagram) 包之间的依赖
组合结构图 类的内部结构
制品图 物理制品及关系
行为图(7种)——描述动态行为
用途
用例图(Use Case Diagram) 系统功能与参与者
活动图(Activity Diagram) 业务流程、并行活动
状态图(State Diagram) 对象状态变化
序列图(Sequence Diagram) 对象间消息时序
通信图(Communication Diagram) 对象间消息交互
时序图(Timing Diagram) 时间约束
交互概览图 交互的高层视图

类之间的关系(必考)

关系 符号 含义 强度
依赖(Dependency) ┄┄┄→ 临时使用 最弱
关联(Association) ────→ 长期持有
聚合(Aggregation) ────◇ 整体-部分(可分离)
组合(Composition) ────◆ 整体-部分(不可分离)
泛化(Generalization) ────▷ 继承
实现(Realization) ┄┄┄▷ 实现接口

记忆口诀: 依赖最弱,组合最强;聚合可分,组合同生死

用例图核心元素

  • 参与者(Actor):与系统交互的人/系统
  • 用例(Use Case):系统提供的功能
  • 关系
    • 包含(include):必须包含的子用例
    • 扩展(extend):可选扩展的用例
    • 泛化:用例继承

补充二:软件需求工程

需求层次

  1. 业务需求:组织的高层目标
  2. 用户需求:用户角度的任务和操作
  3. 系统需求:详细技术规格
    • 功能需求:系统做什么
    • 非功能需求(质量属性):系统做得多好
    • 约束:必须遵守的限制

需求获取方法

  • 用户访谈
  • 问卷调查
  • 现场观察
  • 原型法
  • JAD(联合应用开发)
  • 头脑风暴
  • 文档分析

需求分析建模工具

工具 用途
数据流图(DFD) 描述数据流动和处理
数据字典(DD) 描述数据元素的定义
E-R图 描述数据实体和关系
状态转换图 描述系统状态变化
决策表/决策树 描述复杂业务规则
用例图 面向对象的需求建模

DFD四要素

  • 加工(Process):处理数据的功能(圆/圆角矩形)
  • 数据流(Data Flow):数据流动方向(带箭头线)
  • 数据存储(Data Store):静态数据存放(双横线)
  • 外部实体(External Entity):数据源/终点(矩形)

需求规格说明书(SRS)

IEEE 830标准内容:

  • 引言、总体描述、具体需求、附录

需求验证

  • 需求评审、原型法、模型验证、测试用例评审

补充三:软件复用与构件

软件复用层次(从低到高)

  1. 代码复用:复制粘贴
  2. 设计复用:复用设计方案
  3. 分析复用:复用需求分析模型
  4. 测试用例复用:复用测试方案

软件构件特征

  • 独立部署单元
  • 明确的接口
  • 第三方组装

主流构件标准

标准 提出方 平台
CORBA OMG 跨平台
COM/DCOM/COM+ Microsoft Windows
EJB Sun Java
.NET Microsoft Windows

基于构件的软件开发(CBSD)流程

构件分类 → 构件检索 → 构件理解 → 构件适配 → 构件组装 → 构件演化

构件分类方法

  • 关键字分类:基于关键字层次
  • 刻面分类:多维度描述(功能、平台、操作系统等)
  • 超文本分类:基于超链接

补充四:DSSA(特定领域软件架构)

定义

针对特定问题域的、可复用的、特定的架构设计

DSSA开发过程

  1. 领域分析:识别公共特性
  2. 领域设计:DSSA设计
  3. 领域实现:构件库开发

DSSA三层模型

  • 领域开发环境
  • 领域专用应用开发环境
  • 应用执行环境

DSSA基本活动

  • 领域需求分析
  • 领域设计
  • 领域实现

补充五:软件产品线

产品线核心资产

  • 核心资产基本库:可复用的核心资产
  • 基本组成:构件、架构、需求、文档、测试用例

产品线建立方式

方式 说明 风险
演化方式 现有产品演化
革命方式 重新开发
项目集成 多个项目集成
全新开发 全新建设

产品线优势

  • 大量复用、降低成本、缩短周期、提高质量

补充六:大数据架构

Lambda架构

                ┌─批处理层(Batch)────→ 批视图
数据源 ─→ 分流 ┤
                └─实时层(Speed)─────→ 实时视图
                                        ↓
                          服务层(合并查询)

特点:

  • 同时支持批处理和实时处理
  • 数据不可变,重新计算保证正确性
  • 缺点:维护两套代码

Kappa架构

数据源 ─→ 消息队列 ─→ 流处理引擎 ─→ 服务层

特点:

  • 只用流处理(统一架构)
  • 优点:代码简洁
  • 缺点:流处理对历史数据重算昂贵

Lambda vs Kappa

Lambda Kappa
处理方式 批+流 仅流
复杂度
维护成本
适用场景 历史与实时都重要 实时为主

大数据5V特征

  • Volume:数据量大
  • Velocity:速度快
  • Variety:多样性
  • Veracity:真实性
  • Value:价值密度低

大数据技术栈

主流技术
采集 Flume、Logstash、Kafka
存储 HDFS、HBase、Cassandra、ClickHouse
批处理 MapReduce、Spark
流处理 Storm、Spark Streaming、Flink
查询 Hive、Presto、Impala
调度 YARN、Mesos、K8s

补充七:物联网架构

三层架构

功能 技术
感知层 数据采集 RFID、传感器、二维码、摄像头
网络层 数据传输 NB-IoT、LoRa、5G、ZigBee、WiFi
应用层 数据处理与应用 云平台、大数据、AI

七层架构(更细粒度)

感知层 → 接入层 → 网络层 → 平台层 → 应用层 → 业务层 → 安全管理

物联网通信协议

协议 特点 应用
MQTT 轻量级、发布订阅 物联网消息
CoAP 类HTTP,UDP 受限设备
AMQP 企业级消息 RabbitMQ
LwM2M 设备管理 设备升级

补充八:区块链架构

区块链特点

  • 去中心化:无中心节点
  • 不可篡改:哈希链 + 共识
  • 可追溯:完整历史
  • 匿名性:地址不绑定身份

区块链分类

类型 特点 例子
公有链 完全去中心化 比特币、以太坊
联盟链 多机构共同维护 Hyperledger Fabric
私有链 单机构维护 企业内部

共识机制

机制 全称 特点
PoW 工作量证明 算力,耗能高
PoS 权益证明 持币量,节能
DPoS 委托权益证明 投票选代表
PBFT 实用拜占庭容错 联盟链常用
Raft - 私有链

区块链核心技术

  • 哈希函数(SHA-256)
  • Merkle树
  • 数字签名
  • P2P网络
  • 共识算法
  • 智能合约

补充九:信息系统综合规划

战略规划方法

方法 全称 用途
BSP 业务系统规划法 IBM提出,自上而下
CSF 关键成功因素法 识别关键因素
SST 战略目标集转化法 战略转换
IE 信息工程方法 数据驱动
EAP 企业架构规划 TOGAF基础

企业架构(EA)

Zachman框架:6行(数据/功能/网络/人员/时间/动机)× 6列

TOGAF(开放组架构框架):

  • 业务架构(BA)
  • 数据架构(DA)
  • 应用架构(AA)
  • 技术架构(TA)

信息化建设阶段(诺兰模型)

  1. 初始阶段
  2. 传播阶段
  3. 控制阶段
  4. 集成阶段
  5. 数据管理阶段
  6. 成熟阶段

补充十:项目管理(PMBOK)

五大过程组

  1. 启动:项目章程
  2. 规划:项目管理计划
  3. 执行:交付成果
  4. 监控:变更控制
  5. 收尾:移交、总结

十大知识领域

  1. 整合管理
  2. 范围管理
  3. 进度管理
  4. 成本管理
  5. 质量管理
  6. 资源管理
  7. 沟通管理
  8. 风险管理
  9. 采购管理
  10. 干系人管理

COCOMO估算模型

基本COCOMO: PM = a × KLOC^b

  • PM = 人月数
  • KLOC = 千行代码
  • a, b 根据项目类型调整:
    • 组织型:2.4, 1.05
    • 半独立型:3.0, 1.12
    • 嵌入型:3.6, 1.20

COCOMO II

  • 应用组装模型
  • 早期设计模型
  • 体系结构后阶段模型

风险管理过程

  1. 风险管理规划
  2. 风险识别
  3. 风险定性分析
  4. 风险定量分析
  5. 风险应对规划
  6. 风险监督

风险应对策略

策略 适用
规避 高威胁
转移 转给第三方(如保险)
减轻 降低概率或影响
接受 低风险

进度网络图

  • PERT图:考虑不确定性,三时估算(最乐观、最可能、最悲观)
  • 甘特图:直观显示进度
  • 关键路径法(CPM):找最长路径

PERT三时估算

期望工期 = (最乐观 + 4×最可能 + 最悲观) / 6
方差 = ((最悲观 - 最乐观) / 6)²


补充十一:软件配置管理

SCM基本概念

  • 配置项(CI):受控对象
  • 基线(Baseline):经过评审的版本
  • 版本(Version):演化的快照
  • 变更控制:变更评审与批准流程

配置管理工具

  • 集中式:CVS、SVN
  • 分布式:Git、Mercurial

变更控制流程

  1. 提出变更请求
  2. 评估变更影响
  3. CCB(变更控制委员会)审批
  4. 实施变更
  5. 验证
  6. 关闭变更

补充十二:软件维护

维护类型(必考)

类型 占比 含义
改正性维护 ~25% 修复bug
适应性维护 ~25% 适应新环境(如新OS)
完善性维护 ~50%(最多) 增加功能、优化性能
预防性维护 提前预防问题

软件可维护性度量

  • 可分析性
  • 可改变性
  • 稳定性
  • 可测试性

补充十三:软件可靠性

可靠性模型

  • 种子法模型:植入已知错误,统计发现率推算总错误数
  • 失效率模型:基于失效数据
  • 曲线拟合模型:拟合错误发现曲线
  • 可靠性增长模型:JM、Goel-Okumoto

可靠性指标

  • MTTF:平均无故障时间(不可修系统)
  • MTBF:平均故障间隔时间(可修系统)= MTTF + MTTR
  • MTTR:平均修复时间
  • 故障率λ = 1/MTTF

可靠性设计技术

  • N版本程序设计:多版本独立开发,投票表决
  • 恢复块设计:主块+备块+检测+恢复
  • 防错程序设计:异常处理、断言

补充十四:业务流程建模(BPMN)

BPMN核心元素

元素 符号 含义
事件(Event) 起点、中间、终点
活动(Activity) 任务、子流程
网关(Gateway) 决策、并行、合并
流(Flow) 顺序流
池(Pool) 大矩形 参与者
泳道(Lane) 子矩形 角色

工作流引擎

  • jBPM、Activiti、Flowable、Camunda

补充十五:典型案例分析答题模板

模板1:架构风格选择

题型: 给出场景,选择合适的架构风格

答题模板:

1. 项目特点分析(数据流?交互性?实时性?)
2. 选择架构风格(管道-过滤器/事件驱动/分层/微服务...)
3. 选择理由(贴合项目特点)
4. 实施方案(核心组件、关键技术)
5. 优缺点分析
6. 应对缺点的措施

模板2:质量属性优化

题型: 系统某个质量属性不满足,如何改进

答题模板:

1. 现状分析(当前指标)
2. 问题定位(瓶颈在哪)
3. 改进方案(具体战术)
   - 性能:缓存、并发、异步、读写分离
   - 可用性:冗余、心跳、限流、降级
   - 可扩展性:水平扩展、解耦、消息队列
4. 改进后预期效果
5. 风险与权衡

模板3:技术选型对比

题型: A/B两种方案对比选择

答题模板:

维度 方案A 方案B
性能
成本
复杂度
可维护性
适用场景

结论:根据项目XXX特点,推荐方案X

模板4:补全表格/填空题

题型: 给出表格,填入指标或缺失内容

注意:

  • 看清要求字数
  • 用简练专业术语
  • 不要写大段话

补充十六:高频遗漏知识点速记

Cache映射方式

  • 直接映射:每个主存块映射到固定Cache行(冲突多)
  • 全相联映射:可映射到任意Cache行(开销大)
  • 组相联映射:折中方案(主流)

输入输出方式

方式 特点 CPU开销
程序查询 CPU不停查询 最高
程序中断 设备主动中断
DMA 设备直接访问内存
通道 专用I/O处理器 最低

总线分类

  • 数据总线:传数据
  • 地址总线:传地址
  • 控制总线:传控制信号

流水线技术

加速比 = 串行时间 / 流水线时间
效率 = 各段忙时间总和 / (流水线时间 × 流水段数)

例题: 5段流水线,每段1ns,处理100条指令,时间?

  • 流水线时间 = (5 + 100-1) × 1ns = 104 ns
  • 串行时间 = 5×100 = 500 ns
  • 加速比 = 500/104 ≈ 4.81

浮点数表示

IEEE 754:

  • 单精度:1符号位 + 8指数位 + 23尾数位 = 32位
  • 双精度:1符号位 + 11指数位 + 52尾数位 = 64位

校验码

  • 奇偶校验:检1位错
  • CRC循环冗余:检多位错
  • 海明码:检+纠错

Web Service技术栈

技术 全称 作用
SOAP 简单对象访问协议 通信协议
WSDL Web服务描述语言 服务描述
UDDI 统一描述发现集成 服务发现
REST 表述性状态转移 轻量级API风格
JSON JavaScript对象表示 数据格式

设计模式与架构风格区别

  • 架构风格:宏观,整体组织(如分层、微服务)
  • 设计模式:微观,类与对象设计(如单例、观察者)

软件文档分类

  • 管理文档:项目计划、报告
  • 开发文档:需求、设计、测试
  • 用户文档:用户手册、操作指南

补充十七:考点统计与重点排序

选择题高频考点(出现次数排名)

  1. 进程状态转换(每年必考)
  2. 信道容量计算(必考)
  3. 数据库范式(必考)
  4. 设计模式(必考)
  5. 内聚耦合(必考)
  6. CMMI/RUP(必考)
  7. 知识产权(必考)
  8. 加密算法(高频)
  9. 协议层次(高频)
  10. UML图(高频)

案例分析高频题型

  1. 软件架构风格选择 ★★★★★
  2. 质量属性场景描述 ★★★★★
  3. 数据库设计 ★★★★
  4. 微服务/SOA ★★★★
  5. ATAM架构评估 ★★★
  6. 数据流图DFD ★★★
  7. 嵌入式实时调度 ★★

论文高频题目(按近5年)

  1. 论软件架构风格 ★★★★★
  2. 论微服务架构设计 ★★★★★
  3. 论质量属性设计 ★★★★
  4. 论数据库设计/分布式 ★★★★
  5. 论中间件应用 ★★★
  6. 论云原生/容器化 ★★★
  7. 论AI/大模型应用 ★★★(新趋势)

最终复习建议

学习顺序

  1. 先看简要速查,建立框架
  2. 再看详细复习,理解原理
  3. 刷历年真题(重要性最高)
  4. 论文准备3篇模板

时间分配(按短板)

  • 计算题:刷题30%时间
  • 理论题:背诵30%时间
  • 案例分析:练习20%时间
  • 论文:准备20%时间

核心提分技巧

  1. 选择题:背口诀,刷真题(很多重复)
  2. 案例分析:背模板,结合关键词答题
  3. 论文:提前准备3个项目模板,临场套用

不要踩的坑

  • 不要试图背完所有内容(重点突出)
  • 不要忽视论文(很多人挂在论文)
  • 不要忽视计算题(每年都有)
  • 不要光看不练(必须刷真题)

至此,复习手册补充完毕。建议结合《系统架构设计师教程(第4版)》和历年真题学习。

祝你顺利通过软考高级!🎯


第三版:深度强化篇

针对计算与理论短板再深化,含大量真题例题


强化一:计算机组成与体系结构(深化)

计算机性能指标

  • MIPS:每秒百万条指令
  • MFLOPS:每秒百万次浮点运算
  • CPI:每条指令的时钟周期数
  • 公式: MIPS = 主频 / (CPI × 10⁶)

Flynn分类

分类 含义 示例
SISD 单指令单数据 传统单核CPU
SIMD 单指令多数据 向量机、GPU
MISD 多指令单数据 罕见
MIMD 多指令多数据 多核CPU、集群

Cache详解

Cache映射方式对比
方式 主存块映射 冲突 硬件开销
直接映射 i = j mod m(m=Cache行数)
全相联 任意位置
组相联 块映射到组,组内任意 折中 折中
Cache替换算法
  • 随机算法:随机替换
  • FIFO:先进先出
  • LRU:最近最少使用(最常用)
  • LFU:最不经常使用
Cache写策略
  • 写直达(Write Through):同时写Cache和主存(慢、一致性好)
  • 写回(Write Back):只写Cache,置脏位(快、一致性差)
例题:Cache性能

题: Cache命中率95%,Cache访问1ns,主存访问50ns,平均访问时间?

EAT = 0.95×1 + 0.05×50 = 0.95 + 2.5 = 3.45 ns
例题:Cache映射

题: 主存256KB,Cache 4KB,块大小64B,采用直接映射,主存地址多少位?

主存块数 = 256KB/64B = 4096块 → 主存块号需要12位
Cache行数 = 4KB/64B = 64行 → Cache行号需要6位
块内偏移 = log₂64 = 6位
主存地址位数 = log₂(256K) = 18位
组成:标记(12-6=6位) + 行号(6位) + 块内偏移(6位)

流水线技术(必考)

流水线公式

总时间 = (k + n - 1) × Δt

  • k = 流水段数
  • n = 指令数
  • Δt = 一个段的时间(取最长段)

加速比 S = T_顺序 / T_流水线 = nk / (k+n-1)

效率 E = S/k = n/(k+n-1)

例题:流水线

题: 4段流水线,各段执行时间分别为3、2、4、3ns,处理100条指令耗时?

流水段时钟周期取最长 = 4ns
总时间 = (4 + 100-1) × 4 = 412 ns

顺序执行时间 = 100 × (3+2+4+3) = 1200 ns
加速比 = 1200/412 ≈ 2.91
流水线相关问题
  • 结构相关:硬件资源冲突
  • 数据相关:后续指令依赖前面结果(解决:转发、暂停)
  • 控制相关:分支跳转(解决:分支预测、延迟槽)

浮点数表示(IEEE 754)

单精度浮点数(32位)
部分 位数 取值
符号位S 1 0正/1负
指数E 8 偏移127
尾数M 23 隐含1

实际值 = (-1)^S × 1.M × 2^(E-127)

双精度浮点数(64位)
  • 符号位1 + 指数11(偏移1023) + 尾数52
例题:浮点数转换

题: IEEE 754单精度数 0 10000010 10100000000000000000000 表示多少?

S=0(正数)
E=10000010 = 130,实际指数 = 130-127 = 3
M=1.101(隐含1)
值 = +1.101 × 2³ = 1101.0 = 13.0

总线类型与带宽

  • 数据总线:传数据
  • 地址总线:传地址(决定寻址范围)
  • 控制总线:传控制信号

总线带宽 = 总线宽度 × 总线频率

例题:总线带宽

题: 总线宽度64位,总线频率100MHz,总线带宽?

带宽 = 64bit × 100MHz / 8 = 800 MB/s

I/O控制方式(CPU开销由高到低)

  1. 程序查询/轮询:CPU不停查询设备状态(低效)
  2. 程序中断:设备完成后中断CPU
  3. DMA:设备直接访问内存,仅开始/结束通知CPU
  4. 通道控制:专用I/O处理器,独立执行I/O程序

校验码详解

奇偶校验
  • 添加1位使总1的个数为奇/偶
  • 只能检测奇数位错误,不能纠错
CRC循环冗余校验
  • 通过多项式模2除法生成校验位
  • 检错能力强,不能纠错
  • 用于网络通信、磁盘存储
海明码(必考)

冗余位公式: 2^k ≥ n + k + 1

  • 海明码可检错+纠1位错
例题:海明码

题: 数据位为7位,需要多少位海明校验位?

2^k ≥ 7+k+1
k=3:2³=8 < 11 ✗
k=4:2⁴=16 ≥ 12 ✓
答:4位

强化二:操作系统进阶

银行家算法(避免死锁)

核心数据结构
  • Available:可用资源向量
  • Max:进程最大需求矩阵
  • Allocation:已分配矩阵
  • Need:还需要矩阵 = Max - Allocation
安全性算法步骤
  1. 找一个 Need ≤ Available 的进程
  2. 假设其完成,回收资源:Available += Allocation
  3. 重复直到所有进程完成(安全)或找不到(不安全)
例题:银行家算法

题: 系统有3类资源R1、R2、R3,数量为(10, 5, 7)。当前分配如下:

       Allocation    Max          Need        Available
P0     (0,1,0)       (7,5,3)      (7,4,3)
P1     (2,0,0)       (3,2,2)      (1,2,2)     (3,3,2)
P2     (3,0,2)       (9,0,2)      (6,0,0)
P3     (2,1,1)       (2,2,2)      (0,1,1)
P4     (0,0,2)       (4,3,3)      (4,3,1)

求安全序列。

解:
1. 检查Available(3,3,2),找Need≤Available的进程
   P1: Need(1,2,2) ≤ (3,3,2) ✓
   分配后Available = (3+2, 3+0, 2+0) = (5,3,2)

2. 找下一个:
   P3: Need(0,1,1) ≤ (5,3,2) ✓
   Available = (5+2, 3+1, 2+1) = (7,4,3)

3. 找下一个:
   P0: Need(7,4,3) ≤ (7,4,3) ✓
   Available = (7+0, 4+1, 3+0) = (7,5,3)

4. P2: Need(6,0,0) ≤ (7,5,3) ✓
   Available = (10,5,5)

5. P4: Need(4,3,1) ≤ (10,5,5) ✓

安全序列:P1 → P3 → P0 → P2 → P4

进程调度算法

算法 全称 特点
FCFS 先来先服务 公平但可能长等待
SJF 短作业优先 平均周转最短
HRRN 最高响应比 响应比=(等待+服务)/服务
优先级 Priority 抢占/非抢占
RR 时间片轮转 公平,时间片大小关键
多级反馈队列 MLFQ 综合多种
例题:调度算法

题: 三个进程A、B、C,到达时间0、1、2,运行时间10、4、2。SJF调度的平均周转时间?

解(非抢占式):
时刻0:仅A到达,运行A
时刻10:A完成,B、C都到了,选服务时间短的C
时刻12:C完成,运行B
时刻16:B完成

A周转 = 10-0 = 10
B周转 = 16-1 = 15
C周转 = 12-2 = 10
平均周转 = (10+15+10)/3 = 11.67

信号量与PV操作

概念
  • 信号量S:表示资源数量
  • P(S):申请资源 S = S - 1,若S<0进程阻塞
  • V(S):释放资源 S = S + 1,若S≤0唤醒一个
经典问题:生产者-消费者
信号量:mutex=1(互斥), empty=N(空缓冲区), full=0(满缓冲区)

生产者:              消费者:
P(empty)              P(full)
P(mutex)              P(mutex)
放入产品              取出产品
V(mutex)              V(mutex)
V(full)               V(empty)

文件系统

文件组织
  • 顺序文件
  • 索引文件
  • 索引顺序文件
  • 直接文件(哈希)
索引节点(inode)

存储文件的元数据:权限、所有者、大小、时间戳、数据块指针

磁盘调度算法
  • FCFS:先来先服务
  • SSTF:最短寻道时间
  • SCAN:扫描算法(电梯算法)
  • C-SCAN:循环扫描
  • LOOK/C-LOOK:改进版
例题:磁盘调度

题: 磁头当前在50道,请求队列:100、180、30、120、20、80。SSTF算法的服务顺序?

当前50:
- 距50最近的是80(差30),先服务80
- 当前80,距离100最近(差20),服务100
- 当前100,距离120最近(差20),服务120
- 当前120,距离180(差60)和30(差90),服务180
- 当前180,距离30(差150)和20(差160),服务30
- 当前30,服务20
顺序:80→100→120→180→30→20
总寻道:30+20+20+60+150+10 = 290道

强化三:网络深化

TCP/IP详解

TCP三次握手详细
状态变化:
客户端 CLOSED → SYN_SENT → ESTABLISHED
服务端 LISTEN → SYN_RCVD → ESTABLISHED

报文:
1. SYN, seq=x
2. SYN+ACK, seq=y, ack=x+1
3. ACK, seq=x+1, ack=y+1
TCP四次挥手详细
状态变化:
主动方:ESTABLISHED → FIN_WAIT_1 → FIN_WAIT_2 → TIME_WAIT → CLOSED
被动方:ESTABLISHED → CLOSE_WAIT → LAST_ACK → CLOSED

报文:
1. FIN, seq=u
2. ACK, ack=u+1(被动方等数据传完)
3. FIN, seq=v
4. ACK, ack=v+1(TIME_WAIT等2MSL后CLOSED)

为什么要等2MSL?

  • 保证最后一个ACK到达
  • 防止旧连接报文影响新连接

HTTP状态码

类别 含义 常见
1xx 信息 100 Continue
2xx 成功 200 OK, 201 Created, 204 No Content
3xx 重定向 301永久, 302临时, 304 Not Modified
4xx 客户端错误 400, 401, 403, 404, 429
5xx 服务端错误 500, 502, 503, 504

HTTPS工作流程

  1. 客户端发起请求,服务器返回证书
  2. 客户端验证证书
  3. 客户端用服务器公钥加密对称密钥发送
  4. 服务器用私钥解密得对称密钥
  5. 后续通信用对称密钥加密

DNS解析过程

  1. 浏览器缓存
  2. 操作系统缓存(hosts文件)
  3. 路由器缓存
  4. ISP DNS服务器
  5. 根DNS服务器 → 顶级DNS → 权威DNS

IPv6

  • 128位地址(IPv4是32位)
  • 8组16进制,每组4位
  • 简化方式:0可省略,连续0用::代替
  • 如:2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • 简化:2001:db8:85a3::8a2e:370:7334

网络存储

类型 全称 特点
DAS 直连存储 直接连服务器
NAS 网络附属存储 文件级共享(NFS)
SAN 存储区域网络 块级共享

强化四:UML建模深化

类图详解

类的UML表示
┌─────────────┐
│   ClassName │  ← 类名
├─────────────┤
│ - attr1: int│  ← 属性(- 私有)
│ + attr2: str│  ← 属性(+ 公有)
├─────────────┤
│ + method1() │  ← 方法
│ # method2() │  ← 方法(# 受保护)
└─────────────┘
关系符号
依赖:A ┄┄┄→ B(虚线箭头)
关联:A ────→ B(实线箭头,可有多重性 1..*)
聚合:A ────◇ B(空心菱形)整体A聚合部分B
组合:A ────◆ B(实心菱形)整体A组合部分B
泛化:A ────▷ B(空心三角形)A继承B
实现:A ┄┄┄▷ B(虚线空心三角形)A实现接口B

序列图详解

元素
  • 生命线:垂直虚线
  • 激活条:矩形(对象正在活动)
  • 消息:水平箭头
    • 同步:实心箭头
    • 异步:开放箭头
    • 返回:虚线箭头
例:用户登录
User    UI     AuthService    DB
 │      │          │           │
 │─登录─▶│         │           │
 │      │─验证────▶│          │
 │      │          │─查询────▶│
 │      │          │◀─结果────│
 │      │◀─Token───│          │
 │◀─成功─│         │           │

状态图详解

  • 状态:圆角矩形
  • 初始状态:实心圆点
  • 终止状态:双圈实心圆
  • 转移:箭头 + 触发事件[条件]/动作
例:订单状态机
[●] → 已下单 → 已支付 → 已发货 → 已完成 → [◉]
                ↓
              已取消 → [◉]

强化五:数据库进阶

关系运算补充

投影 π

π属性列表® —— 选列

选择 σ

σ条件® —— 选行

自然连接 ⋈

两个关系按同名属性自动等值连接

例题:关系代数

题: 关系R(A,B,C)和S(C,D,E),求结果元组数。R有3个元组,S有4个元组。

  • 笛卡尔积R×S:3×4 = 12个元组
  • 自然连接R⋈S:取决于C的匹配情况

SQL查询性能优化

索引使用规则
  • WHERE条件中的列建索引
  • 范围查询用B+树
  • 等值查询可用Hash
  • 经常排序的列建索引
  • 避免在索引列做函数运算
索引失效场景
  • LIKE以%开头:LIKE '%abc'
  • 索引列函数运算:WHERE UPPER(name)='ABC'
  • 类型隐式转换
  • OR条件部分无索引
  • 数据量小(全表扫描更快)

数据库并发控制

锁机制
  • 共享锁(S):读锁,多事务可同时持有
  • 排他锁(X):写锁,独占
  • 更新锁(U):意图升级为X锁
两段锁协议(2PL)
  • 阶段1:扩展(只加锁)
  • 阶段2:收缩(只解锁)
  • 严格2PL:所有锁直到事务结束才释放
死锁处理
  • 死锁预防:限制加锁顺序
  • 死锁检测:等待图(Wait-for Graph)
  • 死锁恢复:选择代价最小的事务回滚

分布式数据库

数据分布策略
  • 分片(Sharding):水平切分
  • 复制(Replication):多副本
  • 混合:分片+复制
分片策略
  • 范围分片:按值范围
  • 哈希分片:按哈希值
  • 目录分片:查目录映射
一致性级别
  • 强一致性:读写都看到最新
  • 最终一致性:经过一段时间会一致
  • 会话一致性:同一会话内一致
  • 单调一致性:读取不会回退

NoSQL分类

类型 代表 适用
键值 Redis、DynamoDB 缓存、会话
文档 MongoDB、CouchDB 半结构化
列族 HBase、Cassandra 大数据分析
Neo4j、JanusGraph 关系网络

强化六:架构相关计算与分析

软件复杂度计算

圈复杂度(McCabe)

V(G) = E - N + 2

  • E = 边数
  • N = 节点数
  • 也可数判定节点+1

圈复杂度判定:

  • 1-10:简单,低风险
  • 11-20:中等
  • 21-50:高复杂
  • 50:不可测试

例题:圈复杂度

题: 程序流程图有8个节点,10条边,圈复杂度?

V(G) = 10 - 8 + 2 = 4

软件质量度量

McCall质量模型

11个属性,3类视图:

  • 产品操作:正确性、可靠性、效率、完整性、可使用性
  • 产品修改:可维护性、可测试性、灵活性
  • 产品转移:可移植性、可重用性、互操作性
ISO/IEC 9126质量模型

6特性27子特性:

  • 功能性、可靠性、易用性、效率、可维护性、可移植性
ISO/IEC 25010(最新)
  • 功能适合性、性能效率、兼容性、易用性、可靠性、安全性、可维护性、可移植性

强化七:综合案例分析(深度题)

案例A:电商秒杀系统设计

题目背景:
某电商平台要做秒杀活动,预计10万人同时参与,商品库存仅100件。请设计架构。

关键挑战:

  1. 高并发(瞬时10万QPS)
  2. 防止超卖
  3. 防止刷单

架构方案:

┌─────────────────────────────────────────────┐
│  CDN(静态资源缓存,分散流量)                │
└─────────────────────────────────────────────┘
                    ↓
┌─────────────────────────────────────────────┐
│  Nginx网关(限流、防刷、负载均衡)            │
└─────────────────────────────────────────────┘
                    ↓
┌─────────────────────────────────────────────┐
│  应用服务器集群                              │
│  - 验证码、令牌                              │
│  - Redis扣减库存(预扣减)                   │
│  - 消息队列(异步下单)                      │
└─────────────────────────────────────────────┘
                    ↓
┌─────────────────────────────────────────────┐
│  数据库(最终扣减库存,幂等性保证)            │
└─────────────────────────────────────────────┘

核心技术:

  1. CDN:商品详情页静态化,分散流量
  2. 限流:令牌桶/漏桶限制每秒进入用户数
  3. 防刷:用户队列,每用户1请求
  4. Redis预扣:原子操作(Lua脚本/DECR)保证不超卖
  5. 消息队列:削峰填谷,异步处理订单
  6. 数据库:用乐观锁/分布式锁,幂等性
  7. 降级:库存不足直接返回失败页面

质量属性映射:

  • 性能:CDN+缓存,降低响应时间
  • 可用性:集群+熔断,避免雪崩
  • 一致性:Redis+DB双重校验,最终一致性

案例B:金融交易系统改造

题目背景:
某银行核心交易系统每日处理1亿笔交易,原架构单体应用,需要改造为微服务架构。

改造方案:

1. 服务拆分(按业务)

  • 账户服务、交易服务、风控服务、清算服务、报表服务

2. 数据一致性方案

  • 跨账户转账采用 TCC 模式
  • 关键流程使用 Saga 模式
  • 异步消息保证最终一致

3. 高可用设计

  • 异地多活(同城双活+异地灾备)
  • 数据库主备复制(半同步)
  • 服务集群+自动容灾

4. 安全加固

  • HTTPS全链路加密
  • 敏感数据加密存储(AES-256)
  • 数字签名防篡改
  • 完整审计日志

5. 监控体系

  • Prometheus+Grafana:指标监控
  • ELK:日志分析
  • SkyWalking:链路追踪
  • 告警系统:故障通知

质量属性目标:

  • 可用性:99.99%(年停机<53分钟)
  • 性能:P99 < 100ms
  • 一致性:强一致(资金类)+最终一致(统计类)
  • 安全性:通过等保三级

案例C:物联网平台架构

题目背景:
某智慧城市项目,10万个传感器实时上报数据,要求支持设备管理、数据采集、实时分析、告警。

架构方案:

1. 设备接入层

  • MQTT协议(轻量级,适合物联网)
  • 设备身份认证(TLS+证书)
  • 海量设备接入(千万级)

2. 数据传输层

  • Kafka消息队列(高吞吐)
  • 多副本保证数据不丢

3. 数据处理层

  • Lambda架构
    • 批处理:Spark处理历史数据
    • 流处理:Flink实时分析
  • 规则引擎:Drools做实时告警

4. 数据存储层

  • 时序数据:InfluxDB/TDengine
  • 元数据:MySQL
  • 实时数据:Redis
  • 历史数据:HDFS+Parquet

5. 应用层

  • 设备管理(生命周期)
  • 实时大屏(WebSocket推送)
  • 告警通知(短信+邮件+电话)

关键决策:

  • 协议选MQTT:相比HTTP更省流量、长连接
  • Lambda而非Kappa:历史数据分析需求强
  • 时序数据库:关系数据库存不下

强化八:论文实战范文片段

论文样例:论微服务架构在系统中的应用

摘要范文
2024年6月,本人作为系统架构师参与了某大型互联网医疗平台的架构改造
项目。该平台日活用户超过200万,原系统采用单体架构,面临部署慢、
扩展难、迭代受阻等问题。

针对这些问题,我们采用微服务架构进行重构,将单体应用拆分为用户、
医生、问诊、处方、药品、订单、支付等15个微服务。技术栈采用Spring
Cloud Alibaba体系,使用Nacos作为注册中心和配置中心,Sentinel
作为熔断限流组件,SkyWalking做链路追踪,RocketMQ处理异步消息。

经过6个月的改造,系统部署时间从2小时缩短至10分钟,QPS从原来的
5000提升到30000,可用性达到99.95%。本文将详细介绍微服务的拆分
策略、服务治理方案和数据一致性保证措施。
正文片段:服务拆分策略
微服务的核心是合理的服务拆分。我们遵循以下原则:

1. 单一职责原则
   每个服务只负责一个明确的业务能力。例如用户服务只处理用户的
   注册、登录、信息管理,不涉及医生信息或订单处理。

2. 高内聚低耦合
   服务内部的功能紧密相关,服务间通过接口通信。我们将原系统
   中的"用户医生问诊"模块拆分时,发现医生信息独立性强,单独
   抽出为医生服务,而问诊涉及用户和医生交互,单独成立问诊服务。

3. 数据自治原则
   每个服务拥有自己的数据库,避免数据库层面的耦合。订单服务
   不能直接查询用户表,必须通过用户服务API获取。

4. 团队规模匹配
   根据"两个披萨"原则,每个服务由6-8人的小团队负责。

经过分析,我们最终将系统拆分为15个微服务,包括基础服务(用户、
医生、机构)、业务服务(问诊、处方、订单、支付)、支撑服务(消息、
日志、监控)等。
正文片段:分布式事务方案
拆分后面临的最大挑战是分布式事务。以下单流程为例,涉及订单服务、
库存服务、支付服务、积分服务,需要保证数据一致性。

我们采用了多种方案组合:

1. 关键流程用TCC模式
   下单时,订单创建Try预占库存→Try冻结金额→Confirm确认。如果
   任一步失败,执行Cancel回滚。这种方式一致性强,但实现复杂。

2. 非关键流程用消息最终一致
   订单完成后,发送消息通知积分服务加积分、库存服务减实际库存。
   通过消息表+定时任务保证消息至少投递一次,配合幂等性设计避免
   重复消费。

3. 长流程用Saga模式
   退款流程涉及多个步骤:退款审核→金额回退→库存回补→订单关闭。
   每个步骤定义补偿操作,失败时反向执行补偿,保证最终一致。

实施效果:分布式事务相关问题数量从每天50+降低到每周1-2例,
显著提升了系统稳定性。

强化九:考前最后冲刺题(自测)

选择题(10题快速自测)

1. 进程从执行态变为就绪态的原因是?

  • A. 等待I/O
  • B. 时间片用完
  • C. 资源不足
  • D. 等待信号
    答案:B

2. 5个进程各需3个资源,至少需要多少资源避免死锁?

  • A. 10 B. 11 C. 15 D. 16
    答案:B(5×(3-1)+1=11)

3. 信道带宽3000Hz,使用8种信号状态,无噪声最大传输速率?

  • A. 9 kbps B. 18 kbps C. 24 kbps D. 36 kbps
    答案:B(2×3000×log₂8=2×3000×3=18000bps)

4. 内聚度最高的是?

  • A. 时间内聚 B. 逻辑内聚 C. 顺序内聚 D. 功能内聚
    答案:D

5. ATAM中既影响多个质量属性又有正负权衡的决策点叫?

  • A. 敏感点 B. 风险点 C. 权衡点 D. 非风险点
    答案:C

6. 设计模式中"定义算法骨架,子类实现具体步骤"是?

  • A. 策略 B. 模板方法 C. 状态 D. 观察者
    答案:B

7. 微服务断路器的三种状态是?

  • A. 开/关/暂停 B. 关闭/打开/半开 C. 启动/停止/重启 D. 正常/异常/恢复
    答案:B

8. CAP定理中,传统关系数据库分布式版本通常是?

  • A. CA B. CP C. AP D. CAP
    答案:B

9. 哪个不属于4+1视图?

  • A. 逻辑视图 B. 物理视图 C. 数据视图 D. 进程视图
    答案:C

10. 软件维护中占比最高的是?

  • A. 改正性维护 B. 适应性维护 C. 完善性维护 D. 预防性维护
    答案:C(约50%)

案例题快速自测

题: 描述以下场景的质量属性场景六要素:
“系统在被1万次/秒的请求攻击时,应在30秒内识别并触发限流”

答:

  • 刺激源:恶意攻击者
  • 刺激:1万次/秒的高频请求
  • 环境:系统正常运行
  • 制品:API网关或受攻击的服务
  • 响应:识别异常并启动限流策略
  • 响应度量:30秒内识别,限流后请求量降至1000次/秒以内

属性: 安全性 + 性能(双重)


强化十:复习时间表(最后30天)

第1周(基础重建)

  • Day 1-2:操作系统+网络基础
  • Day 3-4:数据库+软件工程
  • Day 5:刷选择题真题1套
  • Day 6-7:架构风格+设计模式

第2周(深化)

  • Day 8-9:UML+需求工程
  • Day 10-11:质量属性+ATAM
  • Day 12:刷选择题真题1套
  • Day 13-14:微服务+分布式

第3周(专题强化)

  • Day 15-16:算术题专项训练
  • Day 17-18:案例分析专项
  • Day 19:刷选择题真题1套
  • Day 20-21:论文模板准备

第4周(冲刺)

  • Day 22-24:3篇论文模板手写
  • Day 25-26:模拟考试
  • Day 27-28:错题回顾
  • Day 29:速查卡过一遍
  • Day 30:休息+心态调整

强化十一:考试当天Tips

早上(综合知识)

  • 提前30分钟到考场
  • 带身份证、准考证
  • 选择题:先做有把握的,标记不确定的
  • 不要太早交卷,回头检查

下午(案例分析+论文)

  • 案例分析90分钟,论文120分钟
  • 案例:5选3,先扫题选最熟悉的
  • 论文:选定后不换题,先列提纲

论文写作技巧(重要!)

  1. 摘要要写好(300字必备)
  2. 正文要分段(清晰的标题+段落)
  3. 要有数据(XX用户/XX QPS/XX秒)
  4. 要有取舍(说出方案的优缺点)
  5. 字数2000-3000(不够字数严重扣分)
  6. 字迹要工整(潦草扣分)

最最后:知识体系总图

系统架构设计师知识体系
│
├─ 计算机基础
│   ├─ 计算机组成(流水线、Cache、I/O)
│   ├─ 操作系统(进程、内存、文件、设备)
│   ├─ 计算机网络(OSI/TCP-IP、协议、子网)
│   └─ 数据库(关系、ACID、分布式CAP)
│
├─ 软件工程
│   ├─ 开发模型(瀑布、敏捷、RUP)
│   ├─ 需求工程(DFD、用例、UML)
│   ├─ 设计原则(SOLID、内聚耦合)
│   ├─ 测试(黑白盒、阶段)
│   └─ 维护(4种类型)
│
├─ 软件架构(核心)
│   ├─ 架构风格(5大类)
│   ├─ 4+1视图模型
│   ├─ 设计模式(23种)
│   ├─ 质量属性(6大)
│   ├─ 架构评估(ATAM、SAAM)
│   ├─ DSSA与产品线
│   └─ 软件复用与构件
│
├─ 分布式与新技术
│   ├─ SOA与微服务
│   ├─ 云原生(容器、K8s)
│   ├─ 大数据(Lambda、Kappa)
│   ├─ 物联网(三层架构)
│   ├─ 区块链
│   └─ AI/大模型应用
│
├─ 安全
│   ├─ 安全四特性
│   ├─ 加密体系(对称/非对称/哈希)
│   ├─ 数字签名与PKI
│   └─ 网络攻击与防御
│
├─ 项目管理
│   ├─ PMBOK五大过程组
│   ├─ 十大知识领域
│   ├─ EVM挣值管理
│   ├─ 风险管理
│   └─ 配置管理
│
└─ 法律法规
    ├─ 知识产权
    ├─ 标准化
    └─ 信息安全等级保护

🎓 学习是一场马拉松,坚持到底就是胜利!

📝 记住三个关键:理论扎实 + 多刷真题 + 论文准备

💪 加油,必过!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐