yanfeizhang/coder-kung-fu logo

yanfeizhang/coder-kung-fu

Free

开发内功修炼

FreeFree tier
Type
Open Source

About yanfeizhang/coder-kung-fu

开发内功修炼 (Coder Kung Fu) is an open-source GitHub repository by Yanfei Zhang that provides a comprehensive collection of in-depth technical articles and resources focused on computer system internals. It covers four major modules: CPU, memory, disk, and network, with deep dives into Linux kernel internals, hardware principles, performance optimization, and practical experiments. The repository also includes excerpts from the author's published books, '深入理解Linux进程与内存' (Deep Understanding of Linux Processes and Memory) and '深入理解Linux网络' (Deep Understanding of Linux Networking). Aimed at senior developers and engineers, it offers a structured path to mastering the 'internal skills' of computing systems, with topics ranging from CPU microarchitecture to container networking and performance profiling.

Key Features

Deep coverage of CPU, memory, disk, and network hardware principles
Linux kernel memory management and process management internals
Network packet processing, TCP handshake, and epoll mechanism explanations
Performance optimization techniques and profiling with tools like strace and flame graphs
Container virtualization including Docker networking and Linux namespaces
Hands-on experiments and test source code for practical understanding
Published books on Linux processes/memory and networking integrated into the material

Pros & Cons

Pros
  • Extremely comprehensive coverage of hardware and kernel internals
  • Practical experiments and source code accompany theoretical explanations
  • Well-structured into modules for progressive learning
  • Includes content from highly-rated published books
  • Regularly updated with new articles
  • Free and open-source under a permissive license
Cons
  • Content is primarily in Chinese, limiting global accessibility
  • Focus is on Linux and x86 architecture; less applicable to other platforms
  • Not a beginner-friendly tutorial; assumes some programming and OS knowledge
  • Lacks a searchable index or interactive learning features

Best For

Senior software engineers seeking to understand low-level system internalsDevelopers optimizing application performance on LinuxSystem programmers working with CPU, memory, or network subsystemsLearning Linux kernel development and debuggingPreparing for technical interviews on operating systems and networkingBuilding a strong foundation in container and virtualization concepts

FAQ

What is the purpose of this repository?
The repository aims to help developers build a deep understanding of computer hardware and Linux kernel internals, covering CPU, memory, disk, and network modules. It is intended for senior engineers looking to improve their 'internal skills' and become technical experts.
What topics are covered?
Topics include hardware principles (CPU, memory, GPU, hard disk), Linux memory management, process management, network stack (TCP, epoll, socket), file systems, container virtualization (Docker network namespaces), and performance observation tools.
Are there any books associated with this repository?
Yes, the author has published two books: '深入理解Linux进程与内存' (Deep Understanding of Linux Processes and Memory) and '深入理解Linux网络' (Deep Understanding of Linux Networking). The repository includes excerpts and related content.
Is this repository suitable for beginners?
No, it requires familiarity with programming and basic operating system concepts. It is designed for developers who already have some experience and want to deepen their understanding of low-level system internals.
How can I contribute or ask questions?
You can follow the repository on GitHub, watch for updates, or contact the author via WeChat (zhangyanfei748528) as mentioned in the README.