java教程技术文章
-
文章 · java教程 | 6天前 | Java教程 · 空值处理 · Optional · 性能边界 · 异常排查 · 空值处理 orElse orElseGet Java Optional orElseThrow
Java Optional 的 orElse 会提前计算默认值,orElseGet 只在空值时执行,orElseThrow 则把缺失数据转成明确异常。本文用订单查询和配置读取场景拆解三种写法的执行边界,并给出可复现的验收测试。168 收藏 -
用 Java 的任务完成队列按完成顺序消费 Future,区分任务异常与队列取空,并在 finally 中可靠关闭线程池。165 收藏 -
从一个用户查询场景拆开 Java Optional.orElseThrow 的默认异常、业务异常供应器、消息来源和空值边界,给出可回归的最小写法。165 收藏 -
Java 文本块适合保存多行模板,但代码缩进可能混入结果。本文用 String.stripIndent 拆开共同缩进、空行和制表符边界,并对比 indent 的换行处理,给出可运行的判断方法。163 收藏 -
Java Optional.orElseGet 只有在 Optional 为空时才调用默认值供应器,适合避免缓存未命中后的无效计算。本文用配置读取示例拆解 orElse、orElseGet、orElseThrow 的求值和异常边界。162 收藏 -
文章 · java教程 | 10小时前 | 网络编程 · 并发 · Java · websocket · 故障排查 · java websocket httpclient CompletionStage sendClose onClose
Java HttpClient WebSocket 关闭时,sendClose 的 CompletionStage、Listener.onClose 和 onError 可能以不同顺序到达。本文用一个订阅客户端拆解正常关闭、异常断线、状态竞态与重连边界,给出可验证的收尾写法。162 收藏 -
批量导入时,HashMap 的扩容可能把本来平滑的写入变成一段明显停顿。本文从容量计算、阈值变化和并发边界三个方面还原问题,并给出可验证的初始化与替代方案。156 收藏 -
文章 · java教程 | 1天前 | 线程池 · 并发编程 · 故障排查 · Java教程 · ThreadLocal · java 线程池 Java线程池 threadlocal remove 线程复用
ThreadLocal 在线程池中不会随着任务结束自动清空,工作线程复用会让下一个任务读到上一个任务留下的值。本文用 Java线程池 和可运行示例拆开 get、set、remove 的生命周期,给出 finally 清理、任务装饰和验收边界。153 收藏 -
用一个批次编号生成场景拆开 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 收藏 -
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 收藏