开发内功修炼

纸质版本网络书即将出版!!!

大家好,我是飞哥!

今天正式和大家同步一件事情,那就是咱们的纸质版本的书就快要面世了!就在上周,出版社的姚老师和我同步了书的最新的时间点。下印时间大约是在四月上旬!


姚老师是出版行业里的一位大咖。下面这张照片是去年 5 月份的时候,姚老师从成都来北京找我讨论出版详细细节的时候拍的。姚老师是中间这位。目前技术类不少新的畅销书都是他策划的。

这 顿饭非常重要,在饭局之后我们谈好了合作细节,并签订了出版社合同。

以下是本次要出版的纸质书的内容结构。


1.书名确定

我们最终确定的书名是, 《深入理解Linux网络:修炼底层内功,掌握高性能原理》

在刚一开始,我列了很多个名字作为备选,也和出版社老师进行过多次沟通。但是始终没有想出来到底哪个名字更好一些。

于是后来在群里同学的建议下,发起了投票。最终《深入理解Linux网络:修炼底层内功,掌握高性能原理》这个名字在两轮中都以 70+% 压倒性的优势胜出。

飞哥在此郑重感谢同学们,感谢大家帮我筛出了这么一个好的名字。

2. 写书的动机

为什么要写这么一本书呢?因为我觉得虽然业界中各种计算机类的书已经非常多了,但是仍然存在一些不足。 不能够快速地让应用层开发的同学们从底层来汲取营养!

首先说,对于应用开发来说,深度理解底层知识是非常重要的。

当你开始关注性能的时候,你会发现如果缺乏对底层的了解。在性能优化上基本上是束手无策的。所以无论是在大厂的入职面试中,还是公司内部的技术晋升通道面试。都要求候选人要具备扎实的底层理解。

但是国内的同学却很难抽出很多的时间来大块地理解底层实现。虽然业界很多公司下班都很晚,但是工作中大部分的精力其实是被非技术相关的事情给占用的,例如各种 CRUD 需求实现,产品bug的处理、以及参加各种各样的会议。

大家都想练就深厚的技术能力,但是时间精力不允许。

所以,咱们这本书的目的就是帮所有在应用层上工作的开发、运维等同学们搭一座通往底层的桥梁。让大家能快速地从底层获取到自己想要的知识。回过头来加强和提升自己的工作水平。

在本书的创作思路上,我始终坚持一个核心: 以和工作相关的实际的问题为核心 。

我并不会一开始就给你灌输软中断、epoll、socket 内核对象等内核网络模块的知识,我也觉得这些东西很乏味。所以我在每一章的开头都是先抛出几个和开发工作相关的实际问题。

然后正文中再围绕这几个问题展开探寻。是的,我用的词不是学习,而是探寻。和学习相比,探寻更强调的对要解惑的问题的好奇心,更有意思。而且解决掉实际的问题,也更有实用价值!

虽然本书中会涉及到很多的源码,但我想这里先强调一下,我们并不是一本源码解析的书。我们真正的目的是,是为了理解和解决项目实践相关的这些问题,进而提高我们驾驭手头工作的能力。而源码恰巧只是我们达成目的的工具和途径而已。

3.写书过程

在 2021 年 5 月签完合同以后,我就开始着手写这本书。虽然有前期公众号的内容的积累,但是书和公众号的文章区别还是挺大的。

首先书要求整体内容要成体系,而不能是东一个知识点,西一个性能提升经验。还有就是书的逻辑表达要非常严谨,不能像在公众号的文章中那么随意。所以我花了大量的精力来准备书稿,很多个周末都是在写书的过程中度过了。

全书的大体思路是先从收包发包讲起,然后再讲到内核是如何和用户进程来配合的(同步阻塞、epoll),然后再围绕三次握手中的实际问题展开(连接队列、内存开销等)、最后加上送给所有同学的网络性能优化建议。

最先一开始我是写到这里就停了的。但是后面我观察到业界的趋势是绝大部分的服务都往云上迁移了。所以只理解清楚单机网络工作流程可以应对现在的云上运行的服务也还不够。所以最后我又加了一章,虚拟网络运行原理。

理解清楚了虚拟网络的工作原理,以后大家在处理云上服务的网络问题,优化性能的时候也将更能迅速地找到问题所在。至此,全书的整体内容结构就形成了。

其实第一版的书稿在 2021 年 9 月份的时候就完成了。但是在去年 9 月份到现在,我和出版社老师一起前前后后修订了好几轮。第一轮修改时,出版社老师直接在纸质书稿上给标注的修改意见。这是当时用的稿件!

从这里也可以看见,书稿非常的厚。估计排版完后大约在 400 页左右。

4.签名

在读者群里,很多同学表示都想让飞哥签个名。

关于签名版的流程,我也问清楚了。

在接下来下印的时候,我和印刷那边来沟通协调,有了进一步消息我再知会大家!

还没进读者群的同学找飞哥来加入,不但可以交流技术,还可以帮「「开发内功修炼」一起出谋划策。我的微信二维码如下。