一个包含多种 C++ 实用示例的代码库。
这个项目收集了各种 C++ 编程中的实用示例,涵盖了系统编程、加密算法、多线程、崩溃处理、设计模式等多个领域。每个示例都力求简洁明了,便于学习和在实际项目中使用。
1. Breakpad
Google Breakpad 的简单封装,用于应用程序崩溃报告和堆栈跟踪。
- 核心文件:
breakpad.hpp/breakpad.cc- Breakpad 封装类example.cc- 使用示例breakpad_unittest.cc- 单元测试
2. ByteOrder
系统字节序检测工具。
- 核心文件:
byteorder.cc- 使用多种方法判断系统的字节序(大端序/小端序)
3. Crashpad
Google Crashpad 的简单封装,现代化的崩溃报告系统。
- 核心文件:
crashpad.hpp/crashpad.cc- Crashpad 封装类example.cc- 使用示例crashpad_server.py- 崩溃报告服务器脚本
4. Memcpy
内存拷贝函数实现及相关测试。
- 核心文件:
mymemcpy.hpp/mymemcpy.cc- 自定义 memcpy 函数实现mymemcpy_unittest.cc- 单元测试
5. MonitorDir
跨平台目录监控实现,支持 Windows、macOS 和 Linux。
- 核心文件:
monitordir.hpp- 目录监控接口monitordir_win.cc- Windows 实现(使用ReadDirectoryChangesW)monitordir_mac.cc- macOS 实现(使用FSEvents)monitordir_linux_inotify.cc- Linux inotify 实现monitordir_linux_fanotify.cc- Linux fanotify 实现main.cc- 使用示例
Linux 平台说明:
fanotify使用全局模式(FAN_MARK_FILESYSTEM),可以监控整个文件系统的事件- 需要
CAP_SYS_ADMIN能力(root 权限) - 普通用户建议使用
inotify实现
基于 efsw 库的目录监控示例。
- 核心文件:
main.cc- 使用 efsw 实现的目录监控示例
7. OpenSSL
OpenSSL 加密算法使用示例。
- 核心文件:
openssl_common.hpp/openssl_common.cc- 公共工具函数openssl_aes.cc- AES 加解密示例openssl_base64.cc- Base64 编解码示例openssl_hash.cc- SHA256 哈希计算示例openssl_rsa.cc- RSA 加解密示例
8. Singleton
现代化线程安全的单例模式实现,使用 C++11 特性确保跨平台兼容性。
- 核心文件:
singleton.hpp- 模板化的单例基类,提供线程安全的实例访问singleton_unitest.cc- 完整的单元测试,验证单例的唯一性、线程安全性等特性
9. Thread
基于 std::jthread 实现的线程和线程池(注意:Apple Clang 不支持)。
- 核心文件:
thread.hpp- 线程类封装threadpool.hpp- 线程池实现queue.hpp- 线程安全队列thread_unittest.cc- 线程单元测试threadpool_unittest.cc- 线程池单元测试queue_unittest.cc- 队列单元测试
10. utils
通用工具类。
- 核心文件:
scopeguard.hpp- RAII 范围守卫object.hpp- 对象工具类utils.hpp/utils.cc- 通用工具函数
s