下面列了我读过的一些编程相关的书籍,写了一些对书的印象,都是个人观点。书名后是我个人对书的推荐强烈度打的分(5分满分),都是拍脑袋打的。

我比较习惯读纸质书,买书也比较谨慎,踩的坑少(围笑),分打得可能比较高一些。

操作系统


《Linux内核设计与实现》5分:全书都在讲 Linux 内核的设计思想,实现并不多,作为操作系统的入门书非常适合。没有很多复杂的接口,思想也容易理解。对我个人来说,解开了我很多对操作系统运行的疑惑,也对编程很有借鉴意义。建议对操作系统不清楚的早读这本书。(2018)

《Unix环境高级编程》4分:著名的 APUE,编程刚入门时看的,当时没什么基础,详细内容忘得差不多了,印象很深的就是文件操作接口的参数很多。书里介绍了很多操作系统常用接口,新手可以大概看一遍对系统提供的接口有个印象。我准备再读一遍。(2016)

《Unix网络编程 卷二 进程间通信》5分:把 UNP 放在这里是因为卷二讲了很多系统内部的 IPC,一直在用的 unix domain sockets 是真神器,推荐后端工程师一定要看这本书。(2016)

《深入理解计算机系统》3分:好像是一本用来作课本的书,全书确实讲了整个计算机系统,以操作系统为界分为上中下三篇,上篇讲操作系统以下,包括计算机体系结构、机器级的信息和存储体系等(略翻过的,看得有点懵),中篇讲操作系统的进程及内存管理,下篇则偏向于操作系统之上的内核接口和并发编程的相关知识。比较佩服用本书作课本的学校,一本书讲了我们四本书的知识。但总的来说,收获不大,上篇对程序员透明可以不多作过多了解,中篇不如《Linux内核设计与实现》全面,下篇则不如《Java并发编程实战》和《UNP》等书,全而不精,不太推荐看。(2017)

《性能之巅》5分:著名性能大神 Brendan Gregg 的大作,600 页的大部头,不过作为非原理性书籍,知识点并不“深奥”。这本书从内存、CPU、网络等各个方面总结了排查性能问题的方法,由名词概念到 Linux 命令再到结果分析,把原本非常散乱的知识系统化了。排查性能问题之前,如果读过这本书,应该会少走很多弯路。(2019)

《树莓派开始,玩转Linux》3分:由《协议森林》关注了作者。买这本书因为看目录觉得从硬件到系统讲得都很全,到手之后发现知识点全则全矣,深度却不够,像系统中极重要的”虚拟内存”的概念,本书只介绍了两三页,由于我之前对系统知识有了一定的了解,所以会觉得收获不够。不过算是很系统的书了,适合系统初学者读,对我来说,等玩起树莓派后可以作为工具书。(2018)

《程序员的自我修养—链接、装载与库》3分:除了名字很奇怪,整体很系统、有深度一本书。为了讲清楚库的加载与链接,补充了虚拟内存的知识,为了讲代码的执行过程,又添加了很多汇编语言的内容。但由于想兼顾 windows 和 linux,章节有点割裂。(2019)

网络


《TCP/IP详解 卷一》5分:从链路层到传输层把各种网络协议都介绍了一遍,TCP 的各种实现也讲得非常细,新手可以略翻一下理解一下网络。对应用层协议熟悉了之后再回过来仔细读一下本书。(2016)

再读:4分 又带着一些问题更深入细节翻了一遍,对比看过的各种博客,细节上不输,全局观上更是完胜,只是少了些开发中的具体案例和应用。不过书中有很多实现算法之类的东西,由于用不到,看过之后就没什么印象了,可能需要存放起来作为工具书了。(2019)

《Unix网络编程 卷一 套接字联网API》4分:UNP。讲了很多网络 socket 相关接口,有很多客户端和服务器代码实现,同样我还得再读一遍。(2016)

《Web性能权威指南》3分:书的重点是性能,分别从传输层协议、无线网络和HTTP协议讲怎么做性能优化,不过全都是理论。最后还介绍了浏览器、websocket 和 WebRTC,最后一个做 B/S 的真心没听过,也算开了下眼界。(2017)

《构建高性能Web站点》4分:全书也在重点讲 Web 性能,不过更偏向于服务端架构和实践,如缓存的使用、数据库性能优化。书中列举了很多实用的方案,也对不同的方案使用 AB 和 strace 进行了充分的测试对比。中级后端工程师应该早点读这本书。(2017)

数据库


《Redis设计与实现》4分:从底层介绍了 Redis 多种数据结构的设计与实现,还有多种配套策略的实现,如数据持久化、集群等。可以说对 Redis 所有部分的设计都介绍得很清楚,毕竟是作者是分析过全部源码的。推荐 Redis 运维或对 Redis 的实现感兴趣的读。(2017)

再读:5分 时隔三年再次读这本书。由于经常在业务中使用 Redis,看本书我更深刻地理解了它对数据结构的精妙运用。作者对书的节奏掌控得非常好,用图和伪代码代替了复杂的源码,不急不徐地将 Redis 的各种数据类型和高级用法介绍得很清晰。只是网络事件相关的内容略过了,有些遗憾。

《MySQL技术内幕:Innodb存储引擎》4分:如副标题,全书都在讲 Innodb 存储引擎。通过各个模块的设计实现,再给出我们使用 Innodb 时的需要注意的点和优化方案。推荐中级开发工程师读。(2017)

编程语言


《C Primer Plus》4分:C 语言入门的推荐书,主要是 C 的语法,详细而权威,没什么好说的。(2017)

《Java 核心技术 卷I》3分:确实是由浅入深的一本书,但感觉书里深浅知识在不停交错,书里 Swing 相关的东西篇幅还挺大,而且有很多跟 C++ 的对照,最主要的是翻译很奇怪地让我觉得有些句子很难读得通。不过也书里讲解得内容还是挺丰富的,通读的话会学到不少东西。(2018)

《Java并发编程实战》5分:这本书介绍 Java 并发编程非常全面,从内置关键字、锁、同步容器、同步工具类引入并发编程的基础知识,又介绍了 Executor、ThreadPool 等成熟的并发编程框架,然后又从死锁、性能、测试等方面来思考并发编程的安全性,最后通过显示锁、各种高级线程同步工具的对比、Java 线程模型等高级主题来深入理解并发编程。由浅入深,中级到高级都能从中有所收获。个人认为,Java 开发者至少应该读一遍,对并发编程有个整体的印象。(2018)

《深入理解Java虚拟机》5分:作为 JVM 语言,更偏向于 Java 本质的内容在于其虚拟机。本书相对于我看过的理论书偏实战一些,主要讲了 Java 内存模型、GC算法,字节码及虚拟机加载、执行字节码和优化效率的全过程。国人的书没了翻译味读着很舒服,理论讲得很清晰,特别是书里的一些调试案例非常赞。对于刚接解 Java 的小白来说看本书有些深,且 Java 的封装性让这些知识对程序员来说都是透明的,推荐想对 Java 有深入了解的中级来读。(2018)

《PHP和MySQL Web开发》1分:刚开始学PHP时,看过一部网络教学视频后看的,当时的感觉是真的简单,看完后收获不多。如果你也是初学者,建议你还是省点钱,看看视频或文档撸一下代码来得实在。(2015)

《JavaScript高级程序设计》5分:红宝书,Web 入门时看的,Js、Dom讲得很详细了,当时准备入前端坑时读了一遍,虽然有些朦胧,还是感觉收获很大。Js入了门的同学应该赶快读一下这本书,并且有几章还得跟着搜索引擎多看几遍。(2015)

《Linux Shell脚本攻略》3分:书的内容挺充实的,把 linux 内的各种 bash 命令都介绍到了(好像没有软件包安装相关命令),也提供了很多实例来解析命令。问题是介绍 shell 脚本相关技巧介绍较少,比如函数传数组参数这些常见的坑就没讲到,了解很多 bash 命令脚本也不一定能写得好啊。而且定位比较尴尬,不像鸟哥的私房菜(只看过前几章),由浅到深整体熟悉 linux,本书是分模块来讲解的,ls、cd 等常见命令后面才提到,所以它不太适合新手看,而对于比较熟悉 linux 命令的人来说,能学到的知识又较少。总之本书适合用来查漏补缺或当工具书。(2018)

《Effective Java 第二版》4分:我看过的唯一一本介绍语言的“进阶”书,可能 Java 确实有些复杂吧。书里 Java 1.6 及之前版本常见的各种坑都讲清楚了,看完很有收获,推荐在了解完 Java 语法后就读。(2018)

《Sprint Boot 实战》1分:首先在 Spring-Boot 里介绍 Grails、Actuator,不了解不多作评价,但整体来看像是很多篇博客堆叠出来的,没有层次感。其次 200 页的书竟然有 50 页是 Spring-Boot 包-特性速查,这些东西完全可以放在网站上,只用一个链接就搞定了,还便于实时更新。最后翻译后的版式我必须吐槽,中文和英文单词之间不加空格看着真的难受。(2019)

《Java 并发编程的艺术》4分:Java 并发编程相关非常全面的书了,从 Java 并发编程底层原理到 synchronized 关键字、AQS 原理,然后是 AQS 衍生出来的一系列并发编程工具,非常适合在对 Java 并发编程有一定了解后查漏补缺。(2020)

《新一代垃圾回收器ZGC设计与实现》5分:将很多人一篇博客介绍完的 ZGC 写成一本书,必定需要一定的广度能覆盖 ZGC 的各个角落,也需要足够的深度从源码讲清具体实现,本书作者兼具了这两点。读完本书后我对 ZGC 的设计目的和实现方式有了比较全面的认识,了解了 ZCG 的适用场景和现存问题,另外第六章对日志的介绍非常详细,可以帮助对比排查 GC 问题。(2021)

数据结构与算法


《数据结构与算法分析 - C语言实现》3分:作为一个数学渣,对算法有本能的恐惧,这本书是咬着牙读下去的,还跳过了很多部分。书很生硬,没有形象的比喻,通过一堆堆的代码和数学公式去理解算法真的挺不容易的。(2016)

《算法图解》3分:比较基础的算法书,作者用很多例子和图片讲了常见了的数据结构和算法,书全面而有趣,但讲得有点浅,非常推荐算法入门的同学看,如果有了一定的算法基础,再看就有点多余了。(2020)

《算法(第四版)》5分:算法书里应该可以算得上大部头了,全书非常”学院”,证明严谨,配套习题,一股浓重的教科书味儿,美中不足的是书里没有动态规划相关内容。如果你想系统学习算法,对算法的推理过程有一定了解,那么本书还是非常好的选择。(2020)

代码


《Head First 设计模式》4分:跟外面的那些技术书籍一点也不一样,全书充满了插图,每一个设计模式都通过一个浮夸的故事来讲(外国人嘛)。文中代码中用 Java 实现,不过都是最基本的语法。好像只写了 16 个设计模式?不过我觉得用来学习设计模式完全 OK。(2017)

《代码大全 第二版》4分:中文名是真的俗,代码百货?不过书不是代码展览馆,而是教人怎么写出优良的代码的。可能我个人一直对代码质量比较在意,让我眼前一亮的地方不是特别的多,不过不可否认书真的不错,建议新手早读一遍。(2017)

《重构:改善既有代码的设计》2分:在一次重构之前买来看的,讲得是对小块代码的重构方式,全书就像一个整齐排放的货架,上面全是对一些代码重构方式的抽象,列得让人有点懵,如果新手看这本书并对照着重构代码的话,我觉得效果应该不会太好(委婉)。(2017)

再读:2分 试图再读一遍,结果读了一半就坚持不下去了,总结了一下这本书不合我口味的地方:很多重构方法的具体做法写得太详细太傻瓜式了,例子占大量篇幅又让我觉得没干货。可能看一遍目录,遇到一眼看不明白的方法进去看内容前一两段或总结会比较好。(2018)

《七周七并发》5分:书里介绍了七种并发编程的模型,从最常见的基于线程和锁的模型到函数式、Actor、基于消息、Lambda等,非常能让我开阔眼界。问题是在介绍这些并发编程模型时,视角跨度过大,有代码实现上的,有语言特性的,甚至还有架构上的,让人没法非常直观地对这些并发编程模型做对比。虽然没法直接提高读者的编码能力,但开阔思路更重要,瑕不掩瑜,非常推荐阅读。(2021)

工程


《SRE Google 运维解密》4分:Google SRE 团队的布道书,整合了多个作者在 SRE 各个方面的文章,整体印象是介绍理念挺多,介绍实现非常详细却太理想化。如果你像我一样除了开发还要负责部分运维工作的话,了解一下世界顶尖团队的工作方式肯定会有所收获。(2019)

《微服务设计》3分:本书从微服务的起源和概念,到服务的搭建或拆分、测试和上线、服务发现和监控等把微服务的各个阶段都介绍得很清楚,特别是书中一直在强调服务架构和人员组织关系的互相影响,让我印象挺深刻。不过书里对微服务的介绍并没有我想象中的深刻,推荐度随读者对微服务的了解程度降低。(2021)

经济学


《薛兆丰经济学讲义》3分:这本书真像是从课堂讲义整理出来的,起初部分段落的随意性让我有点惊讶,不过搭配很多生活中的例子让我这种经济学小白也读起来毫不费力。内容上让我印象比较深刻的是全书中作者对经济学的理想化和结尾部分的宏观经济学扫盲。用这本书作为经济学入门的话,可能不太适合,因为它不够系统。(2019)

《经济学原理:微观经济学分册》5分:经济学经典入门书籍,以经济学十大原理的前七大原理为核心,非常系统而全面地介绍了市场供需关系的平衡,个人、家庭和公司在面对边际量时的行动,贸易的好处,政府和组织对市场的影响等内容。不过最重要的是能帮助我们理解生活中的一些迷之现象,让人能更多地以经济学的角度去看问题,所谓一切皆有看不见的手。(2020)

《经济学原理:宏观经济学分册》5分:在全球新冠疫情蔓延、经济倒退时读这本书,真的另有感触。本书先用介绍了利率、通货膨胀、失业率等基础概念来帮助理解宏观经济,再用很多历史上的例子来介绍政府调控的影响。如果你还不了解经济危机的本质,不明白政府为什么要“降息”、“拉动内需”,想要理解英国为什么想脱欧,读它。(2020)

思考


《黑客与画家》4分:总体感觉比期望差一些。我把内容分为三部分:由于中美环境不同,前面讲”书呆子”特质的部分我没有太大共鸣;中间讲财富的部分很精彩,让我觉得非常惊艳;后面讲编程语言的部分更像是硬贴在书后面的,虽然有所感悟,但却让人觉得有些突兀(我期望的不是此类内容);总的来说,是一本让我挺有收获的书。(2018)

《思考,快与慢》5分:网络上普遍将它分类为经济学书籍,实际上我感觉本书大部分篇幅都是心理学,从一开始的系统1和系统2,到对我们各种选择的分析(我印象最深刻的是怎样克服系统1的影响选择投资方式),再到最后由”幸福程度”引出的峰终定理,给人提出了各种思考的方向和可能性,可能思考得多了之后,也能帮我矫正一些想法吧。(2018)

《乌合之众.冯克利译》4分:这本书是大众心理学研究的经典著作,从通常意义上来说,它对个人并不是一本非常“有用”的书,但作为社会动物,我们不可避免地会常常陷入人群中,这本书可能会帮助你跳出人群看自己和他人,新的视角可能会有新的感悟。(2019)

《程序员的思维修炼-开发认知潜能的九堂课》1分:如果你已经知道做事要专注、避免干扰,看待问题要从微观和宏观同时考虑,用思维导图整理复杂的事物,那么别浪费时间在这本书上了。(2019)

《影响力》5分:本书介绍了互惠、一致性、社会认同感、喜好、权威和稀缺六种因素对我们做选择时的“影响力”,心理学和生物学的理论搭配大量生活中的例子非常有说服力。了解了这些影响力因素,即使不能得利,也能在一定程度上防止不知不觉中被别人牵着鼻子走。(2019)

《别做正常的傻瓜》2分:人的活动并不是纯理性的,书里介绍了很多看起来很正常但深入分析却有违理性的事例,导致人成了“正常的傻瓜”,但感觉本书缺少一些深度,整体看完感觉比《影响力》差距挺大。(2019)

《时间简史》3分:一本“信息”的传记,读它的过程中既感慨于“信息”在西方近代史上的快速发展,又震惊于作者在化学、物理学、生物学等学科上对“信息”的挖掘,更折服于“万物源自比特”的思想。不过一定得吐槽整本书只分章不分节的结构,一章读下去真让人喘不过气。(2020)

书还在读,列表也会增加,之前读过的书还可能会再读一遍写一些新的感受,欢迎关注。