java教程技术文章
-
writeUTF 使用 modified UTF-8 并用两字节保存长度,编码后超过 65535 字节就会抛出 UTFDataFormatException。本文说明如何预判限制,并给出长文本改用长度加 UTF-8 字节的写读方案。450 收藏 -
讲清 Java DataInputStream.readFully、read 和 EOFException 的边界,帮助定长二进制记录导入时区分正常少读、文件截断与底层 I/O 错误。313 收藏 -
Java walkFileTree 的 postVisitDirectory 不只在目录正常遍历后调用,目录迭代提前结束时也会带着 IOException 进入该回调。本文用最小 Visitor 说明 exc 的判断、继续与终止的取舍,以及批量文件任务如何保存部分结果并支持恢复。450 收藏 -
Java Path.relativize 失败通常不是目标文件不存在,而是两个 Path 的绝对相对类型或根路径不匹配。本文用一个最小诊断工具说明判断条件、统一路径和安全降级写法。179 收藏 -
Java Files.find 通过 maxDepth 限制目录层级,并把 BasicFileAttributes 交给匹配器筛选普通文件、大小和后缀。本文还说明惰性 Stream 的关闭方式,以及 IOException 与 UncheckedIOException 的处理边界。487 收藏 -
Java 模块系统中,uses、provides 和 requires static 负责描述服务边界,ServiceLoader.findFirst() 可以在没有可选实现时回退到默认实现。本文给出模块声明、加载代码与排错边界。363 收藏 -
从 plain、opaque、acquire/release 到 volatile,梳理 Java VarHandle 的内存序选择方法,并用发布协议验证共享数据可见性。226 收藏 -
文章 · java教程 | 4天前 | 并发 · Java · CompletableFuture · java 异步编程 completablefuture CompletionStage minimalCompletionStage
服务内部需要控制 CompletableFuture 的完成权,但直接返回它会让下游拥有过多操作面。本文用 minimalCompletionStage 建立只读编排边界,并说明 toCompletableFuture、异常与取消的适配位置。219 收藏 -
用 Java JFR RecordingStream 订阅有限事件,围绕延迟尖峰建立时间窗口、线程堆栈和 GC/锁/I/O 证据链,并控制流式记录的资源边界。213 收藏 -
Java record 序列化不是普通 Serializable 类的缩小版。本文说明组件如何进入序列化流、canonical constructor 如何参与反序列化,以及新增删除组件、record 与普通类互转时如何设计兼容边界。483 收藏 -
Java 模块化插件不应只把多个 JAR 扔进同一个类路径。本文把共享 SPI 放在父 ModuleLayer,为每个插件目录建立独立 Configuration 与 ClassLoader,再用 ServiceLoader 按层发现实现,并补齐失败回滚、资源释放和卸载边界。414 收藏 -
Java 的 Pattern Matching switch 可以沿着 sealed 类型层级做穷尽匹配。本文用订单事件模型拆开直接子类型、叶子类型、default、null 和新增实现后的编译影响。189 收藏 -
Java Collectors.teeing 可以把同一批 Stream 元素同时交给两个下游 Collector,再用 merger 组合成一个结果对象。本文以订单数量和平均金额为例,说明泛型写法、空数据处理、并行流边界和适用场景。385 收藏 -
Java FFM API 用 Arena 管理 MemorySegment 背后的本地内存。本文通过区域所有权模式讲清 confined、shared、auto、global 四类 Arena 的释放时机和线程边界。385 收藏 -
StampedLock 乐观读的安全回退方式是先读取共享字段,再校验 stamp;校验失败后获取读锁,并在锁内重新读取全部字段,最后在 finally 中释放读锁。本文给出最小模板、限时回退和常见误区。165 收藏