你好,我是看山。
今天列一下技术相关的书单,本文是第一版,后续持续更新。
文中提到的部分书目我也没有读过,作为todo list,明确接下来一段时间的学习方向。
Java
因为本人属于Java栈,所以主要推荐的还是属于Java领域内的书目。
《Java核心技术:卷I 基础知识》:本书由拥有20多年教学与研究经验的资深Java技术专家撰写(获Jolt大奖),是程序员的优选Java指南。无论是Java初学者还是有一定经验的Java工程师,这是一本非常不错的值得时常翻阅的技术手册。
《Java编程思想》:从Java的基础语法到最高级特性(深入的面向对象概念、多线程、自动项目构建、单元测试和调试等),本书都能逐步指导你轻松掌握。属于经典书目,可能很多Java栈的程序猿,都是从这本书开始的。
《Java编程的逻辑》:Java专家撰写,力求透彻讲解每个知识点,逐步建立编程知识图谱。本书以Java语言为例,由基础概念入手,到背后实现原理与逻辑,再到应用实践,融会贯通。
《Effective Java》:模仿《Effective C++》而成,一共包含90个条目,每个条目讨论Java程序设计中的一条规则。这些规则反映了最有经验的优秀程序员在实践中常用的一些有益的做法。前人的经验之作,想要升阶,这本书一定绕不开。最好是看第三版的,增加了Java 8的规则。
《Head First Java》:完整的面向对象(object-oriented,OO)程序设计和Java的学习指导。此书是根据学习理论所设计的,让你可以从学习程序语言的基础开始一直到包括线程、网络与分布式程序等项目。最重要的,你会学会如何像个面向对象开发者一样去思考。而且不只是读死书,你还会玩游戏、拼图、解谜题以及以意想不到的方式与Java交互。在这些活动中,你会写出一堆真正的Java程序,包括了一个船舰炮战游戏和一个网络聊天程序。
《Java并发编程实战》:深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册。书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证线程安全的规则,如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容,最后介绍了一些高级主题,如显式锁、原子变量、非阻塞算法以及如何开发自定义的同步工具类。
《Java性能权威指南》:通过使用JVM和Java平台,以及Java语言和应用程序接口,本书详尽讲解了Java性能调优的相关知识,帮助读者深入理解Java平台性能的各个方面,最终使程序如虎添翼。
《Java系统性能优化实战》:基于作者在实际工作中遇到的与系统相关的问题及解决之道,通过改善代码来提高系统性能,解决因为代码导致的系统故障。国人写的新书也很好,一些细节,一些过时的传言,作者都用jmh给测了。
《Java性能优化实践:JVM调优策略、工具与技巧》:本书从实验科学的角度探讨了Java性能优化的方方面面,重点阐述了最新的实用JVM性能调优策略、工具和技巧。通过本书,我们不仅可以了解Java原理和技术如何充分利用现代硬件和操作系统、衡量Java性能的陷阱以及微基准测试的弊端有哪些,还能深入研究可能使团队烦恼的几种性能测试和常见反模式、JVM垃圾收集、JIT编译和Java语言性能技术等。
《Spring实战》:一本经典而实用的畅销Spring 学习指南。
《SpringBoot实战》:Spring应用程序开发为中心,全面讲解如何运用Spring Boot提高效率,使应用程序的开发和管理更加轻松有趣。
《精通Spring 4.x》:虽然现在都已经是Spring 5.x了,但是Spring的基础并没有变,本书把应用和原理都讲的很透彻,IoC和AOP分析的很棒,娓娓道来。
《深入理解Java虚拟机》:这是一部从工作原理和工程实践两个维度深入剖析JVM的著作,是计算机领域公认的经典。
《实战Java虚拟机:JVM故障诊断与性能优化》:本书将通过200余个示例详细介绍JVM中的各种参数配置、故障排查、性能监控及性能优化,帮助Java人突破瓶颈。
《新一代垃圾回收器ZGC设计与实现》:有了ZGC,就忘记CMS,G1什么的吧。ZGC 所针对的是这些在未来普遍存在的大容量内存:TB 级别的堆容量,具有很低的停顿时间(小于 10 毫秒),对整体应用性能的影响也很小(对吞吐量的影响低于 15%)。ZGC 所采用的机制也可以在未来进行扩展,以支持一些令人兴奋的特性,如多层堆(用于热对象的 DRAM 和用于低频访问对象的 NVMe 闪存)。
《深入理解JVM字节码》:这是一本揭示JVM字节码“黑科技”的著作,它从原理和应用两个维度深入剖析了JVM字节码。书中内容涉及JVM字节码的大部分应用场景,如Java性能优化、软件防护与破解、APM等,通过大量实战案例讲解了它在这些场景中的实操技巧。
《Java实战》:现代Java应用充分利用了微服务、反应式架构以及流式数据等创新设计。现代Java特性,譬如Lambda、流以及大家期待已久的Java模块系统让这些设计的实现极其便利。是时候更新技能工具箱了,只有这样,你才能从容应对迎面而来的种种挑战!
《Java8实战》:本书全面介绍了Java 8 这个里程碑版本的新特性,包括Lambdas、流和函数式编程。有了函数式的编程特性,可以让代码更简洁,同时也能自动化地利用多核硬件。
《实战Java高并发程序设计》:主要介绍基于Java的并行程序设计基础、思路、方法和实战。第一,立足于并发程序基础,详细介绍Java进行并行程序设计的基本方法。第二,进一步详细介绍了JDK对并行程序的强大支持,帮助读者快速、稳健地进行并行程序开发。第三,详细讨论了“锁”的优化和提高并行程序性能级别的方法和思路。第四,介绍了并行的基本设计模式,以及Java 8/9/10对并行程序的支持和改进。第五,介绍了高并发框架Akka的使用方法。第六,详细介绍了并行程序的调试方法。第七,分析Jetty代码并给出一些其在高并发优化方面的例子。
操作系统
《深入理解计算机系统》:这本书是程序员必读的一本书,这本书最大的优点是为程序员描述计算机系统的实现细节,帮助其在大脑中构造一个层次型的计算机系统。从最底层的数据在内存中的表示到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库,到最后的用户态应用。通过掌握程序是如何映射到系统上,以及程序是如何执行的,你能够更好的理解程序的行为为什么是这样的,以及效率底下是如何造成的。
《计算机网络》:经典的计算机网络教材,采用作者独创的自顶向下方法来讲授计算机网络的原理及其协议。
《UNIX环境高级编程》:UNIX编程“圣经”
《UNIX网络编程:卷1》:UNIX编程“圣经”
《UNIX网络编程:卷2》:UNIX编程“圣经”。可以看到,三本圣经,都是大部头很难啃的书,比较枯燥。修行路就是比较枯燥的。
《TCP/IP详解 卷1:协议》:本书内容丰富、概念清晰、论述详尽,适合任何希望理解TCP/IP协议实现的人阅读,更是TCP/IP领域研究人员和开发人员的权威参考书。无论是初学者还是功底深厚的网络领域高手,本书都是案头必备。
《Wireshark数据包分析实战》:从数据包分析与数据包嗅探器的基础知识开始,循序渐进地介绍Wireshark的基本使用方法及其数据包分析功能特性,同时还介绍了针对不同协议层与无线网络的具体实践技术与经验技巧。在此过程中,作者结合大量真实的案例,图文并茂地演示使用Wireshark进行数据包分析的技术方法,使读者能够顺着本书思路逐步掌握网络数据包嗅探与分析技能。
《鸟哥的Linux私房菜:基础学习篇》:讲解细致,深入浅出。可以对计算机和操作系统,以及Linux有一个非常全面的了解,并能够管理或者操作好一个Linux系统。
《现代操作系统》:这本书是操作系统领域的经典之作,书中集中讨论了操作系统的基本原理,包括进程、线程、存储管理、文件系统、输入/输出、死锁等,同时还包含了有关计算机安全、多媒体操作系统、掌上计算机操作系统、微内核、多核处理器上的虚拟机以及操作系统设计等方面的内容。
《计算机程序的构造和解释》:在过去的二十多年里,对于计算机科学的教育计划产生了深刻的影响。
数据库
《MySQL必知必会》:书中从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用、子查询、正则表达式和基于全文本的搜索、存储过程、游标、触发器、表约束,等等。
《SQL必知必会》:本书是深受世界各地读者欢迎的SQL经典畅销书,内容丰富,文字简洁明快,针对Oracle、SQL Server、MySQL、DB2、PostgreSQL、SQLite等各种主流数据库提供了大量简明的实例。与其他同类图书不同,它没有过多阐述数据库基础理论,而是专门针对一线软件开发人员,直接从SQL SELECT开始,讲述实际工作环境中最常用和最必需的SQL知识,实用性极强。
《数据库系统概念》:本书是数据库系统方面的经典教材之一,其内容由浅入深,既包含数据库系统基本概念,又反映数据库技术新进展。它被国际上许多著名大学所采用,包括斯坦福大学、耶鲁大学、得克萨斯大学、康奈尔大学、伊利诺伊大学等。
数据结构与算法
《算法》:算法领域的经典参考书。不但全面介绍了关于算法和数据结构的必备知识,还给出了每位程序员应知应会的50个算法,并提供了实际代码。最不错的是,其深入浅出的算法介绍,让一些比较难的算法也变得容易理解。其中,还有大量的图解,详尽的代码和讲解。
《算法图解》:本书示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量。
《算法导论》:本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。
《编程珠玑》:历史上最伟大的计算机科学著作之一。在书中,作者选取许多具有典型意义的复杂编程和算法问题,生动描绘了历史上众大师们在探索解决方案中发生的轶事、走过的弯路和不断精益求精的历程,引导读者像真正的程序员和软件工程师那样富于创新性地思考,并透彻阐述和总结了许多独特而精妙的设计原则、思考和解决问题的方法以及实用程序设计技巧。解决方案的代码均以C/C++语言编写,不仅有趣,而且有很大的实战示范意义。每章后所附习题极具挑战性和启发性,书末给出了简洁的解答。
《数据结构与算法分析:Java语言描述》:是国外数据结构与算法分析方面的经典教材,使用卓越的Java编程语言作为实现工具讨论了数据结构(组织大量数据的方法)和算法分析(对算法运行时间的估计)。
编程素养
《代码整洁之道》:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,本书作者给出了一系列行之有效的整洁代码操作实践。这些实践在本书中体现为一条条规则(或称“启示”),并辅以来自现实项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。
《程序员修炼之道》:由一系列的独立的部分组成,涵盖的主题从个人责任、职业发展,直到用于使代码保持灵活、并且易于改编和复用的各种架构技术。
《重构 改善既有代码的设计》:重构,一言以蔽之,就是在不改变外部行为的前提下,有条不紊地改善代码。多年前,正是本书原版的出版,使重构终于从编程高手们的小圈子走出,成为众多普通程序员日常开发工作中不可或缺的一部分。本书也因此成为与《设计模式》齐名的经典著作,被译为中、德、俄、日等众多语言,在世界范围内畅销不衰。
《设计模式》:这本书结合设计实作例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。书中分类描述了一组设计良好、表达清楚的软件设计模式,这些模式在实用环境下特别有用。此书适合大学计算机专业的学生、研究生及相关人员参考。
《Head First 设计模式》:一本设计模式入门书籍,用实际的编程案例讲解算法设计中会遇到的各种问题和需求变更,并以此逐步推导出良好的设计模式解决办法。
《设计模式就该这样学:基于经典框架源码和真实业务场景》:本书从软件架构设计必备的通用技能UML开始,重点介绍常用的类图和时序图;然后介绍软件架构设计常用的七大原则;接着结合JDK、Spring、MyBatis、Tomcat、Netty等经典框架源码对GoF的23种设计模式展开分析,并结合作者多年“踩坑填坑”和“教学答疑”经验,用深刻、全面、通俗、生动、有趣、接地气的方式结合真实业务场景分析每种设计模式,治愈“设计模式选择困难症”;之后介绍4种常用的新设计模式;最后总结软件架构、设计模式与应用框架之间的区别。
《代码大全》:一本完整的软件构建手册,涵盖了软件构建过程中的所有细节。它从软件质量和编程思想等方面论述了软件构建的各个问题,并详细论述了紧跟潮流的新技术、高屋建瓴的观点、通用的概念,还含有丰富而典型的程序示例。这本书中所论述的技术不仅填补了初级与高级编程技术之间的空白,而且也为程序员们提供了一个有关编程技巧的信息来源。这本书对经验丰富的程序员、技术带头人、自学的程序员及几乎不懂太多编程技巧的学生们都是大有裨益的。可以说,无论是什么背景的读者,阅读这本书都有助于在更短的时间内、更容易地写出更好的程序。
《编程的原则:改善代码质量的101个方法》:本书介绍了软件开发领域101个重要的编程原则,涉及编程中的永恒真理,指导方针,编程思想,程序员的视角、习惯和工具,以及编程的反模式等内容。书中以“这个原则是什么”“为什么要遵循这个原则”“具体应该怎么做”为中心,对各个原则进行介绍,简明扼要,通俗易懂。这些原则凝聚了前人的智慧,经过了历史的考验,是指导程序员改善代码、进一步提升编程能力的实用指南。
架构
《软件架构设计》:围绕软件架构设计,系统化地梳理技术架构与业务架构的方法论与实践。
《架构师修炼之道:思维、方法与实践》:作者结合多年的架构学习和项目开发经验,总结出一套架构学习的体系,从技术方法、思维意识、工具等方面讲解做好互联网后端架构设计的相关知识。通过相关知识的学习,读者能够掌握设计稳定、易维护、易扩展的软件架构的方法,也能够提升日常维护已有项目的能力。书中讲解的技术方法具有通用性,在其他非互联网行业的软件开发中,也具有借鉴意义。
《发布!设计与部署稳定的分布式系统》:作者根据自己的亲身经历和某些大型企业的案例,讲述了如何创建高稳定性的软件系统,分析了设计和实现中导致系统出现问题的原因。
《可伸缩架构:云环境下的高可用与风险管理》:一本关于现代化软件架构的书。书中介绍了如何构建和更新你的关键应用程序来满足日益苛刻的数字化客户的需求。书中还介绍了如何实现高可用性,如何使用现代化的开发和运维技术来架构应用程序,如何组织开发团队帮助应用程序和业务获得成功,如何将系统扩展到最大规模,以及如何利用云计算的可用资源来迎接上述挑战。
《携程架构实践》:本书浓缩了携程公司的整个技术架构,可以帮助读者了解支撑一家大型企业所需要的核心技术产品,以及它们的架构和面临的挑战。
《架构师应该知道的37件事》:本书汇集了一名架构师20多年来在全球各大企业任职的经验,共分为5个部分,分别对应在帮助大型企业进行IT转型的过程中,首席架构师必须高效处理的5个方面:企业或IT架构师的角色和能力、架构工作在大型企业中的价值、与各种干系人的沟通、对组织结构和系统的理解、对传统组织进行转型。本书科学而系统地归纳出软件架构师应该具备的完整能力模型,不仅帮助软件开发人员系统地学习如何掌握这37项技能,而且还能让他们进一步理解软件架构师的角色和本质,使他们最终突破技术“天花板”,成为一名合格的软件架构师。
《微服务设计》:本书全面介绍了微服务的建模、集成、测试、部署和监控,通过一个虚构的公司讲解了如何建立微服务架构。
《微服务治理:体系、架构及实践》:在微服务技术流行的当下,企业在实施微服务架构的时候,会对整个研发体系,包括开发、运维、团队组织、协同都带来冲击。因此必须构建起一整套以服务治理为核心、从线下到线上的新的能力体系来支撑这套新的架构技术,否则很难保证微服务架构的顺畅落地。 本书是作者多年服务治理经验总结,希望能够给仍在(微)服务治理迷局中夺路狂奔的计算机技术人员一点启发和指引。
《企业级业务架构设计:方法论与实践》:作者是一位资深的业务架构师,在金融行业工作超过19年,有丰富的大规模复杂金融系统业务架构设计和落地实施经验。作者在书中倡导“知行合一”的业务架构思想,全书内容围绕“行线”和“知线”两条主线展开。“行线”涵盖企业级业务架构的战略分析、架构设计、架构落地、长期管理的完整过程,“知线”则重点关注架构方法论的持续改良。
《架构整洁之道》:创造“Clean神话”的Bob大叔在架构领域的登峰之作,围绕“架构整洁”这一重要导向,系统地剖析其缘起、内涵及应用场景,涵盖软件研发完整过程及所有核心架构模式。
《领域驱动设计:软件核心复杂性应对之道》:全书围绕着设计和开发实践,结合若干真实的项目案例,向读者阐述如何在真实的软件开发中应用领域驱动设计。书中给出了领域驱动设计的系统化方法,并将人们普遍接受的一些最佳实践综合到一起,融入了作者的见解和经验,展现了一些可扩展的设计最佳实践、已验证过的技术以及便于应对复杂领域的软件项目开发的基本原则。
持续交付
《持续交付:发布可靠软件的系统方法》:讲述如何实现更快、更可靠、低成本的自动化软件交付,描述了如何通过增加反馈,并改进开发人员、测试人员、运维人员和项目经理之间的协作来达到这个目标。
《持续交付2.0》:本书重新定义了“持续交付”,增补了组织管理和系统架构两个维度,并辅助以真实案例,对诸多持续交付原则与实践加以解读,并对持续交付过程中的实践取舍之道加以论述。
《学习敏捷:构建高效团队》:本书以敏捷软件开发为中心,系统阐述了敏捷原则和实践的先进理念和重要意义,并分别讲解了Scrum、极限编程、精益和看板四套敏捷实践的应用。作者从开发团队的日常困境入手,用讲故事的形式展开问题,由表及里,层层讲解,并在每一章最后附上参考书,便于读者进一步查找学习。本书内容生动,语言通俗易懂,集趣味性和实用性于一体,是学习敏捷开发、提升团队效率的极佳参考书。
《SRE: Google运维解密》:Google SRE的关键成员解释了他们是如何对软件进行生命周期的整体性关注的,以及为什么这样做能够帮助Google成功地构建、部署、监控和运维世界上现存最大的软件系统。
《进化:运维技术变革与实践探索》:本书依托作者在电信和互联网行业多年的从业经历,结合一线实际工作实践,从应用生命周期的视角,全面详细地介绍了分布式架构体系下,应用运维体系建设的方方面面,涵盖了体系建设方法论指导、持续交付体系建设思路和实践、稳定性体系规划建设,以及故障的科学管理方法等内容,视角新颖且独特,换一个角度看运维,能够带给读者不一样的思考方式。
参考
左耳朵耗子在《程序员练级攻略》推荐的必读书籍清单,关注【公众号:看山的小屋】,回复“左耳”领取。如果想要付费订阅《左耳听风》,可以点这里,购买成功的话在公众号留言找我返现。
江南白衣的书单