# 附录 C 术语中英对照表


> 把全书 36 章散落的术语按篇章收拢成可查、可背、可复述的对照表，解决面试中"听不出缩写"与写作中"译名不统一"两个问题。

## C.1 用法说明

本附录的编排由两个用途决定。

**用途一：面试时听到缩写能立刻反应。** 对方说"你们那边 TLB 缺失严重吗"，如果你需要三秒才能想起 TLB 是什么，这轮对话的节奏就丢了。C.3 是一张纯字母序的缩写速查表，专为这个场景准备——**只给缩写、不给全称**，因为面试官也常常只念缩写。

**用途二：写作与表达时用词准确。** 同一件事常有多个中文译名：`page fault` 有人译"缺页异常"、有人译"页错误"；`replica` 有人译"副本"、有人译"从库"。混用会造成歧义，也会让面试官怀疑你是否真的读过英文原文。C.2 按篇章给出「中文 / 英文全称 / 缩写 / 一句话说明」四元组，C.4 专门收那些"中文看着像、意思完全不同"的术语对。

### C.1.1 面试中该用中文还是英文术语

结论分三层，按重要性排序。

**第一，技术名词首次提到时给英文原词，是性价比最高的专业度信号。** 说"写时复制"与说"写时复制（copy-on-write, COW）"，后者只多四个英文单词的成本，却同时证明了三件事：你读过英文资料、你能把中文译名和英文原词对应上、你的表述可被对方直接映射到他熟悉的技术栈。全书统一采用这个格式：`中文（English full name, ABBR）`。

**第二，缩写必须先展开再使用，除非对方已经先用了。** 直接说"我们用 CLH 变体队列"而对方一时没反应，交流就断了；说"AQS 内部的 CLH（Craig, Landin and Hagersten）变体队列"，就同时给出了层级关系与全称。反过来，如果面试官已经说了"你们的 ISR 怎么维护"，你就不必再把 in-sync replica 展开一遍——重复展开会显得刻板，像是在背稿。

**第三，做不到全称准确时，宁可只说中文，也不要拼错英文。** 把 `synchronous` 少写一个 `h`、把 `parallelism` 和 `parallel` 混用、把 `persistence` 写成 `persistant`，副作用大于收益：面试官会立刻判断你没读过原始文档。本附录的英文全称已逐条核对，按表里的写法念即可。

> [!TIP]
> 记忆锚点：缩写表的阅读顺序应按"先中文、后英文"建立索引。背的时候拿中文词去回忆英文全称（"组相联 → set-associative"），而不是反过来——因为面试中你先想出的是概念，再需要把它说成英文。

### C.1.2 三节的配合方式

- 面试前 30 分钟：只翻 C.3，把"只给缩写"的条目读一遍，确认每个缩写能在两秒内说出全称。
- 面试中听到陌生词：先在 C.4 查是否有易混项，再看 C.2 对应篇章取全称与一句话定位。
- 写作与画图时：用 C.2 的英文全称，保证同一概念在全章首次出现时格式一致。

## C.2 按篇章组织的术语表

各篇的术语数量与该篇章节数、术语密度成正比：第五篇（数据库，8 章）与第二篇（操作系统，6 章）条目最多，第八篇（场景设计，1 章）最少。

### C.2.1 第一篇 计算机组成与体系结构

**表 C-1-1 第 1 章 存储层次与 CPU 微架构**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 缓存行 | cache line | — | CPU 与内存交换数据的最小单位，x86 通常 64 字节 |
| 空间局部性 | spatial locality | — | 访问了地址 `a`，附近地址很可能接着被访问 |
| 伪共享 | false sharing | — | 两个线程写同一缓存行里的不同变量，行在核间来回弹跳 |
| 直接映射 | direct-mapped | — | 每个内存块只能进唯一一个缓存位置，冲突缺失多 |
| 组相联 | set-associative | — | 每组 N 路，块可选组内任一路，冲突与比较开销的折中 |
| 写回 | write-back | — | 命中时只改缓存并置脏位，行被换出时才写回内存 |
| 缓存一致性 | cache coherence | — | 保证多核看到的同一地址值最终收敛到一致 |
| MESI 协议 | Modified-Exclusive-Shared-Invalid protocol | MESI | 四种状态描述行的独占与失效，是失效型协议基线 |
| MOESI 协议 | Modified-Owned-Exclusive-Shared-Invalid protocol | MOESI | 增加 Owned 态，脏数据可在共享状态下由某核持有 |
| 转换检测缓冲区 | translation lookaside buffer | TLB | 页表项的缓存，命中则完全不访问页表 |
| 平均访问时间 | average memory access time | AMAT | `AMAT = 命中时间 + 缺失率 × 缺失代价` |
| 流水线冒险 | pipeline hazard | — | 结构、数据、控制三类，分别对应资源冲突、依赖、跳转 |
| 分支预测 | branch prediction | — | 预测方向与目标地址，猜错要清空流水线 |
| 推测执行 | speculative execution | — | 结果确定前先执行，猜错则回滚，Spectre 类漏洞的土壤 |
| 乱序执行 | out-of-order execution | OoOE | 只受真实数据依赖约束，窗口内乱序发射 |
| 寄存器重命名 | register renaming | — | 消除名字依赖，把 WAR/WAW 消掉，只留真依赖 |
| 重排序缓冲区 | reorder buffer | ROB | 乱序执行、顺序提交的落地结构 |
| 指令级并行 | instruction-level parallelism | ILP | 同一时刻可并行执行的指令数 |
| 非一致内存访问 | non-uniform memory access | NUMA | 本地与远端内存延迟不同，跨节点访问多一跳 |

**表 C-1-2 第 2 章 程序如何真正运行**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 可执行与可链接格式 | Executable and Linkable Format | ELF | Linux 下的目标文件与可执行文件格式，含节表与段表 |
| 位置无关代码 | position-independent code | PIC | 代码不写绝对地址、靠 GOT 间接寻址，才能装载到任意基址 |
| 过程链接表 | procedure linkage table | PLT | 每个外部函数一个跳转桩，首次调用后改写为真实地址 |
| 全局偏移表 | global offset table | GOT | 运行时存放外部符号真实地址的表 |
| 延迟绑定 | lazy binding | — | 首次调用才解析符号，用启动时间换启动速度 |
| 静态链接 | static linking | — | 库代码复制进可执行文件，无外部依赖但体积大 |
| 动态链接 | dynamic linking | — | 运行时由动态链接器 `ld.so` 装载共享库 |
| 预加载 | preload | LD_PRELOAD | 用环境变量插到符号解析最前面，可覆盖库函数 |
| 地址空间布局随机化 | address space layout randomization | ASLR | 随机化栈、堆、库基址，抬高漏洞利用门槛 |
| 字节序 | endianness | — | 小端低字节在前（x86），大端高字节在前（网络序） |
| 内存对齐 | memory alignment | — | 结构体按成员最大对齐数补齐，用空间换单次访存 |
| 栈帧 | stack frame | — | 一次调用的现场：返回地址、保存的寄存器、局部变量 |
| 调用约定 | calling convention | — | 参数走寄存器还是压栈、谁清栈、谁负责保存 |

**表 C-1-3 第 3 章 性能工程：从纳秒到毫秒**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 阿姆达尔定律 | Amdahl's law | — | 加速比上限由不可并行的那部分决定 |
| 古斯塔夫森定律 | Gustafson's law | — | 问题规模可随核数放大时，加速比近似线性 |
| 利特尔法则 | Little's law | — | `L = λ × W`，并发数等于到达率乘平均驻留时间 |
| 响应时间 | latency | — | 单次请求从发出到收到结果的耗时 |
| 百分位延迟 | percentile latency | P99 | 99% 的请求快于该值，比均值更能暴露问题 |
| 尾延迟 | tail latency | — | 延迟分布尾部的那些慢请求 |
| 尾延迟放大 | tail amplification | — | 一次请求扇出 N 个下游后，整体 P99 被最慢的那个拖走 |
| USE 方法 | utilization, saturation, errors method | USE | 资源视角三问：使用率、饱和度、错误 |
| RED 方法 | rate, errors, duration method | RED | 服务视角三问：请求速率、错误数、耗时 |
| 抖动 | jitter | — | 延迟的波动幅度，均值掩盖不了它 |
| 服务等级指标 | service-level indicator | SLI | 用来度量服务质量的那个具体数字 |
| 服务等级目标 | service-level objective | SLO | 对 SLI 设定的内部目标值 |
| 服务等级协议 | service-level agreement | SLA | 对外承诺并附带违约后果的合同条款 |

### C.2.2 第二篇 操作系统

**表 C-2-1 第 4 章 进程、线程与写时复制**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 写时复制 | copy-on-write | COW | `fork` 后父子共享只读物理页，谁写谁复制 |
| 进程控制块 | process control block | PCB | 内核里描述一个任务的全部状态，即 `task_struct` |
| 轻量级进程 | light-weight process | LWP | 共享地址空间的调度实体，即内核视角的线程 |
| 克隆 | clone | — | 用 flag 决定共享哪些资源，是 `fork` 与 `pthread_create` 的共同底层 |
| vfork | vfork | — | 与父进程共享地址空间直到 `exec`，子进程写会踩坏父进程 |
| 派生 | fork | — | 复制出子进程，配合 COW 才可接受 |
| 执行 | exec | — | 用新程序映像整体替换当前地址空间 |
| 僵尸进程 | zombie process | — | 已退出但父进程未 `wait`，只剩一条进程表项 |
| 孤儿进程 | orphan process | — | 父进程先退出，被 `init` 或 `systemd` 收养 |
| 守护进程 | daemon | — | 脱离控制终端、自成会话的后台进程 |
| 双 fork | double fork | — | 中间进程退出使孙进程被收养，从而不产生僵尸 |
| 本地 POSIX 线程库 | Native POSIX Thread Library | NPTL | glibc 的 1:1 线程实现，无用户态调度器 |

**表 C-2-2 第 5 章 调度与 CPU 虚拟化**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 完全公平调度器 | Completely Fair Scheduler | CFS | 用红黑树按虚拟运行时间选下一个任务 |
| 虚拟运行时间 | virtual runtime | vruntime | 实际运行时间按权重缩放后的值，越小越该被调度 |
| 权重 | weight | — | 由 nice 值映射而来，决定 vruntime 的增长速度 |
| 友好值 | nice value | — | `-20 ~ 19`，越小优先级越高，相邻档位约差 1.25 倍权重 |
| 上下文切换 | context switch | — | 保存恢复寄存器与栈、切换地址空间，约 1~5 μs |
| 实时调度 | real-time scheduling | SCHED_FIFO / SCHED_RR | 抢占所有普通任务，分抢占式与轮转式 |
| CPU 亲和 | CPU affinity | — | 把任务绑定到指定核，换取缓存局部性 |
| 负载均衡 | load balancing | — | 周期性在核间搬运任务，与亲和性天然冲突 |

**表 C-2-3 第 6 章 同步、锁与死锁**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 竞态条件 | race condition | — | 结果依赖不可控的执行时序 |
| 临界区 | critical section | — | 必须互斥访问的那段代码 |
| 比较并交换 | compare-and-swap | CAS | 一条原子指令完成"相等则写入"，无锁结构的基础 |
| 加载链接与条件存储 | load-linked / store-conditional | LL/SC | RISC 架构上的原子原语对，语义比 CAS 更强 |
| 自旋锁 | spinlock | — | 拿不到就空转，适合极短且不睡眠的临界区 |
| 互斥锁 | mutual exclusion lock | mutex | 拿不到就睡眠，适合可能阻塞的临界区 |
| 信号量 | semaphore | — | 计数型同步原语，用 P/V 操作增减许可 |
| 条件变量 | condition variable | — | 在锁的保护下等待某个谓词成立 |
| 内存屏障 | memory barrier | — | 约束编译器与 CPU 的重排序 |
| 死锁 | deadlock | — | 互相持有并等待对方资源，永久阻塞 |
| 活锁 | livelock | — | 都在动但没人前进，如反复退避又反复冲突 |
| 饥饿 | starvation | — | 某个任务长期拿不到资源 |
| 优先级反转 | priority inversion | — | 低优先级持锁，高优先级被中优先级任务插队 |
| 无锁 | lock-free | — | 系统整体上至少有一个线程能取得进展 |
| 无等待 | wait-free | — | 每个线程都能在有限步内完成 |
| 读-复制-更新 | read-copy-update | RCU | 读者零开销，写者延迟释放旧版本 |

**表 C-2-4 第 7 章 文件描述符、VFS 与 I/O**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 文件描述符 | file descriptor | fd | 进程内打开文件表的下标 |
| 虚拟文件系统 | virtual file system | VFS | 用统一接口抽象 ext4、XFS、procfs、socket |
| 索引节点 | index node | inode | 文件的元数据与数据块位置，不含文件名 |
| 目录项 | directory entry | dentry | 路径分量到 inode 的映射，由 dcache 缓存 |
| 超级块 | superblock | — | 描述整个文件系统的布局与状态 |
| 页缓存 | page cache | — | 按页缓存文件内容，读命中直接返回 |
| 直接 I/O | direct I/O | O_DIRECT | 绕过页缓存，需自行对齐与自行缓存 |
| I/O 多路复用 | I/O multiplexing | — | 一个线程等待多个 fd 就绪 |
| 水平触发 | level-triggered | LT | 只要还有数据就持续通知 |
| 边缘触发 | edge-triggered | ET | 仅在状态变化时通知一次，必须配非阻塞 fd |
| 零拷贝 | zero-copy | — | 省掉用户态与内核态之间的数据搬运 |
| 内存映射 | memory mapping | mmap | 把文件或匿名内存映射进地址空间 |
| 异步 I/O | asynchronous I/O | io_uring | 提交后由内核完成并通知，发起方不阻塞等待 |

**表 C-2-5 第 8 章 内存管理**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 虚拟内存 | virtual memory | — | 每个进程看到独立且连续的地址空间 |
| 分页 | paging | — | 以固定大小的页为单位做映射 |
| 页表 | page table | — | 多级树状结构，保存虚拟页到物理帧的映射 |
| 页表项 | page table entry | PTE | 一条映射及其权限位，COW 的只读标记就打在它上面 |
| 缺页异常 | page fault | — | 访问未映射页触发，分四种类型 |
| 页替换算法 | page replacement algorithm | — | OPT、FIFO、LRU、Clock、LFU 的取舍 |
| 颠簸 | thrashing | — | 内存不足导致频繁换页，有效算力暴跌 |
| 内部碎片 | internal fragmentation | — | 分配单位大于请求，浪费在块内部 |
| 外部碎片 | external fragmentation | — | 空闲块零散，凑不出连续的大块 |
| 伙伴系统 | buddy allocator | — | 按 2 的幂分裂与合并物理页框 |
| 对象缓存分配器 | slab allocator | — | 为内核小对象做对象缓存，避免反复初始化 |
| 巨大页 | huge page | — | 2 MB 或 1 GB 的页，减少页表项与 TLB 缺失 |

**表 C-2-6 第 9 章 中断、系统调用与块层**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 硬中断 | hardware interrupt | — | 设备触发，顶半部执行，要求极快返回 |
| 底半部 | bottom half | — | 中断处理中延后执行的那部分工作 |
| 软中断 | software interrupt | softirq | 内核静态注册的延迟工作，可在多核并发执行 |
| 小任务 | tasklet | — | 基于 softirq 的串行化延迟工作 |
| 工作队列 | workqueue | — | 把延迟工作交给内核线程执行，允许睡眠 |
| 系统调用 | system call | syscall | 用户态请求内核服务的唯一入口 |
| 虚拟动态共享对象 | virtual dynamic shared object | vDSO | 内核映射到用户态的代码，让部分调用不进内核 |
| 信号 | signal | — | 异步通知机制，处理时机不确定 |
| 块层 | block layer | — | 文件系统与设备驱动之间的通用 I/O 层 |
| I/O 调度器 | I/O scheduler | — | 合并与排序请求，如 `none`、`mq-deadline`、`kyber`、`bfq` |
| 直接内存访问 | direct memory access | DMA | 设备直接读写内存，不经 CPU 搬运 |
| 写回 | writeback | — | 把脏页异步刷到设备 |
| 接收端缩放 | receive side scaling | RSS | 网卡按流哈希把中断分摊到多核 |

### C.2.3 第三篇 Linux

**表 C-3-1 第 10 章 进程、信号与资源限制**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 平均负载 | load average | — | 1/5/15 分钟窗口内"可运行 + 不可中断"任务数的均值 |
| 不可中断睡眠 | uninterruptible sleep | D 状态 | 等 I/O 或内核锁，不响应任何信号 |
| 僵尸态 | zombie | Z 状态 | 已退出、尚未被父进程回收 |
| 控制组 | control group | cgroup | 对 CPU、内存、IO 做层级化配额与统计 |
| 命名空间 | namespace | — | 隔离 PID、网络、挂载、IPC、UTS、用户与 Cgroup 视图 |
| 资源限制 | resource limit | RLIMIT | 单进程的软硬上限，如 `RLIMIT_NOFILE` |
| 可打开文件数上限 | number of open files limit | nofile | `ulimit -n`，软限制默认 1024 |
| 信号处理程序 | signal handler | — | 注册后在内核返回用户态时被调用 |
| 终止信号 | SIGTERM | — | 请求优雅退出，可被捕获或忽略 |
| 强制终止信号 | SIGKILL | — | 不可捕获、不可忽略，直接回收 |
| 子进程状态变化信号 | SIGCHLD | — | 子进程退出或停止时通知父进程，不处理会产生僵尸 |

**表 C-3-2 第 11、12 章 性能观测、内存与 OOM**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 可用内存 | available memory | — | `free` 中"不触发交换就能给新进程用"的估算值 |
| 缓冲缓存 | buffer cache | — | 缓存块设备的元数据块，元数据仍走它 |
| 脏页 | dirty page | — | 已被修改、仍在内存、尚未落盘的页 |
| 脏页比例 | dirty ratio | — | `vm.dirty_ratio` 与 `vm.dirty_background_ratio` 控制同步与异步回写 |
| 换入与换出 | swap in / swap out | si/so | `vmstat` 两列，长期非零说明内存真的不够 |
| 交换倾向 | swappiness | — | `vm.swappiness`，越大越愿意换出匿名页 |
| 内存超售 | memory overcommit | — | `vm.overcommit_memory` 决定能否分配超过物理内存 |
| 内存不足杀手 | out-of-memory killer | OOM killer | 按 `oom_score` 挑一个进程杀掉以自救 |
| 内存溢出评分 | OOM score | oom_score | 由驻留内存与 `oom_score_adj` 共同决定 |
| 常驻内存集 | resident set size | RSS | 实际占用物理内存，含与其他进程共享的页 |
| 虚拟内存大小 | virtual set size | VSZ | 地址空间总大小，含尚未分配物理页的部分 |
| 比例驻留集 | proportional set size | PSS | 共享页按共享进程数平摊后的内存 |
| 独占内存 | unique set size | USS | 仅本进程独占、释放后立即可回收的内存 |
| 匿名页 | anonymous page | — | 无文件背衬的内存，如堆与栈 |
| 文件描述符耗尽 | file descriptor exhaustion | — | `fd` 用尽导致 `accept` 或 `open` 直接失败 |

**表 C-3-3 第 13 章 文件系统、磁盘与 I/O 排查**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 第四代扩展文件系统 | fourth extended filesystem | ext4 | 通用稳定，写者多时块分配与组描述符易成争用点 |
| XFS 文件系统 | XFS | — | 按分配组并行修改元数据，大文件与高并发更好 |
| 分配组 | allocation group | AG | XFS 内独立管理空闲空间与 inode 的分区 |
| 磁盘阵列 | redundant array of independent disks | RAID | 用镜像或校验换性能与可用性 |
| 写惩罚 | write penalty | — | RAID 5 随机写约 2 次、RAID 6 约 3 次介质操作 |
| 每秒输入输出操作数 | input/output operations per second | IOPS | 设备每秒能完成的 I/O 次数 |
| 队列深度 | queue depth | — | 同时在途的 I/O 请求数，决定能否打满设备的 IOPS |
| 条带 | stripe | — | 数据跨盘分散与并行的单位 |
| 校验 | parity | — | 用校验块换容量，代价是写惩罚与重构风险 |
| 不可恢复读错误 | unrecoverable read error | URE | 重构整组时遇到一个即整组失效 |
| 写洞 | write hole | — | 掉电留下数据与校验不一致的条带，潜伏到下次掉盘 |
| 修剪 | TRIM | — | 通知 SSD 哪些逻辑块已无效，从而降低写放大 |
| 写放大 | write amplification | WA | 实际写入闪存的数据量除以主机写入量 |
| 垃圾回收 | garbage collection | GC | SSD 控制器搬移有效页后整块擦除 |
| 挂载选项 | mount option | — | `noatime`、`barrier`、`discard` 等行为开关 |
| 索引节点耗尽 | inode exhaustion | — | inode 已满，`df -i` 可见而空间仍有剩余 |
| 设备利用率 | device utilization | %util | `iostat` 的忙碌占比，多并发与 RAID 下不可靠 |
| 平均等待时间 | average wait | await | 请求从入队到完成的平均耗时，含排队时间 |

**表 C-3-4 第 14 章 命令行与 Shell 速查**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 文本三剑客 | grep, sed, awk | — | 行过滤、流编辑、按列聚合 |
| 原地替换 | in-place substitution | `sed -i` | 直接改写文件，务必先在副本上验证 |
| 端口占用查询 | port lookup | `ss` / `lsof` | 查监听与连接对应的进程 |
| 快速失败 Shell | fail-fast shell | `set -euo pipefail` | 未定义变量、管道任一环失败即退出 |
| 参数批量传递 | argument batching | `xargs` | 把标准输入切成命令行参数，注意含空格的文件名 |

### C.2.4 第四篇 计算机网络

**表 C-4-1 第 15 章 体系结构与分层**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 协议数据单元 | protocol data unit | PDU | 每层的"包"：段、数据报、帧、比特 |
| 封装 | encapsulation | — | 上层报文整体作为下层的载荷 |
| 最大传输单元 | maximum transmission unit | MTU | 链路层载荷上限，以太网通常 1500 字节 |
| 最大报文段长度 | maximum segment size | MSS | TCP 载荷上限，由 MTU 推算得出 |
| 分片 | fragmentation | — | 网络层按 MTU 切分，任一片丢失整个数据报重传 |
| 分段 | segmentation | — | 传输层按 MSS 切分，每段可独立重传 |
| 地址解析协议 | Address Resolution Protocol | ARP | 由 IP 地址求同一网段内的 MAC 地址 |
| 网络地址转换 | Network Address Translation | NAT | 改写地址，让私网共享公网地址 |
| 网络地址端口转换 | Network Address Port Translation | NAPT | 同时改写端口，是家用路由器的常见形态 |
| 带宽时延积 | bandwidth-delay product | BDP | `BDP = 带宽 × RTT`，决定需要多大的窗口 |
| 往返时间 | round-trip time | RTT | 一去一回的耗时，是几乎所有超时的基准 |
| 长肥管道 | long fat network | LFN | 高带宽加大 RTT，对窗口与拥塞控制要求高 |

**表 C-4-2 第 16 章 TCP 连接管理**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 初始序列号 | initial sequence number | ISN | 随机选取，防止旧连接的报文被误收 |
| 三次握手 | three-way handshake | — | SYN、SYN+ACK、ACK，双向确认并交换 ISN |
| 四次挥手 | four-way termination | — | TCP 全双工，两个方向各自独立关闭 |
| 半连接 | half-open | — | 一方认为连接已关、另一方仍认为存在 |
| 半关闭 | half-close | — | 一方已发 FIN，仍可继续接收数据 |
| 时间等待 | TIME_WAIT | — | 主动关闭方等 2MSL，保证末次 ACK 到达并清掉残留报文 |
| 关闭等待 | CLOSE_WAIT | — | 收到对端 FIN 但应用未 `close`，堆积即代码缺陷 |
| 最大报文段生存时间 | maximum segment lifetime | MSL | 报文在网络中的最长存活时间 |
| SYN 洪水 | SYN flood | — | 伪造大量源地址以占满半连接队列 |
| SYN Cookie | SYN cookie | — | 不保存状态，把连接信息编码进 ISN 回显 |
| 半连接队列 | SYN queue | — | 收到 SYN、三次握手尚未完成的连接队列 |
| 全连接队列 | accept queue | — | 握手完成、等待 `accept` 取走的连接队列 |
| 地址重用 | address reuse | SO_REUSEADDR | 允许绑定处于 TIME_WAIT 的地址 |
| 优雅关闭 | graceful close | SO_LINGER | 控制 `close` 是否等待数据发完 |

**表 C-4-3 第 17 章 TCP 可靠传输与拥塞控制**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 累积确认 | cumulative acknowledgement | — | ACK 号表示该序号之前的字节全部收到 |
| 选择性确认 | selective acknowledgement | SACK | 告知已收到的非连续区间，避免整段重传 |
| 重传超时 | retransmission timeout | RTO | 超时未确认即重传的等待时长 |
| 平滑往返时间 | smoothed round-trip time | SRTT | RTT 的指数加权移动平均 |
| 往返时间偏差 | round-trip time variation | RTTVAR | RTT 波动幅度的估计值 |
| Karn 算法 | Karn's algorithm | — | 重传过的样本不用于更新 RTT 估计，避免被污染 |
| 快速重传 | fast retransmit | — | 收到三个重复 ACK 立刻重传，不等超时 |
| 滑动窗口 | sliding window | — | 允许连续发送尚未被确认的数据 |
| 接收窗口 | receive window | rwnd | 接收方缓冲区剩余空间 |
| 拥塞窗口 | congestion window | cwnd | 发送方估计的网络可承载容量 |
| 零窗口探测 | zero window probe | — | 对端通告窗口为零时周期性试探 |
| 糊涂窗口综合征 | silly window syndrome | SWS | 小窗口与小段互相诱发，有效带宽利用率极低 |
| Nagle 算法 | Nagle's algorithm | — | 未确认数据未满 MSS 时先缓存小段再发 |
| 延迟确认 | delayed acknowledgement | — | 等一会再 ACK，可能与 Nagle 互相等待 |
| 慢启动 | slow start | — | `cwnd` 从初始窗口指数增长到 `ssthresh` |
| 拥塞避免 | congestion avoidance | — | 越过 `ssthresh` 后改为线性增长 |
| 快恢复 | fast recovery | — | 快重传后不回到慢启动，直接降窗继续 |
| 慢启动阈值 | slow start threshold | ssthresh | 指数与线性增长的分界，丢包时折半 |
| 三次函数拥塞控制 | CUBIC | — | 用三次函数控制窗口增长，Linux 默认算法 |
| 瓶颈带宽与往返传播时间 | Bottleneck Bandwidth and Round-trip propagation time | BBR | 基于带宽与最小 RTT 建模，不把丢包当拥塞信号 |
| 显式拥塞通知 | Explicit Congestion Notification | ECN | 路由器标记而非丢包，端侧据此降速 |
| 窗口扩大因子 | window scaling | — | 把 16 位窗口字段按比例放大，突破 64 KB |
| 队头阻塞 | head-of-line blocking | HOL | 前一个报文阻塞后面所有数据的交付 |

**表 C-4-4 第 18 章 HTTP 演进与 HTTPS**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 管线化 | pipelining | — | 一次发多个请求，响应仍须按序返回，实践已弃用 |
| 二进制分帧 | binary framing | — | HTTP/2 把报文切成带类型的帧 |
| 多路复用 | multiplexing | — | 一条连接上并发多个流 |
| 头部压缩 | HPACK header compression | HPACK | 静态表加动态表再加霍夫曼编码 |
| 服务器推送 | server push | — | 服务端主动推资源，实践中多被弃用 |
| 快速 UDP 互联网连接 | Quick UDP Internet Connections | QUIC | 基于 UDP 的传输层，把可靠性与加密一起下沉 |
| 零往返时延 | zero round-trip time | 0-RTT | 会话票据复用，首个请求即带数据，有重放风险 |
| 连接迁移 | connection migration | — | 用连接 ID 而非四元组标识连接，切换网络不断连 |
| 传输层安全 | Transport Layer Security | TLS | 握手协商密钥，之后走对称加密 |
| 服务器名称指示 | Server Name Indication | SNI | 握手明文里带上域名，供服务端选择证书 |
| 严格传输安全 | HTTP Strict Transport Security | HSTS | 告诉浏览器此后只用 HTTPS 访问该站点 |
| OCSP 装订 | OCSP stapling | — | 服务端代取吊销状态并随证书一起下发 |
| 证书链 | certificate chain | — | 站点证书、中间 CA、根 CA 三级信任链 |
| 证书颁发机构 | certificate authority | CA | 为公钥签名的可信第三方 |
| 状态码 | status code | — | `301`/`302` 是否永久、`307`/`308` 是否保持方法 |

**表 C-4-5 第 19 章 DNS、CDN 与网络排障**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 域名系统 | Domain Name System | DNS | 把域名解析成地址的分布式数据库 |
| 递归查询 | recursive query | — | 让解析器负责问到底并返回最终答案 |
| 迭代查询 | iterative query | — | 被问者只告诉"下一个该问谁" |
| 资源记录 | resource record | RR | A、AAAA、CNAME、MX、TXT、NS 等类型 |
| 别名记录 | canonical name | CNAME | 把一个域名指向另一个域名 |
| 生存时间 | time to live | TTL | 记录可被缓存多久，决定切换生效速度 |
| 任播 | anycast | — | 同一地址在多处宣告，路由把用户带到最近点 |
| 权威域名服务器 | authoritative name server | — | 某个域数据的最终来源 |
| 内容分发网络 | content delivery network | CDN | 就近缓存静态资源，降低源站压力与延迟 |
| 回源 | origin pull | — | 边缘节点未命中时向源站取内容 |
| 首字节时间 | time to first byte | TTFB | 建连、TLS、服务端处理与首包的总和 |

### C.2.5 第五篇 数据库

**表 C-5-1 第 20 章 MySQL 架构与存储引擎**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 连接层 | connection layer | — | 处理握手、认证、连接池与线程复用 |
| 解析器 | parser | — | 词法与语法分析，生成解析树 |
| 优化器 | optimizer | — | 选择访问路径与连接顺序，可能选错索引 |
| 执行器 | executor | — | 按执行计划调用引擎接口逐行取数 |
| 可插拔存储引擎 | pluggable storage engine | — | Server 层与引擎层通过 handler 接口解耦 |
| 缓冲池 | buffer pool | — | 缓存数据页与索引页，是内存占用的大头 |
| 变更缓冲 | change buffer | — | 缓存对非唯一二级索引的写，合并后再落盘 |
| 自适应哈希索引 | adaptive hash index | AHI | 为热点等值查询在缓冲池内建哈希表 |
| 表空间 | tablespace | — | 物理文件的逻辑容器，8.0 默认为每表一个 |
| 段 | segment | — | 表空间内按用途划分的逻辑单元 |
| 区 | extent | — | 连续页的集合，分配与回收的基本单位 |
| 页 | page | — | InnoDB 最小 I/O 单位，默认 16 KB |
| 行格式 | row format | — | `COMPACT` 与 `DYNAMIC` 决定溢出页与存储布局 |
| 溢出页 | overflow page | — | 变长列过大时，行内只留前缀与指针 |
| 日志缓冲 | log buffer | — | redo 落盘前在内存中的暂存区 |
| 双写缓冲 | doublewrite buffer | — | 先顺序写副本再写数据页，防页断裂 |

**表 C-5-2 第 21 章 redo log、undo log 与 binlog**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 日志先行 | write-ahead logging | WAL | 先写日志再写数据页，保证崩溃可恢复 |
| 重做日志 | redo log | — | 物理逻辑日志，记录页的修改，保证持久性 |
| 日志序列号 | log sequence number | LSN | 单调递增的日志位置，贯穿 redo 与检查点 |
| 检查点 | checkpoint | — | 标记"此前的脏页都已落盘"的位置 |
| 组提交 | group commit | — | 多个事务共用一次 `fsync`，摊薄刷盘成本 |
| 回滚日志 | undo log | — | 逻辑日志，同时支撑回滚与 MVCC 版本链 |
| 清理 | purge | — | 回收不再被任何读视图需要的旧版本 |
| 二进制日志 | binary log | binlog | Server 层逻辑日志，用于复制与时间点恢复 |
| 语句格式 | STATEMENT | — | 记录 SQL 原文，函数与随机值会导致主从不一致 |
| 行格式 | ROW | — | 记录每行的前后镜像，最安全但日志量大 |
| 混合格式 | MIXED | — | 由 Server 判断，可能不安全的语句自动转 ROW |
| 两阶段提交 | two-phase commit | 2PC | prepare 写 redo、commit 写 binlog，靠 XID 关联 |
| 崩溃恢复 | crash recovery | — | 用 redo 前滚、用 undo 回滚未提交事务 |
| 时间点恢复 | point-in-time recovery | PITR | 全量备份加重放 binlog 到指定时刻 |
| 事务标识 | transaction identifier | XID | 关联 redo 与 binlog 的同一个事务编号 |
| 刷盘策略 | flush policy | — | `innodb_flush_log_at_trx_commit` 的 0、1、2 三档 |

**表 C-5-3 第 22 章 事务、隔离级别与 MVCC**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 原子性 | atomicity | A | 靠 undo log 回滚 |
| 一致性 | consistency | C | 靠约束、触发器与应用逻辑共同保证 |
| 隔离性 | isolation | I | 靠锁与 MVCC 实现 |
| 持久性 | durability | D | 靠 redo log 与刷盘保证 |
| 隔离级别 | isolation level | — | 读未提交、读已提交、可重复读、串行化 |
| 脏读 | dirty read | — | 读到别的事务尚未提交的数据 |
| 不可重复读 | non-repeatable read | — | 同一事务内两次读同一行结果不同 |
| 幻读 | phantom read | — | 同一事务内两次范围查询的行数不同 |
| 多版本并发控制 | multi-version concurrency control | MVCC | 读不加锁，靠版本链与可见性判断 |
| 读视图 | read view | ReadView | 快照读时构造的活跃事务集合 |
| 活跃事务列表 | active transaction list | m_ids | 构造读视图时尚未提交的事务 ID 集合 |
| 最小活跃事务标识 | minimum active transaction id | min_trx_id | 活跃列表中的最小值 |
| 下一个待分配事务标识 | maximum transaction id | max_trx_id | 用于判断"事务是否在快照之后才开始" |
| 事务标识 | transaction id | trx_id | 每个事务的唯一编号，写进行内隐藏列 |
| 回滚指针 | roll pointer | roll_pointer | 指向 undo 中的上一个版本 |
| 版本链 | version chain | — | 一行的所有历史版本串成的链表 |
| 快照读 | snapshot read | — | 普通 `SELECT`，走 MVCC 不加锁 |
| 当前读 | current read | — | 读最新版本并加锁，如 `FOR UPDATE` |
| 长事务 | long transaction | — | 长时间不提交，撑大 undo 与版本链 |

**表 C-5-4 第 23 章 索引原理与设计**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| B+ 树 | B+ tree | — | 只在叶子存数据并串成链表，树高小、范围扫描友好 |
| 聚簇索引 | clustered index | — | 叶子节点即数据行，按主键组织 |
| 二级索引 | secondary index | — | 叶子存主键值，查非索引列需要回表 |
| 回表 | lookup back to clustered index | — | 用二级索引拿到主键，再查聚簇索引取整行 |
| 覆盖索引 | covering index | — | 查询所需列都在索引里，无需回表 |
| 最左前缀原则 | leftmost prefix rule | — | 联合索引按定义顺序逐列匹配才能用上 |
| 索引条件下推 | index condition pushdown | ICP | 把 WHERE 条件下推到引擎层过滤，减少回表次数 |
| 索引选择性 | index selectivity | — | 不同值数除以总行数，越高越适合建索引 |
| 基数 | cardinality | — | 索引列不同值的统计数量，供优化器估算 |
| 前缀索引 | prefix index | — | 只索引长字符串的前若干字符 |
| 联合索引 | composite index | — | 多列组成一个索引，列顺序即最左前缀顺序 |
| 文件排序 | filesort | — | 无法利用索引有序性时额外做一次排序 |

**表 C-5-5 第 24 章 锁、加锁规则与死锁**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 全局读锁 | global read lock | FTWRL | `FLUSH TABLES WITH READ LOCK`，整库只读 |
| 表级锁 | table-level lock | — | 锁整张表，粒度大、并发低 |
| 元数据锁 | metadata lock | MDL | 保护表结构，DML 持读锁、DDL 需写锁 |
| 意向锁 | intention lock | IS / IX | 表级标记"表内已有行锁"，避免逐行检查 |
| 记录锁 | record lock | — | 锁住索引上的一条记录 |
| 间隙锁 | gap lock | — | 锁住两条记录之间的开区间，阻止插入 |
| 临键锁 | next-key lock | — | 记录锁加前面的间隙，是 InnoDB 默认加锁单位 |
| 插入意向锁 | insert intention lock | — | 插入前的特殊间隙锁，间隙不同则可并发插入 |
| 隐式锁 | implicit lock | — | 新插入的行不加锁，被别的事务读写时再补 |
| 在线 DDL | online DDL | — | 建新表加双写加增量同步再切换，减少阻塞 |
| 死锁检测 | deadlock detection | — | 主动检查等待图，回滚代价较小的事务 |
| 悲观锁 | pessimistic locking | — | 先加锁再操作，冲突多时更稳 |
| 乐观锁 | optimistic locking | — | 用版本号或条件更新检测冲突，冲突少时更轻 |
| 锁等待超时 | lock wait timeout | — | `innodb_lock_wait_timeout` 默认 50 s |

**表 C-5-6 第 25 章 SQL 优化与执行计划**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 执行计划 | execution plan | EXPLAIN | 优化器给出的访问路径与代价估算 |
| 访问类型 | access type | type | 从 `const` 到 `ALL` 逐级变差 |
| 索引使用长度 | key length | key_len | 推算联合索引实际用到了几列 |
| 预估扫描行数 | estimated rows | rows | 统计信息推算值，可能与真实值差数量级 |
| 过滤比例 | filtered | — | 该步条件过滤后剩余行数的占比 |
| 额外信息 | Extra | — | `Using index`、`Using filesort`、`Using temporary` |
| 慢查询日志 | slow query log | — | 记录超过 `long_query_time` 的语句 |
| 深分页 | deep pagination | — | 偏移量很大时扫描大量无用行 |
| 派生表 | derived table | — | 子查询被物化成临时表 |
| 半连接 | semi-join | — | `IN` 与 `EXISTS` 的优化改写，一行最多匹配一次 |
| 块嵌套循环 | block nested loop | BNL | 把驱动表批量装入连接缓冲，减少被驱动表扫描 |
| 哈希连接 | hash join | — | 8.0.18 起用于等值连接，替代块嵌套循环 |
| 嵌套循环连接 | nested loop join | NLJ | 用小表驱动大表，逐行匹配 |
| 驱动表 | driving table | — | 外层循环的表，应选过滤后更小的那个 |

**表 C-5-7 第 26 章 复制、高可用与分库分表**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 异步复制 | asynchronous replication | — | 主库提交即返回，主库宕机可能丢数据 |
| 半同步复制 | semi-synchronous replication | — | 至少一个从库确认收到 binlog 才返回 |
| 组复制 | group replication | — | 基于多数派一致性协议的复制 |
| 中继日志 | relay log | — | 从库 IO 线程落盘、SQL 线程重放的中转日志 |
| 复制线程 | replication threads | — | 主库 dump 线程与从库 IO、SQL 线程 |
| 全局事务标识 | global transaction identifier | GTID | 全局唯一的事务编号，简化切换与断点定位 |
| 写集合 | WRITESET | — | 按行级写集合做并行复制，真冲突才串行 |
| 主从延迟 | replication lag | — | 从库重放落后主库的量 |
| 主从延迟秒数 | seconds behind master | — | 由事件时间戳估算，空闲或大事务时不准 |
| 并行复制 | parallel replication | MTS | 从库多线程重放，按组提交或 WRITESET 划分 |
| 脑裂 | split-brain | — | 两个节点都认为自己是主，同时接受写入 |
| 故障转移 | failover | — | 选主、改路由、补齐差异数据 |
| 一致性哈希 | consistent hashing | — | 扩缩容时只迁移相邻区间 |
| 虚拟节点 | virtual node | vnode | 一个物理节点映射成多个环上位置，改善均衡 |
| 分库分表 | sharding | — | 按规则把数据拆到多个库与多张表 |
| XA 事务 | XA transaction | XA | 跨库事务的 prepare 加 commit 两阶段 |
| 补偿事务 | compensating transaction | TCC | Try、Confirm、Cancel，由业务层自己实现回滚 |

**表 C-5-8 第 27 章 Redis 原理与缓存架构**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 简单动态字符串 | simple dynamic string | SDS | 带长度与预分配，二进制安全、追加不频繁扩容 |
| 压缩列表 | ziplist | — | 连续内存的紧凑编码，元素多或值大时触发转换 |
| 紧凑列表 | listpack | — | 解决压缩列表连锁更新问题的后继编码 |
| 快速列表 | quicklist | — | 双向链表加每个节点一个紧凑列表 |
| 整数集合 | intset | — | 纯整数集合的有序紧凑编码 |
| 跳表 | skiplist | — | 多层索引实现的有序集合，范围查询优于平衡树 |
| 哈希表 | hashtable | — | 字典的通用实现，配合渐进式 rehash |
| 渐进式 rehash | incremental rehashing | — | 分多次把旧表迁到新表，避免单次长停顿 |
| 惰性删除 | lazy expiration | — | 访问到过期键时才删除 |
| 定期删除 | periodic expiration | — | 周期性抽样扫描并删除过期键 |
| 淘汰策略 | eviction policy | — | `noeviction`、`allkeys-lru`、`volatile-lfu` 等八种 |
| 最近最少使用 | least recently used | LRU | 按最后一次访问时间淘汰 |
| 最不经常使用 | least frequently used | LFU | 按访问频次淘汰，抗扫描能力更强 |
| 快照持久化 | Redis Database | RDB | 周期性把全量数据写成二进制快照 |
| 追加日志 | Append Only File | AOF | 记录写命令，按策略决定何时 `fsync` |
| AOF 重写 | AOF rewrite | — | 用等价的最小命令集重写文件 |
| 混合持久化 | hybrid persistence | — | 前半段 RDB 全量加后半段 AOF 增量 |
| 刷盘策略 | fsync policy | — | `always`、`everysec`、`no` 三档 |
| 部分重同步 | partial resynchronization | psync | 用复制偏移与积压缓冲只补差量 |
| 复制积压缓冲 | replication backlog | — | 固定大小的环形缓冲，太小会触发全量重同步 |
| 全量重同步 | full resynchronization | — | 主库生成 RDB 并传输，期间缓存增量命令 |
| 哨兵 | Sentinel | — | 监控、通知、故障转移、配置提供者四项职责 |
| 集群 | Redis Cluster | — | 16384 个槽分片，客户端按 MOVED 与 ASK 重定向 |
| 哈希标签 | hash tag | — | 用大括号强制多个键落同一槽，才能做多键操作 |
| 缓存穿透 | cache penetration | — | 查询不存在的数据，缓存与数据库都要扛压 |
| 缓存击穿 | cache breakdown | — | 热点键过期的瞬间大量请求打到数据库 |
| 缓存雪崩 | cache avalanche | — | 大量键同时失效，数据库被击穿 |
| 布隆过滤器 | Bloom filter | — | 用位数组判断"一定不存在"，存在假阳性 |
| 延迟双删 | delayed double delete | — | 更新后删缓存，隔一段时间再删一次 |
| 热键 | hot key | — | 单键流量过高，需要本地缓存或拆分 |
| 大键 | big key | — | 单键体积过大，操作会阻塞单线程 |
| 分布式锁 | distributed lock | Redlock | 多节点多数派加锁，争议在于依赖时钟假设 |

### C.2.6 第六篇 Java、JVM 与并发

**表 C-6-1 第 28 章 Java 语言与对象模型**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 对象头 | object header | — | 标记字加类型指针，数组还多一个长度字段 |
| 标记字 | Mark Word | — | 存哈希码、GC 年龄与锁状态，随锁升级被复用 |
| 类型指针 | klass pointer | — | 指向方法区中的类元数据 |
| 压缩指针 | compressed oops | — | 堆小于 32 GB 时用 32 位偏移表示引用 |
| 字符串常量池 | string constant pool | — | 存放字面量与 `intern` 结果的引用 |
| 自动装箱缓存 | autoboxing cache | — | `Integer` 缓存 `-128 ~ 127`，超出范围需用 `equals` |
| 泛型擦除 | type erasure | — | 编译期检查、运行期只剩上界类型 |
| 桥接方法 | bridge method | — | 编译器合成的转发方法，保证擦除后多态仍正确 |
| 动态代理 | dynamic proxy | — | 运行时生成代理类，JDK 版基于接口 |
| 代码生成库 | Code Generation Library | CGLIB | 通过继承生成子类代理，无法代理 `final` 类 |
| 序列化版本号 | serial version UID | serialVersionUID | 显式声明可避免类结构微调导致反序列化失败 |
| 方法句柄 | method handle | — | 动态调用的调用目标，比反射更容易被内联 |

**表 C-6-2 第 29 章 集合框架原理**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 快速失败 | fail-fast | — | 迭代中检测到结构修改立即抛异常 |
| 安全失败 | fail-safe | — | 在副本上迭代，不抛异常但可能读到旧数据 |
| 负载因子 | load factor | — | `HashMap` 默认 0.75，容量与冲突的折中 |
| 树化阈值 | treeify threshold | — | 桶内链表长度达 8 且容量不小于 64 时转红黑树 |
| 退化阈值 | untreeify threshold | — | 扩容或删除后长度降到 6 时退回链表 |
| 扩容 | resize | — | 容量翻倍，用 `hash & oldCap` 判断高低位拆分 |
| 哈希扰动 | hash spreading | — | 高 16 位异或低 16 位，改善低位分布 |
| 分段锁 | segment lock | — | `ConcurrentHashMap` 的早期实现，1.8 改为 CAS 加 `synchronized` |
| 写时复制列表 | copy-on-write list | COW | 写时复制整个数组，适合读多写极少的场景 |
| 红黑树 | red-black tree | — | 近似平衡的二叉搜索树，`TreeMap` 的底层 |
| 比较器契约 | comparator contract | — | 必须满足自反与传递，否则排序抛异常 |

**表 C-6-3 第 30 章 JMM、volatile 与 synchronized**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| Java 内存模型 | Java Memory Model | JMM | 规定多线程读写共享变量的可见性与有序性 |
| 先行发生原则 | happens-before | — | 八条规则，判断一次写是否对另一个线程可见 |
| 重排序 | reordering | — | 编译器、CPU、内存系统三层都可能调整顺序 |
| 好似串行 | as-if-serial | — | 单线程语义不能被重排序破坏 |
| 可见性与有序性 | visibility and ordering | — | 一个线程的写能被别人读到，且顺序符合预期 |
| 内存屏障 | memory barrier | — | LoadLoad、StoreStore、LoadStore、StoreLoad 四种 |
| StoreLoad 屏障 | StoreLoad barrier | — | 最贵的一种，`volatile` 写之后必须插入 |
| `volatile` 关键字 | volatile | — | 保证可见性与禁止重排序，但不保证原子性 |
| 双重检查锁定 | double-checked locking | DCL | 必须给实例字段加 `volatile`，否则可能发布半初始化对象 |
| 监视器进入 | monitorenter | — | `synchronized` 块的字节码入口 |
| 监视器退出 | monitorexit | — | 正常与异常路径各一个，保证锁一定被释放 |
| 偏向锁 | biased locking | — | 同一线程重复进入时零原子操作，后续 JDK 已默认禁用 |
| 轻量级锁与重量级锁 | lightweight lock / heavyweight lock | — | 前者用 CAS 自旋，后者挂起线程依赖内核互斥量 |
| 锁膨胀 | lock inflation | — | 偏向、轻量、重量级的单向升级路径 |
| 自适应自旋 | adaptive spinning | — | 按上次自旋成功率决定这次的次数 |
| 对象监视器 | ObjectMonitor | — | HotSpot 中重量级锁的落地结构 |
| 线程本地映射 | ThreadLocalMap | — | 每个线程私有的键值表，键为弱引用 |
| 内存泄漏 | memory leak | — | 对象不再使用却仍被引用，无法回收 |

**表 C-6-4 第 31 章 并发工具、线程池与 AQS**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 抽象队列同步器 | AbstractQueuedSynchronizer | AQS | 用一个状态变量加双向等待队列实现同步器 |
| 同步状态 | synchronization state | state | 语义由子类定义，如重入次数或许可数 |
| CLH 队列 | Craig, Landin and Hagersten queue | CLH | FIFO 双向队列，是 AQS 的排队基础 |
| 等待状态 | waitStatus | — | 节点标记：取消、唤醒、条件等待、传播 |
| 独占与共享模式 | exclusive / shared mode | — | 前者同一时刻只允许一个线程持有，后者允许多个 |
| 条件队列 | condition queue | — | 单向队列，`await` 在此等待、`signal` 把它转回同步队列 |
| 公平与非公平锁 | fair / unfair lock | — | 前者严格按队列顺序，后者允许新线程先抢一次 |
| 时间戳锁 | StampedLock | — | 乐观读加悲观读写，不支持重入 |
| 倒计数闩 | CountDownLatch | — | 一次性，等 N 个事件发生 |
| 循环屏障 | CyclicBarrier | — | 可重用，等 N 个线程到齐后一起继续 |
| 信号量 | Semaphore | — | 控制同时访问某资源的线程数 |
| 异步编排 | CompletableFuture | — | 组合多个异步任务并统一处理异常 |
| 工作窃取 | work stealing | — | 空闲线程从别人队列尾部取任务 |
| 分段累加器 | LongAdder | — | 分散到多个计数单元再求和，高并发计数更快 |
| 核心与最大线程数 | core pool size / maximum pool size | — | 前者决定何时入队，后者决定队列满后是否扩容 |
| 工作队列 | work queue | — | 核心线程满后任务入队，队列类型决定整体行为 |
| 拒绝策略 | rejection policy | — | 抛异常、调用者执行、丢弃、丢弃最旧四种 |
| 背压 | backpressure | — | 上游按下游处理能力主动降速 |
| 线程本地分配缓冲 | thread-local allocation buffer | TLAB | 线程私有的堆分配区域，免加锁 |

**表 C-6-5 第 32 章 JVM 内存结构与 GC**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 逃逸分析 | escape analysis | — | 判断对象是否逃出方法，未逃逸可栈上分配 |
| 标量替换 | scalar replacement | — | 把未逃逸对象拆成若干局部标量 |
| 可达性分析 | reachability analysis | — | 从根集合出发标记可达对象，不可达即可回收 |
| GC 根集合 | GC Roots | — | 栈引用、静态字段、常量、JNI 引用等起点 |
| 强引用与软引用 | strong reference / soft reference | — | 前者绝不回收，后者内存紧张时回收 |
| 弱引用与虚引用 | weak reference / phantom reference | — | 前者下次 GC 必回收，后者仅用于回收通知 |
| 标记清除与复制与整理 | mark-sweep / mark-copy / mark-compact | — | 三种基础算法，分别对应碎片、空间浪费、移动成本 |
| 卡表 | card table | — | 记录跨代引用的粗粒度位图，避免扫描整个老年代 |
| 新生代回收 | minor GC | — | 只回收年轻代的垃圾收集 |
| 对象晋升 | promotion | — | 存活够久的对象从幸存区进入老年代 |
| 动态年龄判定 | dynamic age determination | — | 同年龄对象总和超过幸存区一半即提前晋升 |
| 空间分配担保 | space allocation guarantee | — | 老年代需为新生代晋升预留空间 |
| 三色标记法 | tri-color marking | — | 白灰黑三色描述标记进度，漏标需两个条件同时成立 |
| 增量更新 | incremental update | — | 破坏"删除引用"条件，记录新增引用，CMS 采用 |
| 原始快照 | snapshot-at-the-beginning | SATB | 破坏"插入引用"条件，记录被删的旧引用，G1 采用 |
| 写屏障 | write barrier | — | 在引用赋值处插入的钩子，配合记忆集与 SATB |
| 并发模式失败 | Concurrent Mode Failure | — | 老年代在并发回收期间被填满，退化为串行回收 |
| 垃圾优先收集器 | Garbage-First collector | G1 | 按区域回收价值排序，可设停顿目标 |
| 区域 | Region | — | G1 把堆切成等大小区域并动态扮演各分代 |
| 记忆集 | Remembered Set | RSet | 记录指向本区域的跨区域引用，避免全堆扫描 |
| 混合回收 | Mixed GC | — | 回收全部年轻代区域加部分高收益老年代区域 |
| Z 垃圾收集器 | Z Garbage Collector | ZGC | 着色指针加读屏障，目标是把停顿压到毫秒级 |
| 着色指针 | colored pointer | — | 把标记信息编码进指针本身，省去对象头访问 |
| 读屏障 | load barrier | — | 读取引用时修正指针颜色 |
| 安全点 | safepoint | — | 线程可被暂停的少数位置，GC 需先到达它 |

### C.2.7 第七篇 消息队列、分布式与微服务

**表 C-7-1 第 33 章 消息队列：可靠性三件套**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 解耦 | decoupling | — | 生产与消费互不知晓，各自独立演进 |
| 削峰填谷 | peak shaving | — | 用队列吸收突发流量，保护下游 |
| 至少一次 | at-least-once | — | 不丢但可能重复，绝大多数系统的默认语义 |
| 至多一次 | at-most-once | — | 不重但可能丢，用可靠性换吞吐 |
| 恰好一次 | exactly-once | — | 端到端严格一次，代价是事务与去重开销 |
| 幂等性 | idempotence | — | 同一操作执行多次与执行一次效果相同 |
| 去重表 | deduplication table | — | 用唯一键记录已处理消息，重复直接丢弃 |
| 死信队列 | dead letter queue | DLQ | 超过重试次数的消息转入此处并告警 |
| 消费延迟 | consumer lag | — | 最新生产位点与已提交位点之差 |
| 再均衡 | rebalance | — | 消费者组内重新分配分区，期间会短暂停顿 |
| 同步副本集合 | in-sync replicas | ISR | 与领导者保持同步的副本集合 |
| 高水位 | high watermark | HW | 已同步到足够副本、可被消费者读取的位点 |
| 日志末端偏移 | log end offset | LEO | 副本本地日志的末端位置 |
| 领导者纪元 | leader epoch | — | 领导者变更代数，用于识别过期副本数据 |
| 非干净领导者选举 | unclean leader election | — | 允许未同步副本当领导者，会丢数据但保可用 |
| 延迟消息 | delayed message | — | 到指定时间才可被消费的消息 |
| 时间轮 | timing wheel | — | 用环形数组加槽位链表实现的高效定时结构 |
| 事务消息 | transactional message | — | 两阶段提交，保证本地事务与消息发送一致 |
| 半消息 | half message | — | 已存储但对消费者不可见的中间态消息 |

**表 C-7-2 第 34 章 分布式理论：CAP、共识与一致性**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 一致性、可用性与分区容错 | Consistency, Availability, Partition tolerance | CAP | 分区发生时只能在一致与可用之间取舍 |
| 基本可用、柔性状态与最终一致 | Basically Available, Soft state, Eventually consistent | BASE | 对 CAP 中 AP 的工程化落地 |
| 分区时选一致或可用、否则选延迟或一致 | Partition, Availability, Consistency, Else Latency, Consistency | PACELC | 把"无分区时仍要权衡延迟与一致"补上 |
| 线性一致性 | linearizability | — | 所有操作看起来在某个全局时间点上原子生效 |
| 顺序一致性 | sequential consistency | — | 存在一个全局顺序，且每人的本地顺序被保留 |
| 因果一致性 | causal consistency | — | 只保证有因果关系的操作顺序 |
| 最终一致性 | eventual consistency | — | 停止写入后最终收敛到一致 |
| 任期 | term | — | Raft 的逻辑时钟，每轮选举自增 |
| 选举超时 | election timeout | — | 超过它没收到心跳就发起选举 |
| 日志复制 | log replication | — | 领导者把日志条目并行发给跟随者 |
| 提交索引 | commitIndex | — | 已被多数派确认、可安全应用的日志位置 |
| Raft 共识算法 | Raft | — | 以可理解性为设计目标，拆分选举、复制、安全三块 |
| Paxos 共识算法 | Paxos | — | 更早的共识算法，描述简单实现难 |
| ZooKeeper 原子广播协议 | ZooKeeper Atomic Broadcast | ZAB | 主备模式的原子广播，保证顺序与崩溃恢复 |
| 两阶段提交 | two-phase commit | 2PC | 先都 prepare、再统一 commit，协调者单点 |
| 三阶段提交 | three-phase commit | 3PC | 插入 canCommit 减轻阻塞，仍未解决脑裂 |
| 补偿事务 | Try-Confirm-Cancel | TCC | 业务层实现预留、确认与取消三个接口 |
| 长事务补偿 | Saga | — | 把长事务拆成多步，失败时反向补偿 |
| 本地消息表 | local message table | — | 业务与消息记录写同一本地事务，再异步投递 |
| 最大努力通知 | best-effort notification | — | 反复通知加对账兜底，不保证必达 |
| 雪花算法 | Snowflake | — | 时间戳加机器号加序列号生成有序唯一 ID |
| 时钟回拨 | clock skew | — | 机器时间倒退导致 ID 重复或乱序 |
| 隔离令牌 | fencing token | — | 单调递增的令牌，让旧持有者无法再写 |
| 令牌桶 | token bucket | — | 按固定速率放令牌，允许突发到桶容量 |
| 漏桶 | leaky bucket | — | 恒定速率流出，专门削平突发 |
| 滑动窗口限流 | sliding window | — | 用两个计数器按时间比例加权，避免临界突变 |
| 虚拟节点 | virtual node | vnode | 一个物理节点映射到环上多个位置，改善均衡与迁移粒度 |

**表 C-7-3 第 35 章 微服务架构与治理**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 服务发现 | service discovery | — | 让调用方找到当前可用的实例地址 |
| 客户端发现与服务端发现 | client-side / server-side discovery | — | 前者调用方自己选实例，后者由负载均衡器代选 |
| 自我保护 | self-preservation | — | 心跳丢失比例过高时暂停剔除，防止误杀 |
| 熔断器 | circuit breaker | — | 失败率超阈值即快速失败，避免雪崩 |
| 半开状态 | half-open | — | 放过少量试探请求，成功则闭合、失败则继续断开 |
| 舱壁隔离 | bulkhead | — | 按依赖划分资源池，一个故障不拖垮全部 |
| 线程池隔离与信号量隔离 | thread pool / semaphore isolation | — | 前者异步且可超时，后者轻量但无法中断 |
| 优雅降级 | graceful degradation | — | 关闭非核心功能保住核心链路 |
| 重试放大 | retry amplification | — | 多层重试相乘，故障时流量成倍砸向下游 |
| 抖动退避 | jitter | — | 在退避时间上加随机量，避免同时重试 |
| 分布式追踪 | distributed tracing | — | 用跨进程标识串起一次请求的所有调用 |
| 追踪标识 | TraceID | — | 一次请求全链路唯一标识 |
| 跨度标识 | SpanID | — | 单个调用段的标识，父子关系构成调用树 |
| 采样 | sampling | — | 只记录部分请求的链路，控制存储与开销 |
| 灰度发布 | canary release | — | 先放量给小部分用户验证 |
| 蓝绿部署 | blue-green deployment | — | 两套环境切流量，回滚只需切回 |
| 接口网关 | API gateway | — | 统一入口，承担路由、鉴权、限流与协议转换 |

### C.2.8 第八篇 场景设计与面试复盘

**表 C-8-1 第 36 章 场景设计题的答题框架**

| 中文 | 英文全称 | 缩写 | 一句话说明 |
|---|---|---|---|
| 需求澄清 | requirement clarification | — | 先问清读多还是写多、一致性要求、允许的延迟 |
| 容量估算 | capacity estimation | — | 由日活与人均请求推出 QPS、存储与带宽 |
| 每秒查询数 | queries per second | QPS | 读侧吞吐的核心指标 |
| 每秒事务数 | transactions per second | TPS | 写侧或完整业务事务的吞吐 |
| 峰值系数 | peak factor | — | 峰值流量与均值流量的倍数，用于定容量 |
| 扇出 | fan-out | — | 一次请求扩散成的下游请求数 |
| 写放大 | write amplification | — | 一次业务写引发的总写入次数或数据量 |
| 热点 | hot spot | — | 访问集中在少数分片或键上 |
| 库存扣减 | stock deduction | — | 用原子操作或状态机把"判断加扣减"变成一步 |
| 超卖 | overselling | — | 并发扣减未互斥，卖出超过库存的量 |
| 限流 | rate limiting | — | 在入口按维度限制请求速率 |
| 推模式与拉模式 | push / pull model | — | 写时扩散与读时聚合，分别适合不同活跃度 |
| 信息流 | feed | — | 关注关系下的内容聚合流 |
| 排名与榜单 | ranking | — | 用有序集合做实时排行与分页 |

## C.3 只给缩写的高频缩写速查

这一节为"面试官只说缩写"的场景准备：不按篇章、只按字母序，一行一个缩写。看到不认识的缩写时先在这里定位，再回 C.2 取它所在篇章的上下文。

> [!WARNING]
> 同一缩写在书中有两个意思：`GC` 既指垃圾回收机制也指垃圾收集器；`RSS` 在内存章节是常驻内存集（resident set size）、在网络章节是接收端缩放（receive side scaling）；`HW` 在 MQ 章节是高水位（high watermark）而非硬件。听到缩写后先用上下文确认所指再回答——直接答错意思比不知道更伤。

**表 C-3 高频缩写速查（按字母序）**

| 缩写 | 英文全称 | 中文 | 一句话提示 |
|---|---|---|---|
| AOF | Append Only File | 追加日志 | Redis 的写命令日志，`everysec` 是默认刷盘档 |
| AQS | AbstractQueuedSynchronizer | 抽象队列同步器 | 一个状态变量加一条 CLH 变体队列 |
| ARP | Address Resolution Protocol | 地址解析协议 | 同网段内由 IP 求 MAC |
| BDP | bandwidth-delay product | 带宽时延积 | `带宽 × RTT`，决定窗口该开多大 |
| CAP | Consistency, Availability, Partition tolerance | 一致性、可用性、分区容错 | 分区发生时只能二选一，不是"三选二" |
| CAS | compare-and-swap | 比较并交换 | 一条指令完成比较与写入，无锁结构的基础 |
| CDN | content delivery network | 内容分发网络 | 边缘缓存，关键指标是回源率与命中率 |
| CFS | Completely Fair Scheduler | 完全公平调度器 | 按 vruntime 用红黑树选下一个任务 |
| CLH | Craig, Landin and Hagersten queue | CLH 队列 | AQS 排队所用的 FIFO 双向队列 |
| COW | copy-on-write | 写时复制 | `fork` 与写时复制集合同名但机制不同 |
| DCL | double-checked locking | 双重检查锁定 | 单例的实例字段必须加 `volatile` |
| DLQ | dead letter queue | 死信队列 | 超过重试次数的兜底去处，不等于丢弃 |
| DMA | direct memory access | 直接内存访问 | 设备直读内存，是零拷贝的关键角色 |
| DNS | Domain Name System | 域名系统 | 递归查询与迭代查询不要混 |
| G1 | Garbage-First collector | 垃圾优先收集器 | Region 加记忆集加原始快照 |
| GC | garbage collection | 垃圾回收 | 也常指垃圾收集器，看上下文 |
| GTID | global transaction identifier | 全局事务标识 | 复制不必记位点，切换更简单 |
| HOL | head-of-line blocking | 队头阻塞 | HTTP/1.1 在应用层，HTTP/2 在 TCP 层 |
| HPACK | HPACK header compression | 头部压缩 | 静态表加动态表加霍夫曼编码 |
| HSTS | HTTP Strict Transport Security | 严格传输安全 | 响应头让浏览器此后只走 HTTPS |
| HW | high watermark | 高水位 | Kafka 中可被消费者读到的最低位点 |
| ICP | index condition pushdown | 索引条件下推 | 条件下推到引擎层，减少回表 |
| IOPS | input/output operations per second | 每秒输入输出操作数 | 必须与队列深度一起看 |
| ISR | in-sync replicas | 同步副本集合 | 与领导者保持同步的副本集合 |
| JIT | just-in-time compiler | 即时编译器 | 热点方法从解释执行转为机器码 |
| JMM | Java Memory Model | Java 内存模型 | happens-before 是判断可见性的依据 |
| LEO | log end offset | 日志末端偏移 | 副本本地日志的末端位置 |
| LSN | log sequence number | 日志序列号 | redo 与检查点共用的坐标 |
| LWP | light-weight process | 轻量级进程 | 内核视角的线程 |
| MDL | metadata lock | 元数据锁 | DDL 与 DML 互相等待的常见元凶 |
| MESI | Modified-Exclusive-Shared-Invalid protocol | 缓存一致性协议 | 四种状态描述缓存行的归属 |
| MMU | memory management unit | 内存管理单元 | 做地址翻译，内含 TLB |
| MSS | maximum segment size | 最大报文段长度 | TCP 载荷上限，由 MTU 推算 |
| MTU | maximum transmission unit | 最大传输单元 | 链路层载荷上限，以太网常见 1500 字节 |
| MVCC | multi-version concurrency control | 多版本并发控制 | 读不加锁，靠版本链与读视图 |
| NAPT | Network Address Port Translation | 网络地址端口转换 | 同时改写地址与端口 |
| NAT | Network Address Translation | 网络地址转换 | 让私网共享公网地址 |
| OOM | out of memory | 内存耗尽 | 内核侧是 OOM killer，JVM 侧是 OOM 异常 |
| P99 | 99th percentile | 第 99 百分位 | 尾延迟指标，比均值更能暴露问题 |
| PACELC | Partition, Availability, Consistency, Else Latency, Consistency | CAP 的补充模型 | 无分区时仍要在延迟与一致之间权衡 |
| PITR | point-in-time recovery | 时间点恢复 | 全量备份加重放 binlog 到指定时刻 |
| PSS | proportional set size | 比例驻留集 | 共享页按参与进程数平摊 |
| QPS | queries per second | 每秒查询数 | 容量估算的读侧口径 |
| QUIC | QUIC | 快速 UDP 互联网连接 | 基于 UDP，0-RTT 与连接迁移 |
| RAID | redundant array of independent disks | 磁盘阵列 | 关注写惩罚与重构风险 |
| RDB | Redis Database | 快照持久化 | 周期性生成的全量二进制快照 |
| RED | rate, errors, duration | RED 方法 | 服务视角三问：速率、错误、耗时 |
| RSS | resident set size / receive side scaling | 常驻内存集 / 接收端缩放 | 同名两义：内存指标与网卡多队列 |
| RTO | retransmission timeout | 重传超时 | 由 SRTT 与 RTTVAR 算出 |
| RTT | round-trip time | 往返时间 | 几乎所有超时与窗口的基准 |
| RTTVAR | round-trip time variation | 往返时间偏差 | RTT 波动幅度的估计值 |
| SATB | snapshot-at-the-beginning | 原始快照 | G1 用写前屏障记录被删除的引用 |
| SDS | simple dynamic string | 简单动态字符串 | Redis 字符串的底层编码 |
| SLA | service-level agreement | 服务等级协议 | 对外承诺，附带违约后果 |
| SLO | service-level objective | 服务等级目标 | 内部目标值，通常严于 SLA |
| SNI | Server Name Indication | 服务器名称指示 | 握手明文带域名，一个 IP 配多证书的前提 |
| SRTT | smoothed round-trip time | 平滑往返时间 | RTT 的指数加权移动平均 |
| TCC | Try-Confirm-Cancel | 补偿事务 | 业务层自己写预留、确认与取消 |
| TLAB | thread-local allocation buffer | 线程本地分配缓冲 | 线程私有的堆分配区域，免加锁 |
| TLS | Transport Layer Security | 传输层安全 | 握手协商密钥，之后走对称加密 |
| TPS | transactions per second | 每秒事务数 | 容量估算的写侧口径 |
| TTFB | time to first byte | 首字节时间 | 建连、TLS 与服务端处理的总和 |
| USE | utilization, saturation, errors | USE 方法 | 资源视角三问：使用率、饱和度、错误 |
| USS | unique set size | 独占内存 | 仅本进程独占、释放后立即可回收 |
| VFS | virtual file system | 虚拟文件系统 | 用统一接口抽象文件、socket 与 procfs |
| WAL | write-ahead logging | 日志先行 | 先写日志再写数据页，崩溃可恢复 |
| ZGC | Z Garbage Collector | Z 垃圾收集器 | 着色指针加读屏障，停顿压到毫秒级 |

## C.4 容易混淆的术语对

这一节收"中文看着像、意思完全不同"与"经常被混用"的术语。每组只给一句话区别，但都是面试官用来区分"背过"和"懂了"的那一句。

> [!IMPORTANT]
> 被混用的术语往往对应同一道题的两种答法：说错一个词，整段推理就站不住。进场前把这张表朗读一遍，比再背十道新题有效。

**表 C-4 易混术语对照（25 组）**

| 易混术语对 | 核心区别 | 常见错误 |
|---|---|---|
| buff/cache | buff 缓存块设备的元数据块，cache 按页缓存文件内容 | 把两者当成同一份内存，说不清各自的回收顺序 |
| VSZ/RSS | VSZ 是地址空间总大小，RSS 是实际占用的物理内存 | 看到 VSZ 很大就判定内存泄漏 |
| 软链接/硬链接 | 软链接是独立文件存路径，硬链接是同一 inode 的另一个名字 | 说硬链接不能跨目录却不说不能跨文件系统 |
| SIGTERM/SIGKILL | 前者请求退出且可被捕获忽略，后者不可捕获直接回收 | 认为 `kill -9` 一定能杀掉进程（D 状态杀不掉） |
| select/poll/epoll | 前两者每次调用都要把整个集合拷进内核并线性扫描 | 只说"epoll 更快"却说不出红黑树与就绪链表 |
| LT/ET | LT 只要有数据就持续通知，ET 只在状态变化时通知一次 | 用 ET 却不把 fd 设为非阻塞，导致只读到一次 |
| page cache/buffer cache | 前者缓存文件内容页，后者缓存块设备元数据 | 在 `free` 里把两者相加却不解释各自能否直接回收 |
| 脏页/换页 | 脏页是改了还没落盘的内存页，换页是匿名页在内存与 swap 之间搬 | 把脏页回写说成"换出到 swap" |
| swap/内存回收 | swap 只针对匿名页且要写设备，回收 page cache 直接丢弃即可 | 认为只有 swap 用完才会回收 page cache |
| RDB/AOF | RDB 是全量二进制快照，AOF 是写命令日志 | 说 AOF 一定不丢数据（`everysec` 会丢 1 秒） |
| 缓存穿透/击穿/雪崩 | 穿透是查不存在的数据，击穿是单个热点键失效，雪崩是大量键同时失效 | 三个词互换使用，方案也不对应 |
| ReadView/快照 | 读视图是可见性判断的依据，快照是它带来的"看不到新提交"的效果 | 把 RC 与 RR 的差异说成"快照大小不同" |
| 快照读/当前读 | 快照读走 MVCC 不加锁，当前读读最新版本并加锁 | 把 `SELECT ... FOR UPDATE` 当成快照读 |
| 间隙锁/临键锁 | 间隙锁只锁开区间，临键锁是记录锁加前面的间隙 | 说唯一索引等值命中时也会加临键锁 |
| redo/undo | redo 保证已提交的不丢（前滚），undo 保证未提交的能回退（回滚） | 把 undo 说成 binlog 的一种 |
| binlog/redo log | binlog 是 Server 层逻辑日志（用于复制与归档），redo 是引擎层物理日志 | 说 binlog 用于崩溃恢复 |
| equals/hashCode | equals 判等、hashCode 定位桶，两者必须保持一致 | 重写 equals 不重写 hashCode，放进 `HashMap` 就找不到 |
| volatile/synchronized | 前者保证可见性与有序性，后者还保证原子性与互斥 | 用 `volatile` 修饰 `i++` 以为线程安全 |
| 偏向锁/轻量级锁 | 偏向锁是同一线程重入零开销，轻量级锁用 CAS 自旋竞争 | 说轻量级锁竞争激烈时会升级为偏向锁 |
| CountDownLatch/CyclicBarrier | 前者一次性、等事件；后者可重用、等线程到齐 | 说 CyclicBarrier 可以减计数并多次复用 |
| 2PC/TCC | 2PC 靠数据库的 prepare 与 commit，TCC 靠业务层写三个接口 | 说 TCC 不需要处理空回滚与悬挂 |
| CAP/BASE | CAP 是分区时的取舍结论，BASE 是对 AP 的工程化落地 | 把 BASE 说成 CAP 的替代而不是补充 |
| 限流/熔断 | 限流按入口速率做保护，熔断按下游失败率做快速失败 | 说熔断会减少流量，其实它只是拒绝调用 |
| 推/拉 | 推在写时扩散到收件箱，拉在读时聚合，按活跃度与实时性取舍 | 只说"推快拉慢"，说不出大 V 扇出的代价 |
| 软引用/弱引用 | 软引用内存紧张时才回收，弱引用下次 GC 必回收 | 用软引用做缓存却指望它一定活到进程结束 |


---

> 作者: [破戒僧](https://onlyblacktea.cn)  
> URL: https://onlyblacktea.cn/book/backend/appendix-c/  

