跳到主要内容

更新日志

版本信息

  • 起始提交: 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_ 构建报错的括号问题

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

⚠️ 重要注意事项

  1. epoll 优化:本次更新包含大量 epoll 相关优化,升级后需要关注网络连接稳定性
  2. 商城配置:新增每日限购和限时购买功能,需要更新相应的 XML 配置文件
  3. MySQL 配置:使用 mysql_config 替代硬编码路径,需要确保 MySQL 客户端库正确安装
  4. 构建目标:新增 release_O3_cp 目标,可用于生产环境优化构建
  5. 数据库连接:统一了连接释放机制,建议进行完整的连接泄漏测试

📅 时间线

  • 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 游戏服务器开发组