系统架构师备考第2篇:一个非科班十年程序员的自我救赎——恶补计算机基础知识

0 阅读1分钟

一、为啥十年了还要从头恶补计算机基础?

坦白说,打开"计算机系统基础知识"这门课的时候,我是崩溃的。

不是我不会,而是——我发现我居然都忘了。

我是个非科班出身的程序员,大学学的是信息管理,后来转行做了开发。这十年来,我一直忙着写代码、调Bug、赶项目,就像一个只顾着在前端拼命输出的"战士",早就忘了后端的"后勤补给系统"是怎么运作的。

直到我开始准备系统架构师考试,才发现——

原来,我写代码时调用的那些函数,背后是一整套计算机系统在支撑;

原来,我抱怨的"系统卡死了",底层可能只是缓存没命中的问题;

原来,我引以为傲的"代码优化",在架构层面只是沧海一粟。

于是,在这个娃午睡的下午,我决定——

把自己当成一个计算机小白,从头恶补一遍计算机基础知识。

这不是考试,这是一次十年程序员的自我救赎。

二、那些让娃都懵逼的计算机概念(搞笑科普版)

  1. 冯诺依曼的五大部件:计算机的五脏六腑

课本上说:冯诺依曼体系结构由控制器、运算器、存储器、输入设备、输出设备组成。

我的理解:这就像一个完整的家庭系统——

冯诺依曼部件

家庭角色

职责

控制器

老婆(妈妈)

统筹全局,指挥一切

运算器

老公(爸爸)

具体干活,赚钱养家

存储器

冰箱+衣柜

存放东西(数据+指令)

输入设备

娃的嘴+耳朵

接收信息(指令+数据)

输出设备

娃的哭声+笑声

表达结果(输出结果)

【家庭备考瞬间】

那天我在学"冯诺依曼体系结构",娃凑过来问:"妈妈,你在学什么?"

我说:"在学计算机的五脏六腑啊。"

"那计算机也有胃吗?"

"有啊,存储器就是它的胃,用来存数据和代码。"

"那它上厕所吗?"

"……这个,输出设备算不算?"

娃一脸嫌弃:"妈妈,你的比喻好恶心。"

我忍住笑,继续给他解释:"你看,爸爸每天去上班赚钱(运算器),妈妈在家统筹安排(控制器),我们家的冰箱和衣柜存着衣服和食物(存储器),你的嘴耳朵接收指令(输入设备),你的哭笑声就是输出设备(输出设备)——这就是一个完整的冯诺依曼体系!"

娃若有所思地点点头:"所以,我是输出设备?"

"对,你的哭声是主要的输出结果。"

"那我以后少哭一点,输出设备故障率降低。"

我笑了,突然觉得,这些抽象的概念,用家庭来类比,居然变得那么生动。

2. 存储器层次结构:从你家到超市的"距离感"

课本上说:存储器分为四个层次——片上缓存(Cache)、片外缓存、主存(内存)、外存(硬盘)。速度从快到慢,容量从小到大,价格从贵到便宜。

我的理解:这就像你买东西的"距离选择"——

存储器类型

存储类比

速度

容量

价格

片上缓存(Cache)

口袋里的零食

超快(伸手就拿到)

小(几包)

贵(进口零食)

片外缓存

餐桌上的水果

快(走几步拿到)

中等(一篮)

中等

主存(内存)

冰箱里的食物

中等(开冰箱拿到)

大(满冰箱)

便宜

外存(硬盘)

超市里的货架

慢(得开车去)

超大(整排货架)

最便宜

核心逻辑:最常用的东西放最近(Cache),偶尔用的放远一点(硬盘),这就是"存储器层次结构"的精髓——空间换时间,距离换效率。

【家庭备考瞬间】

那天我在给娃讲"Cache和内存的区别",他听得一愣一愣的。

"妈妈,我明白了!"

"哦?你明白什么了?"

"Cache就是我的玩具箱,内存是阳台的柜子,硬盘就是楼下的超市!"

"对啊!为什么最常用的玩具放玩具箱?"

"因为伸手就能拿到啊!如果玩具都放在超市,我想玩还得下楼,多麻烦!"

"那为什么不把所有东西都放玩具箱?"

"因为玩具箱太小了,放不下那么多东西!"

"对!这就是Cache的容量限制——快是快,但放不下太多东西。"

娃突然眼睛一亮:"妈妈,那我以后不用Cache了,直接放硬盘!"

"为什么?"

"因为硬盘便宜啊!"

我哭笑不得:"可是你每次玩玩具都要下楼去超市,那玩一次得多久?"

"……好吧,那我留几个最爱玩的在玩具箱,其他的放阳台。"

"对了!这就是缓存策略——只缓存最常用的数据,其他的放远处。"

那天下午,娃把他的玩具重新整理了一遍——"常用玩具"放床边的盒子,"偶尔玩的"放阳台,"很少玩的"放储藏室。

看着他认真的样子,我突然觉得,教育孩子和学技术,底层逻辑是一样的——分类、优先级、权衡。

3. 总线与接口:家里的"交通规则"

课本上说:总线是计算机部件间实现数据交换的通道,分为内总线、系统总线、外部总线。接口是不同功能层之间的通信规则。

我的理解:这就像家里的"走道"和"门口"——

计算机术语

家庭类比

内总线

家里的走廊(房间内部沟通)

系统总线

楼道(邻居间沟通)

外部总线

小区门口(进出小区的通道)

接口

门的规格(防盗门、厨房门、厕所门)

搞笑场景:老公想进卧室(访问内总线),但门锁了(接口不匹配),他得先敲门(协议握手),老婆同意才能进(数据传输)。

【家庭备考瞬间】

老公下班回来,看我对着电脑傻笑,凑过来问:"你在学什么?"

"总线。"

"什么线?"

"计算机总线——就是各个部件之间沟通的通道。"

"哦,那就像我们家门口的路?"

"对!内总线是家里的走廊,系统总线是楼道,外部总线是小区门口。"

"那接口呢?"

"接口就是门的规格啊!防盗门是安全接口,厨房门是防火接口,厕所门是……隐私接口?"

老公乐了:"那我下班回家,是不是要通过'外部总线'进入'系统总线',再通过'接口'进入'内总线'?"

"对!而且你回来晚了,妈妈会给你脸色看——这就是'总线超时'!"

"那如果我进门时摔了一跤?"

"那就是'总线故障',得重新握手(敲门)。"

老公若有所思:"所以,我家就是你个人的分布式系统?"

"对啊!你就是处理器,我是控制器,娃是输入输出设备,冰箱是存储器——完整的冯诺依曼架构!"

"那我家有Bug吗?"

"有啊,你忘记倒垃圾就是内存泄漏,娃哭个不停就是CPU死循环。"

老公沉默了三秒:"……我老婆是架构师,这日子没法过了。"

4. 文件系统:你家的"收纳柜"

课本上说:文件系统是操作系统中实现文件统一管理的一组软件和相关数据的集合,按文件性质分为系统文件、库文件、用户文件;按保护方式分为只读、读写、可执行文件等。

我的理解:文件系统就是你家的"收纳柜"——

文件类型

家庭类比

存放位置

访问权限

系统文件

老公的私房钱

隐藏文件夹

老公只读

库文件

家庭相册

公共区域

全家可读

用户文件

娃的玩具

随处散落

娃可读写

搞笑场景:老公藏私房钱时,用"隐藏文件+只读权限";老婆发现后,用"管理员权限"强制删除——这就是文件系统的安全漏洞!

【家庭备考瞬间】

那天我在整理娃的玩具,突然意识到——这不就是文件系统吗?

玩具车、积木、拼图……各种类型(文件类型)

客厅、卧室、阳台……各种目录(文件夹)

常用的放外面,不常用的收起来(存储策略)

我越整理越兴奋,忍不住给老公打电话:"老公!我明白了!文件系统的核心就是——收纳!"

老公在电话那头一脸懵:"……你现在整理玩具,还能悟出文件系统?"

"对啊!你看,娃的玩具按类型分类(文件类型),按地点收纳(目录结构),常用的放外面(缓存),不常用的收起来(外存)——这就是一个完整的文件系统!"

"那娃的玩具乱丢呢?"

"那就是文件碎片!"

"那我踩到玩具摔倒?"

"磁盘损坏!"

老公沉默了:"……你老婆现在是系统架构师,我觉得我踩到玩具不是磁盘损坏,是硬件故障。"

我笑了,突然觉得,生活和技术,本质上是一回事——分类、收纳、优化、维护。

5. 中间件:家庭的"外交部长"

课本上说:中间件是应用软件与各种操作系统之间使用的标准化编程接口和协议,包括通信处理、事务处理、数据存取管理等多种类型。

我的理解:中间件就是你家的"外交部长"——

中间件类型

家庭角色

职责

通信处理中间件

传声筒

协调老公和婆婆的沟通

事务处理中间件

管家

统筹家里的大事小情

数据存取管理中间件

会计

管钱记账

安全中间件

保安

防止外人闯入

搞笑场景:老公想买游戏机(客户端请求),老婆不同意(拒绝响应),中间件(娃)从中协调:"爸爸,你不给我买玩具,我也不给你说话"——这就是事务中间件的"事务一致性"!

【家庭备考瞬间】

那天我在学"中间件",娃跑过来问:"妈妈,什么是中间件?"

我想了想,指着老公说:"爸爸想买游戏机,妈妈不同意,你从中说情——你就是中间件!"

娃一脸自豪:"那我是外交部长?"

"对!你负责协调爸爸和妈妈的沟通,这就是通信处理中间件!"

"那我还要管钱?"

"那是数据存取管理中间件——你管你的零花钱。"

"那如果爸爸不听我的?"

"那就需要事务中间件——'要么大家都同意,要么都不行'。"

"那如果爸爸偷偷买游戏机?"

"那就是绕过中间件,直接访问——安全隐患!"

娃若有所思:"妈妈,那我以后不当中间件了,我想当控制器!"

"为什么?"

"因为控制器是指挥全局的!"

我笑了:"那你先学会统筹全局,再当控制器。现在好好当你的中间件,协调一下爸爸和妈妈的关系——爸爸想买游戏机,妈妈不同意,你怎么办?"

娃眨巴着眼睛:"我告诉爸爸,你可以买,但要给我也买一个——这就是分布式事务!"

我老公在一旁听得目瞪口呆:"……儿子,你以后比妈妈更狠。"

三、那些年我误解的计算机基础知识(避坑指南)

1. CISC vs RISC:复杂指令集 vs 精简指令集

误解:以为CISC是老古董,RISC是新技术。

真相:CISC像"瑞士军刀"——一把刀可以干很多活(螺丝刀、开瓶器、剪刀),但每种活都不专精;RISC像"工具套装"——每个工具只干一件活,但干得专精高效。

搞笑记忆口诀:

• CISC:复杂但全,像瑞士军刀,啥都会但不专精

• RISC:简单但快,像工具套装,专精但需要组合

【家庭备考瞬间】

那天我在记"复杂指令集和精简指令集的区别",娃凑过来看。

"妈妈,你在背什么?"

"背CISC和RISC的区别。"

"那是什么?"

"就像你的玩具——CISC是一个大盒子,里面有汽车、积木、拼图,什么都有,但找起来麻烦;RISC是一堆小盒子,每个盒子只装一种玩具,找起来很快。"

"哦!那我的玩具是CISC还是RISC?"

"你的玩具现在是CISC——一个大箱子装所有玩具,每次找半天。"

"那我要RISC!"

"好啊,我们把玩具分类——一个盒子放汽车,一个放积木,一个放拼图——这样找起来就快了。"

那天下午,我和娃一起把玩具重新分类装箱。最后,他看着整齐的小盒子说:"妈妈,RISC确实比CISC好用!"

我笑了:"对,这就是精简指令集的核心思想——专精、高效、快速。"

2. SRAM vs DRAM:静态内存 vs 动态内存

误解:以为静态内存和动态内存的区别是"会不会动"。

真相:SRAM像"保险柜"——数据一直保存,不需要刷新,速度快但贵;DRAM像"黑板上写东西"——数据会慢慢消失,需要不断刷新(重写),速度慢但便宜。

搞笑记忆口诀:

• SRAM:静态内存,保险柜,快但贵

• DRAM:动态内存,黑板,慢但便宜,需要"擦写保持"

【家庭备考瞬间】

那天我在给老公解释"静态内存和动态内存的区别"。

"老公,你记住——SRAM就像保险柜,你放进去的钱,一直都在;DRAM就像黑板上写字,你不擦它也会慢慢消失,需要不断重写。"

"那为什么不用SRAM?"

"贵啊!保险柜贵,黑板便宜。"

"哦,那我的钱包是SRAM还是DRAM?"

"你的钱包……如果藏私房钱,那得用SRAM——毕竟不能被老婆发现!"

老公笑了:"那我以后把私房钱写黑板上,你找不到。"

"那更惨——黑板上的字会消失,你的私房钱就丢了!"

老公沉默了:"……我还是用保险柜吧。"

3. 硬链接 vs 符号链接:文件的"身份认证"

误解:以为硬链接和符号链接都是"快捷方式"。

真相:硬链接是"同一个人,多个名字"(身份证号一样,名字可以多个);符号链接是"指向另一个人的指针"(类似微信昵称,改了还是同一个人)。

搞笑记忆口诀:

• 硬链接:身份证号一样,名字可以多个,删除一个不影响其他

• 符号链接:指针指向原文件,原文件删除,链接就失效

【家庭备考瞬间】

那天我在学"硬链接和符号链接",老公凑过来问:"这俩有啥区别?"

"硬链接就像我给你起了多个外号——老公、孩儿他爹、老王,都指向同一个人(你),删一个外号还有其他的。"

"那符号链接呢?"

"符号链接就像我写了一张纸条'见冰箱里的私房钱',你看到纸条去冰箱找,如果私房钱不在冰箱了,纸条就没意义了。"

"哦!那我的微信昵称是硬链接还是符号链接?"

"微信昵称是符号链接——你改名了,我还能通过其他方式(头像、朋友圈)找到你。"

"那我的手机号是硬链接还是符号链接?"

"手机号是硬链接——换号了,原来的号就失效了。"

老公若有所思:"那我以后换号不告诉你,是不是就创建了一个新的硬链接?"

"不,那是创建了一个新的用户——原来的你被删除了!"

老公笑了:"……我觉得我的隐私被你学了架构师后彻底暴露了。"

四、给非科班程序员的3个学习建议

基于我这"十年程序员重新学基础"的血泪经验,给同样非科班的你几个真心建议:

建议1:别死记硬背,用生活类比

计算机基础的概念,很多都可以用生活场景来类比:

• 冯诺依曼架构 → 家庭角色分工

• 存储器层次 → 从口袋到超市的距离

• 文件系统 → 家庭收纳柜

• 中间件 → 家庭外交部长

• CISC vs RISC → 瑞士军刀 vs 工具套装

这些类比,不仅帮助记忆,还能让你在考场上遇到陌生概念时,快速用类比逻辑去理解。

【家庭备考瞬间】

那天我在做选择题,遇到一道"嵌入式系统的特点"的题,我不确定答案。

突然,娃跑过来喊:"妈妈,我的小汽车不动了!"

我过去一看,发现是小汽车的电池没电了。

那一刻,我突然明白了——嵌入式系统就像这个小汽车,资源受限(电池小)、实时性要求高(不能等)、专用性强(只能跑,不能飞)。

我回到电脑前,果断选对了答案。

那一刻,我突然觉得,生活是最好的老师,只要你愿意用心去观察。

建议2:结合实际工作经验来理解

我们非科班程序员的优势是什么?是实战经验!

• 写过代码?那就理解"编译"和"解释"的区别

• 遇过Bug?那就理解"异常处理"和"错误恢复"

• 用过缓存?那就理解"Cache替换策略"

• 部署过系统?那就理解"分布式架构"和"负载均衡"

把理论知识和你的实际工作联系起来,记忆会深刻10倍。

【家庭备考瞬间】

那天我在学"操作系统的进程管理",突然想起我之前做的一个项目——

那个项目有多个任务同时执行,我当时用了多线程来解决并发问题。

现在回过头来看,这不就是操作系统的"进程调度"吗?

时间片轮转、优先级调度、短作业优先……这些我写代码时都用到过,只是不知道理论名称而已。

我突然觉得——我之前写的不是代码,是操作系统的进程调度算法!

那一刻,我对计算机基础的理解,从"记忆"升华为"融会贯通"。

建议3:不要指望一次记住,反复刷题是王道

我承认,我看过一遍计算机基础,过一周基本就忘了。

但没关系,记忆的本质就是"重复"。

我的策略是:

1. 第一遍:通读课程,理解核心概念

2. 第二遍:做章节练习,巩固重点

3. 第三遍:刷历年真题,找出高频考点

4. 第四遍:错题反复做,形成肌肉记忆

不要指望一次记住,要指望反复之后形成条件反射。

【家庭备考瞬间】

那天我在刷错题,娃凑过来问:"妈妈,你为什么要把这道题抄三遍?"

"因为这道题我错了两次,第三次我要记住。"

"那为什么还要抄第四遍?"

"因为第四次,我要形成肌肉记忆——看到题目就知道答案。"

"那妈妈,那我写错字要不要抄三遍?"

"那不是抄,是练字——写多了就记住了。"

娃若有所思:"哦!那妈妈,你刷题也是在'练字'?"

"对!练的是'技术字',练多了就成了技术肌肉记忆。"

那天下午,娃也开始反复练习他的拼音——"妈妈,我在练肌肉记忆!"

我笑了,突然觉得,学习和成长,本质上都是重复的力量。

五、写在最后:从非科班到架构师的路,没那么难

我知道,很多非科班出身的程序员,看到"计算机基础"这四个字,第一反应是——

"我大学没学过这个啊!"

"我只是写代码的,不需要懂这些吧?"

"这些理论,真的能帮我通过架构师考试吗?"

但我想说的是:非科班不是劣势,而是优势。

因为我们是从实战出发,一步步走过来的。我们写过代码,调过Bug,部署过系统,解决过实际问题——这些经验,恰恰是架构师最需要的。

计算机基础不是枯燥的理论,而是你写代码背后的"原理"。理解了这些原理,你的代码会更有深度,你的架构设计会更有高度。

从非科班程序员到系统架构师,这条路并不容易,但也绝非遥不可及。

我现在每天早起2小时,陪娃午睡时刷题,娃睡了后写笔记——这不是苦,这是成长的必经之路。

35岁又怎样?非科班又怎样?

只要你愿意重新学习,愿意从头恶补,愿意在带娃的间隙里挤时间——架构师的大门,永远为你敞开。

如果你喜欢这篇文章,欢迎关注我的备考系列。我们一起,用行动证明——非科班程序员,也能成为系统架构师!

最后说一句:如果你也是非科班出身的程序员,正在准备架构师考试,欢迎在评论区分享你的学习心得,我们一起交流,一起成长!

作者:一个35岁辞职在家的已婚已育非科班程序员,正在用系统架构师考试重构自己

备考系列持续更新中,欢迎关注交流

附:计算机基础知识高频考点速记表

考点

核心要点

记忆口诀

冯诺依曼架构

控制器+运算器+存储器+输入+输出

五大部件,缺一不可

存储器层次

Cache→主存→外存

快小贵,慢大便宜

SRAM vs DRAM

静态(保险柜)vs 动态(黑板)

静态快贵,动态慢便宜

硬链接 vs 符号链接

同人多名(硬)vs 指针(符)

硬链删除不影响,符链删除全失效

中间件分类

通信、事务、数据、Web、安全

五大类,承上启下

记住这张表,选择题至少多拿3分!