大家好,这里是物联网心球。
很高兴我的新书《图解Linux网络编程》和大家见面了。

图1 图书封面
图书的封面是几只快乐的企鹅在雪地里玩耍,希望大家在Linux学习的道路上也能够收获快乐和喜悦。接下来,我给大家介绍一下我的这本书。(图书购买方式在文章末尾)
1.一分钟快速了解本书
这是一本专门讲解Linux网络编程的书,图书共388页,累计54万字。为了提升读者的阅读体验,图书采用全彩印刷,细节拉满。

图2 图书知识体系
全书共14个章节,覆盖网络编程各个方面的知识点。网络编程属于Linux系统中一个很重要的板块,涉及的内容也很庞杂。笔者花了很多时间和精力对Linux网络编程的零散的知识进行了归纳和总结,并对每个知识点的底层原理进行了深入的研究,形成了一套完整的Linux网络编程知识体系。从计算机网络基础、套接字编程基础到复杂的内核对网络数据包的处理、高并发编程都有详细的介绍,让读者能够通过一本书彻底搞懂Linux网路编程。
2.图书特色
关注物联网心球的读者和粉丝应该都比较清楚,物联网心球一直在创作高质量的Linux图文文章。图文并茂是物联网心球的特色,作为物联网心球倾心打造的图书,《图解Linux网络编程》的第一大特色就是:图文并茂。
全文一共206张手绘插图,每一张图都像一个经验丰富的朋友,耐心的指导你学习编程知识,我们通过几张实拍图来直观感受一下。

图3 Linux内核接收数据流程

图4 select位图操作

图5 select编程流程
很多小伙伴很好奇,这些精美的插图是用什么软件制作的?其实我们只需要用最简单的画图工具就能够制作出来。一张技术插图之所以精美,主要在于图中内容的价值,所以在制作插图时,笔者一直遵循一个原则:图只是为了辅助学习知识,我们不能为了画图而画图。如果一张图没有做到这一点,那么它的存在只是在浪费读者的时间和宝贵的排版空间。
接下来,我们来聊聊本书的第二大特色:Linux内核源码深度探究。Linux程序有两种状态:用户态和内核态。简单来说,用户态指的是Linux开发者编写的代码,内核态指的是内核代码。Linux的核心功能(文件系统、网络通信、内存管理、设备管理等)都是由内核完成。用户程序只有通过系统调用陷入内核态,让内核来帮助我们实现这些核心功能。如果我们对底层实现原理(Linux内核源码)不了解,我们编写的程序将无法和内核高效地联动,也就无法实现我们想要的功能。
在介绍每个知识之前,笔者都会先将底层原理搞清楚,把内核源码看懂。这样做的目的是为了保证信息来源的可靠性,避免被垃圾和过时信息干扰,在讲解的时候能够抓住问题本质,将知识点讲清楚。
同样的,我们通过几张实拍图来看一下本书是如何讲解内核源码的。

图6 原始套接字数据包过滤内核源码分析

图7 IP_HDRINCL选项内核源码分析
最新的Linux内核源码已经达到4千万行代码,要想搞懂Linux内核源码并不容易。由于这个原因,很多学习资料都只停留在教你如何使用命令以及如何调用函数接口的层面。本书不仅教你怎么编程,也会将内核实现原理讲清楚。
最后,聊聊本书的第三大特色:提供完整的解决方案。大家在学习的时候是否有这样的困扰:一看就会,一做就废。当我们学完一个知识点,跃跃欲试,准备动手调试时,突然感觉哪哪都出问题。要不就是环境没搭建好,要不就是代码缺胳膊少腿,要不就是实现步骤不够明晰。很多小伙伴之所以花很多时间去学习Linux网络编程技术,是因为项目或产品会使用到某个知识点,如果学了不能够运用,是很可惜的。
本书在阐述重要知识时,会提供对应的完整的解决方案,让读者能够傻瓜式地应用这些技术知识。

图8 io_uring编程流程
如图8所示,在讲解io_uring异步编程时,首先会提供一个详细的编程流程图,按照编程流程图,一步步教大家完成io_ruing编程,每个步骤都交代的非常清楚。如果这样你还不会,你还可以领取配套源码,直接基于源码调试。
3.什么样的书才是一本好书?
每个人对于好书的定义都不一样,物联网心球的目标是做一本能够陪伴大家的书。一本书只有提供了有价值的内容、帮读者解决了问题以及提供了情绪价值,读者才会愿意将它留在身边。
最后,我希望本书能够成为读者的朋友,希望读者能够把这本书摆在书桌上最显眼的位置,当碰到问题或者有空闲时,随手拿起来翻一翻。
《图解Linux网络编程》原价138元,现在打6折,折后价为82.8元。有需要的小伙伴通过下面的方式购买。

