分析
-
已经在多个核心场景中完成了从"零散知识点"到"结构化思考"的初步转变。最大的进步在于敢于质疑权威方案(如质疑九宫格在SLG中的适用性、指出MQ不适合实时有序场景),并能主动识别自己的知识盲区(如"对保证响应时间没思路""对顺序约束没思路")。
-
暴露了一些系统性的不足:缺乏将业务问题抽象为通用模式的习惯,导致面对新场景时仍会陷入"不知从何下手"的困境。
-
知道很多技术名词,但到了实际设计时,大脑一片空白,不知道用哪个、怎么用、为什么用。根本原因是我的知识结构是点状的、孤立的,缺少一张"技术 → 问题 → 场景"的映射网络。
缺乏
- 思维维度缺失
- 缺乏问题归类:面对新系统(如联盟领地),没有第一时间将其拆解为"生命周期管理"、"广播风暴"、"并发控制"等通用问题类型,导致方案显得零散。
- 缺乏约束映射:没有明确列出核心约束(如"实时性<50ms"、"数据不膨胀"),也没有将约束与技术选型(如超时熔断、冷热分离)进行一一对应。
- 容灾与降级空白:方案只描述了"正常怎么跑",没写"宕机了怎么办"、"网络堵了怎么降级"(如视野同步堵塞的应对策略)。
- 生命周期简陋:赛季化处理仅停留在"存快照、淘汰旧数据",缺失了重置、继承、结算等核心环节。
- 技术深度单薄
- 知其然不知其所以然:提到了"分布式锁"、"位运算"、"AOI",但没有说明具体解决什么痛点,遇到冲突时如何取舍(例如:为什么用Redis SetNx而不是悲观锁?)。
- 方案停留在表面:例如领地占领,只说了"用分布式锁",没提"战斗胜利与占领状态的原子性如何保证"(如结合本地消息表)。
- 方案描述方式问题
- 只有结论,没有推演:例如"使用灯塔aoi...实现视野共享",缺乏"为什么选AOI"、"不用全图广播"的对比推演。
- 缺乏结构化对比:方案一和方案二(如果有)之间没有明确的维度对比(如性能、复杂度、一致性)。
- 优劣分析浅显:劣势中提到了"网络堵塞",但没有给出解决该劣势的备选方案或降级策略。
- 决策理由单薄:决策卡上的理由只是简单罗列(如"有较为高效的联盟职权判断"),缺乏说服力。
核心技术-问题-场景映射表
xxx
深度学习计划:从"知道"到"会用"
- 对每个技术,做一次"深度卡片"
选一个技术(如乐观锁),按照以下格式手写一张卡片:
技术名称:乐观锁
核心原理:版本号CAS
解决的问题:并发写冲突
典型场景:行军状态更新、资源采集
为什么选它:冲突率低,无锁开销
不选它的理由:冲突率高时重试浪费,此时应选分布式锁
实现细节:update table set version=version+1 where id=? and version=?
常见坑:版本号用整数而非时间戳(避免时钟偏差);重试次数限制
每天做一个技术,一周做完上面8个核心技术。
- 回到过去的决策卡,补全"为什么选它"
拿出第18-24天的决策卡,在每一个技术选型旁边写下:
- 为什么选这个技术?(对应上面的"为什么选它")
- 为什么不选另一个?(如"不选MQ是因为实时性要求高,MQ有延迟")
这个过程会把你的知识从"点状"变成"网状"。
- 做"反向练习"
给自己出题:"如果要解决XXX问题,有哪些技术可选?各自的优缺点?"
例如:
问题:防止同一行数据被并发覆盖。
可选:乐观锁、悲观锁(SELECT FOR UPDATE)、分布式锁(Redis SETNX)、应用层CAS(compare-and-swap)。
比较:乐观锁适合低冲突,悲观锁适合高冲突且短事务,分布式锁适合跨进程,应用层CAS适合内存变量。
这样你就建立了"问题→多个方案→选型决策"的思维路径。
决策卡模板调整
## 场景与核心约束
* 业务场景:[描述具体场景,如联盟领地争夺]
* 硬约束:[列出2-3个核心约束,如:领地归属唯一、数据不无限膨胀、视野同步低延迟]
## 通用问题归类
* [ ] 时间驱动(如行军/资源产出)
* [x] 生命周期管理(如赛季化)
* [x] 广播风暴/大规模同步(如视野共享)
* [x] 并发与原子性(如领地占领)
* [ ] 事件幂等与可靠性
## 方案设计
* [技术选型1]:[具体实现逻辑](解决[某约束/某通用问题])
* [技术选型2]:[具体实现逻辑](解决[某约束/某通用问题])
* 数据一致性/容灾:[描述跨服务一致性方案及降级策略,如MQ最终一致+限流降级]
## 方案对比与决策
| 方案 | 优点 | 缺点 | 决策理由 |
|------|------|------|----------|
| 方案一 | ... | ... | 选中:因为... |
| 方案二 | ... | ... | 弃用:因为... |
## 容灾与降级
* [描述异常场景下的兜底方案,如:视野同步拥塞时降级为离线拉取]