计算机底层基础:编译原理 · 操作系统 · 计算机网络 — 学习路线图
第三阶段补充一:资深工程师底蕴 面向:初级 H5 游戏程序员 | 前置:第一阶段 + 第二阶段 预计学习时间:3-4 个月
这个项目是什么?
前两个阶段你学了"怎么做":前端优化、后端开发、架构设计。但有个问题——你理解的都是"别人封装好的东西"。
- 你用 V8 引擎,但不知道编译器怎么把源代码变成机器码
- 你用线程池,但不知道操作系统怎么调度线程
- 你用 WebSocket,但不知道 TCP 为什么会队头阻塞
本项目补的就是"底层理解"。 学完后你会发现:
- 以前觉得 V8 编译流水线是黑魔法,现在和编译原理对照后一目了然
- 以前觉得 JVM GC 参数不知道怎么调,现在理解了操作系统内存管理后调起来有底气
- 以前觉得网络问题只能碰运气,现在能从协议层面分析根因
核心理念:底层原理不会直接让你写出更好的代码,但能让你在遇到问题时快速定位根因,而不是瞎猜。
学习路线
第01章:编译原理深度理解 ── 词法分析 → 语法分析 → 语义分析 → IR → 代码生成
│ 理解编译器的核心流程,才能看懂 V8 编译流水线
▼
第02章:链接器与加载器 ── 静态链接 vs 动态链接 · 符号解析 · 重定位
│ 理解编译产物怎么变成可执行文件,才能排查链接问题
▼
第03章:操作系统核心原理(进程与线程)── 调度 · 上下文切换 · 进程间通信
│ 理解 CPU 调度和线程模型,才能优化并发程序
▼
第04章:操作系统核心原理(内存管理)── 虚拟内存 · 分页 · 页表 · TLB
│ 理解内存管理,才能理解 GC 和内存泄漏的底层机制
▼
第05章:操作系统核心原理(I/O与文件系统)── I/O模型 · inode · 日志文件系统
│ 理解 I/O 模型,才能理解 Node.js/Netty 的事件循环
▼
第06章:TCP/IP 协议栈深度 ── 滑动窗口 · 拥塞控制 · 连接状态机
│ 理解 TCP 协议,才能排查网络延迟和拥塞问题
▼
第07章:UDP 与可靠传输 ── QUIC协议 · 自定义可靠UDP
│ 理解 UDP 和 QUIC,才能理解为什么游戏用 UDP
▼
第08章:HTTP/2 与 HTTP/3 ── 多路复用 · 头部压缩 · 服务器推送
│ 理解 HTTP 演进,才能优化游戏资源加载
▼
第09章:网络安全基础 ── TLS握手 · 证书链 · 中间人攻击
│ 理解网络安全,才能保护游戏通信安全
▼
第10章:实战篇:用底层知识排查游戏问题
把前面学的知识串起来,变成可落地的排查能力
章节详细目录
| 章节 | 文件 | 核心内容 | 关键实践 |
|---|---|---|---|
| 第01章 | 01-编译原理深度理解/01-编译原理深度理解.md | 词法分析、语法分析、语义分析、IR、优化Pass、代码生成 | 手写词法分析器+递归下降解析器 |
| 第02章 | 02-链接器与加载器/01-链接器与加载器.md | 静态链接vs动态链接、符号解析、重定位 | objdump/nm/readelf分析目标文件 |
| 第03章 | 03-操作系统进程与线程/01-操作系统进程与线程.md | 进程模型、上下文切换、调度算法、IPC | 多线程程序+生产者消费者模型 |
| 第04章 | 04-操作系统内存管理/01-操作系统内存管理.md | 虚拟内存、分页、TLB、页面置换、大页面 | pmap观察进程内存+大页面测试 |
| 第05章 | 05-操作系统IO与文件系统/01-操作系统IO与文件系统.md | 五种I/O模型、epoll、inode、日志文件系统 | strace跟踪系统调用+epoll性能对比 |
| 第06章 | 06-TCPIP协议栈深度/01-TCPIP协议栈深度.md | TCP状态机、滑动窗口、拥塞控制、队头阻塞 | Wireshark抓包分析TCP |
| 第07章 | 07-UDP与可靠传输/01-UDP与可靠传输.md | UDP特点、QUIC协议、0-RTT连接 | curl --http3测试+手写可靠UDP |
| 第08章 | 08-HTTP2与HTTP3/01-HTTP2与HTTP3.md | HTTP演进、多路复用、HPACK头部压缩 | DevTools查看HTTP/2流+Nginx配置 |
| 第09章 | 09-网络安全基础/01-网络安全基础.md | TLS握手、证书链、常见攻击与防御 | openssl连接HTTPS+Wireshark分析TLS |
| 第10章 | 10-实战篇用底层知识排查游戏问题/01-实战篇用底层知识排查游戏问题.md | 卡顿排查、消息延迟排查、内存增长排查 | 底层知识图谱+实战案例分析 |
前置知识
你不需要是计算机专业,但需要以下基础:
- 编程基础:能写简单的JavaScript/Java程序
- 数据结构基础:了解数组、链表、树的基本概念
- 网络基础:了解HTTP、TCP/IP的基本概念
- Linux基础(推荐):会基本的Linux命令
如果你没有这些基础,本系列会从最基础的概念开始讲解。
核心概念:底层原理是通用的
为什么学底层原理?
1. 技术迁移能力
学会了TCP拥塞控制,理解任何网络协议都容易
学会了进程调度,理解任何并发模型都容易
2. 问题排查能力
不懂底层,遇到问题只能"试试看"
懂底层,能从原理层面分析问题根因
3. 技术选型能力
不懂底层,只能"别人用什么我用什么"
懂底层,能根据原理判断技术优劣
4. 学习能力
不懂底层,新技术出来要重新学
懂底层,新技术只是底层原理的新应用
学习建议
初学者必看
- 不要被术语吓到:每个术语都有生活化比喻
- 先理解概念:不要一上来就深究细节
- 画图辅助:进程、内存、网络,画图比文字更直观
- 联系实际:每个概念都联系到实际开发场景
- 动手实验:用代码验证理论
进阶学习
- 读经典书籍:《CSAPP》、《编译原理》、《TCP/IP详解》
- 看源码:V8源码、Linux内核源码、Chromium源码
- 做实验:写一个简单的编译器、实现一个简单的OS
时间规划
| 周期 | 学习内容 | 每日投入 |
|---|---|---|
| 第1~3周 | 01~02章:编译原理+链接器 | 3小时/天 |
| 第4~6周 | 03~05章:操作系统 | 3小时/天 |
| 第7~9周 | 06~09章:计算机网络 | 3小时/天 |
| 第10周 | 第10章:实战篇 | 3小时/天 |
与其他学习项目的关系
| 本项目内容 | 关联项目 | 关联点 |
|---|---|---|
| 编译原理 | 2_1_v8Learn | V8 编译流水线是编译原理的完整实现 |
| 操作系统内存 | 2_3_browser-memory-mastery | 虚拟内存是浏览器内存的底层机制 |
| I/O 模型 | 3_1_java-backend-deep-dive | Netty/NIO 基于操作系统 I/O 多路复用 |
| TCP/IP | 4_1_game-architecture | 网络同步基于 TCP/UDP 协议 |
| 链接器 | 2_1_v8Learn | V8 编译产物的链接过程 |
| TLS | 3_1_java-backend-deep-dive | 游戏通信安全 |
学习资源推荐
书籍
- 《深入理解计算机系统》(CSAPP)- Randal E. Bryant
- 《编译原理》(龙书)- Alfred V. Aho
- 《操作系统概念》- Abraham Silberschatz
- 《TCP/IP详解》- W. Richard Stevens
- 《现代操作系统》- Andrew S. Tanenbaum
在线资源
- CSAPP配套实验(http://csapp.cs.cmu.edu/)
- MIT 6.828操作系统课程
- Stanford CS144计算机网络课程
常见问题
Q:我不是计算机专业,能学懂这些吗?
A:能!本系列假设读者没有计算机专业背景,从最基础的概念开始讲解。每个概念都有生活化比喻和代码示例。
Q:这些内容太深奥,对游戏开发有用吗?
A:非常有用!
- 编译原理:理解V8、Webpack、Babel的工作原理
- 操作系统:理解进程、线程、内存管理
- 网络:理解TCP、WebSocket、HTTP的工作原理
Q:学完能达到什么水平?
A:能达到资深工程师的底层知识水平。面试时能从原理层面回答问题,遇到复杂问题能从底层分析。
Q:需要学多久?
A:建议2-3个月。每天投入2-3小时,认真学完所有章节。
文档版本:2026年4月(精品合并版) 目标受众:初级 H5 游戏程序员 → 资深游戏开发者/架构师 前置项目:第一阶段 + 第二阶段 核心认知:底层原理不会直接让你写出更好的代码,但能让你在遇到问题时快速定位根因