java教程技术文章
-
Java Pattern 的 named group 不能在同一个正则中重复定义。本文区分重复定义、量词覆盖和 find 多次匹配三种情况,给出 group(String) 的读取方式、异常边界与完整示例。305 收藏 -
Java G1 日志出现 humongous allocation 时,应先确认实际 Region 大小,再用半个 Region 判断阈值,并结合 Humongous regions、Old regions、并发标记和 Full GC 证据区分偶发大对象与持续空间压力。184 收藏 -
Java JDBC 处理 SQLException 时,先用 SQLState 做跨驱动的错误分类,再用 vendorCode 映射厂商细节,结合异常类型和异常链决定重试、降级与告警。229 收藏 -
Java Jackson 反序列化 record 缺少 JSON 字段时,默认值应放在 canonical 构造器中,并明确处理 null、集合和基本类型边界。278 收藏 -
Java 的 requires transitive 会把目标模块加入下游的隐式可读性,但不会自动导出所有包。本文用 app、facade、logging 三模块示例,解释下游编译边界、exports 配合关系,以及 javac 和 java 的排查方法。257 收藏 -
Java ServiceLoader 在模块路径下找不到 provider,通常不是接口实现消失,而是 uses、provides、模块路径或 provider 实例化条件没有同时满足。本文用最小模块示例拆开排查。455 收藏 -
Java CompletableFuture 使用 whenComplete 记录成功值和异常时,如何保持上游结果语义?本文用代码和边界表说明观察、异常传播及验证方法。439 收藏 -
Java HttpClient 使用 BodyHandlers.ofPublisher() 时,响应体 Publisher 只能订阅一次;本文用 Flow.Subscriber 说明 request、cancel、回调和连接复用边界。385 收藏 -
Java 21 的 SequencedMap 可以用 reversed() 得到反向视图。本文用 LinkedHashMap 说明如何成对遍历键值、验证首尾顺序,并解释视图、快照和兼容性边界。229 收藏 -
Java Stream teeing 会把同一批元素交给两个下游收集器,再合并为一个结果。本文用订单统计、Optional 空结果和 groupingBy 分组案例说明适用场景与边界。500 收藏 -
Java StructuredTaskScope 失败时,joiner 如何取消未完成子任务,FailedException、isCancelled 和 close 又分别说明什么?本文用 Java 25 预览 API 示例拆开传播链与关闭边界。400 收藏 -
虚拟线程可以承载大量阻塞任务,但不会增加数据库连接数。本文用连接池、Semaphore 和等待指标拆开说明 Java 并发上限该怎么设。272 收藏 -
Java record pattern 解构嵌套 record 时,外层嵌套对象为 null 会匹配失败,而已存在 record 的字段值仍可为空。本文用地址解析小项目拆开三层边界,并给出 Java 21 的安全判断写法。190 收藏 -
Java Semaphore 不会自动校验 release 的许可数量。本文用许可守恒、日志计数和最小并发测试定位多释放、少释放以及中断路径造成的并发泄漏。427 收藏 -
Java ReentrantLock 公平模式会优先照顾等待更久的线程,但高竞争下通常吞吐量更低。本文解释排队协调成本、tryLock 边界,并给出可比的公平与非公平锁选择方法。252 收藏