小册上新|全面升级技术内功,成为独当一面的技术高手!

1,045 阅读7分钟

站内文章封面图(960x640).jpg

作者介绍

作者简介(2100x389).jpg

挖坑的张师傅,应用软件副总工@希沃。目前主要从事 DevOps 后端、多云架构、边缘计算等相关开发工作,深耕一线开发。下面是作者的一些标签:

  • Vim 爱好者;
  • Java 逃兵(出版过一本 JVM 字节码的书),狂爱 Go、Rust,现在每天日常写 Go 和 Rust;
  • 喜欢造一些没什么用的轮子,用 Rust 重写过 Flannel,用 Go 实现过 DDIA 中的一些算法和数据结构;
  • 喜欢排查各类疑难杂症,对 Linux 内核、网络等有较多兴趣,掘金上写过 50+ 问题排查的文章,还写过一个《深入理解 TCP 协议:从原理到实战》的小册子;
  • 热衷于分享,掘金优秀作者,在掘金上架了两本小册子,销量 1W+。「Go 夜读」、「掘金开发者大会」讲师。

为什么写这本小册

我目前的主要工作集中在基础架构、DevOps 和边缘计算等领域。在日常工作中,我经常会遇到业务方面奇奇怪怪的问题,涉及容器网络、文件 I/O、内存等方面。在解决这些问题的过程中,我意识到,要找到问题的根因,需要扎实的底层原理知识作为支撑,否则只能靠“算命”。

另外,我在掘金上发表了近 60 篇文章,几乎全部都与底层原理和问题排查定位相关。通过解决大量疑难杂症,我开始思考其中是否存在一些共通的知识点,可以总结出来帮助我们团队的成员提高定位问题的能力。

于是,就有了这本《给开发者的底层原理课》的小册。

其实算下来,本小册断断续续写了好久(历时 2 年+),一开始,我对如何定位这本书感到困惑,因为底层原理浩如烟海,但顾虑太多反而寸步难行。于是,我硬着头皮把这本小册子肝出来了,也算是自己的一个阶段性的总结吧。

这本小册涉及的主题非常广泛,每个主题都可以展开写一本书。在有限的篇幅内,我无法涵盖所有内容。因此,我选择从自己实际工作中遇到并解决过的问题出发,提炼出小册的知识点, 侧重于动手实践 ,太偏的知识我不介绍,尽量做到每个知识点都可以得到验证, 尽可能每个知识点你后面工作中都有可能会遇到

小册介绍

本小册共分为五大模块,它们彼此相对独立,你可以选择你感兴趣的任意章节开始阅读。

模块一,基础篇 涵盖多个核心工具和技术的使用及原理,主要包含下面这些内容:

  • 掌握 GDB 的基本使用方法和工作机制;
  • 讲解如何使用 QEMU 和 GDB 调试 Linux 内核;
  • 结合搜索引擎和大模型看懂理解汇编代码,从汇编的角度理解 C/C++、Go 的诸多细节;
  • 探讨同步机制和锁的实现原理,介绍计算机先驱们是如何优化锁的;
  • 深入理解线程本地存储 TLS 的实现原理;
  • Linux 系统中的时钟源和高性能计时方法,以及 vdso 系统调用的实现和应用;
  • 零拷贝技术的原理和实现,了解如何通过零拷贝提高数据传输效率;
  • LD_PRELOAD 的使用方法和应用场景,介绍在审计、故障注入、性能分析上的应用;
  • 深入分析系统调用的实现原理,如何传参,系统调用涉及的上下文切换等;
  • ftrace 和 trace-cmd 工具的使用方法,方便你追踪内核调用过程;
  • 手写 tcpdump。

模块二,CPU 篇 包含:

  • 进程线程的本质,详细讲解 Linux 内核中 task_struct 结构;
  • 进程的各种状态及其转换条件,帮助你理解进程的生命周期;
  • 孤儿进程和僵尸进程的概念及其处理方法;
  • Kubernetes 中的 pause 容器和僵尸进程问题;
  • D 状态进程的含义及其对系统负载的影响;
  • 进程上下文切换的本质,了解其对系统性能的影响;
  • 完全公平调度(CFS)算法的原理和实现,理解线程是如何分配到 CPU 时间的;
  • 实时进程调度算法的原理和实现;
  • 火焰图的概念和使用方法,帮助你分析和优化 CPU 性能;
  • CPU 亲和性和超线程技术的原理和应用,了解在多核处理器中应该注意什么;
  • 通过实际代码示例,讲解如何手写协程,帮你了解协程的本质。

模块三,内存篇 包含:

  • 理解虚拟内存和物理内存的概念;
  • 比较 brk 和 mmap 两种内存分配系统调用的原理和应用场景,了解内存是如何分配的;
  • 介绍进程内存分布的基本概念和结构,这在分析进程的内存占用时十分有用;
  • 了解什么是缺页中断 PageFault;
  • 深入分析 Linux OOM 机制,了解 overcommit、oom_score_adj 等概念;
  • 讲解 malloc 和 free 函数的底层实现原理,理解 ptmalloc、jemalloc 等内存分配器的角色。

模块四,IO 篇 包含:

  • 介绍虚拟文件系统(VFS)的概念和四大数据结构,理解 Linux 一切皆文件的精妙设计;
  • 了解文件描述符(fd)分配的最低未使用原则;
  • 理解文件描述符表(进程级)、打开文件列表(系统级)、i-node 表(系统级)三者之间的关系;
  • 剖析 epoll 源码,理解等待队列、epoll 数据结构、事件回调等知识。

模块五,容器篇。主要介绍容器原理以及网络相关的知识:

  • 支撑容器实现的实现原理:cgroup、namespace、rootfs 等概念;
  • 容器网络基石:veth、bridge、tun/tap 等;
  • 剖析内核层 conntrack 的实现;
  • 理解 iptables 的基础概念与自定义规则链;
  • DNS 的实现原理以及在各大语言中的注意事项;
  • ARP 的基础知识以及 GC 的注意事项;
  • 通过源码走读,介绍 socket 编程中的核心函数的内核层实现。

为了方便你全面概览小册子的内容,我列了一个这本小册的思维导图

思维导图.jpg

你将获得

  • 五大板块,全面覆盖开发者必备关键理论知识;
  • 深入底层,从根儿理解各技术工作原理和思想;
  • 实战驱动,沉浸式学习,在动手中内化知识;
  • 授之以渔,带你学会独立思考和解决问题。

适宜人群

这本小册覆盖的主题是比较广泛的,适用于下面这些人群:

  • 开发工程师:无论是前端、后端、全栈还是移动端开发,深入理解 Linux 内核原理和系统编程,有助于写出更高质量、性能更好的代码。比如,通过学习内存管理原理,可以优化内存使用、分析内存泄露等问题。

  • 运维/DevOps 工程师:运维工作与 Linux 系统密不可分。学习 Linux 内核,可以从根本上理解系统的方方面面,快速定位和解决各种疑难杂症。比如,GDB 和 ftrace 等调试工具的原理和使用,可以帮助更高效地排查故障。

  • 测试开发工程师:学习 Linux 系统编程,更高效地排查问题根因、开发更强大的测试工具。

  • 技术爱好者:对于热爱技术、喜欢探索的人来说,Linux 内核一直是一个神秘而有吸引力的领域。这本小册可以满足你的好奇心,让你对操作系统和计算机体系结构有更深刻的认识。

最低价:上新特惠,限时 6 折中

学习底层原理,是程序员打磨内功、提升技术修为的必经之路。希望通过此小册,你可以习得攻克“疑难杂症”的内力,掌握精进的方法,成为独当一面的技术高手。期待你的加入!!

6 月 19 日~6 月 26 日,上新限时 6 折,原价 ¥69.9,算下来仅需 ¥41.94,现在购买最省钱!!!

赶紧点击下方图片或者扫描海报二维码,一起加入学习吧!

宣传海报(1242x2650)-站内文章.jpg