给开发者的底层原理课- 掘金小册课程推荐/优惠

给开发者的底层原理课--掘金小册课程推荐/优惠

深入掌握计算机底层原理,升级技术内功
挖坑的张师傅
52讲 | 655人已学习
优惠价¥69.9
官网购买

版权声明

本站非掘金小册官网,与官方无任何关系。我们不提供课程下载或详细内容,仅作为课程分享和推荐平台。我们鼓励大家支持正版,尊重创作者的劳动成果,这样不仅能帮助创作者持续产出优质内容,也能让自己获得更好的学习体验。请通过官方渠道购买和学习课程,感谢您的理解与支持。

课程详情

课程介绍

作者介绍

我是挖坑的张师傅,目前主要工作在 C 厂从事 DevOps 后端、多云架构、边缘计算等相关开发工作,深耕一线开发。下面是我的一些标签:

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

为什么写这本小册

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

我在掘金上发表了近 60 篇文章,几乎全部都与底层原理和问题排查定位相关。通过解决大量疑难杂症,我开始思考其中是否存在一些共通的知识点,可以总结出来帮助我们团队的成员提高定位问题的能力。另外,我们公司的人才发展中心在策划 “底层原理与问题定位分析” 的线下系列分享课程,这个小册子的内容其实就是这个系列分享的文字版资料,后面也会根据我们内部培训的实际反馈修改完善这本小册子。

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

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

目前还有不少内容在我 Notion 笔记中,尚未整理完毕。希望以后有时间能够补全知识版图,这本小册预期还会持续更新,敬请期待。

跟过往发表的 60+ 掘金文章有什么区别

我在掘金上发表的大约 60+ 篇文章也是偏向于底层原理和问题定位的,那小册子跟我的博客文章有什么区别呢?

小册子侧重于系统全面地介绍单个知识点,帮助你把点状的知识系统化,而博客文章则侧重于实战和案例演示。

为了帮助你更好地结合小册子中的内容进行学习,我专门列出了我最近在掘金上发表的博客文章及其对应的标签。这样,你可以更清楚地看到我们在小册子中介绍的工具和原理如何在实际业务中发挥巨大的作用。

小册介绍

这本小册大概分为 五大部分,它们彼此相对独立,你可以选择你感兴趣的章节开始阅读:

  • 基础篇
  • CPU 篇
  • 内存篇
  • IO 篇
  • 容器篇

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

  • 了解 GDB 的基本使用方法,包括如何启动调试、设置断点、查看变量和单步执行等;
  • 揭开 GDB 的神秘面纱,深入探讨 GDB 的工作机制,了解其如何通过 ptrace 系统调用实现对被调试程序的控制和调试;
  • 讲解如何使用 QEMU 和 GDB 调试 Linux 内核;
  • 简单了解汇编语言的基本概念,能结合搜索引擎和大模型看懂理解汇编代码,从汇编的角度理解 C/C++、Go 的诸多细节;
  • 探讨同步机制和锁的实现原理,介绍计算机先驱们是如何优化锁的;
  • 带你深入理解线程本地存储 TLS 的实现原理;
  • 介绍 Linux 系统中的时钟源和高性能计时方法,以及 vdso 系统调用的实现和应用;
  • 介绍零拷贝技术的原理和实现,了解如何通过零拷贝提高数据传输效率;
  • 介绍 LD_PRELOAD 的使用方法和应用场景,介绍在审计、故障注入、性能分析上的应用;
  • 深入分析系统调用的实现原理,如何传参,系统调用涉及的上下文切换等;
  • 介绍 ftrace 和 trace-cmd 工具的使用方法,方便你追踪内核调用过程,理解业务的调用会触发那些内核函数;
  • 手写 tcpdump。

CPU 篇 包含下面这些内容:

  • 进程线程的本质,详细讲解 Linux 内核中 task_struct 结构;
  • 介绍进程的各种状态及其转换条件,帮助你理解进程的生命周期,尤其是 D 状态等;
  • 讲解孤儿进程和僵尸进程的概念及其处理方法;
  • 探讨 Kubernetes 中的 pause 容器和僵尸进程问题;
  • 介绍 D 状态进程的含义及其对系统负载的影响,如何构造 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 编程中的核心函数的内核层实现。

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

最近发表的掘金博客文章及标签

为了方便你更好地结合我在掘金上公开发表的博客文章来学习小册子中的内容,我特意列出了过往博客的链接并添加了相应的标签。希望这些内容能帮助你更好地理解和掌握相关技术。

适宜人群

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

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

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

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

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

课程目录

  • 初探进程的内存分布
  • 虚拟内存与物理内存
  • GDB 使用入门
  • brk vs mmap 内存分配系统调用
  • malloc 和 free 的底层原理
  • CPU 与 CGroup
  • 进程的上下文切换
  • 探究系统调用的实现细节
  • On CPU 和 Off CPU 火焰图
  • CPU 亲和性、超线程介绍
  • D 状态的进程与 load average
  • 进程实时进程调度算法
  • 进程线程的本质 task_struct
  • CFS 调度算法
  • 孤儿进程与僵尸进程
  • 进程的状态
  • 再说进程与线程
  • 聊聊 page fault
  • 深入探究线程本地存储(TLS)
  • 深入剖析 Linux OOM
  • 从汇编角度看原子操作
  • GDB 的底层实现原理
  • 详解 inode
  • 深入探究 fd
  • epoll 源码分析
  • 协程的基本概念、手写汇编实现协程切换
  • VFS 以及它的四大数据结构
  • 容器网络之 veth
  • 给用户态一个机会 tun/tap 设备
  • 聊聊 Linux 的时钟源、高性能计时与 vDSO 系统调用
  • 小册食用指南
  • 剖析 conntrack 的底层实现
  • iptable 的基石:netfilter 原理与实战
  • k8s pause 容器与僵尸进程
  • 实战使用 qemu + gdb 调试 Linux 内核以及网络配置
  • 深入理解 DNS 的实现细节
  • 容器网络基础之 Bridge
  • 网络协议栈部分源码走读
  • 汇编入门
  • 同步和锁的本质
  • 网络报文的导航地图-路由
  • ARP 原理及实现
  • iptables 的使用
  • 分析内核调用的神器 ftrace 与 trace-cmd
  • 容器技术基础
  • 从汇编角度理解 Go 语言
  • 在运行时修改程序行为的强大工具:LD_PRELOAD
  • 200 行代码硬核读取 ext4 磁盘文件
  • 手写一个迷你 tcpdump
  • fork 炸弹与进程上限
  • Linux进程内存占用的四种计算方式
  • 综合应用:Service Mesh 透明代理 TPROXY 的技术原理

作者介绍

机械工业出版社《深入理解 JVM 字节码》作者,掘金小册《深入理解TCP 协议》作者,公众号《张师傅的博客》作者,运营知识星球《张师傅的小密圈》。写一点 rust、go 和 kotlin。

作者其他课程

JVM 字节码从入门到精通 - 掘金小册课程推荐/分享/优惠/折扣
JVM 字节码从入门到精通
深入剖析 JVM 字节码,带你分析字节码黑科技、破解软件、从零实现一个 APM
挖坑的张师傅
4828人已学习
优惠价¥39.9
官网购买
深入理解 TCP 协议:从原理到实战 - 掘金小册课程推荐/分享/优惠/折扣
深入理解 TCP 协议:从原理到实战
用实验和图解的方式带你深入理解 TCP 协议,让 TCP 协议不再是拦路虎
挖坑的张师傅
7966人已学习
优惠价¥49.9
官网购买

推荐

Java 应用安全性必知必会 - 掘金小册课程推荐/分享/优惠/折扣
Java 应用安全性必知必会
从 0 到 1 手把手教你使用 Spring Security 构建一套强大的安全体系
天涯兰
519人已学习
优惠价¥39.9
官网购买
从 0 到 1 实现一套 CI/CD 流程 - 掘金小册课程推荐/分享/优惠/折扣
从 0 到 1 实现一套 CI/CD 流程
一步步实现一套基于容器化技术的 CI/CD 流程,助力研发提效
王圣松
3549人已学习
优惠价¥29.9
官网购买
MySQL 是怎样使用的:从零蛋开始学习 MySQL - 掘金小册课程推荐/分享/优惠/折扣
MySQL 是怎样使用的:从零蛋开始学习 MySQL
来来来,你什么都不用会,真正的从零蛋开始系统又轻松地学习MySQL。
小孩子4919
5772人已学习
优惠价¥19.9
官网购买
Kubernetes 安全原理与实践 - 掘金小册课程推荐/分享/优惠/折扣
Kubernetes 安全原理与实践
理论加实践,彻底搞定 Kubernetes 安全
张晋涛
792人已学习
优惠价¥29.9
官网购买
MySQL 性能调优必知必会 - 掘金小册课程推荐/分享/优惠/折扣
MySQL 性能调优必知必会
深入解读底层原理,搞懂 MySQL 性能优化内幕
小阳爱技术
1520人已学习
优惠价¥29.9
官网购买
Flutter 跨平台开发实战 - 掘金小册课程推荐/分享/优惠/折扣
Flutter 跨平台开发实战
完整实现 3 个实战项目,给你即学即用的 Flutter 实战课
萧文翰
729人已学习
优惠价¥49.9
官网购买