见书单如面。
在这份书单里,我是这么一个同学:关心Java,关心架构,对文字有一定的洁癖;基础知识懂一些,但忙,不会花太多时间来研究算法和OS;需要掌握一个软件时会买一本XX in Action,但不买那种各式安装指南、使用手册的。
如果你和我差不多的趣味,那这份书单会适合你。
为了避免混淆,书名的颜色分类,红色是种草, 黑色是拔草(至少不适合本文的预设读者)
1. 国内一线的书
说到大型互联网站的建设,我们在世界上也是一流的,比国外那些咨询师写的更深味其中艰辛。
《高可用架构(第一卷)》
厚厚的一本,新浪微博TimYang牵头的高可用架构社区,几十个一线实战案例的结集分享,从头看起的话只恨自己时间不够多。
《大型网站: 架构演进与性能优化》
薄薄的一本,今年新书,淘宝的分布式、无线化、中台化、单元化的历程与优化,同样是满满的一线经验。
《大型网站技术架构:核心原理与案例分析》
同是淘宝系薄书,如果一个新人进入到大型互联网站,这是最好的入门科书普。
《亿级流量网站架构核心技术》
京东开涛作品,很多技术掰细了讲,所以也蛮厚的。
《京东基础架构建设之路》
从早前的.Net,到如今大量自研组件的体系,可以给兄弟单位的基础架构部做参考。
《进化 - 运维技术变革与实践探索》
赵成的极客时间,印成书了。运维书里难得讲想法而不是工具使用的书: "运维能力是整体技术架构能力的体现,运维层面爆发的故障一定是整体技术架构中存在问题,割裂两者,单纯的看技术架构或运维都是毫无意义的。"
2. 国外互联网架构的书
《SRE:Google运维解密》
自编广告词:“地球上有这么一个团队,将运维推向极限高度”。SRE的事情,很多是基础架构部的事情。今年的续篇,《The Site Reliablity Workbook》。
《发布!软件的设计与部署 》
Nygard作品,关于高可靠性的软件,学校里不会教,出来社会却要面对的那部分。 英文原标题里,“软件”的完整表达是“Production-Ready Software”
《DevOps 软件架构师行动指南》
DevOps的书里难得地讲基本原则,而不是讲具体用什么监控软件。
《微服务设计》
微服务开山之作,那么多微服务的书,这本只谈原则而不会写一堆具体框架的使用。
《生产微服务》
再次被中文编辑的书名打败,其实是《Production-Ready Microservices》,作者以在Uber的经验,讲一个满足基本业务逻辑之外,生产可用的微服务的检查表。
附加 :有两本英文标题明明是Scalability的书,中文编辑硬是改为《架构即未来》,《架构真经》,前者有我们前CTO推荐不敢乱说,后者虽然是第二版还是觉得有点过时,大家自己看目录判断了。
3. 架构师基础的书
《恰如其分的软件架构 - 风险驱动的设计方法》
由于人类与生俱来的惰性,计算机原本科学的、精准的设计方式,有了敏捷的借口之后就很难再维持了。本书就是在这种背景下,提出由风险来决定设计的度。除了开始的风险驱动部分,其余部分就是规规矩矩标标准准的架构师教科书。
《软件系统架构:使用视点和视角与利益相关者合作 第2版》
也是教科书,最难得的是,这本老书在十年后的2011年年升级了第二版,所以感觉鲜活了好多,也许是最鲜活的一本架构书。
附加:说起更新,《Software Architecture in Practice 3rd》也在2012年更新,《Documenting Software Architectures 2nd》在2010年更新,不过中规中矩,没那么大吸引力让人去啃英文了。
拔草:关于设计模式,我以前曾经有过很多本,GOF23啦,企业应用架构模式啦,EIP啦, POSA 5卷本啦,反模式啦,JavaEE/SOA/Restful的模式啦。但现在觉得对新人来说,一本Java写的《Head First 设计模式》,知道什么叫设计模式就够了。
UML相关的书,其实UML只在那个重度文档的年代会体现统一的作用,现在大家都是怎么表达清楚怎么来,最多简单用下类图和时序图了。
4. Java语言的书
《Java8 实战》
Java8的新特性讲得最全最仔细的,Java8是一道坎,很多程序员现在还没迈过去。英文版有重写了,面向JDK9的《Modern Java in Action》。
《Java性能权威指南》
紫色的这本,比起多年前那部调优圣经,讲得更加深入,也更加贴近现在的JDK。英文版还有一本《Optimizing Java》。
《深入理解 Java 虚拟机 第2版》
理解虚拟机并不是那么难,Java程序员来说,很多知识其实是必须的。
《Java并发编程实战》
Java并发经典,人手一本不用多说了。
《实战Java高并发程序设计》
国人之作,流畅易读,内容也比上面一本新一些。
《Effective Java 2nd》
Java编码规范与指南, 英文版有覆盖JDK9的第三版。
要一口吃成个胖子,推荐飒然的《Java工程师修炼之道》,可以作为老鸟培养新人,整个Java后端开发的提纲式材料。
《Java 9模块化开发》,跳票无数回之后,Java9终于支持模块化了,对这方面关心对可以看看。
拔草:《Thinking in Java》有点太旧了,而且作者思路随意,译者语言晦涩。《Java性能优化权威指南 》多年前的调优圣经已经旧的没谱。
5. 操作系统与网络的书
《Linux内核设计与实现 第3版》
业内缩写LKD。Robert Love用最薄的篇幅,顺畅的文字将Linux内核主要的算法讲清楚了,《深入理解Linux内核》之类厚厚的全是代码,不是专门的内核程序员看这本足够了。
《性能之巅》
Brendan Gregg的书,火焰图的推广者,在Netflix专攻性能。 操作系统的性能调优、监控、工具和方法论,看这本就够了,已经足够厚,可能是书单里最厚的一本,但值得作为一本枕头书。
《WireShark网络分析就这么简单》和 《WireShark网络分析的艺术》
多少人,是看了这两本轻松又实战的书,才真正理解TCP的细节。
《深入理解计算机系统 第3版》
如果实在觉得家里没本书镇楼心里不踏实,就买这一本,也是左耳朵耗子力荐的一本。
6. 算法的书
《数据结构与算法分析-Java语言描述 第3版》
够薄,数据结构与算法分析的点基本都涵盖了,而且示例代码是Java写的,新出了第3版。
《算法 第4版》
可与上一本对比着读,厚一些,也多些图,但知识点没上面的全,也是Java的。
附加: 《数学之美》、《编程珠玑》,都是专栏文章,讲得并不系统,可以当兴趣读物来看。
拔草:无比枯燥很多公式的《算法导论》,《计算机程序设计艺术》就留给特别厉害的同学去读了。
7. 程序员的自我修养
《程序员修炼之道-从小工到专家》
Pragmatic Programmer--注重实效的程序员系列的开山之作。
《代码整洁之道》和 《程序员的职业素养》
Robert.C Martin作品,英文名是很相近的《Clean Code》和 《Clean Coder》,应该接替《代码大全2》成为必看系列,因为后者太厚了,而且也有不少过时的东西。
还有一本英文版的《Clean Architecture》,不过讲的是单体应用自身的架构。
《有效的单元测试》
讲代码可读性的书很多,专门教测试代码怎么写得可读的少,而事实上我们很多时间都在维护测试代码,所以推荐下。
拔草:《重构》很厚,但最有价值就是前面几章的洗脑篇。
温伯格的书网上很推崇,《成为技术领导者》之类的,但我觉得年代太远,读起来其实没多大意思,一两个鸡汤观点还要自己从书里慢慢淘,有那功夫不如看点别的。
8. 团队的书
敏捷的书高度重复,看哪本都差不多,比如最开始那本《解析极限编程--拥抱变化》就行,但没得卖了。
其他如《硝烟中的Scrum 和 XP》,《学习敏捷》,《敏捷开发的艺术》都不错。
阻止大家买书的原因,一是没有地方放,二是没有时间看。好在Kindle上的书渐渐多了,解决了第一个问题。但第二个问题更难,所以我也没看完所有,但起码翻到了可以下判断的时候。
一个人看的书有限, 欢迎大家留言推荐其他好书。