Commit Graph

6054 Commits

Author SHA1 Message Date
Looly
84561772e1 prepare 5.8.46 2026-05-25 15:52:18 +08:00
Looly
079a8136d6 修复BeanConverterMapConverter源Bean判断问题(pr#4252@Github) 2026-05-19 21:42:54 +08:00
Golden Looly
62f240ae75 Merge pull request #4252 from Faerytale/v5-dev
fix: BeanConverter和MapConverter对源Bean使用isReadableBean替代isBean
2026-05-19 21:40:03 +08:00
Faerytale
64fc614618 fix: BeanConverter和MapConverter对源Bean使用isReadableBean替代isBean
修了 #4245 的问题。当 List 里的元素类用了 @Setter(AccessLevel.PROTECTED)
只有 protected setter 的时候,BeanUtil.copyProperties 会抛
ConvertException: Unsupported source type,但实际上这个类有 public getter,
作为源对象完全可以被读取。

原因是 BeanConverter 和 MapConverter 在处理源对象时用 isBean() 做检查,
但 isBean() 看的是有没有 public setter,这是判断"能不能写"的标准,
而源对象需要的是"能不能读"。BeanUtil 里其实已经有 isReadableBean() 方法
(检查 public getter),正好适合这个场景,换过来就行。两个转换器各改了一行,
另外补了两个单测覆盖这种情况。
2026-05-19 02:15:39 +08:00
Looly
eaecb109cf 修复VersionUtil比对null时结果异常问题(issue#IJNFQZ@Gitee) 2026-05-14 22:30:38 +08:00
Looly
6d8dd97292 RegexPool.PLATE_NUMBER新增粤AP号段支持(issue#IJNDJR@Gitee) 2026-05-14 16:29:23 +08:00
Looly
cc6df6990b update postgre 2026-05-09 10:52:03 +08:00
Looly
076f5096df update thymeleaf 2026-05-09 10:50:50 +08:00
Looly
9505fdab70 修复ExpressionEngine中SpELEngine、MVEL白名单无效问题 2026-05-09 10:31:25 +08:00
Looly
49858088d3 修复AI SPI classloader找不到实现问题(issue#4241@Github) 2026-04-07 10:49:36 +08:00
Looly
2441c92ada 修复AI SPI classloader找不到实现问题(issue#4241@Github) 2026-04-07 10:24:34 +08:00
Looly
3bbbf2a1aa add test 2026-03-23 10:12:30 +08:00
Looly
0d586c4a0f 修复PagePageResult首页调用问题(issue#IH7A18@Gitee) 2026-03-20 12:13:19 +08:00
Looly
d5dac7cd51 AnnotationUtil新增两级缓存架构,提升高频注解解析性能(pr#1434@Gitee) 2026-03-19 15:47:13 +08:00
Looly
21a68690ee !1434 perf(core): 为AnnotationUtil新增两级缓存架构,提升高频注解解析性能
Merge pull request !1434 from 07heco/perf/annotationutil-multilevel-cache
2026-03-19 07:43:58 +00:00
07heco
e822a2c321 perf(core): 为AnnotationUtil新增两级缓存架构,提升高频注解解析性能 2026-03-12 14:31:14 +08:00
chinabugotech
85606f8cdf update CHANGELOG.md.
Signed-off-by: chinabugotech <bugo@bugotech.cn>
2026-03-12 05:50:44 +00:00
chinabugotech
582b04f1f8 🐢prepare5.8.45 2026-03-12 13:18:00 +08:00
chinabugotech
34bebfd6f3 🚀release 5.8.44 2026-03-12 11:40:48 +08:00
Looly
9e7413b9be ReflectUtil增加二级缓存(pr#1433@Gitee) 2026-03-11 15:22:25 +08:00
Looly
1ab2b4c79a !1433 perf(core): 为ReflectUtil.getMethod新增细粒度方法查找缓存,提升高频反射调用性能
Merge pull request !1433 from 07heco/perf/reflectutil-method-cache
2026-03-11 06:59:56 +00:00
Golden Looly
361e39ea5b Merge pull request #4231 from fourangrymen/v5-dev
修复`CharSequenceUtil.center`两个重载方法的注释问题
2026-03-07 20:03:30 +08:00
fourangrymen
9bc7ed4599 修复CharSequenceUtil.center两个重载方法的注释错误 2026-03-07 16:12:54 +08:00
Looly
af5f2d97b6 修复QuarterfromMonth计算错误问题(issue#IF15CP@Gitee) 2026-03-05 09:06:39 +08:00
07heco
80f5d56dbc perf(core): 为ReflectUtil.getMethod新增细粒度方法查找缓存,提升高频反射调用性能 2026-03-05 02:04:35 +08:00
Looly
52603f3b12 FastDateParser改进在JDK25下三字母时区警告(issue#4100@Github) 2026-03-02 18:57:04 +08:00
Looly
ab3e52ece7 update dependency 2026-03-02 18:11:56 +08:00
Looly
b54c4cd0ff 修复EnumUtil和AbstractCache的bug 2026-03-02 18:09:02 +08:00
Looly
cff4c65245 !1432 fix: 修复 EnumUtil 递归更新异常 + Cache 高并发双重检查锁逻辑缺陷
Merge pull request !1432 from Busyliu/v5-dev
2026-03-02 09:59:44 +00:00
Busyliu
1ac564c246 fix(RC4): 修复 initSBox 中运算符优先级错误导致加密结果偏差
原代码:`j = (j + sbox[i] + (key[i % key.length]) & 0xFF) % SBOX_LENGTH`

由于 Java 中 `&` 的优先级低于 `+`,实际计算等同于:
`j = ((j + sbox[i] + key[i % key.length]) & 0xFF) % 256`

而标准 RC4 算法要求先将 byte 转为无符号整数再参与加法:
`j = (j + sbox[i] + (key[i % key.length] & 0xFF)) % SBOX_LENGTH`

当 key 中含有非 ASCII 字符(如中文,UTF-8 编码后可能产生负 byte 值)时,
原实现的 sbox 初始化结果与标准 RC4 不一致,导致加密结果错误。
2026-03-02 05:43:09 +00:00
Busyliu
b4f1787df5 fix(BoundedPriorityQueue): 修复 capacity<=0 时 offer() 抛 NullPointerException 的问题
当使用 capacity=0 构造 BoundedPriorityQueue 时,offer() 中 size()>=capacity 始终为 true,
调用 peek() 返回 null,然后 comparator.compare(e, null) 抛出 NullPointerException。

修复:
1. 构造函数中对 capacity<=0 做保护(初始容量最小为1,避免 PriorityQueue 内部异常)
2. offer() 中增加 capacity<=0 的提前返回,不接受任何元素
2026-03-02 05:42:05 +00:00
Busyliu
885fd28de6 fix(Money): 为 divide 和 divideBy 方法增加除零校验
当除数 val 为 0 时,Math.round(cent / 0.0) 会得到 Long.MAX_VALUE 分(约 9.2 * 10^16 元),
而不是抛出异常,导致计算结果错误且无任何提示。
增加显式的除零检查,在 val == 0 时抛出 ArithmeticException。
2026-03-02 05:41:12 +00:00
Busyliu
8710d04640 fix(ArrayUtil): 为 copy 方法增加 null 参数防御性校验
当 src 或 dest 为 null 时,提前抛出明确的 NullPointerException,
而非让 System.arraycopy 抛出不直观的异常,便于调用方定位问题。
2026-03-02 05:38:29 +00:00
Busyliu
b0375a8c04 fix(TemporalUtil): 修复 offset(Temporal,DayOfWeek,boolean) 缺少 static 修饰符及 null 检查
工具类中该方法遗漏了 static 关键字,导致无法以工具类方式调用(需要先实例化 TemporalUtil)。
同时与同类的 offset(T, long, TemporalUnit) 方法保持一致,增加 null 检查,
避免传入 null 时抛出 NullPointerException。
2026-03-02 05:35:54 +00:00
Busyliu
6d99a39857 test(EnumUtil): 增加枚举静态初始化递归场景的单元测试
新增 SelfRefEnum 枚举和 getFieldValuesRecursiveTest 测试方法,
验证 fix issue#IDQYJK(修复枚举类静态初始化中调用 EnumUtil 导致 Recursive update 的问题)
2026-03-02 05:05:27 +00:00
Busyliu
f8184b0087 fix(Tuple): 修复 Tuple 不可变性破坏问题,增加 defensive copy
Tuple 设计为不可变类型(注释:不可变数组类型),但原实现存在两处不可变性破坏:
1. 构造函数直接赋值 `this.members = members`,外部修改传入数组会影响 Tuple 内部状态
2. `getMembers()` 直接返回内部数组引用,外部可通过引用直接修改 Tuple 内容

修复:在构造函数中对传入数组做 defensive copy,getMembers() 返回副本
2026-03-02 05:03:06 +00:00
Busyliu
b7e9341e32 fix(Cache): 修复高并发下双重检查锁未正确判断缓存值导致反复覆盖的问题
在 AbstractCache.get(key, isUpdateLastAccess, timeout, supplier) 方法中,
双重检查获取到缓存值后,未对结果进行 null 判断就直接调用 supplier 并覆盖,
导致高并发场景下出现不必要的 supplier 调用和潜在的数据不一致。

修复:在双重检查后增加 null 判断,仅当缓存确实为空时才调用 supplier。

Fixes #IDQGP2
2026-03-02 04:58:37 +00:00
Busyliu
aa4da21aae fix(EnumUtil): 修复枚举类静态初始化时递归调用导致 IllegalStateException: Recursive update 的问题
使用 get + putIfAbsent 替代 computeIfAbsent,避免 ConcurrentHashMap 在递归场景下
抛出 Recursive update 异常。修复 issue#IDQYJK
2026-03-02 02:34:54 +00:00
Looly
a6b1bebeac 修复ReUtil.replaceAll空指针问题(issue#IDPHVW@Gitee) 2026-02-09 09:14:27 +08:00
Looly
c2abe4c9d3 修复XmlUtil.xmlToBeanoption参数无效问题(issue#4226@Github) 2026-02-09 08:57:14 +08:00
Looly
84a6132c26 修复JschSessionPool回收导致的session未关闭问题(issue#4223@Github) 2026-02-03 15:41:42 +08:00
Looly
b3ec45a0ac 修复TransMap.computeIfAbsentmappingFunction处理不一致问题(issue#IDM6UR@Gitee) 2026-02-01 21:42:56 +08:00
Looly
dca189f700 修复MultiResource游标歧义问题(issue#IDNAOY@Gitee) 2026-02-01 21:32:50 +08:00
Looly
9c35fa9e3f 修复BufferUtilcopy歧义问题(issue#IDN097@Gitee) 2026-02-01 20:19:10 +08:00
Looly
c0bb9675b2 修复MultiResource游标歧义问题(issue#IDNAOY@Gitee) 2026-02-01 20:05:21 +08:00
Looly
7e0199c1a9 AppendableWriter增加checkNotClosed(issue#IDMZ5K@Gitee) 2026-02-01 19:35:00 +08:00
Looly
8d2c5b0449 DateUtil.normalize方法中正则预编译提升效率(pr#4221@Gitee) 2026-02-01 19:28:56 +08:00
Golden Looly
190bdf2585 Merge pull request #4221 from dingqianwen/v5-master
提取并预编译日期时间正则提高性能
2026-02-01 19:26:04 +08:00
qwding
47479e9262 提取并预编译日期时间正则提高性能
提取DateUtil#normalize 方法中 [/.年月] 和 [时分秒] 为静态常量,避免重复编译正则提升效率。
2026-01-31 14:13:48 +08:00
Looly
29ac254f06 修复TransMap.computeIfAbsentmappingFunction处理不一致问题(issue#IDM6UR@Gitee) 2026-01-28 10:32:14 +08:00