前言
欢迎大家来到我的频道,这里是Ashlee
,今天跟大家聊一聊关于看书顺序。
如果你是想要系统性地学习某一个知识点,那么看书是一个非常不错的选择。
好的书籍他的文章知识点是循序渐进的,他的章节知识点可能是从简单到困难。
又或者是首先抛出一个问题,从发现这个问题,挖掘这个问题的本质,再到解决这个问题,然后扩展一些优秀的解决方案。
书的内容是最关键、最重要的,但是我这里还想提出一个观点:
就是书的阅读顺序,同样是重要的。
为什么书的阅读顺序很重要
不同阶段的你,所积累的知识不同,那么你阅读过程中,收获的知识点也就不同。
这里可能就跟你的知识发散能力 和串联知识能力有关。
什么是知识发散能力?
当你看到一个知识点,你看到的是这个知识点的一个设计思想,透过现象看本质从本质再推出根据这个思想设计的其他知识点。
比如:在看 《数据密集型应用程序设计》 的时候(后面简称DDIA
),看到《进程暂停》这个章节,简单来说就是在一个场景中:
当你拿到一把带有超时时间的锁的时候,由于你执行了一些比较耗时的任务,导致这把锁在你手上过期了。
一旦过期了,其他节点就能进行获取锁,那么就出错了,现在的情况有两把锁!
当我聊到这里的时候,你可能已经想到了 RedLock
。
之前就有一个分布式的研究专家吐槽 Redisson
的 RedLock
,他是并不安全。
甚至 你还会联想到 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这个中间件,更深层次地是在讲分布式一致性、共识的问题。
他是先从架构的层面,从集中式的单体架构再到分布式架构,从而引出分布式一致性问题。
里面的两将军故事和拜占庭故事也是非常有意思。
同时也不缺2PC
、3PC
、TCC
非常重要的知识点讲解。
这绝对是你打开分布式架构大门的一本非常不错的书籍。
编码规范
到这个阶段,你已经对常见的中间件有所了解了,接下来是时候提高一下编码规范了。
我个人是非常喜欢读这类编码规范的书,因为编码规范你基本你时时刻刻都在用,它所带来的提升是最明显的。
这类书籍非常多,我推荐几本我看过觉得不错的,还有我非常想看但是还没有看的。
《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
出版的也就是封面是个动物的书,大多数都是非常不错的。
这本书是分成三部分。
第一部分其实也是很一般,是一些知识的铺垫。
第二部分才是这本书的精华所在。
光看这些标题,就已经非常吸引人。
真正的全程无尿点,全部都是高能。
他是那种:
- 列出一个场景,举例说明遇到了什么问题。
- 然后我们有什么办法去解决,每一种方法的解决所带来的区别是什么。
- 当我们目前所有办法都无法解决当前的难题的时候,就要用另外一种新的技术来解决(技术创新)。
我最喜欢的是里面:事务、分布式系统的挑战、一致性与共识这几章。
非常的不错。这本是我心中目前读到的No.1
分布式类其实还有非常多,但是我都没看过,所以我这里就不推荐了。推荐看那种一步一步告诉你每个阶段遇到了什么问题,用了什么技术来解决的。
这类一般逻辑性、条理性比较强,而且也是个不错的叙述方式。
第二本关于服务治理的。
《微服务架构设计模式》
这本书我并没有看过,但是感觉他的目录非常吸引我,绝对是一本非常不错的书,看过的同学可以留言评论一下。
总结
这就是我的读书书单,最后再多啰嗦总结一下。
读书是偏个人向的东西,我的书单只能参考,不一定完全适合你。
当你入门了之后,你是最了解,你自身知识的掌握程度,所以你最清楚自己该去看哪些方面的书。
来都来了,点个赞再走吧彦祖👍,这对我来说非常重要!