|
NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
|
🌐 语言 / Language
通过其他语言阅读: English
本项目旨在建立**功能健全、风格统一、可读性强、社区共建、跨平台兼容**的现代 C++ 开发库。通过清晰的架构设计、规范的代码实现、丰富的设计模式应用,为项目开发提供实用的工具集,同时也为 C++ 学习者提供理解底层原理的实践载体,建立从学习到生产的连接点。
💡 有劳各位多多 提交 Issue,使本项目趋于健全。如有不足,还望斧正。
ℹ️ 字符编码说明
本库假定运行环境的默认系统代码页为 **UTF-8**。若在非 UTF-8 环境下使用 IO 相关功能,请确保已正确配置 UTF-8 区域设置,以避免潜在的字符行为异常。
| 平台 | 指令集 | 位宽 | 编译器 | C++ 标准 |
|---|---|---|---|---|
| 🪟 WINDOWS | X86 | 32位 | MSVC | 14 |
| 🐧 LINUX | 64位 | MinGW | 17 | |
| GCC | 20 | |||
| Clang |
NexusForce 严格遵循现代 C++ 工程最佳实践,通过多层次自动化检查确保代码健壮性与可读性。
| 指标 | 状态 | 说明 |
|---|---|---|
| 📊 代码规模 | 12万+ 行 | 核心库源码与头文件 |
| 🔒 CodeQL 安全分析 | 0 漏洞 | security-and-quality 全规则集,零安全告警 |
| 🔍 Clang-Tidy 静态检查 | 零警告 | 全量规则集(bugprone/cppcoreguidelines/hicpp/modernize/performance/readability),警告即错误 |
| 🎨 Clang-Format 代码风格 | 强制统一 | 120 列、4 空格、K&R 变体大括号、强制大括号插入等 |
| ⚠️ 警告即错误 | -Werror | 所有 Clang-Tidy 警告视为编译错误,CI 阻断 |
| 💧 动态内存检查 | 0 泄漏 | Valgrind 全量测试,无内存泄漏与越界访问 |
📋 **关于规则豁免**:.clang-tidy 包含约 60 项显式豁免,.clang-format 包含多项风格定制。每一项均针对底层系统编程的固有需求,遵循"默认严格,按需放开"原则。
NexusForce 的核心组件实现严格遵循相关国际标准与行业规范,确保行为可预测、互操作性强且安全可靠。以下为关键组件的标准映射:
| 组件 | 遵循标准 | 说明 |
|---|---|---|
| URL 解析与编码 | RFC 3986, RFC 3987, WHATWG URL | URI 通用语法、百分号编码及国际化资源标识符 |
| 网络端口定义 | IANA 端口号注册表, RFC 6335 | HTTP/HTTPS/FTP/SSH/DNS 等知名端口分配 |
| Base64 编码 | RFC 4648 | 标准 Base64 与 URL 安全 Base64 字符表 |
| JSON 数据格式 | RFC 8259, ECMA-404 | JSON 语法、数据类型与 UTF-8 编码要求 |
| TOML 配置格式 | TOML v1.0.0 | 包含日期时间格式遵循 RFC 3339 / ISO 8601 |
| UUID 生成 | RFC 4122, RFC 9562 | UUID v4(随机)与 v7(时间有序)生成规范 |
| 组件 | 遵循标准 | 说明 |
|---|---|---|
| AES-256 加密 | NIST FIPS 197, ISO/IEC 18033-3 | 高级加密标准,支持 ECB/CBC/GCM 模式(NIST SP 800-38A / SP 800-38D) |
| SHA-256 哈希 | NIST FIPS 180-4, RFC 6234 | 安全哈希算法(SHA-2 家族),256 位输出 |
| SHA-1 哈希 | NIST FIPS 180-4 (历史兼容) | ⚠️ 已标注安全警告(SHAttered 碰撞攻击) |
| MD5 哈希 | RFC 1321 (历史兼容) | ⚠️ 已标注安全警告,仅用于非安全校验场景 |
| PKCS#7 填充 | RFC 5652, RFC 8018 | 加密消息语法与基于密码的加密填充方案 |
| 组件 | 遵循标准 | 说明 |
|---|---|---|
| UTF-8 / UTF-16 / UTF-32 | Unicode 15.1.0, ISO/IEC 10646, RFC 3629 / RFC 2781 | Unicode 码点操作、规范化与编码转换,含无效序列检测 |
| Unicode 码点处理 | Unicode 15.1.0 §2.4, §2.13 | 代理对处理、BOM 检测与替换字符 (U+FFFD) 规则 |
| 组件 | 遵循标准 / 学术文献 | 说明 |
|---|---|---|
| 堆算法 | ISO/IEC 14882:2020 §25.8.6 | 复杂度保证与 Floyd 堆调整优化 (Algorithm 245) |
| 红黑树 | Guibas & Sedgewick (1978) | 自平衡二叉搜索树经典实现,O(log n) 复杂度保证 |
| 莱昂纳多堆 / 平滑排序 | Dijkstra (1981) EWD796a | 自适应排序算法,最优时间复杂度 O(n) |
| 内省排序 | Musser (1997) | 混合快速/堆/插入排序,C++ 标准库 sort 默认算法 |
| 非加密哈希 | FNV-1a 草案, MurmurHash3 | 高性能哈希表与布隆过滤器专用 |
| 组件 | 遵循标准 | 说明 |
|---|---|---|
| 原子内存序 | ISO/IEC 14882:2020 §31.4 | C++ 内存模型,含 x86/ARM 硬件屏障等价与 Intel TSX HLE 支持 |
| 命令行解析 | POSIX.1-2017 (IEEE 1003.1) 第12章, GNU getopt_long | 支持短选项组合、长选项、-- 分隔符与可选值 |
| 日期与时间 | ISO 8601-1:2019, RFC 3339, POSIX 时间戳 | 公历计算、儒略日转换与 Unix 纪元处理 |
| SQL 语句构建器 | ISO/IEC 9075 (SQL-92 及后续版本) | 生成符合 ANSI SQL 的 SELECT/INSERT/UPDATE/DELETE 语句 |
| 组件 | 遵循标准 | 说明 |
|---|---|---|
| RGB 颜色模型 | W3C CSS Color Level 4, Compositing Level 1 | 直通 Alpha 合成、十六进制格式与 ANSI 256 色调色板 |
| 灰度转换 | ITU-R BT.709 / IEC 61966-2-1 (sRGB) | 人眼感知加权(0.299R + 0.587G + 0.114B) |
| 数学函数与常量 | IEEE 754-2019, ISO/IEC 10967 (LIA) | 三角函数归约、牛顿迭代法与机器精度容差 |
| 随机数生成 | ISO/IEC 18031:2011, NIST SP 800-90A | 梅森旋转 (MT19937) 与操作系统熵源真随机数 |
📖 **文档完整性**:所有涉及上述标准的类与函数,均在其 API 注释(Doxygen 格式)中标注了具体的标准章节号与官方链接,开发者可随时溯源验证。
| 类型 | 依赖 | 版本要求 |
|---|---|---|
| 🔨 构建工具 | CMake | 3.19+ |
| 📦 包管理器 | vcpkg | Latest |
| 🎨 代码格式化 | clang-format | 19+ |
| 🔍 静态分析 | clang-tidy | 19+ |
| ⚠️ 必选依赖 | GTest | 1.17.0#2 |
| pcre2 | 10.47 | |
| OpenSSL | 3.6.1#2 | |
| 📦 可选依赖 | libpq | 16.9#3 |
| libmysql | 8.0.40#1 | |
| sqlite3 | 3.51.2 | |
| hiredis | 1.3.0 | |
| lz4 | 1.10.0 | |
| zlib | 1.3.1 |
💡 您可以在项目根目录的 config.json 中更改对外配置项以进行个性化编译。
完整 API 文档请访问 NexusForce 文档网站
本项目基于 [MIT 开源协议](LICENSE) 发布。
详细更新记录请参见 CHANGELOG
感谢所有为本项目做出贡献的开发者!查看 CONTRIBUTORS 获取完整名单。