# libevent-learn **Repository Path**: bhlv/libevent-learn ## Basic Information - **Project Name**: libevent-learn - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-18 - **Last Updated**: 2026-04-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # C 语言开源项目学习路线 > 🎯 目标:通过阅读优秀 C 开源项目,掌握高性能编程、网络编程、数据结构等核心技能 > > 📅 开始时间:2026年4月18日 > 📍 当前阶段:阶段 1 - 网络编程基础 > 🔄 当前项目:libevent --- ## 📋 学习路线总览 ### 🥇 阶段 1:网络编程基础 [进行中] - [x] libevent ← **当前** - [ ] libuv - [ ] Muduo (C++,学习设计模式) ### 🥈 阶段 2:数据存储 - [x] Redis (已存在于 openCode/redis) - [ ] LevelDB - [ ] SQLite ### 🥉 阶段 3:系统级编程 - [ ] musl libc - [ ] Nginx - [ ] tmux --- ## 🎯 阶段 1:网络编程基础 ### 项目 1:libevent ⭐ 当前项目 **GitHub**: https://github.com/libevent/libevent **代码量**: ~3万行 **难度**: ⭐⭐⭐ **预估时间**: 2-3周 **学习价值**: - ✅ 跨平台 I I/O 多路复用封装(epoll, kqueue, select) - ✅ 事件循环设计 - ✅ 定时器、信号处理 - ✅ 缓冲区管理(evbuffer) - ✅ HTTP/DNS 协议实现 **核心模块**: ``` event.c - 事件循环核心 event-internal.h - 内部数据结构 evutil.c - 平台兼容性工具 buffer.c - 缓冲区实现 evdns.c - DNS 解析 http.c - HTTP 协议 ``` **学习路径**: ``` 第1天: 环境搭建,编译运行 第2-3天: event.c - 事件循环核心 第4-5天: epoll/kqueue 后端实现 第6-7: buffer.c - 缓冲区实现 第8-9天: 定时器和信号处理 第10-11天: evbuffer 使用和实现 第12-14天: HTTP 协议实现 ``` **学习重点**: 1. 事件循环的实现(event_base_loop) 2. 定时器堆(min-heap) 3. 信号集成到事件循环 4. 跨平台封装 **获取源码**: ```bash cd /root/openCode/phase1-network-libevent git clone https://github.com/libevent/libevent.git cd libevent git checkout release-2.1.12-stable # 稳定版本 ./autogen.sh ./configure --prefix=/usr/local make -j$(nproc) sudo make install ``` --- ### 项目 2:libuv **GitHub**: https://github.com/libuv/libuv **代码量**: ~5万行 **难度**: ⭐⭐⭐⭐ **学习价值**: - ✅ Node.js 底层使用的异步 I/O 库 - ✅ 现代异步 I/O 封装 - ✅ 线程池设计 - ✅ 跨平台文件系统操作 **核心模块**: ``` unix/core.c - Unix 平台核心实现 unix/epoll.c - epoll 实现 unix/stream.c - 流式 I/O threadpool.c - 线程池 timer.c - 定时器管理 fs.c - 文件系统操作 ``` --- ### 项目 3:Muduo (C++) **GitHub**: https://github.com/chenshuo/muduo **代码量**: ~2万行 **难度**: ⭐⭐ **学习价值**: - ✅ Reactor 模式清晰实现 - ✅ one loop per thread 模型 - ✅ C++11 现代 C++ 特性 --- ## 🎯 阶段 2:数据存储 ### 项目 1:Redis **状态**: ✅ 源码已存在(/root/openCode/redis) **学习价值**: - ✅ 单线程事件循环 - ✅ 丰富的数据结构 - ✅ 内存管理 - ✅ 持久化机制 **核心模块**: ``` src/sds.c - 简单动态字符串 src/zmalloc.c - 内存管理 src/dict.c - 字典实现 src/zskiplist.c - 跳表 src/ae.c - 事件循环 ``` --- ### 项目 2:LevelDB **代码量**: ~3万行 **难度**: ⭐⭐⭐⭐ **学习价值**: - ✅ LSM Tree 数据结构 - ✅ MemTable + SSTable - ✅ 压缩、缓存机制 --- ### 项目 3:SQLite **代码量**: ~15万行 **难度**: ⭐⭐⭐⭐⭐ **学习价值**: - ✅ 嵌入式关系数据库 - ✅ B-Tree 实现 - ✅ SQL 解析器 - ✅ 事务管理 --- ## 🎯 阶段 3:系统级编程 ### 项目 1:musl libc **代码量**: ~10万行 **学习标准 C 库实现** ### 项目 2:Nginx **代码量**: ~15万行 **学习高性能服务器架构** ### 项目 3:tmux **代码量**: ~3万行 **学习终端复用器实现** --- ## 📚 学习资源 ### 书籍推荐 - 《Linux高性能服务器编程》- 游双 - 《UNIX网络编程》- W. Richard Stevens - 《深入理解计算机系统》- Randal E. Bryant ### 在线资源 - libevent 官方文档: https://libevent.org/ - libuv 官方文档: https://docs.libuv.org/ --- ## 📊 进度跟踪 | 阶段 | 项目 | 状态 | 进度 | 预计完成 | |------|------|------|------|----------| | 阶段 1 | libevent | 🔄 进行中 | 0% | 2026-05-10 | | 阶段 1 | libuv | ⏳ 未开始 | 0% | - | | 阶段 1 | Muduo | ⏳ 未开始 | 0% | - | | 阶段 2 | Redis | ✅ 源码已有 | 15% | - | | 阶段 2 | LevelDB | ⏳ 未开始 | 0% | - | | 阶段 2 | SQLite | ⏳ 未开始 | 0% | - | --- *最后更新:2026年4月18日*