读书 | 后端程序员读书路线分享

前言

欢迎大家来到我的频道,这里是Ashlee,今天跟大家聊一聊关于看书顺序。

如果你是想要系统性地学习某一个知识点,那么看书是一个非常不错的选择。

好的书籍他的文章知识点是循序渐进的,他的章节知识点可能是从简单到困难。

又或者是首先抛出一个问题,从发现这个问题,挖掘这个问题的本质,再到解决这个问题,然后扩展一些优秀的解决方案。

书的内容是最关键、最重要的,但是我这里还想提出一个观点:

就是书的阅读顺序,同样是重要的

为什么书的阅读顺序很重要

不同阶段的你,所积累的知识不同,那么你阅读过程中,收获的知识点也就不同。

这里可能就跟你的知识发散能力串联知识能力有关。

什么是知识发散能力?

当你看到一个知识点,你看到的是这个知识点的一个设计思想,透过现象看本质从本质再推出根据这个思想设计的其他知识点

比如:在看 《数据密集型应用程序设计》 的时候(后面简称DDIA),看到《进程暂停》这个章节,简单来说就是在一个场景中:

当你拿到一把带有超时时间的锁的时候,由于你执行了一些比较耗时的任务,导致这把锁在你手上过期了。

一旦过期了,其他节点就能进行获取锁,那么就出错了,现在的情况有两把锁!

当我聊到这里的时候,你可能已经想到了 RedLock

之前就有一个分布式的研究专家吐槽 RedissonRedLock,他是并不安全。

甚至 你还会联想到 fencing token,没错,这就是知识发散能力,知识串联能力

又或者是DDIA里面《数据复制》章节,你很快就能联想到Redis的主从同步和Mysql的主从同步之间的相同点和区别。

好的设计思想是可以被沿用

你看到一个新知识点,你可能就会看到你之前学习过的知识

如果你有一定知识积累,你能很快地进行知识点的串联,所以阅读顺序非常重要,接下来我分享我自己个人的阅读顺序。

读书顺序是一个偏个人向的东西

别人是很难知道你的学习情况,包括你的知识掌握得程度如何。

你技术的深度、广度,其实你自己是最清楚的。

如果你不清楚,那我的评价是,那可能就是你还没入门,你的视野看不到这个技术的天花板和所需要继续学习的知识点。

所以这就是我写这篇文章的目的,希望能帮你入门或者是其一点点帮助作用。

等到你入门了之后,其实你完全自己知道 你该学哪方面的东西,你所在的阶段,学什么,对你来说是最有收益的

这时候你就可以自己再安排了。

我这边给出我自己的入门学习路线,给你做个参照,大致路线为:

开发语言类->数据库->消息中间件->zookeeper->编码规范->框架类->分布式类->查漏补缺。

开发语言类

为什么是开发语言最先呢

开发语言是你的编程工具,无论是你写算法,还是做项目,都要用到。

并且这里是面试的重灾区,所以我排在了最前面。

这里每个人可能不同,我只对Java进行推荐。

《深入理解Java虚拟机》

第一本推荐的是:《深入理解Java虚拟机》,周志明老师的书。

相信学Java的大家对这本书已经是非常熟悉了,在许多推荐书单也能看到他的影子,应该也不需要我再多吹了。属于是必看系列了。

第二本推荐的是关于并发编程的,这里推荐2本书,《Java并发编程实战》《Java并发编程的艺术》

《Java并发编程实战》or 《Java并发编程的艺术》

两本都很经典,也是必读系列。

第一本更偏硬核一点,我推荐是先看第二本之后再看第一本。

数据库

数据库分很多种数据库:关系型数据库、非关系型、文档型、可能分得更细还有分布式数据库。

这里我就关系型和非关系型进行推荐。

《高性能Mysql 第三版》

我推荐的是:《高性能Mysql 第三版》,注意注意是第三版!

他去年出了第四版,四版只有400多页,第三版是1400多页。 他删减了很多内容,我认为第四版属于是 你之前看过第三版之后,再去读第四版会有一个不错的阅读体验。

但是第三版才是经典。

《Redis深度历险》

非关系数据库代表就是Redis,我推荐的是钱文平老师的 《Redis深度历险》

我记得这本书是我开始我的读书学习,头几本的书,对于新手来说非常友好。

而且里面也不缺乏深度,我感觉非常的不错。

消息中间件

消息中间件我看的是:rabbitMq、RocketMq、Kafka.

前两本看的是分别是:《RabbitMq实战》《RocketMq技术内幕》

感觉都挺一般的,但是也没有找到太好的书籍。

这里就不做推荐,只做参考

《Kafka权威指南》

Kafka有一本很经典的书:《Kafka权威指南》

这本是非常推荐的。如果你要学习Kafka,那么这本书一定是你的首选!

zookeeper

这里比较特别单独把这一个中间件拎出来呢,是因为这个中间件也是很特别的存在,学习zookeeper不单只是学习这个中间件,其实我们是要去学习他背后一个非常庞大的知识体系------分布式一致性、共识问题

他不像其他中间件那样提供一种功能,他更多的是充当一个辅助角色,通常跟别的中间件搭配使用。比如:kafka + zookeeper 、dubbo + zookeeper ....

所以说我们称zookeeper为什么------分布式应用程序协调服务,"协调",这两个字非常地有意思,等你后面学到一致性、共识算法的时候,就能很好的理解,协调这2个字。

《从Paxos到Zookeeper分布式一致性原理与实践》

这里我推荐的是 《从Paxos到Zookeeper分布式一致性原理与实践》

这本书,不单单是介绍zookeeper这个中间件,更深层次地是在讲分布式一致性、共识的问题。

他是先从架构的层面,从集中式的单体架构再到分布式架构,从而引出分布式一致性问题。

里面的两将军故事和拜占庭故事也是非常有意思。

同时也不缺2PC3PCTCC非常重要的知识点讲解。

这绝对是你打开分布式架构大门的一本非常不错的书籍。

编码规范

到这个阶段,你已经对常见的中间件有所了解了,接下来是时候提高一下编码规范了。

我个人是非常喜欢读这类编码规范的书,因为编码规范你基本你时时刻刻都在用,它所带来的提升是最明显的。

这类书籍非常多,我推荐几本我看过觉得不错的,还有我非常想看但是还没有看的。

《java开发手册》

第一本:《java开发手册》

你也不想你将来的同事,连变量要不要加下划线、大小写、类的命名、注释的规范都不会吧。

在我开始看这本书的时候一直有一个误解,我原本以为这是一本属于java新手才需要去看的书

但其实并不是的,他里面的内容还是非常值得学习的。

我是因为在别的地方看到了其中一条:

线程池不允许使用Executors 去创建,而是通过ThreadPoolExecutor的方式。

然后被吸引去看完整本书。

这里就不作解释,如果不知道这个答案的小朋友,欸!,这是不是就是驱动你去看这本书的动力了呢。

然后就是设计模式

《深入设计模式》

我是从一个网址上找到它的。refactoringguru.cn/design-patt...

推荐他的原因是,很大程度上是因为它里面的插画画的得特别不错,比起文字,图像更容易让人留下印象。

设计模式还有一本 《设计模式之禅》 也是比较推荐的。

《设计模式之禅》

不过这本我还没有看,但是很多地方都有推他,他的书评还是很不错的,这里小小地推荐一手。

进阶一点的编码规范

《重构:改善既有代码的艺术》

这本书我觉得也是属于必读的书籍。

印象最深刻就是:一片尿布、两顶帽子、三次法则。

  • 一片尿布是:作者描述写得不好得代码,就跟奶奶的尿布发臭了一样。如何衡量一段代码是否需要 进行重构,这件事情非常困难。 但是作者提出了一个观念就是:一个不好的代码,它就跟尿布一样,散发着坏代码的味道。 然后他就讲了一下他认为代码的坏味道例子。
  • 两顶帽子重构和开发的关系,是交替进行的,并不是说重构是在开发完了之后进行,而是在开发中进行重构。
  • 三次法则讲的是何时重构,第一次你去做这件事没关系,第二次又做这件事可能会觉得优点不适,第三次,嗯,是时候想想该如何去重构了。

这本书的精华在前半段章节,后面就是具体的怎么去改了。

接下来就是我很想去看,但是还没看的,因为有点多所以就不详细讲了。

《代码大全2》

《Effective Java》

《架构整洁之道》

《代码整洁之道》

《领域驱动设计》

专业性没那么强的书籍

《软技能:代码以外的生存指南》

这本书对于编程专业知识可能并不强,但是里面的东西非常重要,属于是那种终身受用。

里面有一章讲的是《成为专业人士》

何为专业人士

里面举例说明了2类人,专业人士外行

而且专业人士有自己的底线,这个底线的定义可能因人不同,我的理解就是不含糊,对得起自己写的代码,可以做到问心无愧。

你写的代码可能不一定是最合适的,但是在当时,你已经是经过了深思熟虑,而不是知道更好的解决方法,但是你偷懒,没有去改

可能我现在已经记不起书中具体提到的专业人士所有的品质。但就我个人的定义,专业人士就是我所向往的人,我想要成为的人

里面有2句话我受用一辈子

你做的每一件,事情就是你所做的一切。

我的理解就是,如果你在地方降低了标准,那么你最终会不经意地越来越降低标准

所以每当我觉得很麻烦的时候,我可能心里就会想,"哎呀好烦,算了"。

但是很快就会想到这句话,就会抱怨完了之后,继续认认真真地改。

你做的每一件事情,就是你所做的一切

学会拥抱失败

第二本书 《淘宝技术这十年》

《淘宝技术这十年》

这是一本讲了点技术,又讲了点淘宝发展史的书。

他有技术部分也有故事叙述部分,但我更多觉得是一本故事书,我感觉是的。

里面是以淘宝技术架构的发展为主线,讲了他们在选型和过程中发生的事情。

他这本书吸引我的地方是,你可以在里面看到有许多优秀的人。

我最记得里面有一个故事是讲:那时候公司搞活动,很多人在旁边一个地方打乒乓球,多隆就在电脑旁边默默地写代码。

就给我一个搞技术的人,一个很纯粹的感觉

还有一句很深刻的话

好的架构是进化来的,不是设计来的

下一本是 《程序员修炼之道》

《程序员修炼之道2:通向务实的最高境界》

这本书我也看过,但是给我的惊艳程度没有 《软技能》 高,但是也是值得看的一本书。

框架类

框架类的,我是放在编码规范之后的,因为看框架你避免不了去看源码,光看书不看源码对于学习框架来说是不太好的,尤其是像Spring这种,偏应用的,书籍 + 源码是必不可少的。

对于这里开源框架的源码,为了代码的健壮性,里面用到了很多设计模式,所以我希望你在看框架类之前,已经是具备了这方面的知识,因此把框架类的放到了设计模式后面。

《Spring技术内幕》

第一本:首先是我们用得最多得Spring框架,我看的是Spring技术内幕,也说不上是特别推荐,但是从阅读体验来说还不错。

这里我看的是 《Spring技术内幕》

第二本:是关于网络IO的 《Netty权威指南》

《Netty权威指南》

这一本除了讲Netty,他还讲了Java IO的发展,从BIO到伪NIO,再到真正的NIO,最后是AIO

然后还讲到了经典的Reactor线程模型,其实在学习Redis,你可能也已经接触到Reactor线程模型、selector、poll、epoll这些了。

分布式架构类

分布式架构类的,其实我之前看了还挺多本,但是没有特别惊艳到的。

除了一本书 《DDIA:数据密集型应用系统设计》

直到我读到了DDIA这本书,这本书目前是我认为我所看的书里面,写得最好的一本书,没有之一,写得非常透彻,非常全面。

《DDIA:数据密集型应用系统设计》

好象这种 O'Reilly 出版的也就是封面是个动物的书,大多数都是非常不错的。

这本书是分成三部分。

第一部分其实也是很一般,是一些知识的铺垫。

第二部分才是这本书的精华所在。

光看这些标题,就已经非常吸引人。

真正的全程无尿点,全部都是高能

他是那种:

  1. 列出一个场景,举例说明遇到了什么问题。
  2. 然后我们有什么办法去解决,每一种方法的解决所带来的区别是什么。
  3. 当我们目前所有办法都无法解决当前的难题的时候,就要用另外一种新的技术来解决(技术创新)。

我最喜欢的是里面:事务、分布式系统的挑战、一致性与共识这几章。

非常的不错。这本是我心中目前读到的No.1

分布式类其实还有非常多,但是我都没看过,所以我这里就不推荐了。推荐看那种一步一步告诉你每个阶段遇到了什么问题,用了什么技术来解决的。

这类一般逻辑性、条理性比较强,而且也是个不错的叙述方式。

第二本关于服务治理的。

《微服务架构设计模式》

这本书我并没有看过,但是感觉他的目录非常吸引我,绝对是一本非常不错的书,看过的同学可以留言评论一下。

总结

这就是我的读书书单,最后再多啰嗦总结一下。

读书是偏个人向的东西,我的书单只能参考,不一定完全适合你。

当你入门了之后,你是最了解,你自身知识的掌握程度,所以你最清楚自己该去看哪些方面的书。

来都来了,点个赞再走吧彦祖👍,这对我来说非常重要!

相关推荐
一只叫煤球的猫4 小时前
写代码很6,面试秒变菜鸟?不卖课,面试官视角走心探讨
前端·后端·面试
bobz9654 小时前
tcp/ip 中的多路复用
后端
bobz9654 小时前
tls ingress 简单记录
后端
皮皮林5516 小时前
IDEA 源码阅读利器,你居然还不会?
java·intellij idea
你的人类朋友6 小时前
什么是OpenSSL
后端·安全·程序员
bobz9656 小时前
mcp 直接操作浏览器
后端
前端小张同学8 小时前
服务器部署 gitlab 占用空间太大怎么办,优化思路。
后端
databook8 小时前
Manim实现闪光轨迹特效
后端·python·动效
武子康9 小时前
大数据-98 Spark 从 DStream 到 Structured Streaming:Spark 实时计算的演进
大数据·后端·spark
该用户已不存在9 小时前
6个值得收藏的.NET ORM 框架
前端·后端·.net