学习底层技术的必要性

所谓底层软件,就是被应用层软件依赖的软件。比如数据库,缓存,网络服务器等。程序员如果走技术路线,离不开底层知识。因为学习底层知识可以:

通过动手做项目来学习底层开发

编程是实操技能,所以要结合项目来学习。比如手写数据库,Redis,HTTP服务器。

学习路线

各种底层软件涉及到的知识,主要分成这几块:

作者挑选了一些“从0开始实现X”的项目和教程,全面覆盖这些知识。这些项目既是一个循序渐进的学习途径,也是自身能力的证明。完成其中任何一个都会让你在求职时脱颖而出。

项目1:从0开始实现 Redis

Redis 涵盖的底层知识较广:Linux API、网络编程、数据结构等。网上有个高质量教程:

项目2:从0开始写数据库

很多复杂的底层技术背后的原理其实都不难。比如数据库原理,虽然网上有各种理论资料,但很多都是管中窥豹。能教你完整的实现一个数据库的教程不多见。但根据作者的实践,只需3000行代码,就可以实现核心功能(SQL,储存,索引,并发)。

项目3:编译器/解释器

通过自己创造一门编程语言,来学习计算机如何运作、学习汇编、深入理解编程语言。