Awesome
我们所有的开发同学每时每刻都在使用内核、都在使用硬件。所以能正确理解内核是怎么工作的、硬件的性能指标大概是多少,这些对于高阶的开发工程师来说非常重要。想成为技术大牛,扎实练习内功是必经之路!
飞哥的开发内功修炼从 CPU、内存、磁盘、网络四大模块进行深度思考,总结出来,在这里分享给积极上进的你!
另外飞哥目前已经出版了两本书,名字分别叫做《深入理解Linux进程与内存》和《深入理解Linux网络》。这两本书的市场接受度非常的高,都是在首发当天就斩获了京东科技类图书的第一名。希望这两本书能帮大家驾驭技术,掌舵人生!
另外大家也可以加飞哥微信(zhangyanfei748528)进读者交流群,或者互相围观朋友圈。
本 repo 持续更新ing...
新文置顶:
一、网络篇
1.1 内核收发包原理
- 🔥图解Linux网络包接收过程
- 🔥25 张图,一万字,拆解 Linux 网络包发送过程
- Linux网络包接收过程的监控与调优
- 🔥127.0.0.1 之本机网络通信过程知多少 ?!
- 本机网络IO之Unix Domain Socket与普通socket的性能对比 实验使用源码
1.2 内核如何与用户进程协作
- 图解 | 深入理解高性能网络开发路上的绊脚石 - 同步阻塞网络 IO
- 🔥图解 | 深入揭秘 epoll 是如何实现 IO 多路复用的!
- 漫画 | 看进程小 P 讲述它的网络性能故事!
- 在 golang 中是如何对 epoll 进行封装的?
- 万字多图,搞懂 Nginx 高性能网络工作原理!
- 单线程 Redis 如何做到每秒数万 QPS 的超高处理能力!
- Redis 6 中的多线程实现方式比我预期的要差
- 剖析Netty内部网络实现原理
1.3 TCP之三次握手
- 为什么服务端程序都需要先 listen 一下?
- 深入理解Linux端口重用这一特性 配套实验源码
- 绑定特殊 IP 之 0.0.0.0 的内部工作原理
- TCP连接中客户端的端口号是如何确定的?
- 能将三次握手理解到这个深度,面试官拍案叫绝!
- 深入解析常见三次握手异常
- 如何正确查看线上半/全连接队列溢出情况?
1.4 TCP连接时间开销、内存开销
1.5 单机百万并发系列
1.6 网络工具
1.7 虚拟化
- 轻松理解 Docker 网络虚拟化基础之 veth 设备! <font color="#dd0000">(:cn:新)</font>
- 聊聊 Linux 上软件实现的“交换机” - Bridge! 配套实验源码 <font color="#dd0000">(:cn:新)</font>
- 彻底弄懂 Linux 网络命名空间 配套实验源码 <font color="#dd0000">(:cn:新)</font>
- 手工模拟实现 Docker 容器网络! 配套实验源码 <font color="#dd0000">(:cn:新)</font>
- 理解 iptables 原理
- 天天讲路由,那 Linux 路由到底咋实现的!?
1.8 性能优化
1.9 电子书
二、硬盘篇
2.1 硬件工作原理
2.2 文件系统浅析
2.3 文件读写性能
三、内存篇
3.1 硬件工作原理
- 带你深入理解内存对齐最底层原理
- 内存随机也比顺序访问慢,带你深入理解内存IO过程
- 从DDR到DDR4,内存核心频率其实基本上就没太大的进步
- 看懂服务器 CPU 内存支持,学会计算内存带宽
- 为什么服务器内存硬件上的黑色颗粒这么多?
- 理解内存的Rank、位宽以及内存颗粒内部结构
- 服务器之 ECC 内存的工作原理
3.2 内核内存管理
- 说出来你可能不信,内核这家伙在内存的使用上给自己开了个小灶!
- 明明还有大量内存,为啥报错“无法分配内存”?
- 从进程栈内存底层原理到Segmentation fault报错
- 聊聊跨进程共享内存的内部工作原理
3.3 语言运行时内存管理
3.4 内存性能测试
3.5 内存性能优化实例
四、CPU篇
4.1 了解CPU硬件
- 你以为你的多核CPU都是真核吗?多核“假象”
- 听说你只知内存,而不知缓存?CPU表示很伤心!
- TLB缓存是个神马鬼,如何查看TLB miss?
- 深入了解 CPU 的型号、代际架构与微架构
- 聊聊近些年 CPU 在微架构、IO 速率上的演进过程
- 深入了解服务器 CPU 的型号、代际、片内与片间互联架构
- 个人电脑上CPU和服务器上的CPU都有哪些区别?
4.2 内核CPU开销浅析
4.3 用户态CPU开销分析
4.4 CPU性能优化
4.5 进程管理
- Linux进程是如何创建出来的?
- 你写的代码是如何跑起来的?
- 聊聊Linux中线程和进程的联系与区别!
- 你的新进程是如何被内核调度执行到的?
- Linux 中的负载高低和 CPU 开销并不完全对应
- 为什么新版内核将进程pid管理从bitmap替换成了radix-tree? <font color="#dd0000">(:cn:新)</font>
4.6 容器进程管理
4.7 函数调用
4.8 信号管理
五、性能观测
六、语言和框架
- 深入剖析 Golang 程序启动原理 - 从 ELF 入口点到GMP初始化到执行 main! <font color="#dd0000">(:cn:新)</font>
- 峰值 QPS 50 万 +,性能优异的网络框架开源力作 Sogou Workflow!
七、答读者问
- 今天聊聊飞哥是怎么阅读内核源码的
- 答读者问,飞哥能否给推荐几本硬核技术书?
- 程序员完全没有时间提升自己该怎么办?
- 写给内功修炼读者的一封信!
- 我是怎么样写出开发内功修炼的?秘密都在这里!
- 给想成长为高级别开发同学的七条建议
八、视频体系
目前应读者的诉求,我把我多年在系统领域积累的知识也整理成了一门成体系的视频课。在知识星球上更新。 内容总共分为如下几大块,覆盖了系统领域的各种硬核原理知识,也包含了能帮助已工作的同学提升性能优化能力。
- 硬件原理 (已更新)
- 内存管理 (已更新)
- 进程管理 (已更新)
- 网络管理 (已更新)
- 容器原理 (正在更新中...)
- 性能观测 (准备中)
- 性能优化 (准备中)
其中已更新的部分如下图所示,累计 1859 分钟的内容。
对这些视频内容感兴趣的同学可以通过下方二维码,或者在微信公众号「开发内功修炼」中回复「配套视频」观看。目前开放了 200 优惠券,优惠后是 299 一年。
九、公众号二维码
敬请扫码关注微信公众号「开发内功修炼」,及时获得最新硬核文章!
为了方便大家阅读,本 Github 的网络篇核心内容整理成了 PDF 电子书,也即将出版。该书好评众多,欢迎大家下载! 百度网盘地址 密码:q79d
如若网盘地址出问题,也可以通过微信(zhangyanfei748528)找飞哥,我直接发你!