java教程技术文章
-
Java Optional 更适合表达方法可能没有结果,而不是长期挂在 DTO 或领域对象字段上。本文从一次字段改动引发的构造、序列化和调用问题出发,说明如何把缺失值语义放回正确边界。179 收藏 -
Java Cleaner 适合为资源释放提供 GC 兜底,但清理动作不能持有被注册对象本身。本文用静态状态类、Cleanable 和 AutoCloseable 组织一份可落地的写法,并说明显式 clean、重复清理和阻塞动作的边界。128 收藏 -
使用try-with-resources关闭Files.walk返回的Stream,讲解findFirst短路与异常路径的资源释放,区分IOException和UncheckedIOException,并说明返回Path、集合或Stream时的所有权。315 收藏 -
Java HttpClient 的 connectTimeout 负责新连接建立,HttpRequest.timeout 负责请求响应等待。本文用 Java 代码和异常边界说明两者的作用域、连接复用影响与排查方法。189 收藏 -
Java Pattern 适合长期复用,Matcher 则携带可变匹配状态。本文比较一次性调用、顺序批处理和 ThreadLocal 三种方式,说明如何用 reset 复用 Matcher,同时避开多线程共享和输入生命周期问题。307 收藏 -
区分虚拟线程中的锁竞争与载体固定,说明JDK 24的JEP 491变化,用缓存快照示例讲解缩短临界区的条件,并提示并发刷新和原子业务的一致性边界。161 收藏 -
用 Java Stream 的 groupingBy 和 maxBy 按部门分组并保留工资最高的 Employee,说明 Optional、并列最大值、空输入和并行流边界。441 收藏 -
Java record 紧凑构造器可在隐式字段赋值前完成 null 检查、空白清理、大小写统一与业务不变量校验,让 accessor、equals 和序列化看到稳定状态。435 收藏 -
Java CompletableFuture 合并两个异步结果时,优先用 thenCombine 让两个阶段正常完成后生成新值;需要切换线程池时使用 thenCombineAsync,并区分无返回值组合、allOf、异常传播和 join 的使用边界。280 收藏 -
说明 Java AES/GCM 中 AEAD 标签的单位、拆分与拼接方式,以及标签校验失败时的正确处理边界。147 收藏 -
Java KeyStore 可以同时保存私钥、对称密钥和受信任证书。本文用 isKeyEntry、isCertificateEntry 和 getEntry 区分三类 Entry,并说明各自应该读取的内容与保护参数边界。144 收藏 -
用 Java BreakIterator 找到完整字符边界,安全截断组合字符、补充字符和表情序列,并说明它与像素宽度测量的区别。390 收藏 -
Java AtomicStampedReference 把对象引用和 int stamp 原子地绑定在一起。本文用 A→B→A 的场景说明只比较引用为什么会漏掉 ABA,再用 get 与 compareAndSet 同时校验引用身份和 stamp,给出更新版本号及使用边界。245 收藏 -
用 Java Normalizer 构建 NFC 名称比较键,区分组合字符、原始展示值和规范键,说明本地运行判断、数据集成与兼容折叠边界。473 收藏 -
ExecutorCompletionService 把任务提交和结果消费分开,适合多个 Callable 并发执行后按实际完成顺序取结果。本文用最小 Java 示例说明 take、poll、Future.get 的配合方式,以及异常、超时和线程池关闭边界。146 收藏