Project name: free-programming-books -- Free learning resources for various programming languages
GitHub open source address: https://github.com/EbookFoundation/free-programming-books
Search Page (English): https://ebookfoundation.github.io/
Search Page (Chinese): https://ebookfoundation.github.io/free-programming-books/books/free-programming-books-zh.html
Similar Chinese projects: https://github.com/justjavac/free-programming-books-zh_CN
free-programming-books is an open-source project on GitHub that aims to collect and share free programming learning resources. The project contains a large number of free e-books about various programming languages, frameworks, tools, and computer science fields, covering levels from beginners to advanced developers.
The main goal of this project is to provide free and high-quality learning materials for people learning programming, including but not limited to books and resources on programming languages, algorithms, data structures, databases, front-end and back-end development.
In this project, we can find various programming-related books, such as those on Python, Java, JavaScript, C++ and other programming languages, as well as learning resources on different fields like Web development, data science, artificial intelligence, network security, and more.

Table of Contents
- Language Agnostic
- Version Control
- Programming Arts
- Compiler Theory
- Operating Systems
- Programmer Miscellany
- Big Data
- Distributed Systems
- Management and Monitoring
- Functional Concepts
- Computer Graphics
- Others
- Software Development Methods
- Design Patterns
- Database
- Project Related
- Online Education
- Regular Expressions
- Intelligent Systems
- IDE and editors
- Web
- Web Server
- Language Related
Language Agnostic
Version Control
- Immersive Learning Git - Jim Weirich,
trl.:Xu Xiaodong a.k.a. toy(:card_file_box: archived) - Git Introduction That Even Monkeys Can Understand - Nulab Inc.
- Git - The Simple Guide - Roger Dudler,
trl.:Roger Dudler (HTML) - Git Reference Manual - CHEN Yangjian
- Git-Cheat-Sheet - flyhigher139
- git-flow Cheat Sheet - Daniel Kummer, et al.
- Git Magic - Ben Lynn,
trl.:Junjie, Meng, and Jiang Wei, et al. (HTML) - Git Tutorial- Liao Xuefeng
- GitHub Help Documentation - Way Lau
- GitHub Cheat Sheet - snowdream86
- Got GitHub - Jiang Xin, The GotGit community
- GotGitHub - Jiang Xin, The GotGit community
- HgInit (Chinese Version) - The HgInit team,
trl.:Brant Young - Mercurial Usage Tutorial - The Mercurial team
- Pro Git - Scott Chacon, Ben Straub,
trl.:Alan Wang,trl.:A Mi Mi Xiao Xiong, et al. (HTML, PDF, EPUB) - Pro Git Second Edition Chinese Version - Bingo Huang
- Subversion Version Control - Ben Collins-Sussman, Brian W. Fitzpatrick, C. Michael Pilato
Programming Arts
- Beginner's Guide to Programming
- The Art of Programmer Programming
- What Every Programmer Should Know About Memory (Part 1)
Compiler Theory
Operating Systems
- Open Source World Travel Handbook
- Understanding Linux Processes
- The Art of Command Line
- Brother Bird's Linux Private Kitchen - Server Setup Chapter
- Brother Bird's Linux Private Kitchen - Basic Learning Chapter
- Embedded Linux Knowledge Base (eLinux.org Chinese Version)
- Docker - From Beginner to Practice
- Docker Getting Started in Practice
- Docker Chinese Guide
- FreeBSD Handbook
- Linux Building Guide
- Advanced Linux System Programming
- Linux Documentation (Chinese Version)
- Linux Guide for Complete Beginners
- Linux Tools Quick Tutorial
- Mac Development Configuration Manual
- Operating Systems: Three Easy Pieces
- The Linux Command Line
- Ubuntu Reference Manual
- uCore Lab: Operating System Course in Tsinghua University
- UNIX TOOLBOX (:card_file_box: archived)
Programmer Miscellany
Big Data
- A Programmer's Guide to Data Mining
- Classic Algorithm Implementations and Detailed Annotations in Data Mining
- Spark Programming Guide Simplified Chinese Version
Distributed Systems
- Toward Distributed (PDF)
Management and Monitoring
- ElasticSearch The Definitive Guide
- Elasticsearch The Definitive Guide (Chinese Version) (:card_file_box: archived)
- ELKstack Chinese Guide
- Logstash Best Practices
- Mastering Elasticsearch (Chinese Version)
- Puppet 2.7 Cookbook Chinese Version
Functional Concepts
Computer Graphics
Others
- In-depth Understanding of Parallel Programming
- SAN Management Introduction Series
- Sketch Chinese Manual
Software Development Methods
- Functional Programming for the Rest of Us("Functional Programming For The Rest of Us" Chinese Version)
- Scrum and XP from the Trenches
Design Patterns
- In-Depth Design Patterns
- The Most Complete Design Patterns Tutorial Catalog
- Illustrated Design Patterns
Database
Project Related
- Coding Standards
- Open Source Software Architecture
- Automating Development Series Column
- Pursuing Code Quality
- GNU make Guide
- Gradle 2 User Guide
- Gradle Chinese Usage Documentation
- Joel on Software)
- Selenium Chinese Documentation
Online Education
- 51CTO Academy
- Dark Horse Programmer
- Huizhi.com
- Geek Academy
- Jisuanke
- Imooc
- Codecademy
- CodeSchool
- Coursera
- Learn X in Y minutes
- shiyanlou
- TeamTreeHouse
- Udacity
- xuetangX
Regular Expressions
Intelligent Systems
IDE and editors
- Let's All Learn VIM - Edward Lee
- What You Need Is What You Get: Using vim Like an IDE - yangyangwithgnu
- exvim - A Project to Improve vim into an IDE
- IntelliJ IDEA Simplified Chinese Special Topic Tutorial - Judas.n
- Vim Chinese Documentation- Vim Chinese Project, Yian Willis
Web
- Secrets of Browser Developer Tools
- Front-end Code Standards and Best Practices
- Journal of Building a Front-end Development System
- Front-end Resource Sharing (Part 2)
- Front-end Resource Sharing (Part 1)
- Mobile Front-end Development Favorites
- Mobile Web Front-end Knowledge Base
- Regular Expressions 30-Minute Beginner Tutorial
- Chrome Developer Tools Chinese Manual
- Chrome Extension and App Development
- Chrome Extension Development Documentation
- Growth: Full-Stack Growth Engineer Guide
- Grunt Chinese Documentation
- Gulp Getting Started Guide
- gulp Chinese Documentation
- HTTP API Design Guide
- JSON Style Guide
- Wireshark User Manual
Web Server
- Apache Chinese Manual
- Nginx Tutorial: From Beginner to Mastery- Ops Survival Time (PDF)
- Nginx Development: From Beginner to Mastery- Taobao Team
Language Related
Android
- Android Note (Knowledge points accumulated during development)
- Android Development Technology Frontier (android-tech-frontier)
- Google Material Design Traditional Chinese Edition- Tillonter, Chen Shineng, Sean Chen, et al.
- Google Material Design Chinese Collaborative Translation- 1sters Geek Lab, Sigou 4J, IceskYsl, et al.
- Point-of-Android
Assembly
- Reverse Engineering: The Authoritative Guide "Reverse Engineering for Beginners" - Dennis Yurichev, Antiy Labs, Archer
- Reverse Engineering: The Authoritative Guide "Reverse Engineering for Beginners" Vol.1 - Dennis Yurichev, Antiy Labs, Archer (PDF)
- Reverse Engineering: The Authoritative Guide "Reverse Engineering for Beginners" Vol.2 - Dennis Yurichev, Antiy Labs, Archer (PDF)
- C/C++ Programming for WebAssembly - Ending, Chai Shushan (HTML, :package: examples)
AWK
C
- New Concept C Language Tutorial
- Beej's Guide to Network Programming Simplified Chinese Edition- Brian "Beej Jorgensen" Hall, translated by Liao Yalun
- C Language FAQ Collection
- Linux C Programming One-Stop Learning (:card_file_box: archived)
C\
C++
- 100 gcc Tips
- 100 gdb Tips
- Easy-to-Understand C Magic (:card_file_box: archived)
- Modern C++ 101 - Lumynous (:construction: in process)
- Think Like a Computer Scientist (C++ Edition)("How To Think Like a Computer Scientist: C++ Version" Chinese Edition)
- C Programming Perspectives
- C/C++ Primer - andycai
- C++ Concurrency Programming Guide
- C++ FAQ LITE (Chinese Edition)
- C++ Primer 5th Answers
- C++ Template Advanced Guide
- CGDB Chinese Manual
- CMake Practice (PDF)
- GNU make Guide
- Google C++ Style Guide
- ZMQ Guide
CoffeeScript
Dart
- Dart Language Tour (:card_file_box: archived)
Elasticsearch
- Elasticsearch: The Definitive Guide("Elasticsearch the definitive guide" Chinese Edition)
- Mastering Elasticsearch (Chinese Edition)
Elixir
- Elixir Programming Language Tutorial (Elixir School)
- Elixir Getting Started Chinese Translation
- Elixir Metaprogramming and DSL Chinese Translation
- Phoenix Framework Chinese Documentation
Erlang
- Erlang Concurrent Programming("Concurrent Programming in Erlang (Part I)" Chinese Edition)
Fortran
Golang
- Deep Dive into Go - tiancaiamao
- Learning Go Language
- Go Programming Basics
- Go Official Documentation Translation
- Go Simple Tutorial - Karl Seguin,
trl.:Song Song Li (《The Little Go Book- Karl Seguin, Chinese Edition) - Go Command Tutorial
- Go Getting Started Guide("The Way to Go" Chinese Edition)
- Introduction to Go Syntax Trees
- Go Language Standard Library
- Go Language Advanced Programming (Advanced Go Programming)
- Design and Implementation of the Go Language - draveness
- Go Language Practical Notes
- Go Guide("A Tour of Go" Chinese Edition)
- Go Web Programming - astaxie
- Go Practical Development
- Go Language Blog Practice
- Golang Getting Started Guide for Java Programmers
- Network Programming with Go Chinese Translation Version
- Revel Framework Manual (:card_file_box: archived)
- The Little Go Book Traditional Chinese Translation Edition - Karl Seguin,
trl.:KevinGo, Jie Peng (HTML)
Groovy
- Groovy Tutorial - W3Cschool
Haskell
HTML and CSS
- Front-End Code Standards- Tencent AlloyTeam
- General CSS Notes, Suggestions, and Guidelines
- Learn CSS Layout
- Bootstrap 4 Traditional Chinese Manual- Hex School
- Bootstrap 5 Traditional Chinese Manual- Hex School
- CSS3 Tutorial (CSS3 Tutorial)
- CSS Reference Manual
- Emmet Documentation
- HTML5 Tutorial
- HTML and CSS Coding Standards
- Sass Guidelines (Chinese)
iOS
- NetEase Stanford University Open Course: iOS 7 App Development Subtitle Files
- Introduction to Apple Watch Development
- Google Objective-C Style Guide Chinese Edition
- 60-Minute Introduction to iOS Development
- iPhone 6 Screen Demystified
Java
- Alibaba Java Development Manual.pdf) (PDF)
- Building REST Services with Jersey
- Activiti 5.x User Guide
- Apache MINA 2 User Guide
- Apache Shiro User Guide
- Google Java Style Guide
- H2 Database Tutorial
- Thinking in Java - quanke
- Java Coding Standards
- Java Tutorial - Liao Xuefeng's Official Website
- Java Servlet 3.1 Specification
- Jersey 2.x User Guide
- JSSE Reference Guide
- MyBatis Chinese Documentation
- Netty 4.x User Guide
- Netty in Action (Essence)
- Nutz-book: Nutz Cooking Guide
- Nutz Documentation
- REST in Action
- Spring 2.0 Core Technologies and Best Practices (PDF)
- Spring Boot Reference Guide (:construction: Translating)
- Spring Framework 4.x Reference Documentation
JavaScript
- Exploring Named Function Expressions- kangax, Weizhi Manbi (translator) (The original address cannot be opened, so the address here is a backup on justjavac's blog)
- You Don't Know JavaScript
- Modern JavaScript Tutorial - Ilya Kantor
- Learning JavaScript Design Patterns- Open Source China
- Airbnb JavaScript Style Guide
- Introduction to ECMAScript 6- Ruan Yifeng
- Google JavaScript Code Style Guide (:card_file_box: archived)
- JavaScript Standard Reference Tutorial (alpha)
- 12 Quirks of JavaScript
- JavaScript Tutorial - Liao Xuefeng's Official Website
- "JavaScript Patterns"("JavaScript patterns" Translation)
- JavaScript Principles
- JavaScript Promise Mini-Book
AngularJS
:information_source: See also … Angular
- Build Your Own AngularJS - Xu Fei (HTML)
- Building AngularJS Projects with Yeoman in a Windows Environment - Way Lau (HTML)
- AngularJS Getting Started Tutorial- Yan Qing, Hou Zhenyu, Sudong Shamo (HTML) (:card_file_box:archived)
- AngularJS Best Practices and Style Guide - Minko Gechev, Xuefeng Zhu, Shintaro Kaneko, et al. (HTML)
Backbone.js
- Backbone.js Getting Started Tutorial (PDF)
- Backbone.js Getting Started Tutorial, Second Edition
- Backbone.js Chinese Documentation (:card_file_box: archived)
D3.js
- Chu Kuangren's D3 Tutorial
- Official API Documentation
- Learning D3.JS- December Cafe
Electron.js
- Electron Chinese Documentation - WizardForcel
- Electron Chinese Documentation - W3Cschool
ExtJS
jQuery
- Simple and Easy jQuery Magic (:card_file_box: archived)
- How to write jQuery plugin
Node.js
- Learn NodeJS in Seven Days- Alibaba Team
- Building a Multi-User Blog with Express + MongoDB
- express.js Chinese Documentation
- Express Framework
- koa Chinese Documentation
- Learn You The Node.js For Much Win! (Chinese Version)
- Node Debug: Three Methods and Three Examples
- Node.js: Teaching Without Guaranteeing Mastery
- Node.js Fullstack "From Zero to One: The Advance"
- Introduction to Node
- Nodejs Wiki Book(Traditional Chinese)
- nodejs Chinese Documentation
- The NodeJS Chinese Documentation- Community Translation
React.js
- Learn React & Webpack by building the Hacker News front page
- React-Bits Chinese Documentation
- React webpack-cookbook
- React.js Getting Started Tutorial
- React.js Chinese Documentation
Vue.js
- Vue 3.0 Learning Tutorial and Practical Cases - chengpeiquan
Zepto.js
- Zepto.js Chinese Documentation (:card_file_box: archived)
LaTeX
Lisp
- ANSI Common Lisp Chinese Translation Edition
- Common Lisp Advanced Programming Techniques(Chinese Edition of "On Lisp")
Lua
Markdown
MySQL
NoSQL
- Redis 2.6 Source Code with Detailed Comments
- Redis 3.0 Source Code with Detailed Comments
- Disque Usage Tutorial
- Redis Command Reference
- Redis Design and Implementation
- The Little MongoDB Book
- The Little Redis Book
Perl
PHP
- CodeIgniter User Manual (:card_file_box: archived)
- Composer Chinese Documentation
- Phalcon 7 Chinese Documentation (:card_file_box: archived)
- PHP: The Right Way
- PHP Standard Specification (Chinese Edition)
- PHP Chinese Manual
- Yii 2 Chinese Documentation
Laravel
- Laravel 5.4 Chinese Documentation
- Laravel 6 Chinese Documentation
- Laravel 7 Chinese Documentation
- Laravel 8 Chinese Documentation
- Laravel 9 Chinese Documentation
- Laravel Tutorial: From Beginner to Master
Symfony
- Symfony 2 Example Tutorial
- Symfony 5 Rapid Development (:card_file_box: archived)
PostgreSQL
- PostgreSQL 8.2.3 Chinese Documentation
- PostgreSQL 9.3.1 Chinese Documentation
- PostgreSQL 9.4.4 Chinese Documentation
- PostgreSQL 9.5.3 Chinese Documentation
- PostgreSQL 9.6.0 Chinese Documentation
Python
- A Concise Python Tutorial- Swaroop C H, Shen Jieyuan (Translator), Mo Lun (Translator)(:card_file_box: archived)
- Life is short, I use Python - zhang_derek (Contains rich notes and various tutorials)
- Dive Into Python 3
- Matplotlib 3.0.3 Chinese Documentation (Online)
- NumPy 1.16 Chinese Documentation (Online)
- Python 3 Documentation (Simplified Chinese) 3.2.2 documentation
- Python 3.8.0a3 Chinese Documentation (Online) (Currently the most comprehensive Chinese documentation online)
- Python Chinese Learning Base Camp
- Python Best Practices Guide
- Python Cookbook, Third Edition- David Beazley, Brian K. Jones, Xiong Neng (Translator)
- Python Tutorial - Liao Xuefeng's Official Website
- Advanced Python - eastlakeside
- Python Journey - Ethan (:card_file_box: archived)
- Tornado 6.1 Chinese Documentation (Online) (The other ones online are all older versions)
Django
- Django 1.11.6 Chinese Documentation
- Django 2.2.1 Chinese Documentation (Online) (This one is very new and also very complete)
- Django Tutorial: Building a Personal Blog (2.1)- Du Sai (HTML)
- Django book 2.0
- Django Girls Tutorial (1.11) (HTML)
R
- Learn R in 153 Minutes (PDF)
- Reading Notes on Statistics and R (PDF)
- Building Shiny Applications with R(Chinese Edition of "Building 'Shiny' Applications with R")(:card_file_box: archived)
- An Introduction to R(Chinese Edition of "An Introduction to R") (PDF)
reStructuredText
Ruby
- Learn Ruby the Hard Way
- Rails Style Guide
- Ruby Style Guide
- Ruby on Rails Practical Bible
- Ruby on Rails Guides
- Sinatra
Rust
- Learning Rust Through Examples
- Rust Official Tutorial
- Rust Language Study Notes
- RustPrimer
- Tour of Rust
Scala
- Effective Scala
- Scala School(Twitter's Scala Tutorial in Chinese)
Scheme
- Scheme Getting Started Tutorial(Chinese Edition of "Yet Another Scheme Tutorial")
Scratch
Shell
- Shell Programming Examples- Taixiao Technology
- Shell Programming Basics
- Getting Started with Shell Script Programming in 30 Minutes
- shell-book
- The Linux Command Line, Chinese Edition
Swift
TypeScript
- TypeScript Tutorial - example (HTML)
- TypeScript Getting Started Tutorial - example (HTML)
- TypeScript Chinese Website (HTML)
- TypeScript Deep Dive (Chinese Edition)- Sanmao (HTML)
- TypeScript Handbook (Chinese Edition) - Patrick Zhong (HTML)
Angular
:information_source: See also … AngularJS
- Angular Documentation Introduction - Wang Zhicheng, Ye Zhimin, Yang Lin et al. (HTML)
- Angular Material Component Library - Wang Zhicheng, Ye Zhimin, Yang Lin, et al. (HTML)
- Angular Tutorial (Tutorial: Tour of Heroes) - Wang Zhicheng, Ye Zhimin, Yang Lin, et al. (HTML)