java教程技术文章
-
用一个可复现的锁竞争场景,说明 Java ReentrantLock.lockInterruptibly 的等待、中断、异常清理和 finally 释放顺序,避免把线程中断误写成强制解锁。422 收藏 -
Java DateTimeFormatter 的格式化结果可能随默认 Locale 改变。本文用固定模式、Locale.ROOT 和本地化样式对照,说明如何稳定生成接口、日志和用户界面的日期文本。252 收藏 -
Java 24 的 Gatherers.fold 适合没有合并器、且结果依赖输入顺序的聚合。本文用分段账单摘要拆解状态边界、空流结果与并行流验收,避免把 fold 当成可随意并行的 reduce。233 收藏 -
Java Pattern.asMatchPredicate 可以把完整字符串匹配封装成 Predicate,再交给 Stream.anyMatch 短路查找。本文用订单号校验场景对比 asMatchPredicate 与 asPredicate,说明 null、空流和正则边界。118 收藏 -
Java Flow.Publisher 的背压不是一个抽象口号:Subscriber 通过 Subscription.request 控制批次,数据库写入完成后再补请求,取消时沿链路停止。本文用最小示例讲清请求量、批处理和取消边界。279 收藏 -
Java 服务上传大文件时,不要把整文件一次性读进内存。本文用 AWS SDK for Java 2.x 的异步客户端拆解分片大小、并发度、失败重试和中止清理,给出一条可落地的选择路径。175 收藏 -
Java HttpClient 的 BodyHandlers.ofLines 返回的是流式 Stream,读取完毕或提前停止都要明确关闭。本文从响应接收、行消费到资源释放拆开调用链,给出 try-with-resources 写法和提前终止时的边界。 283 收藏 -
用 Java NIO AsynchronousFileChannel 写文件时,连续提交回调可能让任务堆积。本文用批量写入、单飞窗口和可复现吞吐基线,说明如何控制并发、等待完成并验证结果。451 收藏 -
Java HashMap 的桶并不是碰撞一多就立刻变成红黑树。本文结合 TREEIFY_THRESHOLD、MIN_TREEIFY_CAPACITY、resize 和 putVal 说明树化条件、扩容优先级与读取路径。443 收藏 -
ArrayDeque 明确禁止 null,不是实现遗漏,而是为了让 pollFirst 的 null 返回值稳定表示“队列为空”。本文从 addLast、pollFirst 和空值哨兵的关系出发,说明如何改造入队契约并验证边界。180 收藏 -
Java 的 Pattern Matching for switch 遇到 null 时不会自动落到 default。本文从一段线上状态分派代码切入,说明 case null、类型模式、when 守卫和 default 的边界,并给出兼容旧写法的改造方式。194 收藏 -
Java 反射调用私有方法失败时,问题通常不在方法签名,而在 Lookup 的访问能力、目标类所在模块和包是否开放。本文用最小示例拆开查找模式、privateLookupIn 与模块边界。331 收藏 -
文章 · java教程 | 3星期前 | 正则表达式 · 字符串处理 · Java教程 · 异常排查 · Java正则 Matcher.matches Matcher.find group 字符串校验
Java Matcher.matches 要求整个输入完全匹配,find 则负责在输入中寻找下一段命中内容,group 用来读取捕获组。本文从订单号整串校验和日志字段提取两个场景出发,拆开三者的边界,并给出可复现的检查代码。134 收藏 -
Java 线程池准备退出时,close、shutdown 和 awaitTermination 到底怎么配合?本文用一个可验证的收尾流程说明停止接收任务、等待完成、记录未完成任务和超时兜底的边界。399 收藏 -
配置文件直接覆盖时,读线程可能看到半截内容。本文用 Java NIO 的临时文件、Files.move 和同目录改名实现一次完整替换,并说明 ATOMIC_MOVE 不可用时如何回退与核对结果。332 收藏