更新日志
版本信息
- 起始提交: 8afe272a (2025-11-17) - 统一代码格式:优化zUniqueID.h中的空格和缩进问题,移除废弃注释
- 结束提交: c07d9f1 (2026-01-20) - fix: 将sprintf格式符从%d改为%u
- 提交数量: 206 次提交
- 代码变更: +181,749 行 / -67,401 行
🚀 重大功能更新
1. 网络通信优化
-
epoll_create1 兼容性优化 (2026-01-18)
- 实现 epoll_create1 兼容包装器,支持旧版本 glibc 降级使用 epoll_create
- 新增 EPOLLRDHUP 和 EPOLL_CLOEXEC 宏定义
- 实现事件风暴防护机制,限制单次处理事件数量,提升系统稳定性
- 优化对端连接关闭检测,区分正常/异常断开
- 添加详细文档说明和测试脚本(
tools/test_epoll_compile.sh)
-
epoll 连接管理优化 (2025-11-17 ~ 2025-11-18)
- 为 HTTP/TCP 任务池添加每线程连接数常量
connPerThread并统一使用 - 优化 TCP 任务池配置:移除默认超时参数,调整每线程连接数从 512 降至 256
- 修改 epoll_create 参数为 connPerThread
- 修复 USE_POLL_ 启用的 epoll 模型通信故障
- 修复非-D_USE_EPOLL_ 构建报错的括号问题
- 为 HTTP/TCP 任务池添加每线程连接数常量
2. 商城系统重构 (2025-11-19 ~ 2025-11-20)
-
商城购买限制功能
- 实现每日限购和限时购买检查
- 支持 XML 配置每日限购数量和结束日期
- 解决 2038 年时间戳问题
- 添加商品配置查询和已购数量查询接口
- 优化限购提示信息显示,支持显示剩余可购数量和限时结束时间
-
商城配置重构
- 引入区域分类结构,优化时间限制格式
- 完善商品注释说明,添加商品限时购买和每日限购配置参数
- 更新商城购买成功后的全服广播文本,使其更加生动形象
-
商城交易逻辑优化
- 重构购买流程检查顺序:先验证充值点、背包空间和商品状态,再执行扣费和限购更新
- 调整每日限购记录位置至扣费后立即执行,确保限购数据及时更新
3. 新增 UserServer 模块 (2026-01-12)
- 添加 UserServer 模块及相关功能
- 实现用户管理服务,增强系统架构模块化
4. 验证码系统优化 (2026-01-15)
- 移除 GD 库依赖
- 实现原生 JPEG 验证码生成功能
- 修改 jpeg_passport 配置默认值从 true 改为 false
5. 构建系统增强
-
新增 release_O3_cp 目标 (2026-01-17)
- 用于优化构建发布版本
- 支持 -O3 优化级别和代码覆盖率统计
-
MySQL 配置优化 (2026-01-17)
- 使用 mysql_config 替代硬编码的 MySQL 路径
- 删除旧版 MySQL 4.1.22 的头文件
- 解决 MySQL 依赖管理问题
🐛 Bug 修复
1. 内存与崩溃修复
- 修复怪物攻城中配置文件错误会导致段错误的 bug (2026-01-18)
- 修复多个潜在的内存越界和逻辑错误 (2026-01-14)
- 修复数组下标越界,case 越界等多个字符转换安全的 bug
- 修复日志中命令参数的安全拷贝问题
- 使用 memcpy 替代直接指针操作 (2025-11-21)
- 提高安全性,修复多处直接指针操作可能导致的内存对齐问题
- 包括二进制存档处理、邮件服务参数类型修正、拍卖逻辑优化等
2. 数据库连接管理
- 修复登录任务数据库连接泄漏 (2025-11-17)
- 在账号已使用和已禁用情况下释放数据库连接句柄
- 统一查询后释放连接句柄,修复潜在泄漏 (2025-11-18)
- 优化 MySQL 连接句柄使用超时时间从 10 秒到 30 秒 (2025-11-19)
- 调整连接超时检测逻辑,移除冗余检查并添加强制释放机制 (2025-11-19)
3. 任务系统修复
- 修正任务超时判断逻辑 (2026-01-18)
- 修复任务脚本超时机制失效的 bug (2026-01-16)
- 优化任务位置提示信息的方向判断逻辑 (2025-11-22)
4. 装备系统修复
- 修复装备制作逻辑 (2025-11-17)
- 调整 goldrating 和 holyrating 赋值顺序
- 增加 base 指针判空检查
- 优化伤害计算逻辑 (2025-11-20)
- 修复装备伤害加成计算错误
- 添加数值溢出保护并统一使用 uint64_t 类型
- 修复空指针异常和数组越界问题 (2025-11-19)
- 为 Property.cpp 中的对象检查添加空指针保护
- 为时装、披风、翅膀和坐骑操作添加数组边界检查
5. 网关与连接修复
- 修复 TCP CPU 100% bug (2025-11-18)
- 调整网关服务器时间轮询间隔为 5 秒 (2025-11-23)
- 移除网关冗余的踢下线检查机制 (2026-01-16)
- 处理网关最大默认值宏超限 bug,调整为 1 万 (2025-11-17)
6. 数值计算与格式化修复
- 修复用户积分操作中的数值溢出和边界检查问题 (2026-01-16)
- 修复比较运算符中清除最高位的逻辑错误 (2026-01-14)
- 使用 strtoul 替换 atoi 处理大整数转换 (2026-01-16)
- 修正日志中余额和奖励的格式化字符串 (2026-01-16)
- 修正答题分数计算逻辑 (2025-11-15)
- 修正答题分数计算中的绝对值问题
- 将 sprintf 格式符从 %d 改为 %u (2026-01-20)
- 修复打印日志中错误使用的 %d 格式化字符 (2026-01-16)
7. 其他重要修复
- 更新账单服务器端口号为 9967 (2026-01-16)
- 修复商城限时物品判定 (2025-11-21)
- 修复物品保护过期检查及所有者设置问题 (2026-01-18)
- 优化压缩数据日志处理 (2025-11-18)
- 注释成功日志,将失败日志级别从 debug 提升为 error
- 修复变量名冲突和逻辑表达式括号问题 (2026-01-13)
⚡ 性能优化
1. CPU 占用优化
- 将 Gateway 和 Visitor 线程 sleep 时间从 1ms 调整为 10ms (2025-11-17)
- 将 SuperTimeTick 线程 sleep 时间从 1ms 调整为 10ms (2025-11-17)
- 优化 CPU 占用:TCP 消息处理逻辑优化 (2025-11-18)
2. 线程安全与锁优化
- 优化登录会话管理 (2025-11-17)
- 缩小锁范围,减少锁竞争
- 优化线程安全和资源管理 (2025-11-17)
- 统一使用 RAII 锁机制,减少锁范围
- 修复内存泄漏
3. 数据库操作优化
- 为中立国家添加数据库更新重试机制 (2025-11-19)
- 调整太庙数量同步条件 (2025-11-19)
- 统一使用 RAII 锁机制管理数据库连接 (2025-11-18)
4. 代码重构优化
- 优化 NPC 战斗逻辑的 C++ 代码性能 (2025-11-21)
- 将整型字段类型优化为更合适的 DWORD 和 BYTE 类型 (2026-01-16)
- 将整型参数类型统一为 DWORD 和 BYTE (2026-01-16)
- 移除不必要的类型转换并更新响应参数类型 (2026-01-16)
- 使用 zPos 的 diffX/diffY 方法计算坐标差 (2025-11-21)
📝 代码质量改进
1. 代码格式统一
- 大规模统一代码缩进和格式,包括:
- Property.cpp、Visitor.h、GatewayTask.h、SceneClient.cpp
- ScenesServer 相关文件、BillServer 相关文件
- 技能管理代码、商城交易代码等
- 清理注释中的乱码,修复中文注释显示问题
- 移除 XML 文件中的编辑器注释
2. 编译警告修复
- 修复日志格式和类型转换警告 (2026-01-16)
- 使用标准 using namespace 语法 (2025-11-25)
- 修复 rel-3 目标中错误的 release_cp 引用 (2026-01-17)
- 移除编译选项中的 -m64 标志 (2026-01-17)
3. 安全性增强
- 添加安全数值计算工具并修复 abs() 相关问题 (2026-01-14)
- 为对象检查添加空指针保护 (2025-11-19)
- 初始化 ResourceBundle 中的 bundleStream 指针为 NULL (2025-11-18)
📚 文档更新
新增文档
- epoll优化变更总结.md (2026-01-18)
- epoll优化迭代说明.md (2026-01-18)
- epoll优化验证报告.md (2026-01-18)
- 新版本运行环境部署.md (2026-01-14)
- 新CI构建关键发现.md (2026-01-14)
- 新CI构建检测日志详细分析.md (2026-01-15)
- 金点兑换流程安全调查报告.md (2025-11-20)
- 金点兑换安全修复完成报告.md (2025-11-20)
- UserServer构建警告变化报告-20260116.md (2026-01-16)
- 项目架构文档.md (2025-11-17)
文档优化
- 更新中文文档编码和内容,添加 UTF-8 编码设置
- 更新 CI 构建检测报告中的表格格式
- 更新数据库字段类型注释
- 更新代码注释中的中文翻译
🔧 配置文件变更
- loginServerList.xml - 更新计费服务器端口号为 9967
- billServerList.xml - 调整计费服务器配置
- 商城相关配置 - 添加每日限购和限时购买配置参数
- miniConfig.xml - 修改 jpeg_passport 配置默认值
🎯 核心问题解决
金点兑换安全防护 (2025-11-20)
- 增强金点兑换流程的安全防护
- 添加详细的流程安全调查报告和修复完成报告
- 修复用户积分操作中的数值溢出和边界检查问题
TCP 连接优化 (2025-11-17 ~ 2026-01-18)
- 解决 TCP CPU 100% 问题
- 优化 epoll 连接管理和任务池配置
- 添加事件风暴防护机制
内存泄漏修复 (2025-11-17 ~ 2025-11-19)
- 修复多处数据库连接泄漏
- 统一连接句柄释放机制
- 优化资源管理,添加强制释放机制
🔄 兼容性改进
- 修复 Boost 1.41.0+ 版本兼容性问题 (2025-11-22)
- 为 CentOS 6 的 Boost 1.41.0+ 版本添加兼容性处理
- 修正旧版本 Boost 的断言表达式括号问题
- epoll_create1 兼容性包装器 (2026-01-18)
- 支持旧版本 glibc 降级使用 epoll_create
- 移除 GD 库依赖 (2026-01-15)
- 实现原生 JPEG 验证码生成
📊 统计数据
| 类别 | 数量 |
|---|---|
| 总提交数 | 206 |
| 新增代码行数 | 181,749 |
| 删除代码行数 | 67,401 |
| 文档更新 | 12+ 个文件 |
| 主要功能更新 | 5 项 |
| Bug 修复 | 40+ 个 |
| 性能优化 | 15+ 项 |
🏷️ 按提交类型统计
| 类型 | 数量 |
|---|---|
| feat (新功能) | 8 |
| fix (修复) | 30+ |
| refactor (重构) | 8 |
| chore (杂项) | 6 |
| style (格式) | 4 |
| docs (文档) | 6 |
| build (构建) | 3 |
⚠️ 重要注意事项
- epoll 优化:本次更新包含大量 epoll 相关优化,升级后需要关注网络连接稳定性
- 商城配置:新增每日限购和限时购买功能,需要更新相应的 XML 配置文件
- MySQL 配置:使用 mysql_config 替代硬编码路径,需要确保 MySQL 客户端库正确安装
- 构建目标:新增 release_O3_cp 目标,可用于生产环境优化构建
- 数据库连接:统一了连接释放机制,建议进行完整的连接泄漏测试
📅 时间线
- 2025-11-17: 代码格式统一、TCP 优化、登录会话管理优化
- 2025-11-18 ~ 2025-11-20: 商城系统重构、数据库连接优化
- 2025-11-21 ~ 2025-11-25: 性能优化、Bug 修复、兼容性改进
- 2026-01-12: UserServer 模块上线
- 2026-01-14 ~ 2026-01-16: 数值计算修复、安全增强
- 2026-01-17 ~ 2026-01-20: epoll 重大优化、构建系统增强
报告生成时间: 2026-01-20 维护团队: Zebra 游戏服务器开发组