目录

文章目录

  • 目录
  • 语法入门
  • 应用进阶
  • 深入理解
  • 数据结构与算法
  • 用 C 语言开发一门编程语言
  • C 语言网络编程

语法入门

《C 语言编程 — 发展历史概览》
《C 语言编程 — 配置开发环境》
《C 语言编程 — HelloWorld》

《C 语言编程 — 数据类型概览》
《C 语言编程 — 基本数据类型》
《C 语言编程 — 指针类型 — 指针(pointer)》
《C 语言编程 — 构造数据类型 — 数组(array)》
《C 语言编程 — 构造数据类型 — 字符串(string)》
《C 语言编程 — 构造数据类型 — 结构体(struct)》
《C 语言编程 — 构造数据类型 — 位域(bit field)》
《C 语言编程 — 构造数据类型 — 枚举(enum)》
《C 语言编程 — 构造数据类型 — 共用体(union)》
《C 语言编程 — 空类型 — void 类型》
《C 语言编程 — 自定义类型 — typedef》
《C 语言编程 — 数据类型转换》

《C 语言编程 — 变量、常量与作用域》
《C 语言编程 — 函数》
《C 语言编程 — 运算符》
《C 语言编程 — 逻辑控制语句》
《C 语言编程 — 预处理指令与宏定义》
《C 语言编程 — 头文件》

《C 语言编程 — 代码规范》
《C 语言编程 — 基本语法练习》

应用进阶

《C 语言编程 — 指令行操作》
《C 语言编程 — 输入输出操作》
《C 语言编程 — errno 错误操作》
《C 语言编程 — assert 断言操作》
《C 语言编程 — stat 文件操作》

《Linux 操作系统原理 — 内存管理 — 虚拟地址空间》
《Linux 操作系统原理 — 内存管理 — 大页内存》
《Linux 操作系统原理 — 内存管理 — 内存分配算法》
《C 语言编程 — 内存操作》

《Linux 操作系统原理 — 进程管理 — 用户进程、用户线程、内核线程、轻量级进程、协程的区别与联系》
《Linux 操作系统原理 — 进程管理 — 进程调度》
《Linux 操作系统原理 — 进程管理 — NUMA 架构中的多线程调度开销与性能优化》
《C 语言编程 — sigaction 信号操作》
《C 语言编程 — semaphore 信号量操作》
《C 语言编程 — fork 进程操作》
《C 语言编程 — pthread 线程操作》
《C 语言编程 — 线程池设计与实现》

《C 语言编程 — hiredis 数据库客户端》

深入理解

《C 语言编程 — GCC 程序编译原理》
《C 语言编程 — GCC 自动化编译工具集》
《C 语言编程 — GCC 程序汇编原理》
《C 语言编程 — GCC Attribute 语法扩展》
《C 语言编程 — GCC 内存对齐问题》
《C 语言编程 — GCC 大端小端问题》
《C 语言编程 — GDB 程序调试》

《C 语言编程 — Doxygen + Graphviz 静态项目分析》

《C 语言编程 — 排错集(持续更新)》

数据结构与算法

  • 时间复杂度:是指算法执行所需要的时间随着问题规模的增加而增加的趋势。通常用大 O 符号表示,即 O(n),其中 n 表示问题规模(通常是输入的数据量)。时间复杂度越低,算法的效率越高。例如,时间复杂度为 O(1) 的算法表示执行时间不随数据量的增加而增加,是最优的算法。

  • 空间复杂度:是指算法执行所需要的内存空间随着问题规模的增加而增加的趋势。也用大 O 符号表示,例如 O(n),其中 n 表示问题规模。空间复杂度越低,算法使用的内存越少,效率越高。

《C 数据结构与算法 — 链表反转》
《C 数据结构与算法 — 数组取数求目标和》
《C 数据结构与算法 — 判断整数的 2 幂次方》
《C 数据结构与算法 — 快速判断链表是否成环》

用 C 语言开发一门编程语言

《用 C 语言开发一门编程语言 — Lispy 功能演示》
《用 C 语言开发一门编程语言 — 交互式解析器》
《用 C 语言开发一门编程语言 — 语法解析器运行原理》
《用 C 语言开发一门编程语言 — 波兰表达式解析器》
《用 C 语言开发一门编程语言 — 表达式存储器》
《用 C 语言开发一门编程语言 — 符号表达式解析器》
《用 C 语言开发一门编程语言 — 引用表达式解析器》
《用 C 语言开发一门编程语言 — 变量的设计与实现》
《用 C 语言开发一门编程语言 — 基于 Lambda 表达式的函数设计与实现》
《用 C 语言开发一门编程语言 — 条件分支的设计与实现》
《用 C 语言开发一门编程语言 — 字符串的设计与实现》
《用 C 语言开发一门编程语言 — 更好的语言》

C 语言网络编程

《未来互联网技术发展编年史,从阿帕网到完全可编程网络》
《以太局域网技术发展编年史》
《互联网协议 — ARP 地址解析协议》
《互联网协议 — IPv4 — 报文格式》
《互联网协议 — IPv4 — CIDR 无分类编址与路由》
《互联网协议 — ICMP 互联网控制消息协议》

《互联网协议 — TCP — 报文格式》
《互联网协议 — TCP — TCP 连接(三次握手、四次挥手)》
《互联网协议 — TCP — 确认与重传》
《互联网协议 — TCP — 滑动窗口》
《互联网协议 — TCP — 流量控制》
《互联网协议 — TCP — 拥塞控制》

《互联网协议 — DNS 域名系统》
《互联网协议 — DNS 域名协议》

《互联网协议 — HTTP/1.1 版本》
《互联网协议 — HTTP/2 版本》

《Linux 操作系统原理 — Basic NIC、SmartNIC、DPU 设备演进与运行原理》
《Linux 操作系统原理 — PCIe 总线标准》
《Linux 操作系统原理 — 内核协议栈概览》
《Linux 操作系统原理 — 网卡驱动程序初始化流程》
《Linux 操作系统原理 — 内核协议栈收包/发包流程》
《Linux 操作系统原理 — RSS 多队列网卡》
《Linux 操作系统原理 — 虚拟化网络设备》

《C 语言网络编程 — BSD Socket API》
《C 语言网络编程 — INET Socket》
《C 语言网络编程 — Socket I/O 性能优化手段》
《C 语言网络编程 — Linux I/O 处理流程与优化》
《C 语言网络编程 — 高并发 TCP 网络服务器》
《C 语言网络编程 — 轻量级 HTTP 服务器设计与实现》

更多推荐

C 语言编程系列