02:章节及内容安排--大道至简,给所有人看的编程书

谁想工作
·
·
IPFS

本书主要以图文方式呈现,会配一些录音。下面是本书章节及内容的粗略安排。可能会写也可能不写也不一定按顺序写。有想法欢迎留言。

-  第一章 神奇的数

    -  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入门

* 橡皮鸭子程序调试法

* 电磁场与电磁波

* 调幅与调频

* 载波

* 调制与解调

CC BY-NC-ND 4.0 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!