下面列了我读过的一些编程相关的书籍,写了一些对书的印象,都是个人观点。书名后是我个人对书的推荐强烈度打的分(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)
网络
《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)
《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)
数据结构与算法
《数据结构与算法分析 - C语言实现》3分:作为一个数学渣,对算法有本能的恐惧,这本书是咬着牙读下去的,还跳过了很多部分。书很生硬,没有形象的比喻,通过一堆堆的代码和数学公式去理解算法真的挺不容易的。(2016)
代码
《Head First 设计模式》4分:跟外面的那些技术书籍一点也不一样,全书充满了插图,每一个设计模式都通过一个浮夸的故事来讲(外国人嘛)。文中代码中用 Java 实现,不过都是最基本的语法。好像只写了 16 个设计模式?不过我觉得用来学习设计模式完全 OK。(2017)
《代码大全 第二版》4分:中文名是真的俗,代码百货?不过书不是代码展览馆,而是教人怎么写出优良的代码的。可能我个人一直对代码质量比较在意,让我眼前一亮的地方不是特别的多,不过不可否认书真的不错,建议新手早读一遍。(2017)
《重构:改善既有代码的设计》2分:在一次重构之前买来看的,讲得是对小块代码的重构方式,全书就像一个整齐排放的货架,上面全是对一些代码重构方式的抽象,列得让人有点懵,如果新手看这本书并对照着重构代码的话,我觉得效果应该不会太好(委婉)。(2017)
再读:2分 试图再读一遍,结果读了一半就坚持不下去了,总结了一下这本书不合我口味的地方:很多重构方法的具体做法写得太详细太傻瓜式了,例子占大量篇幅又让我觉得没干货。可能看一遍目录,遇到一眼看不明白的方法进去看内容前一两段或总结会比较好。(2018)
思考
《黑客与画家》4分:总体感觉比期望差一些。我把内容分为三部分:由于中美环境不同,前面讲”书呆子”特质的部分我没有太大共鸣;中间讲财富的部分很精彩,让我觉得非常惊艳;后面讲编程语言的部分更像是硬贴在书后面的,虽然有所感悟,但却让人觉得有些突兀(我期望的不是此类内容);总的来说,是一本让我挺有收获的书。(2018)
《思考,快与慢》4分:网络上普遍将它分类为经济学书籍,实际上我感觉本书大部分篇幅都是心理学,从一开始的系统1和系统2,到对我们各种选择的分析(我印象最深刻的是怎样克服系统1的影响选择投资方式),再到最后由”幸福程度”引出的峰终定理,给人提出了各种思考的方向和可能性,可能思考得多了之后,也能帮我矫正一些想法吧。(2018)
《乌合之众.冯克利译》4分:这本书是大众心理学研究的经典著作,从通常意义上来说,它对个人并不是一本非常“有用”的书,但作为社会动物,我们不可避免地会常常陷入人群中,这本书可能会帮助你跳出人群看自己和他人,新的视角可能会有新的感悟。(2019)
书还在读,列表也会增加,之前读过的书还可能会再读一遍写一些新的感受,欢迎关注。