Files
gnu_java_utils_library/INFO.md
T
database-mysql 5388ecaa7e merge: 合并 main(新增文件下载模块)并适配 Java 21
- 版本统一为 1.9-SNAPSHOT-Java21(pom / version 常量 / README / INFO)
- 合并 main 新增的文件下载模块(单线程 + HTTP Range 多线程下载)与门面接口
- 修复多线程下载:块失败异常不再被静默吞掉(解包 ExecutionException 抛出 RuntimeException)、
  文件小于线程数时收敛有效线程数、线程池 finally 关闭
- 测试适配:原 downloadfile 测试不匹配 surefire 规则且依赖内网,重写为本地 HttpServer
  驱动的 DownloadFileTest(单线程/多线程/小文件边界/不支持断点续传抛错)
- SpotBugs 排除规则补充下载模块的遗留命名;README 测试说明同步(58 个用例)
- 验证:JDK 21 下 mvn clean verify 通过(58/58 测试 + checkstyle + SpotBugs 0 问题)
2026-11-02 22:29:42 +08:00

2.9 KiB
Raw Blame History

1.9-SNAPSHOT-Java21

此版本包含:

  1. 压缩/解压 (compress) 1.1 Tar.Gz / Zip 压缩与解压 1.2 PNG 图片压缩
  2. 终端彩色输出 (echo) 2.1 预定义颜色打印 — ColorPrintln 2.2 自定义颜色打印 — ColorHexPrintln 2.3 Minecraft 风格多色打印 — ColorPrintlnPlus(格式码支持叠加)
  3. 文件创建与保存 (file/CreateFile)
  4. 文件加密/解密 (file/EncryptionAndDecryption) 4.1 AES-256/GCM 加密 4.2 RSA-2048/OAEP 混合加密 4.3 DES 加密(已废弃,仅兼容旧版本)
  5. 文件下载 (file/download) 5.1 单线程下载 5.2 多线程下载(HTTP Range 分块并行下载,支持断点续传)
  6. 随机生成器 (random)
  7. 硬件标识生成器 (hwid)
  8. 版本信息 (version)
  9. 运行时信息 (runtime) 9.1 获取运行时临时目录 9.2 新建临时目录 9.3 获取当前运行的 JAR 文件路径

1.9 更新内容:

  • 新增文件下载模块 (file/download)
  • 支持单线程下载和多线程并行下载(基于 HTTP Range 请求)
  • 多线程下载自动创建父目录,预分配文件空间
  • 使用 Java HttpClient 标准库,支持自动重定向
  • 多线程下载块失败时向调用方抛出异常(不再静默吞掉)
  • 测试改为本地 HTTP 服务器驱动(不依赖外网),确保可重复执行

1.8 更新内容(历史):

  • 版本号升级为 1.8-SNAPSHOT-Java21(pom / version 常量 / README 引用同步)
  • 质量插件适配 Java 21:checkstyle 升级至 3.6.0(新增 checkstyle.xml 并绑定 verify 阶段), SpotBugs 4.8.6.6 替换已停止维护的 FindBugs(新增排除规则),javadoc 升级至 3.12.0(禁用 doclint)
  • 修复 SpotBugs 发现的空指针风险:压缩/解压方法 getFileName()/getParent() 空值防御, 加密模块共享 SecureRandom 实例

1.7 更新内容(历史):

  • 安全:修复 Zip-Slip 路径穿越漏洞,解压时校验条目路径并拒绝符号/硬链接条目
  • 安全:AES 升级为 AES-256/GCM(随机 IV + 认证标签),RSA 实现真实混合加密 (RSA-2048/OAEP 包裹随机 AES-256 会话密钥),密钥文件限制为仅属主可读写
  • 健壮性:加解密改为流式处理(支持大文件),临时文件 + 原子替换,中途失败不损坏原数据
  • 修复:随机数上界 Integer.MAX_VALUE 溢出;ColorPrintlnPlus 格式码叠加(颜色+加粗等)
  • 修复:getHWID 命令执行增加超时并并发排空输出流,Windows 改用 PowerShell CIM(wmic 回退), 修正 Linux 磁盘序列号命令,MAC 优先物理网卡
  • 修复:getJarPath 经 URI 解析(正确处理空格与 URL 编码),临时目录改用唯一命名
  • 工程:测试全部迁移至 JUnit 5(53 个用例),pom 补充元数据与插件版本, 版本号统一由 pom / MANIFEST Implementation-Version 提供
  • 兼容性:向下降级为 Java 21

在 1.8-SNAPSHOT-Java21 的基础上新增文件下载模块并同步 1.9 版本号。