java教程技术文章
-
用 DateTimeFormatterBuilder 兼容只有日期、带时间和带时区的输入,配合 parseBest、parseDefaulting 与 DateTimeParseException 做出稳定的类型判断和失败提示。338 收藏 -
文章 · java教程 | 1个月前 | 异常处理 · 并发编程 · api设计 · Java教程 · CompletableFuture · java 异常处理 异步编程 completablefuture Handle 统一结果
用 CompletableFuture.handle 同时处理成功值和异常,把异步调用统一转换为稳定的业务结果对象,并对比 exceptionally、whenComplete 的适用边界与常见误区。338 收藏 -
Java NIO WatchService 默认只监听已经注册的目录。本文用递归注册、动态补注册和 WatchKey 映射解决子目录事件遗漏。338 收藏 -
Java String.lines() 适合读取真实文本行,但不会把结尾换行符自动变成额外空记录。本文说明行结束符、连续换行和末尾空元素的差异,并用 split(regex, -1) 保留协议需要的尾部空记录。337 收藏 -
DatagramChannel 非阻塞接收需要正确处理 receive 的 null 返回。本文用有限时长示例说明 Selector 注册、读就绪提示与缓冲区状态,区分无包、空包和截断。337 收藏 -
UDP是一种无连接协议,换句话说,通信双方在传输数据前并不需要先建立连接。它的工作方式,其实很像货运公司在两个码头之间运送货物:货物发出和接收时,都得先装进集装箱里。UDP也是同样的道理,发送和接收的数据也需要先经过“集装箱”式的封装。为此,JDK专门提供了一个DatagramPacket类,这个类336 收藏 -
文章 · java教程 | 2个月前 | Java · 并发编程 · CompletableFuture · java completablefuture exceptionallyCompose 异步恢复 超时回退
用 CompletableFuture.exceptionallyCompose 把异步降级接回原链路,区分业务异常、超时和回退失败,配合 orTimeout 完成可验收的恢复流程。336 收藏 -
Files.readString 适合小型文本读取,却会把整个文件和解码后的字符串同时带进堆。本文用内存预算、newBufferedReader 分块读取和 lines 流关闭三个检查点,说明大文件读取该如何选型。335 收藏 -
Java 25 的预览稳定值接口只能设置一次,适合做惰性初始化,但循环依赖会在取值时抛出 IllegalStateException。本文用两个稳定值的依赖图拆解触发边界、并发语义与强可达带来的生命周期取舍。335 收藏 -
用 Java Files.find 组合普通文件、扩展名、大小和修改时间条件,掌握 maxDepth、BasicFileAttributes 以及 Stream的资源边界。 335 收藏 -
配置文件直接覆盖时,读线程可能看到半截内容。本文用 Java NIO 的临时文件、Files.move 和同目录改名实现一次完整替换,并说明 ATOMIC_MOVE 不可用时如何回退与核对结果。332 收藏 -
用 Java Runtime.Version 解析并比较运行时版本,区分 feature、interim、update、patch 与 pre 预览标记,避免把字符串排序误当成版本判断。332 收藏 -
用 Java Thread.Builder.OfVirtual 创建虚拟线程时,统一配置线程名和 UncaughtExceptionHandler,并通过可见日志验收异常是否真正被接住。331 收藏 -
Java 反射调用私有方法失败时,问题通常不在方法签名,而在 Lookup 的访问能力、目标类所在模块和包是否开放。本文用最小示例拆开查找模式、privateLookupIn 与模块边界。331 收藏 -
StringCharacterIterator 返回 char,遍历结束时不能用 null 表示。本文解释 CharacterIterator.DONE 为何是 \uFFFF,并用结束索引、空范围和 UTF-16 边界写出安全遍历方式。331 收藏