Appearance
Hi, I'm Felix Qiu 👋
C++ / Linux 后端开发工程师
关于我
我是一名专注于 C++ 与 Linux 后端开发的工程师,持续通过可运行、可测试的项目深入理解并发、进程管理、网络 I/O 与软件工程实践。
我关注的不只是功能实现,也关注系统在队列满载、任务异常、进程退出和服务关闭等边界情况下是否仍然行为清晰、资源可控。
核心项目
runnerd:事件驱动的 Linux 任务执行守护进程
面向单机、单用户场景的本地任务执行服务。客户端 runnerctl 通过 Unix Domain Socket 提交和查询任务,runnerd 负责启动、监控与回收子进程。
- 使用一个 LT
epoll事件循环统一处理客户端连接、子进程标准流与SIGCHLD事件;通过signalfd + waitpid驱动任务生命周期 - 设计长度前缀协议和增量解码器,正确处理 Unix Stream Socket 的拆包、粘包和二进制负载
- 通过
fork/execve与独立进程组启动任务,不经 Shell 执行;以非阻塞管道采集 stdout、stderr 与启动错误 - 实现
QUEUED → RUNNING → SUCCEEDED / FAILED状态机,并支持PING、SUBMIT、STATUS、LIST命令 - 使用 GoogleTest、CTest 和 GitHub Actions 覆盖协议、状态转移、进程监管与端到端流程
C++17 Linux epoll Unix Domain Socket fork/execve signalfd CMake GoogleTest
项目边界: 这是面向可信单用户 Linux 环境的实验性项目。目前不包含认证、沙箱隔离、持久化、任务取消和真正生效的执行超时机制。
cpp_logger:异步日志库
一个面向本地应用的 C++17 异步日志库:业务线程快速提交日志记录,后台线程负责批量格式化、写入与文件滚动。
- 通过有界阻塞队列解耦业务线程与文件 I/O;提供
Block、DropNewest、DropOldest三种过载策略 - 支持五级日志过滤、毫秒级时间戳、线程 ID、源文件位置,以及按日期或文件大小滚动
- 使用批量出队与批量写入降低格式化和系统调用开销;提供队列长度、峰值和丢弃量等可观测指标
- 通过
FileSink、ConsoleSink和LogSink抽象支持多种输出端与自定义扩展 - 提供 CMake 安装包与
find_package集成;在 Windows、Linux、macOS 上持续构建、测试并执行静态分析和 Sanitizer 检查
C++17 多线程 条件变量 异步 I/O CMake CTest ASan TSan
cpp_thread_pool:轻量级线程池
一个基于 C++17 标准库实现的线程池,围绕任务提交、调度、执行、结果返回与优雅关闭完成完整的并发执行链路。
- 支持固定线程模式与 Cached 动态扩容模式,空闲的扩容线程可超时回收
- 使用
std::packaged_task和std::future<T>返回任务结果,并将任务异常传递至future.get() - 通过有界任务队列控制积压量;队列满时可按配置等待,并在超时后拒绝提交
- 支持幂等
shutdown():停止接收新任务、执行已入队任务、回收线程资源;关闭后可重新配置和启动 - 覆盖线程创建失败、重复启动、并发关闭与队列满载等边界场景,并在三平台持续集成中构建验证
C++17 线程池 std::future 条件变量 泛型编程 CMake GitHub Actions
技术能力
C++ 与并发
- C++17、RAII、模板与泛型编程
std::thread、互斥锁、条件变量、原子操作- 任务队列、线程池、异步日志与线程生命周期管理
std::packaged_task、std::future与异常传播
Linux 系统编程
epoll事件驱动 I/O 与非阻塞文件描述符管理- Unix Domain Socket、长度前缀协议与增量解码
fork、execve、管道、进程组、waitpid与signalfd- 子进程标准输出/错误输出采集与任务状态管理
工程实践
- CMake、CTest、GoogleTest 与跨平台 GitHub Actions
- clang-format、clang-tidy、AddressSanitizer 与 ThreadSanitizer
- 可复用库的 CMake 安装与
find_package集成 - Markdown/VitePress、Nginx、HTTPS 与 Linux 服务器部署维护
当前关注方向
- 继续完善
runnerd的任务调度、可观测性与可靠性边界 - 深入理解 C++ 并发、资源管理与性能分析
- 学习 Linux 网络编程和高性能服务端设计
- 构建更贴近真实服务端场景的 C++ 项目
联系方式
- GitHub: qxf-72
- 个人网站: xiaofeng-qiu.me
- 邮箱:
xiaofeng_qiu@qq.com