# ⟨域⟩ 域 · 功能点清单 > **用途**:把「⟨链路主题⟩」这条链路按其设计文档与代码实读整理成功能点 > **流程**(与上游一致):**先记录功能点 → 定稿文档 → 再讨论最佳设计与取舍** > **上游**:`⟨域⟩-候选价值点.md`(S1)+ 勾选结果(S2) > **素材来源**:`⟨wiki/xxx-spec.md⟩`(⟨N⟩ 行)+ `⟨仓库名⟩` 代码实读 > **路径简写**:`⟨简写1⟩/` = `⟨真实路径⟩`;`⟨简写2⟩/` = `⟨真实路径⟩` --- # 一、链路总览 **一句话**:⟨统领句——给出这条链路的**主线判断**,不是复述流程⟩ ```mermaid flowchart TD A["⟨起点⟩"] --> B["⟨★ 机制节点⟩"] B --> C{"⟨分支⟩"} C -->|"⟨路径⟩"| D["⟨汇合点 / 分级发生地⟩"] C -->|"⟨路径⟩"| D D --> E{"⟨结果类型⟩"} E -->|"⟨可逆⟩"| F["⟨处置⟩"] E -->|"⟨不确定⟩"| G["⟨处置⟩"] ``` ⟨可选⟩**关键差异表(设计的核心)** | ⟨维度⟩ | ⟨取值1⟩ | ⟨取值2⟩ | ⟨取值3⟩ | |---|---|---|---| | ⟨例:对方结果⟩ | | | | | ⟨例:可逆性⟩ | | | | | ⟨例:处置⟩ | | | | --- ## 主干调用骨架(一眼看清哪一步用了什么方式) > **这是"整条链路的技术地图"**——把 N 段主干压成**一段连续伪代码**,每行标注**用了什么方式**(`[锁]` `[幂等]` `[策略]` `[MQ]` `[兜底]` …)。 > 局部片段回答"一个机制长什么样",这一段回答"**哪些地方用了什么**",以及**哪些地方本该有兜底却没有**。 ```java // ═══ ① ⟨阶段名⟩ ═══ ⟨方法名⟩(): ⟨动作⟩ // [锁] ⟨动作⟩ // [幂等] ⟨动作⟩ // [策略] ⟨动作⟩ // [外调] // ═══ ② ⟨阶段名⟩ ═══ ⟨方法名⟩(): ⟨动作⟩ // [验签] ⟨动作⟩ // [MQ] ⟨动作⟩ // [落库] // ═══ ③ ⟨兜底 / 失败处置⟩ ═══ ⟨方法名⟩(): ⟨动作⟩ // [兜底] ⟨动作⟩ // [重试] 只重超时 ⟨动作⟩ // [履历] ``` **方式图例(反向索引:一种方式出现在哪些地方)** | 标记 | 方式 | 出现在 | |---|---|---| | `[锁]` | ⟨分布式锁(注解式 / Redisson)⟩ | ⟨…⟩ · ⟨…⟩ | | `[幂等]` | ⟨状态短路 + CAS + 一次性消费⟩ | ⟨…⟩ · ⟨…⟩ | | `[策略]` | ⟨策略模式 + 工厂⟩ | ⟨…⟩ | | `[MQ]` | ⟨Kafka⟩ | ⟨…⟩ | | `[兜底]` | ⟨延时队列 + XXL-Job⟩ | ⟨…⟩ | | `[重试]` | ⟨`@Retryable`(**只重超时**)⟩ | ⟨…⟩ | | `[履历]` | ⟨DB 台账⟩ | ⟨…⟩ | | `[验签]` | ⟨网关签名⟩ | ⟨…⟩ | | `[隔离]` | ⟨try-catch / 线程池⟩ | ⟨…⟩ | | `[外调]` / `[落库]` / `[通知]` | ⟨外部系统调用 / DB 写 / 站内信⟩ | 全链路 | > **这张骨架的两个用处**:① **评审时一眼看清技术分布**(⟨锁 3 处、幂等 5 处、兜底 4 处⟩);② **横向对比**"同样的机制在别处有没有用"。 --- # 二、功能点(⟨N⟩ 个) > 每个点:**核心内容** / **这个点在讲什么** / **一句话价值** / **图** / **关键片段(≤10 行伪代码)** / **关键表与字段** / **关键做法与证据**。 > **段落式**,不要压成表格("做了什么"常是 5–7 条,塞进单元格必然被简化)。 ## ① ⟨功能点名⟩ ⭐⭐⭐⭐⭐ **核心内容**:⟨1 句,把"形状"说清(一把锁 + 三级短路 + 一条条件更新)⟩ **这个点在讲什么** - **业务场景**:⟨谁在什么时刻触发了什么,为什么这事难;点出"同一时刻还有谁在改同一行数据"⟩ - **做了什么**(⟨用一句话概括做法⟩): 1. ⟨…⟩; 2. ⟨…⟩; 3. ⟨…⟩。 - **只把 fail 留给"我真的还没处理"**:⟨边界在哪⟩(若适用) - **临界场景**:⟨并发 / 乱序 / 迟到时的行为⟩(若适用) - **解决了什么问题**:⟨不做会怎样⟩ **一句话价值**:⟨说清"判断权 / 控制权"落在谁手里⟩ **图 · ⟨图名⟩** ```mermaid flowchart TD A["⟨入口⟩"] --> B{"⟨判断⟩"} B -->|"⟨…⟩"| B1["⟨抢不到锁:直接回 success,让给持锁方⟩"] B -->|"⟨…⟩"| C["⟨动作⟩"] C --> D["⟨落库⟩"] ``` **关键片段 · ⟨片段名⟩**(伪代码,只示形状) ``` ⟨CAS 语句 / 锁与短路顺序 / 状态分支 / DDL,≤10 行⟩ ``` **关键表与字段** | 表 | 关键字段 | 说明 | |---|---|---| | `⟨表名⟩` | `⟨字段⟩` · **`⟨关键字段⟩`** | ⟨说明⟩ | **关键做法与证据** | 做法 | 证据 | |---|---| | ⟨做法⟩ | `⟨简写⟩/⟨路径⟩.java:⟨行号⟩` | | ⟨做法⟩ | 同上 `:⟨行号⟩` | ⟨重复 ① 的结构,每个功能点一节⟩ --- # 三、推荐组合 | 组合 | 内容 | 适合 | |---|---|---| | **主线(推荐)** | ⟨① + ⑤⟩ | ⟨最能体现什么能力,追问密度最高⟩ | | **完整版** | ⟨① + ② + ③ + ④ + ⑤⟩ | ⟨讲清完整链路⟩ | | **差异化** | ⟨④⟩ | ⟨少数候选人会讲的点⟩ | --- # 四、设计亮点 ## 4.1 亮点(面试可直接讲) | # | 亮点 | 价值 | |:-:|---|---| | 1 | ⟨亮点⟩ | ⟨价值——**逐条对着旧实现的病灶**,不是堆框架⟩ | | 2 | | | > **本模板不设缺陷表**:缺陷、严重度与改进方案统一在《⟨主题⟩-改造方案.md》中呈现。深挖过程中发现的结构缺口先记到工作笔记,写改造方案时再展开。 --- # 附录 A · ⟨状态 / 结果类型⟩速查 | ⟨类型⟩ | 含义 | 终态? | ⟨处置1⟩ | ⟨处置2⟩ | 重试 | |---|---|:-:|:-:|:-:|---| | `⟨枚举值⟩` | | ✅ / ❌ | | | | # 附录 B · 参数速查 | 参数 | 值 | 出处 | |---|---|---| | ⟨锁 leaseTime⟩ | | `⟨路径⟩.java:⟨行号⟩` | | ⟨重试次数⟩ | | | | ⟨延时 / 超时⟩ | | | # 附录 C · 关键类索引 | 类 | 角色 | |---|---| | `⟨类名⟩` | ⟨在链路里的角色⟩ |