【筑基·04】你已经筑基了吗?——码农修炼体系四座地基
码农修仙传 · 筑基期 · 第4篇 我是玄芯散人,带你从炼气修到大乘。
境界标识
╔══════════════════════════════════╗
║ 筑基期 · 第4篇 ║
║ 你已经筑基了吗? ║
║ 预计阅读:8分钟 ║
╚══════════════════════════════════╝修仙引入
你是不是写了两年代码,但一被问到这些问题就卡壳:
"进程和线程到底什么区别?" "TCP三次握手为什么是三次不是两次?" "哈希表底层是怎么实现的?"
你会写代码,会调API,能搞定业务需求。但这些"基础"问题一问就懵。
你不是写不动代码,你是筑基不稳。
在码农修仙体系里,炼气期是"会写代码",筑基期是"懂原理"。两者之间有一道坎——很多人工作五年十年,实际修为还卡在炼气后期,从没真正筑基。
今天讲清楚:筑基到底要筑什么,以及怎么判断自己有没有筑基成功。
硬核主体:筑基四座地基
筑基期要打四座地基。缺任何一座,后续修为都是空中楼阁。
第一座地基:数据结构与算法
这是筑基最核心的地基。数据结构是法器,算法是功法。
为什么这么比喻?
法器是修仙者用来对敌的工具——剑、印、镜、鼎。数据结构对程序而言就是工具——数组、链表、树、图、哈希表。你用什么数据结构,决定了你的程序能怎么操作数据,就像修仙者用什么法器,决定了能打什么仗。
功法是修仙者修炼的内核——决定了灵气怎么运转。算法对程序而言就是内核——决定了计算怎么进行。排序、查找、动态规划、贪心,这些是程序运转的内在逻辑。
判断你是否筑基成功的标准:
问你一个问题——给你一个无序数组,要找出第K大的元素,你怎么做?
- 炼气期回答:排序,然后取第K个。时间复杂度O(n log n)。
- 筑基期回答:用小顶堆,维护K个元素,O(n log k)。
如果你想到的是前者,你还在炼气期。如果你能解释为什么堆更优,并且知道堆的底层是怎么实现的(完全二叉树+数组存储),你的数据结构与算法地基筑成了。
筑基丹(学习资源):
- 《算法导论》——经典但厚重,选读
- MIT 6.006(B站有中文字幕版)——视频课程,更直观
- LeetCode刷题——实战验证,按专题刷
第二座地基:操作系统
操作系统是天道规则。 它决定了所有程序运行的基本法则——谁能用CPU、谁能用内存、谁能读写文件。不管你写什么代码,都在操作系统定的规则里活动。
筑基期不需要你懂内核源码,但要懂这几个核心概念:
进程与线程。 进程是独立运行的程序实例,线程是进程内的执行单元。一个进程可以有多个线程,共享进程的资源。
为什么这重要?因为你写的每一行代码都跑在某个线程里,理解线程调度才能理解为什么并发会有问题——为什么需要锁,为什么会有死锁,为什么volatile不够用。
内存管理。 虚拟内存、分页、内存映射。你new一个对象,底层发生了什么?为什么Stack Overflow和OutOfMemoryError是两种不同的错误?理解这些,你才能写出内存高效的代码,才能调优性能问题。
文件系统与IO。 文件本质是什么?读写文件时操作系统做了什么?为什么IO慢,怎么优化?这些知识在写高性能应用时至关重要。
判断你是否筑基成功的标准:
问:你写的程序从"点击运行"到"输出结果",中间发生了什么?
- 炼气期回答:程序跑起来了,出了结果。
- 筑基期回答:操作系统创建进程,分配虚拟内存空间,加载可执行文件到内存,CPU从入口点开始执行指令,遇到系统调用时切换到内核态,结果通过IO输出到终端或文件。
如果你能把这个链路大致讲清楚,操作系统地基筑成了。
筑基丹:
- 《操作系统导论》(OSTEP)——免费在线,讲得最通透
- 《深入理解计算机系统》(CSAPP)——不只是操作系统,是整个计算机系统的底层认知
第三座地基:数据库
不是"会用SQL",是"懂原理"。
会写SELECT、JOIN、GROUP BY,这是炼气期。筑基期要懂:
索引。 B+树是什么,为什么数据库索引用B+树而不是二叉搜索树?聚簇索引和非聚簇索引的区别是什么?什么时候索引会失效?
这些问题不是空谈——你线上SQL慢了,不懂索引原理,你连explain出来的执行计划都看不懂,怎么优化?
事务。 ACID是什么?隔离级别有哪几种?为什么默认隔离级别是RC或RR?MVCC怎么实现的?
这些在写并发逻辑、处理数据一致性时是核心知识。
判断你是否筑基成功的标准:
问:一张1000万行的表,SELECT * FROM users WHERE age = 25,怎么判断这个查询会不会走索引?
- 炼气期回答:应该会吧。
- 筑基期回答:看WHERE条件字段有没有索引,看字段选择性高不高,用EXPLAIN看执行计划,看type是不是ref/range,看扫描行数估算。
如果你能答出这个链路,数据库地基筑成了。
筑基丹:
- 《MySQL技术内幕:InnoDB存储引擎》——讲InnoDB实现原理
- 《数据库系统概念》——经典教材,讲通用数据库原理
第四座地基:计算机网络
网络是修仙界的传送阵。 现代应用几乎没有不联网的,不懂网络,你写的每一个接口都像黑盒——不知道数据怎么出去,怎么回来。
筑基期要懂:
TCP/IP。 为什么TCP要三次握手?为什么断开要四次挥手?TIME_WAIT是什么,为什么要有?这些不是八股文,是线上故障排查的基础——端口耗尽、连接超时、半连接队列,都跟这些概念有关。
HTTP。 HTTP/1.1、HTTP/2、HTTP/3的区别?Cookie、Session、Token的区别?HTTPS的握手过程?GET和POST的本质区别不是"一个传参一个传body"。
判断你是否筑基成功的标准:
问:浏览器输入URL到页面显示出来,中间发生了什么?
- 炼气期回答:发请求,服务器返回HTML,浏览器渲染。
- 筑基期回答:DNS解析→TCP三次握手→TLS握手(HTTPS)→发HTTP请求→服务器处理→返回响应→浏览器解析HTML→构建DOM树和CSSOM→布局→绘制→合成。每一步如果展开,都能讲出细节。
如果你能把这个链路讲清楚,知道每一步可能的性能瓶颈在哪,网络地基筑成了。
筑基丹:
- 《计算机网络:自顶向下方法》——从应用层往下讲,最易懂
- 《图解HTTP》——入门级,适合快速过一遍
修仙术语对照表
| 修仙概念 | 技术现实 | 一句话解释 |
|---|---|---|
| 法器 | 数据结构 | 程序操作数据的工具(数组、链表、树、图、哈希) |
| 功法 | 算法 | 计算进行的内在逻辑(排序、查找、DP、贪心) |
| 天道规则 | 操作系统 | 所有程序运行的基本法则(进程、内存、IO) |
| 传送阵 | 网络 | 连接不同系统的通道(TCP/IP、HTTP) |
| 灵根 | 编程天赋 | 逻辑思维、数学基础、抽象能力 |
| 筑基丹 | 学习资源 | 帮助突破境界的经典教材和课程 |
突破条件
四座地基都筑成了,就算筑基成功。但筑基不是终点,是起点。
筑基之后,你要能回答一个核心问题:你写的代码,从源码到运行,中间发生了什么?
这个问题展开就是一篇完整文章——编译、链接、加载、执行。这是从筑基期突破到金丹期的关键:从"懂各部分原理"到"理解各部分怎么串起来"。
下一篇讲这个链路:你的代码在CPU里到底跑了一圈——从源码到执行的完整链路。
下期预告 + 互动
下一篇:【筑基·05】你的代码在CPU里到底跑了一圈——从源码到执行的完整链路
现在问你:你现在处于哪个境界? 是还在炼气期写业务代码,还是已经筑基懂原理了?还是卡在某个地基上?评论区聊聊。
我是玄芯散人,带你从炼气修到大乘。
本文是「码农修仙传」系列第4篇。系列导航见 xren.ren