今年的书单!
大家好,我是二哥呀。
其实很早之前就想写一篇了,但一直拖到现在。
年初的时候就给自己定了一个很宏大的目标,今年一定要静下心来去多读几本书,不管是计算机方面的,还是人文社科方面的。
但在执行的过程中,还是有一些拖沓,这里就不提了!
前几天,和飞哥(开发内功修炼的作者,点击下方的名片可以关注)聊天,无意中翻到他的一篇旧文,里面列举了一些非常不错的计算机书籍,我就重新整理了一下,来分享给大家。
一、计算机系统
1. 《现代操作系统(第3版)》
这本书是操作系统领域的经典之作。把操作系统的经典概念都基本讨论全了:进程、线程、存储管理、文件系统、I/O、死锁等等。不过该书过于全面,也过于理论,适合入门。
2.《深入理解计算机系统(原书第3版)》
这本书我本人真的是非常喜欢,经常会回头去翻一翻,上次直播抽奖送的也是这本。它对于想理解你写出来的程序是怎么跑起来的同学真是的太合适了。里面推荐价值比较高的几块。一是存储器层次结构,这块内容对于理解CPU的缓存非常有好处。二是虚拟内存,看完这块能帮助理解开发手中用的内存地址是怎么转化到物理内存地址的。你也将彻底弄清楚页表、TLB缓存等概念。程序执行原理你都清楚了,还愁优化不了性能吗?
3.《计算机组成与设计:硬件/软件接口(原书第5版·RISC-V版)》
如果不满足于内核层面的内功,还想了解了解硬件方面是怎么运行的,那这本书非常适合你。他是 图灵奖得主 Patterson 和 Hennessy 一起写,计算机体系结构领域的经典书籍,读完它你将能更深刻地理解 CPU 是怎么工作的。
4.《现代操作系统:原理与实现》
这本书将击碎你对国人写的书就是差的刻板印象,豆瓣 9.2 分能证明他的质量。区别于其它的操作系统类书,它搭配了 ChCore课程实验,我觉得非常难得。另外它还介绍了 CPU 虚拟化,内存虚拟化、IO 虚拟化和中断虚拟化原理。
5. 《编译原理(原书第2版)》
如果你好奇于你写的代码如何编译成计算机可运行的代码的,那么你需要了解编译原理。这本是编译领域无可替代的经典著作,被广大计算机专业人士誉为“龙书”的最新版本。
二、Linux 系统
1. Linux 源码
是的,我第一个要推荐的并不是书,而是 Linux 的源代码。个人觉得它是最重要的学习资料,你可以到这里去下载。
地址:https://mirrors.edge.kernel.org/pub/linux/kernel
2.《Linux环境编程:从应用到内核》
这本书是一位读者推荐给我的,我读完以后确实感觉大有收获。对于我来说,我更想理解 Linux 环境编程及其背后的工作机制。这本书从应用出发,深入内核源码,研究 Linux 各接口的工作机制和原理,让读者不仅知其然,还知其所以然。市场上唯一一本将Linux应用态与内核态相结合的技术图书,让你有种通透的感觉。
3.《Linux 高性能服务器编程》
性能是服务器相关开发运维都必须要关注的重点问题。这本书先对Linux服务器编程的核心基础——TCP/IP 协议进行了深入的解读。接着又对高性能服务器编程的核心要素进行了全面深入的剖析,包含Linux网络编程API、高级I/O函数、I/O复用、信号、定时器、高性能 I/O 框架库Libevent、进程池和线程池等等。
4. 《Linux 内核设计与实现(原书第3版)》
这本书全面介绍了 Linux 的进程管理、进程调度、时间管理和定时器、系统调用接口、内存寻址、内存管理和页缓存、VFS等主题。唯一的缺点就是基于的内核版本有点老,不过鱼和熊掌无法全得。
5. 《深入理解 Linux 内核(第三版)》
这本书也是我参考的比较多的,同样基于 Linux 2.6 的内核。
6. 《性能之巅》
服务器端工程师的一大能力体现就是对性能的把握,重视性能的你怎么能少的了性能之巅。
7.《BPF之巅》
BPF 是近年来 Linux 系统技术领域的一个巨大创新。从 2017 年开始,它出现的频率越来越高,目前已经有互联网巨头公司开始将它应用于生产环境。这本书和性能之巅是同一个作者,是一本全面介绍 BPF 技术的图书。
三、计算机网络
1. 《计算机网络:自顶向下方法》
这本书从应用层的协议出发,一步步往底层走,很符合正常开发的思维。而且还搭配了 wireshark 实验。如果你只能选一本网络方向的书的话,那么必须选它!
2、《TCP/IP详解 卷1:协议(原书第2版)》
这是一本完整而详细的 TCP/IP 协议指南,把 arp、ip、tcp、udp 都介绍的透透的。也介绍了 Linux 上可用的 ping、traceroute 等网络分析工具。也是非常值得通读的一本。
四、开发语言类
1、《C程序设计语言(第2版·新版)典藏版》
由于内核的源码都是 C 语言实现的,所以如果你对 C 理解起来有困难的话,那么你可能需要它来帮助你。国内的很多 C 语言相关的教材都是参考的它。
2、《Go程序设计语言》
Golang 目前越来越流行了,各大互联网公司也都开始了应用。所以这里选本黑皮书推荐给大家。
3、《Go语言高级编程》
不仅仅只介绍基础的语法,还涵盖了 gRPC、Web 系统以及分布式方向的技术。
4、《深入理解Java虚拟机》
如果你想成为高级别的工程师,或者想进入大厂,那么必须要理解 Java 虚拟机。这本书可以说是讲解 Java 虚拟机的经典了,第三版大幅更新50%以上内容,值得所有Java技术人员一读再读。
5、《Java 并发编程实战》
Java 并发编程是 Java 体系中非常难的一块内容,非常考验一个程序员的内功,因为会涉及到 CPU、内存管理等知识点。
五、架构与模式
当我们具备了深厚的内功基础以后,我们的地基就很结实、很稳固了。这个时候我们可以考虑来在这个基础上搭建我们富丽堂皇的技术大厦,比如软件架构。
1、《设计模式:可复用面向对象软件的基础》
在开发界,虽然大家各自的业务都有所不同,但其实是可以有一些共同的设计上的东西存在的。这就是设计模式。凝聚了软件开发界几十年的设计经验,它们中的某个可能能帮你解决你在设计时遇到的一些难题。
2.《写给架构师的 Linux 实践》
这是一本新书。它把现代项目架构实践中经常用到的 GlusterFS、Kubernetes、Elastic Stack 都介绍了一遍,还分析了 CPU 数量、文件系统缓存等对它们性能表现的影响。
3、《微服务架构设计模式》
目前微服务也越来越流行了,所以这方面的资料也有必要储备一下。这本书将教会你如何开发和部署生产级别的微服务架构应用,帮助你设计、实现、测试和部署基于微服务的应用程序。涵盖44个架构设计模式,系统解决服务拆分、事务管理、查询和跨服务通信等难题。
4、《Go微服务实战》
目前 Go 越来越流行了,不过用 Go 来进行微服务的书貌似一直是一个空缺。正好最近我发现了这本书,翻了一下目录觉得讲述的很全面。它把微服务理论、gRPC、Docker、日志和监控、持续交付等方面都介绍到了,可以尝试一下。
5、《架构即未来(原书第2版)》
在公司里的架构,很多时候不仅仅是软件的问题,还牵涉到人和管理。这本书阐述人,管理,过程,组织架构再到技术架构设计对高可用系统和产品的影响。你可以利用其中的工具和建议,在你的技术和业务上取得成功,适合从技术岗转型到管理岗的同学读。
也欢迎大家在评论区分享出你们觉得不错的书单,一起交流看看。
读书恐怕是人这一辈子当中最值得去做的一件事情了,因为书籍里面蕴藏的是智慧的结晶。虽然这是一个视频爆炸的时代,但有一说一,视频的内核仍然是文字的功底。
如果你有时间,有精力,不妨停下来脚步,认真地读一读这些计算机方面的经典书籍。飞哥是一个非常硬核的男人,所以这里面包含了不少Linux 内核方面的书籍,可以说是一个内核男人的必备素质。
好了,希望大家在读书的时候能获得平静和踏实,忘掉压力和焦虑。
我们下期见~