02:章节及内容安排--大道至简,给所有人看的编程书
本书主要以图文方式呈现,会配一些录音。下面是本书章节及内容的粗略安排。可能会写也可能不写,也不一定按顺序写。有想法欢迎留言。
- 第一章 神奇的数
- 1.1 认识数
- 1.2 数的起源
- 1.3 阿拉伯数字与数的表示
- 1.4 很大的数
- 1.5 数的进制
- 1.6 整数和自然数
- 1.7 代数和方程
- 1.8 有理数
- 1.9 无理数
- 1.10 指数和对数
- 1.11 实数和虚数
- 1.12 数列
- 1.12.1 简单数列
- 1.12.2 指数增长
- 1.12.3 斐波纳契数列
- 1.12.4 级数
- 1.13 汉诺塔
- 1.14 矩阵
- 1.15 函数
- 1.16 微积分
- 1.16.1 导数
- 1.16.2 加速度
- 1.16.3 微分
- 1.16.4 积分
- 1.17 无穷大与无穷小的比较
- 1.18 高维空间
- 1.19 坐标系
- 1.20 小结
- 第二章 计算机是怎样工作的
- 2.1 环境准备
- 2.2 晶体管和门电路
- 2.2.1 二极管和三极管
- 2.2.2 门电路
- 2.2.3 加法器
- 2.3 计算机的组成
- 2.3.1 CPU
- 2.3.2 存储器
- 2.4 操作系统
- 2.4.1 Windows
- 2.4.2 UNIX
- 2.4.3 Linux
- 2.4.4 Mac OS 和 macOS
- 2.4.5 iOS 和 Android
- 2.4.6 鸿蒙
- 2.5 原码、反码和补码
- 2.5.1 原码
- 2.5.2 反码
- 2.5.3 补码
- 2.5.4 为什么要用补码?
- 2.6 浮点数
- 2.7 字符编码
- 2.7.1 ASCII 码
- 2.7.2 中文编码
- 2.7.3 字节序
- 2.8 文件格式
- 2.8.1 文本文件
- 2.8.2 二进制文件
- 2.9 多媒体在计算机中的表示
- 2.9.1 音频
- 2.9.2 颜色和图像
- 2.9.3 电影、电视和视频
- 2.9.4 音视频封装、传输和未来
- 2.9.5 视频图像的像素点数据格式
- 2.9.6 扫描线与电视制式
- 2.10 小结
- 第三章 操作系统
- 3.1 Linux 入门
- 3.1.1 认识命令行
- 3.1.2 文件权限
- 3.1.3 用户和组
- 3.1.4 简单文件操作
- 3.1.5 输入输出重定向
- 3.1.6 文本编辑器
- 3.1.7 文本文件处理
- 3.1.8 Shell
- 3.1.9 man
- 3.1.10 Linux 上的图形用户界面
- 3.1.11 安装 Linux
- 3.1.12 SSH 远程连接
- 3.1.13 文件系统层次结构
- 3.1.14 进程
- 3.2 Docker 入门
- 3.2.1 虚拟化技术
- 3.2.2 Docker 简介
- 3.2.3 Docker 安装
- 3.2.4 Docker 基本概念
- 3.2.5 Docker 常用命令
- 3.2.6 Docker Compose
- 3.2.7 宿主机文件挂载
- 3.3 Windows
- 3.4 macOS
- 3.4.1 Homebrew
- 3.4.2 软件包
- 3.4.3 常用软件
- 3.5 Android 和 iOS
- 3.5.1 Android
- 3.5.2 iOS
- 3.6 计算机网络
- 3.6.1 以太网和无线通信技术
- 3.6.2 OSI 和 TCP/IP 网络模型
- 3.6.3 IP 地址
- 3.6.4 MAC 地址
- 3.6.5 单播、多播和任播
- 3.6.6 DNS
- 3.6.7 路由
- 3.6.8 TCP
- 3.6.9 UDP
- 3.6.10 网络安全
- 3.6.11 加解密和证书
- 3.7 基本概念和理论
- 3.7.1 进程和线程
- 3.7.2 进程调度
- 3.7.3 进程间通信
- 3.7.4 中断
- 3.7.5 内存管理
- 3.7.6 文件系统
- 3.7.7 设备管理
- 3.7.8 用户界面
- 3.8 小结
- 第四章 开发工具
- 4.1 Windows 上的效率工具和开发环境
- 4.1.1 winget
- 4.1.2 Windows Terminal
- 4.1.3 WSL
- 4.1.4 经典 UNIX 工具
- 4.2 Git
- 4.2.1 安装和设置
- 4.2.2 Git 实例
- 4.2.3 Git 基本概念
- 4.2.4 工作流程
- 4.2.5 协作流程
- 4.2.6 Github
- 4.2.7 分支
- 4.2.8 Squash
- 4.2.9 误区和最佳实践
- 4.2.10 Git Server
- 4.2.11 Gitea
- 4.2.12 Git 图形界面
- 4.2.13 我的 Git 小工具
- 4.2.14 我的 .gitconfig
- 4.2.15 总结和延伸阅读
- 4.3 构建工具
- 4.3.1 Makefile
- 4.3.2 Autotools
- 4.3.3 CMake
- 4.3.4 Meson
- 4.3.5 Ninja
- 4.3.6 Bazel
- 4.3.7 Ant
- 4.3.8 Maven
- 4.3.9 Gradle
- 4.3.10 Webpack
- 4.3.11 Gulp
- 4.3.12 Grunt
- 4.3.13 其他
- 4.4 Neovim
- 4.4.1 Neovim 和 Vim 的不同
- 4.4.2 Neovim 插件管理器
- 4.4.3 Neovim LSP
- 4.5 VS Code
- 4.6 Eclips
- 4.7 Android Studio
- 4.8 XCode
- 第五章 编程语言
- 5.1 编程语言串讲
- 5.2 汇编语言
- 5.2.1 汇编语言的 hello world
- 5.2.2 汇编程序
- 5.2.3 反汇编
- 5.2.4 汇编语言做加法
- 5.2.5 寄存器
- 5.2.6 Linux 上的汇编
- 5.2.7 计算机是怎么启动的?
- 5.2.8 写一个操作系统内核
- 5.2.9 从硬盘启动操作系统
- 5.2.10 将操作系统装到硬盘上
- 5.2.11 制作安装光盘
- 5.2.12 调试与排错
- 5.2.13 小结
- 5.3 小结
- 第六章 C 语言
- 6.1 基本语法
- 6.1.1 注释
- 6.1.2 Hello, World!
- 6.1.3 变量和赋值
- 6.1.4 变量的作用域
- 6.1.5 静态变量
- 6.1.6 运算符
- 6.1.7 自增和自减运算符
- 6.1.8 格式化输出
- 6.1.9 条件语句
- 6.1.10 循环
- 6.1.11 预编译和宏
- 6.1.12 可变长参数
- 6.1.13 结构体
- 6.1.14 联合体
- 6.1.15 枚举
- 6.1.16 数组
- 6.2 指针
- 6.3 代码风格
- 6.3.1 C 语言代码风格
- 6.3.2 代码自动格式化
- 6.3.3 代码风格和使用习惯
- 6.3.4 命名规范
- 6.3.5 错误处理
- 6.4 WAV 文件示例
- 6.5 main 函数的参数
- 6.6 Socket 通信
- 6.6.1 TCP 服务器
- 6.6.2 TCP 客户端
- 6.6.3 UDP 服务器
- 6.6.4 UDP 客户端
- 6.7 写一个 HTTP 客户端
- 6.7.1 HTTP 协议简介
- 6.7.2 HTTP 客户端实现
- 6.8 写一个简单的 Web 服务器
- 6.9 写一个函数库
- 6.9.1 编写函数库
- 6.9.2 写一个使用库的例子
- 6.9.3 动态库的加载路径
- 6.9.4 用 CMake 编译库
- 6.9.5 添加单元测试
- 6.9.6 使用单元测试框架
- 6.9.7 库的查找和引用
- 6.9.8 使用 Autotools 查找依赖库
- 6.9.9 在 CMake 中检查依赖库
- 6.9.10 创建一个 CMake 版本的查找规则
- 6.9.11 libtool
- 6.10 动态内存分配
- 6.11 生成 BMP 格式的图片
- 6.12 JPEG 和 PNG
- 6.12.1 将 BMP 转成 PNG 格式
- 6.12.2 使用stb_库函数写 JPEG 和 PNG
- 6.12.3 使用libpng写 PNG
- 6.13 生成二维码
- 6.14 在图片上渲染文字
- 6.15 在汇编语言中调用 C 函数
- 6.16 在 C 语言中调用汇编函数
- 6.16.1 C 调用汇编示例
- 6.16.2 使用gdb调试代码
- 6.16.3 检查main函数的参数
- 6.16.4 64 位 x86 平台上的汇编
- 6.16.5 ARM64 平台上的汇编
- 6.17 写一个简单的 C 编译器
- 6.17.1 生成汇编代码
- 6.17.2 从汇编生成机器码
- 6.17.3 了解 ELF 格式和内存布局
- 6.17.4 生成 ELF 格式的可执行文件
- 6.17.5 生成最终的可执行文件
- 6.18 写一个简单的 libc
- 6.18.1 write系统调用
- 6.18.2 开始写一个libc库
- 6.18.3 实现printf函数
- 6.18.4 实现更多系统调用
- 6.18.5 实现 C 运行时
- 6.18.6 实现更多库函数
- 6.18.7 打印环境变量
- 6.18.8 实现一个cat示例
- 6.18.9 实现一个简单的 Shell
- 6.18.10 实现动态内存分配
- 6.18.11 实现一个简单的ls命令
- 6.18.12 输出到标准错误
- 6.18.13 实现errno支持
- 6.18.14 实现头文件
- 6.18.15 使用 TCC 编译器
- 6.18.16 交叉编译
- 6.19 用 C 写操作系统
- 6.19.1 启动 C 语言版内核
- 6.19.2 内核头文件
- 6.19.3 实现 kprintf
- 6.19.4 调用kprintf打印字符
- 6.19.5 获取和设置光标位置
- 6.19.6 在光标处输出字符
- 6.19.7 在 Bochs 中调试内核代码
- 6.19.8 中断处理
- 6.19.9 设置中断描述表
- 6.19.10 初始化中断控制器
- 6.19.11 初始化键盘
- 6.19.12 获取键盘输入
- 6.19.13 实现队列
- 6.19.14 实现一个内部 Shell
- 6.19.15 实现一个虚拟文件系统
- 6.19.16 实现内存文件系统
- 6.19.17 实现系统调用
- 6.19.18 从文件中读入文件系统
- 6.19.19 生成用户空间程序
- 6.19.20 运行init进程及用户空间的 Shell
- 6.19.21 实现read系统调用
- 6.19.22 实现system系统调用
- 6.19.23 实现其他系统调用
- todo
* 第七章 数据结构和算法
* 基本数据类型和数据结构
* 整数 浮点数 字符 字符串
* 常量 变量 数组 指针 线性表 散列表 树和图 排序 队列 文件
* 递归
* 第八章 系统编程
- 多线程
- 多进程
- mutex,fork,pipe
- 同步和异步
- 共享内存
* 第九章 更多编程语言
- 9.1 TypeScript
- 9.1.1 特性
- 9.1.2 Ref
- 9.2 kotlin
- 9.2.1 语法
- 9.2.2 REF
- 9.3 Python
- 9.4 Ruby
- 9.5 Erlang
- 9.6 PHP
- 9.7 Java
- 9.8 JavaScript
- 9.9 Go
- 9.10 C#
- 9.11 Lua
- 9.12 Perl
- 9.13 Bash
- 9.14 Basic
- 9.15 Objective-C
- 9.16 Swift
- 9.17 Scala
- 9.18 Haskell
- 9.19 Clojure
- 9.20 Rust
- 9.21 Kotlin
- 9.22 Dart
- 9.23 Groovy
- 9.24 F
- 9.25 TypeScript
- 9.26 V
- 9.27 Nim
- 9.28 Zig
- 9.29 Julia
- 9.30 R
- 9.31 Elixir
- 9.32 Crystal
- 9.33 OCaml
- 9.34 D
- 9.35 Ada
- 9.36 Makefile autotools cmake
- 9.37 JNI
- 9.38 SWIG
- 9.39 仓颉
- 第十章 数据库
- SQL
- SQLite
- MySQL
- PostgreSQL
- noSQL
- 时序数据库
- InfluxDB
- Prometheus
- OpenTSDB
- KairosDB
- Graphite
- ClickHouse
- Druid
- TimescaleDB
- TDengine
* 第十一章 Web编程
* HTTP 协议
* HTML
* cURL
* HTTP Server
* Nginx
* Apache
* HTTP Client
* HTTP BASIC/Digest
* OAuth
* Websocket
* CSS
* CORS
* 数据格式XML/JSON
* Markdown
* CURD
* REST
* gRPC
* MVC
* 前后端分离
* jQuery
* React
* Vue
* CDN
* 第十二章 多媒体应用与开发
* 音视频
* MP4
* 流媒体
* RTMP
* RTSP
* HLS
* SRT
* 直播
* RTC
* SIP协议
* FreeSWITCH
* WebRTC
* 第十三章 客户端开发
* Windows
* Linux
- KDE
- GTK
* Mac
* 跨平台开发
- Qt
- Electron
- Flutter
- React Native
- Xamarin
- NativeScript
- Cordova
- Unity
- Unreal
- Godot
- wxWidgets
- wxPython
- wxPerl
- wxRuby
- tauri
* 第十四章 移动端应用开发
- 移动通信技术的发展
- iOS
- Android
* 第十五章 其他
* 缓存技术
- Redis Cache
- memcache
* 消息队列MQ PubSub
* 分布式技术
* 高并发、限流、熔断、灰度发布
* 服务降级、限流、秒杀
* HA、Cluster
* 微信公众号
* 微信小程序
* 人工智能
* TTS
* ASR
* NLP
* 人脸识别
* 二维码
* 数字人
* 云计算
* 机器学习
* 大数据
* 第十六章 成为程序员
* Git
* 文档/Markdown
* 开发工具
* 环境搭建
* 代码规范
* 调试
* 重构
* 维护
* 引用第三方库
* 开源软件
* 历史
* 用好开源软件
* 向开源软件做贡献
* 附录或其他
* Git入门
* 橡皮鸭子程序调试法
* 电磁场与电磁波
* 调幅与调频
* 载波
* 调制与解调