-
Java HttpClient 使用 BodyHandlers.ofPublisher() 时,响应体 Publisher 只能订阅一次;本文用 Flow.Subscriber 说明 request、cancel、回调和连接复用边界。
-
Java FFM API 用 Arena 管理 MemorySegment 背后的本地内存。本文通过区域所有权模式讲清 confined、shared、auto、global 四类 Arena 的释放时机和线程边界。
-
Java Collectors.teeing 可以把同一批 Stream 元素同时交给两个下游 Collector,再用 merger 组合成一个结果对象。本文以订单数量和平均金额为例,说明泛型写法、空数据处理、并行流边界和适用场景。
-
Java HttpRequest.Builder 的 expectContinue(true) 可以让服务器先确认是否接收请求,再发送较大的请求体。文章结合 BodyPublisher、100 Continue、错误响应和 timeout,说明它适合什么场景、哪里容易误判,以及如何设计可核对的请求边界。
-
通过 G1 Region 大小、humongous 阈值和连续 Region 数量,可以保守估算大对象尺寸区间;本文同时解释 Humongous regions 日志为何不能单独定位某个对象。
-
Java StringSubstitutor 遇到变量循环引用时,应先区分变量值递归和变量名递归,再按场景关闭递归、拆分配置并在边界捕获异常。本文用变量图、Java 示例和三个复查指标说明处理方法。
-
Java Optional 的 orElse 会先计算默认参数,所以即使 Optional 有值,默认方法也可能执行。本文用最小示例解释 orElse 与 orElseGet 的求值时机和选择边界。
-
从 dependencies、dependencyManagement、依赖树、BOM 和作用域五个边界说明 Java Maven 依赖管理怎样处理,帮助定位传递依赖冲突并统一多模块版本。
-
用一个可复查的缓存刷新场景,说明 Java ReentrantReadWriteLock 从写锁降级到读锁的正确顺序、异常释放边界与验证方法。
-
Java 插件需要独立的类加载边界时,可以用 ModuleFinder 和 Configuration 解析模块图,再用 defineModulesWithManyLoaders 为不同插件模块建立独立 ClassLoader。本文说明父层、exports、可读性和常见加载失败的排查方法。
-
Java 21 虚拟线程出现 pinning 时,先用 JFR 或 jdk.tracePinnedThreads 定位持锁阻塞,再把频繁且可能长时间等待的 I/O 移出 synchronized;短时内存临界区不必盲目改写。
-
Java record 接收接口 JSON 时,额外字段是否报错不由 record 单独决定,而由 Jackson 的未知属性策略决定。本文用最小示例说明局部注解、全局 ObjectMapper 和 ObjectReader 的边界,并给出上线前的兼容性检查清单。
-
Java Stream Gatherer 需要在输入耗尽后输出计数、最后元素或摘要时,应把数据保存在状态对象中,让 integrator 继续消费输入,再由 finisher 向下游推送尾部结果。本文说明 ofSequential 的写法、空流与短路边界,以及何时改用 Gatherers.fold。
-
Java ZGC 的低暂停目标仍然依赖足够的堆余量。本文从 Xmx、SoftMaxHeapSize、Xms、AlwaysPreTouch 和 ZUncommit 的关系出发,说明如何在突发分配、内存预算和延迟稳定性之间做配置取舍,并用 MXBean 做最小复查。
-
开发 TCP 程序时,第一步通常都是先把服务器端搭起来。JDK 的 ja va.net 包里专门提供了一个 ServerSocket 类,它的实例对象就可以用来实现服务器端程序。查一下 API 文档就会发现,ServerSocket 类提供了不止一种构造方法,下面就按这个思路,把这些构造方法逐一讲清