Skip to content

【筑基·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

玄芯散人 · 带你从炼气修到大乘