主线学习路径
按此路径学习,约8-10周建立完整的计算机科学思维体系。
阶段一:建立底层认知(2-3周)
目标:理解计算机如何执行代码、管理内存、处理并发
第1周:程序执行全流程
学习内容:
实践任务:
- 用
go build、readelf、objdump分析你的Go可执行文件 - 尝试画出从
main.go到进程运行的完整流程图
里程碑:能不看教材画出”源码→编译→链接→装载→运行”的完整流程
第2周:内存与地址
学习内容:
实践任务:
- 写Go程序打印变量地址,观察栈和堆的分配
- 用
go tool compile -S查看汇编输出中的地址引用
里程碑:能解释”指针就是一个存储地址的变量”背后的完整机制
阶段一检验
完成以下自测题,如果都能回答,恭喜通过:
- 从源码到运行经历了哪些步骤?每步做了什么?
- 符号解析和重定位分别解决什么问题?
- 虚拟内存的核心意义是什么?
- 进程内存中,代码段、数据段、堆、栈分别存什么?
- Go默认是静态链接还是动态链接?为什么?
阶段二:掌握工程模式(3-4周)
目标:学会解决实际工程问题,建立模式库
第3-4周:一致性问题
学习内容:
实践任务:
- 实现一个带延迟双删的Redis缓存方案
- 用goroutine模拟并发场景,验证不一致问题
- 对比不同方案的延迟和一致性表现
里程碑:能独立设计一个缓存更新策略,并解释为什么选择该方案
第5周:并发控制与分布式锁
学习内容:
实践任务:
- 实现Redis分布式锁(含续租、释放安全性)
- 对比Redis锁和Etcd锁的优缺点
里程碑:能说出3种分布式锁方案的适用场景
第6周:可靠性设计
学习内容:
实践任务:
- 设计一个幂等的支付接口
- 实现token-based幂等控制
里程碑:遇到”重复请求”问题能立刻想到幂等性设计
阶段二检验
- Redis和DB不一致时有哪些解决方案?各自的权衡是什么?
- 延迟双删的延迟时间怎么确定?
- 分布式锁用Redis还是Etcd?取决于什么?
- 什么是幂等性?如何设计幂等接口?
- 能设计一个综合使用缓存、分布式锁、幂等性的系统吗?
阶段三:构建理论思维(2-3周)
目标:建立系统思维,理解设计背后的根本权衡
第7周:抽象与一致性
学习内容:
思考任务:
- 列出你在工作中接触到的3个抽象层次
- 画出一致性模型谱系图(从线性一致性到最终一致性)
里程碑:能从”抽象层次”视角解释复杂系统
第8-9周:系统思维
学习内容:
思考任务:
- 找出CPU缓存和分布式缓存的3个相似原理
- 写一篇短文:为什么计算机科学中到处都是权衡?
里程碑:能将计算机思维应用到技术方案评审中
阶段三检验
- 强一致性、顺序一致性、最终一致性有何区别?现实系统用哪种?
- CAP定理说的是什么?在实际中如何权衡?
- 从CPU缓存到分布式缓存,有什么共同的原理?
- 能从”权衡”视角分析一个你用过的系统的设计决策吗?
完成后,你将获得
- 系统化知识:从硬件到分布式系统的完整认知链条
- 工程判断力:面对问题能列出多种方案并分析权衡
- 理论思维:能从第一性原理分析问题本质
- 跨领域能力:能将计算机思维应用到其他领域