低并发编程书籍推荐 | 第三期

低并发编程

共 8612字,需浏览 18分钟

 · 2021-04-27

‍‍‍‍本次为书籍推荐的第三期,推荐者均为低并发编程的读者,感谢大家的分享。
PS:只做推荐,不提供购买链接,不提供 PDF 电子版。


《How Tomcat Works》
 推荐者:三千
ISBN:9780975212806

当时看这本书是因为看完了《Head First Servlet》之后,就在想,Servlet 这么多功能,这么多细节问题,如果是我来做 Servlet 容器,我会怎么实现,于是找到了这本书。
一本好书,不仅仅能解决你的疑问,而且会带着你一起思考。《How Tomcat Works》就是这样的一本书,这本书从一个简单的 Socket 接口开始,通过提出问题,解决问题然后优化问题,最终形成了整个 Tomcat 的框架。整本书由浅入深,简洁明了,如果你想学习框架设计、学习设计模式、学习系统源码、了解 HTTP 协议、深入了解 Tomcat,这本书是你的不二之选。建议看此书之前,确保你对 Servlet 和 HTTP 有一定的了解,同时配合 Tomcat 源码研究会更加方便。
缺点:
这本书是基于 Tomcat4 编写的,有些多东西在现在看来稍微有点过时,同时英文版可能会有一点阅读压力。
好消息是本书也有翻译版,名叫《深入剖析 Tomcat》,翻译的还行。
本书推荐给想深入了解 Tomcat 实现的朋友。
 
《数学之美》
推荐者:三千
ISBN:9787115282828

今天是周末,想着推荐一本和编程不是强相关的书籍。
此书的作者吴军,毕业于清华大学和美国约翰·霍普金斯大学,这本书的内容来源于作者在 Google 担任资深研究员的时候,发生在作者周围的小故事。
这本书推荐给所有对数学不感兴趣的人。
几乎所有看完此书的读者都会发出低估了数学的魅力的感叹。在我们的印象中,数学好像只是用来衡量你应该去哪个地方上大学的工具而已,作者通过 31 个小故事,像我们展示了数学不仅有用,而且还有无穷的魅力,如果你还是一个学生,真心建议你阅读此书,越早看这本书,对你的影响就越大。
这本书没有 Java 框架,没有 C++语法,也没有日常 CURD 的枯燥,它能让你真正的体会到什么是计算机工程,什么是统计学,什么是数学。
书中并没有详细的介绍一个知识点的原理,细节问题,作者知识先是介绍了一些数学概念,然后描述遇到的问题,最后讲解了如何通过这个数学概念来解决这个问题。
此书和日常开发的相关性不大,因此你可以在周末无聊的时候,工作疲劳的时候,上班摸鱼的时候翻一翻其中的故事。
希望各位,特别是还在上学的学弟学妹可以看看这本书,了解数学,喜欢数学,探索数学,提高自己的思考能力;希望这本书,能将各个“螺丝钉”从日常的 CURD 的枯燥中解放出来,明白知识的奥义,提高的思考能力,知其然还知其所以然。
希望你,就是下一个 Google 的“拉里佩奇”。

《精通 Spring4.x》
推荐者:三千
ISBN:9787121304439

如果说到 Java Web,那么现在基本都离不开 Spring,如果说到关于 Spring 的书,那么网上推荐的最多的便是《Spring 实战》,如果将学习 Spring 比作学习驾照的话,《Spring 实战》就像是你的教练,他会告诉你左脚就是离合,右脚有油门和刹车,半坡起步应该油离结合,而《精通 Spring4.x》则更像是一个培训老师,他在教你哪里是油门哪里是刹车的同时,还会简单告诉你汽车的结构是如何设计的,油门和离合是如何配合的,这款车容易遇到哪些问题,应该怎么解决,这样在你真正上路的时候,遇到简单的事故你也能得心应手。
《精通 Spring4.x》从 Spring IoC,Spring Bean,Spring SpEL,Spring AOP,Spring Web,Sring JDBC 展开介绍,此书是一本典型的中式教学书,描述更加符合中国人的思考方式,内容由浅入深,娓娓道来:
在介绍 IoC 的时候,它会讲解如何通过反射自己实现 Bean 容器;
在介绍 Spring 核心的时候,它会讲解 Spring 底层工具:SpEL 表达式的神奇;
在介绍 Spring Bean 生命周期的时候,它会讲解 Spring Bean 为什么默认是单例,为什么这样做不会有线程安全问题,以及 Spring Bean 生命周期会遇到的问题以及如何解决;
在介绍 Spring AOP 的时候,它会讲解 Spring AOP 实现的原理,CGLIB 和 JDK 实现的优点和缺点,Spring AOP 使用容易遇到什么问题以及如何解决;
在介绍 Spring Transaction, 它会讲解 Spring 申明式事务的原理,Spring 事务传播的内容,以及 Spring 申明式事务容易遇到的问题以及如何解决;
在介绍 Spring Web 的时候,它会讲解 Spring Web Context 的分级关系,ServletDispatch 的工作方式;
在介绍 Spring JDBC 的时候,它会对比 JDK JDBC 的缺点以及 Spring Templeate 的设计理念;
...
从这本书的内容能够看出作者的编程功底深厚,语言组织能力也比较强,作者总是从原理讲起,然后展开,最后落在 Spring 的模块上,每看一遍,都会有收获。将它评为一本好书,实不为过。
但是,此书也有一定的缺点:
1. 定价较高,这是我买的第一本定价三位数的书,小贵,但是看完后感觉很值。
2. 关于 Spring Bean 容器装配的内容,作者主要以 xml 配置讲解,注解方式讲的不多,在现在来看,稍微有点过时。
3. 书中有一些过时的内容,比如在 Spring AOP 中,作者花了一章讲解 AOP 接口标准,如果对 AspectJ 不够熟悉,可能会比较难以理解,而且更加迷糊;再比如 PointCut 切点函数中,作者详细的介绍了 within,target 的区别,但是没有介绍其原理,本身作用不大,但是又难以理解...这些需要自己辨别。
总之,这本书的内容非常符合我对一本关于 Spring 的书的预期,也很幸运市面上能有这样一本书带我学习 Spring,让我在后面的工作中,总是能避开各种问题。
在这里,将此书推荐给想系统学习 Spring 的同学!
 
《Effective Java》3th.
推荐者:三千
ISBN:9787115211316

这本书的作者大多数的 Javaer 应该都听过,他的名字就在 HashMap 的注释里面。
这本书融合了作者多年依赖开发 Java 遇到过的问题,然后总结出了 90 多条注意事项,是一个真正精通 Java 语言的大师提出来的总结经验,在豆瓣上的评分 9.5(扣的 0.5 应该给了翻译)。
如果你是 Java 初学者,或者刚工作一年,可能看这本书收获不会很大;如果你是一个有二、三年工作经验的 Javaer,可能看完后感触不大,但是如果理解里面的问题后,能让你站在巨人的肩膀上让你平稳跳过开发中会遇到的坑;如果你是一个有丰富开发经验的 Java 开发者,我相信你在看完这本书之后,一定会痛拍大腿喊道:就是这样的,当初为了排查这个问题熬了好多个通宵。所以,为了你的头发...
当初看这本书的时候,英文版第三版早已出版,但是中文版还一直是第二版。为了看第三版的内容,硬着头皮啃了很久。在 2019 年初的时候,第三版中文版终于本翻译了出来,出版后我就买了中文版第三版翻了一遍,感觉翻译有点生硬,有许多专业名词翻译错误。
这本书建议每两年看一遍,几乎每一遍都能有收获,温故知新,这 90 几条都是作者总结出来的精华。书中的内容不是强相关,但是比较难以理解,你可以每天摸鱼的时候看一条,然后慢慢消化,实在不能理解的可以等工作两年再来看看。
小 tips:抛一个问题:如何创建一个真正线程安全的单例类?如果你的注意力还是只是在如何通过双重校验锁构建来初始化实例,那么建议你从现在就开始读这本书。
 
《Redis 设计与实现》
推荐者:三千
ISBN:9787111464747

Redis 为什么这么快?
面对这种面试八股文题,大多数人都能说出一个所以然:使用 IO 多路复用,数据都存放在内存中...
然而,仅仅是这样么?你有好奇过为什么 Redis 如此流行么?有没有好奇过 Redis 为什么不用设置数据类型,就可以自动区分开字符串类型和数字类型,从而判断能否执行 inc 指令?有没有好奇过作者为了让 redis 更快,到底做了哪些努力?为什么单线程就能支撑住高并发的请求?
《Redis 设计与实现》从深入源码分析的角度,详细的剖析了 Redis 内部的设计与实现。
从从动态字符串 SDS,压缩列表 ziplist,快速列表 quicklist,到跳表 zskiplist,作者详细介绍了 Redis 作者为了优化查找时间所做的所有努力;
从 keys 到 scan, 从 rehash 到渐进式 rehash,从过期到 lazy expire 可以看到 Redis 能仅仅使用单线程来支撑高并发不仅仅是 IO 多路复用那么简单。
从单机 redis 到 Sentinel 再到 cluster,redis hash 一致性算法,raft 选主策略,可以看到 redis 在面对分布式系统所给出的各种解决方案。
可能有人会担心 Redis 源码使用 C 语言,自己对 C 不熟悉怎么办?《Redis 设计与实现》这本书在介绍 Redis 各种数据结构的时候,贴出来的都是核心代码,作者主要结合图和原理来讲解的数据结构,因此这个本适合所有程序员。
小 tip:这本书主要讲解的是 Redis 的设计与实现,如果你看完之后意犹未尽,可以结合《Redis 深度历险:核心原理与应用实践》看看如何更好的利用 Redis 所提供的数据结构解决各种业务问题。
 
《MySQL 技术内幕》
推荐者:三千
ISBN:9787111422068
 
说到 MySQL 相关的书,可能大多数人第一时间得到的答案便是《高性能 MySQL》,然而对于开发人员来说《高性能 MySQL》更多讲解的是在使用 MySQL 时,需要注意哪些问题、如何写出更高性能的 SQL,知其然亦知其所以然,作为程序员不能仅仅知道 How,更多的是需要知道 Why。
MySQL 为什么能如此流行?
为什么 InnoDB 要选用 B+树作为索引?使用注意事项有哪些?
MySQL 的文件有哪些?Binary Log,Redo Log,Undo Log 的区别和作用分别是什么?
MySQL 如何管理磁盘空间,MySQL 内存管理最小基本单元是什么?
MySQL 事务的原理是什么?为什么 RC 级别就不会出现幻读问题?MVCC 的优点和缺点是什么?
MySQL 自带的优化有哪些?ICP,MRR 的工作原理是什么?
《MySQL 技术内幕》主要从 InnoDB 引擎的体系架构开始讲解,分别讲解了 InnoDB 的关键特性:包括 InnoDB 日志文件,InnoDB 文件管理,索引,事务,锁等,看完之后,能让你对 MySQL 的原理有个大致的认识。
缺点:
全书讲解比较深入,涉及到许多比较生涩的概念,如果你对 MySQL 没有任何了解,那么这本书读起来可能困难,但是书中各个章节关联性不大,可以只选择感兴趣的地方阅读。
同时书的内容排版一般,前几章看起来可能有点云里雾里的柑橘。
小 tips:关于 MySQL 的书,前段时间出版了一本《MySQL 是怎样运行的》,ISBN:9787115547057,好评较多,但是这本书还在我的待读清单中,具体内容怎么样暂时未知,因此这里暂不作推荐,推荐你们可以多了解对比下,选择适合自己的那本详细阅读。
 
《Head First 设计模式》
推荐者:三千
ISBN:9787508353937

今天是周末,想推荐一本比较“轻松”的书。
设计模式最开始是由四人帮 GoF 出版的《Design Patterns - Elements of Reusable Object-Oriented Software》所提出的概念,书中总结了一些设计原则以及如某些情况下如果设计系统从而实现更好的维护系统。然而书是好书,但是对于开发经验较少的开发者们来说,却是难以理解,每次看完后,感觉还是似懂非懂。
《Head First 设计模式》是"Head Fisrt"系列中的经典书籍,这本书依然贯彻的"Head First"的经典理念:让你的大脑思考起来。书中通过一个一个小故事,从提出需求,解决需求,发现问题,解决问题,总结设计模式的思路讲解了常用的设计模式,内容经典有趣,很容易使得读者代入思考:如果你是开发者,你会写出什么样的代码?如果你想了解设计模式,但是阅读 GoF 的《设计模式》又感觉难以理解,那么推荐你通过这本书入门。
关于设计模式这里想多说两句,对于设计模式的书,我看过的经典的两本出版时间都是零几年,作为一个程序员,你可能会放弃 Java 使用 Go,放弃 Struct2 使用 Spring MVC...但是只要你不是放弃编码,你就离不开设计模式,设计模式可以说是在编程基础中"性价比"最高的一类之一,自动 91 年设计模式的概念提出后,到现在都没有过时,你有什么理由不好好去理解它呢?理解设计模式可以从设计原则入手,几乎所有的设计模式最终的目的都是“开闭原则”,设计模式就是教你如何在千奇百怪的需求中,依然保证你的代码不容易被修改,从而减少因修改带来的 Bug。
《Head First 设计模式》适合入门设计模式,但是它所举的例子都是非常适合各个设计模式的,平时开发中,可能很难恰好遇到这种情况,因此很多人都说,设计模式那么多,常用的就那几个。其实当你入门设计模式之后,推荐多去看看开源框架的源码,经典的代码中,它的设计都非常具有艺术性,比如 Spring,MyBatis,带着学习的目的性去看这些源码,收获一定会很大。
 
《码农翻身》
推荐者:三千
ISBN:9787121341175

和昨天推荐的《Head First 设计模式》一样,《码农翻身》也是一本“轻松”的书籍。这本书更像是一本程序员的睡前故事书,书中通过一个个小故事诙谐幽默的讲解了一些技术的由来,故事的风格诙谐幽默,从计算机操作系统到目前流行的架构技术都有涉及,每个故事看完后都可以轻松的理解问题的由来,如果解决,最后是如何演变到今天的样子。书中涉及到很多内容都是我们目前有接触,但是对于细节却又不知道的不是很清楚的技术,比如:DMA,操作系统中断、RSA 加密、HTTPS 原理、一致性 Hash 等。同时书中也涉及到各个语言之间的差异性讨论,比如 PHP 到底是不是世界上最好的语言?
这本书推荐给对工程化编程比较感兴趣的同学,如果你想简单的了解经常听说的概念,比如 Spring 究竟是什么?AOP 的由来,一致性 Hash 的原理、操作系统基础等等。
缺点:
书中的故事虽然巧妙,但是书中的内容比较分散化,可能这一小节在说 C++的历史,下一小节又在 Java 的泛型,因此仅能简单的理解一些概念,不适合作为一本系统学习某个技术的书。
 
《深入理解 Kafka:核心设计与实践原理》
推荐者:三千
ISBN:9787121359026

随着微服务的流行,MQ 在日常的开发中变得不可或缺。对于项目中经常使用到的 Kafka,你有没有真正的了解其原理?
如何保证你所发送的消息不丢失?
如何保证你所发送的消息有序?
Kafka 在使用过程中为什么要注意去重?
Kafka 的 Exactly Once 语义是如何实现的?有什么缺点?
Kafka 为什么能实现高吞吐?它分别在 Consumer、Broker、Producer 中做了哪些优化?
为什么 Kafka 要逐步去除 Zookeeper 的依赖?
当你需要设计一个业务系统,而这个业务系统需要依赖 Kafka 的这些特性的时候,如果你不知道 Kafka 的内部原理,那么很可能会踩上一个又一个坑。
《深入理解 Kafka:核心设计与实践原理》这本书从使用到实现,从 Consumer 到 Broker 再到 Producer 详细的介绍了 Kafka 的核心设计,书中前 4 章简单的介绍了如何在开发中使用 Kafka,而后又深入的讲解了 Kafka 的协议设计、Broker/Consumer/Producer、事务实现以及 Kafka 的一些高级应用。
缺点:
这本书的讲解比《Kafka 权威指南》要深入很多,因此刚开始读会感觉比较困难,但是多读几遍就能慢慢理解 Kafka 设计的奥义。
同时个人感觉这本书的排版稍微有点瑕疵,作者在介绍各个模块的时候,会把其他章节的内容再次糅合在一起,比如对于 Kafka 的协议介绍散在各个章节,如果对协议不太感兴趣就只能看一段,再跳过一段。
总的来说,瑕不掩瑜,这本书是我目前看过对于 Kafka 解析最为经典的一本。
 
《架构整洁之道》
推荐者:为福
ISBN:9787121347962

从开始接触计算机以来,我看的最多的就是软件设计方面的书籍。下面这本书是我看过众多软件设计书中拔尖的一本书。
对于软件设计,你是不是只会抽个接口(抽象类),还没有理论依据?哈哈,继续看下去
相信很多做程序员的朋友都觉得,架构师是程序员的进阶。但在我看来,架构师和程序员并不是一一对应的关系。在我的理解中,程序员的发展方向类似游戏中·的转职,可以转职成项目经理(管理方向)、技术专家(技术方向)、架构师(设计方向)等。
这本书是软件开发转到软件设计的通行证(但不是唯一通行证)。作者 Bob 大叔,老程序员,比如作品有《代码整洁之道》、《敏捷软件开发:原则、模式和实践》等很多业界常见的书籍。作者是从晶体管计算机时代编程到今天的,具有丰富经验的程序员。历史总是相似的,如今遇到的软件设计方面的问题,其实多数在历史中也遇到过类似的。作者由于无数次被不良的设计毒打,所以保留了很多相当深刻的经验,这些经验很多都通过文字留在这本书中。书的最后还讲了 Bob 大叔的过往经历的项目(从晶体管时代到现在),也毫无保留的分析了这些项目的失败原因,光是这些,我觉得就值得一看!
这本书不是一本讲技术的书,而是一本描述软件设计思想的书。它可能会解决你几乎所有的软件设计方面的疑问,如:为什么有微服务、模块怎么划分、代码如何组织等等。。会讨论包括:什么是真正的依赖反转、如何利用依赖反转设计软件结构、软件边界如何划分……其实很多开发时的疑惑,都是不懂软件设计带来的疑惑。书中真正的内容远比我文字中展示的多。这本书,会带你入门软件设计。
本书推荐给:想要转职架构师的朋友、想入门软件设计的朋友。阅读基础:最好有一定编码经验。困惑越多,收获越大。这本书适合多看几遍,浓缩了很多设计哲学,一时半会吸收不完全(我是看完一遍后没有吸收完全,感觉距离还远,可能有大佬可以吧)。
 
《游戏设计艺术》
推荐者:为福
ISBN:9787121282669

各位非游戏行业的人员先别走,先耐心看下我对这本书的描述哈,不然可能会失去不仅一本好书。这本书应该比我推荐的上本书(架构整洁之道)品质更高!
和书名一样,这本书主要是围绕游戏来讲述的。不过超出很多我预期的是,书里面的内容适用面并不狭窄(仅对游戏方面有意义),反而可以用在很多其他地方。
简单说来,这本书使用你绝对猜不到的可怕数量的角度,来阐述设计这件事。比如:倾听、记忆、心理、灵感、潜意识。。。。等等等等,而且每个角度都有独到见解,几乎每一项都会给我打开另一个大门,非常直接的扩宽了我的设计视野。所以我觉得,任何想走开发或软件设计的人,读一下这本书都不会吃亏,甚至受益匪浅!
换个角度再说一下这本书的知识量的恐怖之处。做过软件设计或架构的朋友可能知道,描述软件结构时,一般会通过多种视图来描述软件,为了更多角度的来审视软件的质量。用于审视软件质量的这个角度叫做视角。在这本书中有一个概念,叫做透镜,是用来审视游戏软件的质量的视角。这本书提出的透镜竟然有 113 个,且都由某些场景做引入,并非空壳子。这就很可怕了。试想,若你的软件可以从高达 100 多个角度来审视,打磨,那软件的质量就很可怕了。
总而言之,这不是一本开发书籍,这又是一本设计书籍。主要围绕"游戏"这个软件,讲述设计相关的内容。当然,更偏向游戏是真的,不过对其他软件也有极强的借鉴、指导意义。
阅读基础:最好对游戏感兴趣,技术基础无要求(有编程经验当然更好,不过讲的主要是设计艺术,其实没经验也可以读)
将这本书推荐给想要从事软件设计、艺术设计、游戏设计的朋友!我只能说,读过这本书一定会打开你的某些视角,强烈推荐!
 
感谢推荐者!

浏览 42
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报