java教程技术文章
-
批量导入时,HashMap 的扩容可能把本来平滑的写入变成一段明显停顿。本文从容量计算、阈值变化和并发边界三个方面还原问题,并给出可验证的初始化与替代方案。156 收藏 -
文章 · java教程 | 1天前 | 线程池 · 并发编程 · 故障排查 · Java教程 · ThreadLocal · java 线程池 Java线程池 threadlocal remove 线程复用
ThreadLocal 在线程池中不会随着任务结束自动清空,工作线程复用会让下一个任务读到上一个任务留下的值。本文用 Java线程池 和可运行示例拆开 get、set、remove 的生命周期,给出 finally 清理、任务装饰和验收边界。153 收藏 -
Java Optional.orElse 会在参数求值阶段执行备用方法,即使 Optional 已经有值也无法跳过副作用。本文用订单缓存回源场景对比 orElse 与 orElseGet,说明调用时机、性能成本、空值边界和可验证的测试写法。150 收藏 -
文章 · java教程 | 1星期前 | 密码学 · Java教程 · Java 25 · HKDF · 密钥派生 · Java 25 KDF Key Derivation Function API HKDF JEP 510 密钥派生
Java 25 新增 Key Derivation Function API,可用 HKDF 从已有密钥材料派生用途隔离的子密钥。本文用可运行示例说明 Extract、Expand、salt、info 和测试验收边界,避免把 KDF 当成加密或哈希替代品。147 收藏 -
用 Java 25 的 java.lang.classfile 读取 class 文件中的方法签名,解释 ClassModel 遍历、按需解析、版本检查和 verify 验收边界,并给出可直接运行的最小示例。143 收藏 -
Java 25 的 JFR CPU-Time Profiling 可在 Linux 上按 CPU 时间采样线程,并通过 jdk.CPUTimeSample 与 jdk.CPUTimeSamplesLost 观察热点和丢样。本文用 jfr、jcmd 与 throttle 参数建立一次可复查的定位流程。142 收藏 -
用一个批次编号生成场景拆开 Java IntStream.iterate 的三参数重载,说明 seed 是否入流、hasNext 何时判断、next 是否会多执行,以及 limit 的边界。138 收藏 -
文章 · java教程 | 3天前 | 正则表达式 · 字符串处理 · Java教程 · 异常排查 · Matcher · Java正则 Matcher.matches Matcher.find group 字符串校验
Java Matcher.matches 要求整个输入完全匹配,find 则负责在输入中寻找下一段命中内容,group 用来读取捕获组。本文从订单号整串校验和日志字段提取两个场景出发,拆开三者的边界,并给出可复现的检查代码。134 收藏 -
文章 · java教程 | 2天前 | 锁 · Java · 线程池 · 异常处理 · 并发编程 · java 线程中断 lockInterruptibly reentrantlock InterruptedException 业务回滚
订单库存服务里,普通 lock() 可能让取消任务一直卡在锁外。本文用 ReentrantLock.lockInterruptibly() 建立可中断的等待边界,并说明 InterruptedException 后如何恢复中断标记、避免半完成业务和验证回滚结果。129 收藏 -
Java CompletableFuture 里的 exceptionally、handle 和 whenComplete 都能接住异常,但职责并不相同。本文用一条可运行的订单校验流水线说明三者的返回值、异常传播、旁路记录和质量门禁边界,帮助你把失败处理放在正确的位置。125 收藏 -
ClassValue 适合把与 Class 绑定的元数据懒加载并缓存起来。本文用一段可运行示例拆开 get、类型值计算、remove 的关系,并说明它与普通 Map 缓存、类卸载之间的边界。124 收藏 -
文章 · java教程 | 5天前 | locale · 国际化 · Java教程 · 输入校验 · Java 25 · 国际化 locale Java Locale.Builder BCP 47 语言标签
用 Java Locale.Builder 校验用户提交的 BCP 47 语言标签,区分 setLanguageTag 与 forLanguageTag 的异常和截断行为,并给出回退语言、展示语言与测试验收方案。120 收藏 -
Locale.forLanguageTag 会按 BCP 47 规则解析并规范化语言标签。本文从缓存键异常复盘出发,解释大小写、非法子标签、Unicode 扩展和 toString/toLanguageTag 的边界,并给出可验收的修复方式。119 收藏 -
Java Pattern.asMatchPredicate 可以把完整字符串匹配封装成 Predicate,再交给 Stream.anyMatch 短路查找。本文用订单号校验场景对比 asMatchPredicate 与 asPredicate,说明 null、空流和正则边界。118 收藏 -
Java 批量校验邮箱、手机号等字段时,反复编译 Pattern 和把 Matcher 跨线程复用,都会让接口延迟抬头。本文从 Pattern、Matcher 的职责边界出发,对比错误写法与复用写法,再用 JMH 风格基准和业务验收检查性能收益。102 收藏