写个自己的话: 在人工智能的时代, 不知道自己还能否从事程序员这个职业(AI Vibe coding).有过焦虑, 有过迷惘, 在时代的浪潮下个人的命运总是随波逐流. 每天都被Ai的新闻所震撼, 其实内心非常希望自己也能逐浪前行,做一个不被时代抛弃的人.
自己条件非常不足,没有好的学历背景,还是超35+的大龄,工作gap了很多年.想冲击理想,也没能成功, 想成为DeepSeek 创始人那样的改变时代,改变人生活方式,甚至影响国家命运的人. 奈何才疏学浅,只能先走脚下的路.理想还未幻灭,不知能否重新爬起. ps…好多废话呀,就这样👌
项目总览
| 阶段 | 项目 | 状态 | 核心内容 | GitHub | Gitee |
|---|---|---|---|---|---|
| 基础 | cppbase | ✅ 完成 | C++20 标准库组件手写(string / unique_ptr) | github | gitee |
| 基础 | cppbase — IO 多路复用 | ✅ 完成 | select / poll / epoll 回声服务器 + 性能对比 | ||
| 系统与框架 | reactor_module | ✅ 完成 | Reactor 模式 · 主从多线程 · epoll ET · 线程池 · 定时器 | ||
| 系统与框架 | TetrisGame | ✅ 完成 | Qt 6.8 / QML 俄罗斯方块 · C++/QML 混合编程 | github | gitee |
| 企业实战 | coronet | ✅ 完成 | C++20 协程 · 跨平台异步 I/O 库 · 三后端 · TLS · C1000K | github | gitee |
| 企业实战 | RemoteCtrl | ✅ 完成 | 远程控制软件 · 文件管理 · 桌面监控 · 终端控制 | github | gitee |
| 企业实战 | 音视频系统开发 | 🔲 待完成 | 音视频编解码、流媒体传输 | ||
| 企业实战 | 易栈(百万并发聊天服务器) | 🔲 待完成 | 百万级并发 IM 系统 | ||
| 企业实战 | 易播加密播放器 | 🔲 待完成 | 加密播放器 · DRM · 音视频同步 |
一、基础部分 — cppbase
项目简介
cppbase 是 C++20 基础组件从零实现与性能基准测试项目。核心理念是不依赖标准库,从零造轮子,深入理解底层机制。每个模块配套 Google Test 功能测试 + Google Benchmark 性能基准,形成与标准库的量化对比。
技术栈:C++20 · CMake · Google Test · Google Benchmark · Python Matplotlib
模块一:hstring — 自定义字符串
完整实现 my::string,核心设计包括:
- SSO(小字符串优化):15 字符以内栈上存储,避免堆分配
- copy-and-swap:强异常安全保证
- KMP 子串查找:O(n+m) 时间复杂度
- 全套 API:构造/拷贝/移动、append/insert/erase、split、compare、迭代器
性能:大部分操作达到 std::string 的 5~15 倍,尤其是构造(快 15x)、拷贝(快 14x)、移动赋值(快 9x)。find/compare 略逊于标准库,差距在 20-30%,这是因为编译器对标准库有深度优化。
模块二:my::unique_ptr — 自定义智能指针
仿 std::unique_ptr 的完整实现,核心设计:
- compressed_pair + EBO:空删除器零额外开销
- 数组偏特化:
unique_ptr<T[]>提供operator[] - SFINAE + C++20 Concepts:编译期约束模板参数
- 33 项 GTest 测试全部通过:单对象 19 项 + 数组 14 项
性能:make_unique 快 39%、reset 快 12%、release 快 9%,整体接近甚至超越标准库。
模块三:IO 多路复用对比
实现了 select / poll / epoll 三套回声服务器,统一非阻塞 I/O 设计确保公平对比。配合 redis-benchmark 进行 10~5000 并发的系统压测:
- epoll 纯性能最优,1000 并发达到 84,818 RPS
- select 在低并发 (<2000) 表现意外亮眼,但高并发直接超时
- reactor-epoll 高并发最稳定,5000 并发仍有 70,373 RPS
二、系统与框架
reactor_module — Reactor 高并发网络框架
基于 Reactor 设计模式,在 Linux 环境实现了高并发、可扩展的网络服务器框架。这是 cppbase 中 epoll 实现的架构升级版本——从单文件过程式代码演进为 8 个类的面向对象架构。
核心架构:Main-Reactor(accept)+ 2× Slave-Reactor(I/O 处理)+ ThreadPool(4)(业务计算)
关键技术:
- epoll 边缘触发(ET) + 非阻塞 I/O:减少事件通知次数
- eventfd 跨线程唤醒:主 Reactor 向从 Reactor 安全投递任务
- timerfd + 最小堆优先队列:内核定时器与 epoll 完美融合
- 工厂模式注入 Handler:业务与框架解耦,支持 Echo / Redis PING 协议切换
- 线程安全:每个 Reactor 独立状态,零锁竞争;跨线程通过 eventfd + 任务队列通信
压测结论:reactor-epoll 在高并发(2000~5000)场景是唯一稳定通过的模型,体现了架构设计对可扩展性的价值。
TetrisGame — Qt 6.8 / QML 俄罗斯方块
经典俄罗斯方块,采用 C++ + QML 混合架构:C++ 负责全部游戏逻辑状态,QML 负责纯渲染。
核心技术:
- C++ ↔ QML 桥接:
qmlRegisterSingletonInstance注册 C++ 单例到 QML - 400 个原生 QML Rectangle 替代 Canvas 渲染,利用 GPU 合成
- 程序化 PCM 音频合成(方波+正弦),无外部音频文件,
QAudioSink播放 - Qt 6.8 qmlcachegen 踩坑:Canvas
onPaint不触发→换 Rectangle;嵌套QVariantList访问失败→换逐格int访问器;绑定不追踪Q_INVOKABLE依赖→引入stateRevision计数器强制重算 - 最终架构原则:全部逻辑下沉 C++,QML 零游戏逻辑、零条件判断
收获:深入理解了 Qt 框架的限制与边界,学会了在编译器和框架的约束下做出务实的设计决策,而非死磕"正确"方案。
三、企业实战
coronet — C++20 协程 · 跨平台高性能异步 I/O 库 ⭐
coronet 是本培训的核心成果项目,一个生产级 C++20 协程异步 I/O 库,自主实现协程运行时,支持 Linux epoll / io_uring / Windows IOCP 三后端,并提供 TLS 加密传输。
核心特性
| 特性 | 说明 |
|---|---|
| 三后端热插拔 | epoll ⇄ io_uring(-DCORONET_IOURING=ON)⇄ IOCP(Windows 自动),编译期切换 |
| 全编译器跨平台 | Linux GCC 13 / Clang 18 + Windows MSVC 19.41,一套代码 |
| TLS 加密 | OpenSSL 3.x,双向验证 + ALPN,内存 BIO 桥接同步 SSL 到异步事件循环 |
| 编译期零开销多态 | CRTP + #ifdef 平台选择,无虚表、无堆分配 Proactor |
| 链式 co_await | co_await (send && recv) 单次挂起完成两个 I/O 操作 |
| 协程同步原语 | mutex / condition_variable / semaphore / channel / when_all·any·some |
性能数据
- C1000K 压测通过:1,000,000 请求 × 1,000 并发,单线程 50,955 RPS,6 线程 50,140 RPS
- vs ASIO 对比:6 线程 比 ASIO 快 67%,CPU 低 61%
- 三平台峰值:Windows MSVC IOCP 58,384 RPS(单线程最高)
- 27/27 测试全平台通过(GCC/Clang/MSVC + epoll/io_uring/IOCP)
架构亮点
1 | 用户层: task<T> / shared_task<T> / generator<T> |
关键技术决策:
- 惰性协程 task<T>:父链内联恢复,零调度开销
- SPSC 无锁环:跨线程任务投递,避免锁竞争
- shared_task<T>:引用计数多等待者,支持协程组合器
- io_context:栈上 Proactor,无堆分配
coronet 证明了从零实现高性能协程运行时完全可行,且在核心指标上可比肩甚至超越业界标杆 ASIO。
RemoteCtrl — 远程控制软件
基于 coronet 协程库的实用远程控制软件,包含客户端和服务端。
功能:
- 文件管理:远程浏览目录树、文件下载(断点续传)、删除、远程打开
- 桌面监控:实时屏幕共享 ~20 FPS,GDI BitBlt + WIC JPEG 硬件编码,鼠标事件转发
- 终端控制:远程锁屏/解锁
- 守护进程:开机自启、后台静默运行
架构:
- 服务端:coronet 单线程协程,acceptLoop + SessionHandler + screenStream
- 客户端:Qt5 Widgets + coronet 独立 I/O 线程,mutex 队列桥接
- 协议:自定义二进制协议,magic + 命令 + 载荷 + CRC32C(SSE4.2 硬件加速)
- 编码:全链路 UTF-8,中文文件名零乱码
技术价值:将 coronet 应用到真实产品场景,验证了异步协程在 GUI 应用中的可行性——Qt 主线程不阻塞,I/O 在协程线程异步处理。
四、达成的核心成就
技术能力
- C++20 深度掌握:Concepts、协程、constexpr、移动语义、模板偏特化、SFINAE
- 从零造轮子能力:string、unique_ptr、协程运行时、Reactor 框架、异步 I/O 库——均自主实现并达到或超越标准库/业界标杆性能
- 系统编程:epoll / io_uring / IOCP 三后端、TCP 协议栈、eventfd / timerfd、非阻塞 I/O、多线程安全设计
- 跨平台开发:一套代码同时支持 Linux GCC / Clang + Windows MSVC
- GUI 开发:Qt 6.8 / QML / C++ 混合编程、Canvas vs 原生控件权衡
- 设计模式实践:Reactor、策略、工厂、观察者、EBO、CRTP、copy-and-swap
- 性能工程:Google Benchmark 量化对比、redis-benchmark 压测、Matplotlib 可视化、C1000K 验收
量化成果
| 维度 | 数据 |
|---|---|
| 自研 string 性能 | 标准库的 5~15 倍 |
| 自研 unique_ptr 性能 | 标准库的 109~139% |
| reactor-epoll 高并发 | 5000 并发 70,373 RPS |
| coronet C1000K | 百万请求千并发通过,6 线程比 ASIO 快 67% |
| coronet 跨平台测试 | 27/27 全通过(3 编译器 × 3 后端) |
| Google Test 用例 | unique_ptr 33/33 全通过 |
综合素养
- 工程化思维:CMake 构建系统、单元测试、性能基准、压测自动化、文档报告——每个项目都是完整工程
- 架构设计:从单文件过程式 → 面向对象 Reactor → 协程异步 Proactor,经历了完整的架构演进
- 问题解决:Qt qmlcachegen 编译器缺陷的务实绕过、跨线程安全的状态隔离、SPSC 无锁环的设计与实现
- AI Vibe Coding 实践:coronet 项目由 Claude Code / DeepSeek 辅助生成,人工负责需求定义、架构审核、代码审查
五、后续进阶方向(待完成)
以下为培训计划中尚未完成的企业实战项目:
- 音视频系统开发:音视频编解码(H.264/H.265/AAC)、流媒体协议(RTMP/RTSP/WebRTC)、渲染管线
- 易栈 — 百万并发聊天服务器:百万级长连接管理、消息路由与推送、分布式架构、高可用设计
- 易播 — 加密播放器:DRM 数字版权保护、加密传输与解密播放、音视频同步、硬件解码加速
这三个方向将分别覆盖音视频、大规模分布式系统和安全加密三大核心领域,构建完整的高性能 C++ 技术栈。