java教程技术文章
-
BigDecimal 的 1.0 和 1.00 数值相等,但 equals 结果不同,放进 HashSet 也会留下两条记录。本文从订单金额比较误判的现场出发,说明 scale、compareTo、HashMap 去重和金额归一化的边界。330 收藏 -
Java Collectors.teeing把同一批元素交给两个下游收集器,再合并完成结果。用总数量与最大项示例说明结果类型、空流约定、并行特征和适用边界。327 收藏 -
用 Java Optional.or 串联多级备用查询,理解 Supplier 的惰性执行、返回类型和异常边界,并用最小示例完成验证。325 收藏 -
围绕Java BigDecimal的scale、RoundingMode、除法和UNNECESSARY检查,整理金额计算中可直接落地的舍入规则与边界处理方案。325 收藏 -
Java 自定义 JFR Event 的提交条件应分成 isEnabled、shouldCommit 和 commit 三层:先确认有活动录制,再在 end 后判断时长阈值,最后只提交值得保留的事件。325 收藏 -
ConcurrentHashMap.computeIfAbsent 的映射函数不能递归更新同一键。本文解释原子计算边界、IllegalStateException 的成因,并用局部解析状态加 putIfAbsent 演示如何拆分递归计算与共享缓存发布。323 收藏 -
Java ZoneOffsetTransition 用来描述时区偏移发生不连续变化的瞬间。本文从 ZoneRules.getTransition 出发,说明怎样区分夏令时前进造成的不存在时间与回拨造成的重复时间,并给出业务解析时的判断边界。323 收藏 -
Java Instant 按分钟截断时直接使用 truncatedTo(ChronoUnit.MINUTES),结果会把秒和纳秒置零。本文说明 UTC 时间线、不可变返回值、可用单位和本地时区边界。322 收藏 -
Java Properties.storeToXML 默认使用 UTF-8,适合保存中文、日文等非拉丁字符。本文给出默认重载与 Charset 重载的写法,说明如何用 loadFromXML 配对读取,并标出 XML 格式、字符串键值和流关闭的边界。321 收藏 -
Java Matcher.find 会在区域内寻找下一个匹配片段,matches 则要求整个区域匹配。本文用日志过滤示例拆解两者的控制流、region 边界与 group 结果校验。320 收藏 -
Java 文本块可以写得整齐,但源码排版带来的公共缩进不一定适合最终字符串。本文用 HTML 和 SQL 片段说明 String.stripIndent 如何去掉偶然公共缩进、保留内部相对层级,并比较 strip 与 indent 的使用边界。320 收藏 -
Java MethodHandles.Lookup 的权限不是全局开关:本文用私有实例方法、publicLookup 和模块 opens 关系说明句柄创建时的访问检查,以及如何收窄和管理句柄能力。320 收藏 -
用 Java Vector API 对 float 数组执行批量乘加,介绍 SPECIES_PREFERRED、fromArray、intoArray、loopBound、标量尾部和掩码尾部的完整写法。319 收藏 -
Java Virtual Threads 适合以每任务线程承接等待型工作,而非建立固定虚拟工作池。本文用有限批次与提交窗口说明准入控制,结合完成队列、Future 取消、客户端超时和执行器关闭,明确依赖容量与收尾边界。318 收藏 -
文章 · java教程 | 2个月前 | Java · 序列化 · 反序列化 · jdk · 安全编程 · java ObjectInputStream ObjectInputFilter 反序列化过滤 序列化安全
Java 反序列化过滤不应只写一条拒绝规则,还要同时限制允许的类型、对象图深度、引用数量和输入字节数。本文用 ObjectInputFilter 说明白名单、边界值与异常验收。317 收藏