Skip to content
On this page

Construction Worker Hi, I'm Felix Qiu 👋

C++ / Linux 后端开发工程师

GitHub starsLeetCode qxf-uEmail Xiaofeng Qiu

C++, CMake, Linux, Docker, Git, GitHub Actions, MySQL, and Redis


关于我

我是一名专注于 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 状态机,并支持 PINGSUBMITSTATUSLIST 命令
  • 使用 GoogleTest、CTest 和 GitHub Actions 覆盖协议、状态转移、进程监管与端到端流程

C++17 Linux epoll Unix Domain Socket fork/execve signalfd CMake GoogleTest

项目边界: 这是面向可信单用户 Linux 环境的实验性项目。目前不包含认证、沙箱隔离、持久化、任务取消和真正生效的执行超时机制。

cpp_logger:异步日志库

一个面向本地应用的 C++17 异步日志库:业务线程快速提交日志记录,后台线程负责批量格式化、写入与文件滚动。

  • 通过有界阻塞队列解耦业务线程与文件 I/O;提供 BlockDropNewestDropOldest 三种过载策略
  • 支持五级日志过滤、毫秒级时间戳、线程 ID、源文件位置,以及按日期或文件大小滚动
  • 使用批量出队与批量写入降低格式化和系统调用开销;提供队列长度、峰值和丢弃量等可观测指标
  • 通过 FileSinkConsoleSinkLogSink 抽象支持多种输出端与自定义扩展
  • 提供 CMake 安装包与 find_package 集成;在 Windows、Linux、macOS 上持续构建、测试并执行静态分析和 Sanitizer 检查

C++17 多线程 条件变量 异步 I/O CMake CTest ASan TSan

cpp_thread_pool:轻量级线程池

一个基于 C++17 标准库实现的线程池,围绕任务提交、调度、执行、结果返回与优雅关闭完成完整的并发执行链路。

  • 支持固定线程模式与 Cached 动态扩容模式,空闲的扩容线程可超时回收
  • 使用 std::packaged_taskstd::future<T> 返回任务结果,并将任务异常传递至 future.get()
  • 通过有界任务队列控制积压量;队列满时可按配置等待,并在超时后拒绝提交
  • 支持幂等 shutdown():停止接收新任务、执行已入队任务、回收线程资源;关闭后可重新配置和启动
  • 覆盖线程创建失败、重复启动、并发关闭与队列满载等边界场景,并在三平台持续集成中构建验证

C++17 线程池 std::future 条件变量 泛型编程 CMake GitHub Actions

技术能力

C++ 与并发

  • C++17、RAII、模板与泛型编程
  • std::thread、互斥锁、条件变量、原子操作
  • 任务队列、线程池、异步日志与线程生命周期管理
  • std::packaged_taskstd::future 与异常传播

Linux 系统编程

  • epoll 事件驱动 I/O 与非阻塞文件描述符管理
  • Unix Domain Socket、长度前缀协议与增量解码
  • forkexecve、管道、进程组、waitpidsignalfd
  • 子进程标准输出/错误输出采集与任务状态管理

工程实践

  • CMake、CTest、GoogleTest 与跨平台 GitHub Actions
  • clang-format、clang-tidy、AddressSanitizer 与 ThreadSanitizer
  • 可复用库的 CMake 安装与 find_package 集成
  • Markdown/VitePress、Nginx、HTTPS 与 Linux 服务器部署维护

当前关注方向

  • 继续完善 runnerd 的任务调度、可观测性与可靠性边界
  • 深入理解 C++ 并发、资源管理与性能分析
  • 学习 Linux 网络编程和高性能服务端设计
  • 构建更贴近真实服务端场景的 C++ 项目

联系方式