java教程技术文章
-
Java 命名模块中 ServiceLoader 读不到实现,通常不是接口代码有问题,而是消费模块缺少 uses、实现模块缺少 provides with、提供者不满足 public 构造约束,或实现模块未进入 module path 与解析图。本文用三模块最小示例给出完整排查方法。462 收藏 -
Java 25 的 ScopedValue 适合替代只读 ThreadLocal 上下文:用有界动态作用域传递不可变请求信息,并明确嵌套绑定、线程继承和迁移边界。457 收藏 -
从停顿、吞吐和进程内存余量三个维度比较 G1 与 ZGC,给出 Xmx 估算、统一压测参数、GC 日志指标和灰度回退清单。446 收藏 -
Java 22+ 可用 FileChannel.map 返回 MemorySegment,以 long 尺寸映射超过 2GB 的文件,并由 Arena 确定解除映射时机。本文从用户任务出发,给出只读映射、窗口切片、并行读取、性能检查和空文件、跨窗记录、文件截断等边界处理方法。435 收藏 -
Java 24+ 的 Class-File API 把 LineNumberTable 映射为 CodeModel 中的 LineNumber 元素。本文用 CodeTransform 只重写指定方法的行号,说明保留字节码、筛选方法和处理调试信息时的边界。418 收藏 -
本文用 JFR RecordingStream 按事件名消费延迟事件,将回调中的 Duration 转成固定分桶的 count、sum、error、P95 与 P99 窗口快照。示例重点处理阈值、字段兼容、回调阻塞、事件对象生命周期、异常与关闭边界。418 收藏 -
Java CompletableFuture 的 cancel() 只能表达取消状态,无法携带业务原因。本文比较 cancel、带原因的异常完成和显式结果对象,给出跨 thenCompose 阶段传递取消码的写法。415 收藏 -
Java 堆稳定而进程 RSS 持续上涨时,可用 NMT 建立基线并读取 summary.diff,按 committed 分类增量判断 Class、Thread、Code、GC/Internal 等来源;若 NMT 总量稳定而 RSS 继续增长,则应转向 JNI、第三方库和系统级内存证据。414 收藏 -
文章 · java教程 | 2天前 | Java · 性能优化 · Stream · Java教程 · Java Stream Spliterator 并行流 parallelStream Stream副作用
把 stream() 改成 parallelStream() 之前,先判断数据规模与单元素成本、Spliterator 拆分质量、状态型操作、顺序约束、共享副作用和归约契约。本文给出六道筛选、代码改造方法和同输入对照清单,避免并行后更慢或结果不稳定。405 收藏 -
Java 25 StructuredTaskScope 可把一组相关子任务纳入同一生命周期:失败、调用方中断或整体超时时统一取消未完成任务,并通过中断协作完成收尾。370 收藏 -
用 Java Vector API 对 float 数组执行批量乘加,介绍 SPECIES_PREFERRED、fromArray、intoArray、loopBound、标量尾部和掩码尾部的完整写法。319 收藏 -
Java 记录模式可以在 instanceof 和 switch 中递归拆解嵌套 record。本文从逐级访问器迁移到嵌套模式,说明 var 推断、null、泛型与失败分支,并给出紧凑的回归检查清单。308 收藏 -
从输入信任边界、ObjectInputFilter 白名单与资源上限,到 JSON/Protocol Buffers 等显式格式迁移,说明 Java 序列化如何安全收紧并保留兼容性。278 收藏 -
通过一次支付处理中状态被误判为失败的复盘,演示如何用 Java sealed interface、record 与模式匹配 switch 固定结果集合、获得编译期穷尽检查,并设计同模块扩展边界。270 收藏 -
Java 虚拟线程适合承载大量等待型任务,但不应代替网络资源限流。本文用 Semaphore 包住 HttpClient 请求边界,说明许可归还、超时、连接能力和重试参数如何分开配置。265 收藏