java教程技术文章
-
CompletableFuture.allOf 返回的是 CompletableFuture,它只负责等待全部任务完成。保留每个子任务的 CompletableFuture,再逐项 join,就能按原顺序收集类型安全的返回值。 437 收藏 -
通过可观察的工厂示例解释 Java Optional.orElse 与 orElseGet 的求值边界,给出默认值成本、副作用、异常语义和代码评审清单,帮助选择真正惰性的默认值写法。436 收藏 -
Java 项目本地构建通过、CI 却失败,往往不是代码突然变坏,而是 JDK、Maven 依赖缓存和质量检查没有被流水线固定。本文用一个订单服务的构建场景,拆开版本矩阵、依赖缓存、测试门禁和失败通知的配置边界。434 收藏 -
文章 · java教程 | 13小时前 | Java · 异步编程 · Java HttpClient BodyHandlers.fromLineSubscriber Flow.Subscriber 异步响应 按行消费
Java HttpClient 可通过 BodyHandlers.fromLineSubscriber 将文本响应逐行交给 Flow.Subscriber。本文给出带 request(1) 背压、异步处理、状态码分流和异常取消的完整实现。433 收藏 -
网络中的计算机想要彼此通信,光有连接还不够,还得给每一台设备分配一个“身份标识”。有了这个标识,数据在传输时才能准确找到接收方,也能明确发送方是谁。在 TCP/IP 协议里,这个标识就是 IP 地址。它的作用很直接:唯一标识一台计算机。当前被广泛使用的版本是 IPv4,采用 4 个字节的二进制数来表432 收藏 -
GridLayout(网格布局管理器)会用横线和竖线把容器切分成 n 行 m 列、大小一致的网格,每个网格里都可以放置一个组件。组件加入容器后,会先落在第1行第1列(左上角)的位置,随后按照第1行从左到右的顺序依次排布;当前一行放满之后,再进入下一行,继续按从左到右的方式放置。它和 FlowLayo431 收藏 -
Java 21 的 SequencedCollection.reversed() 返回反向顺序视图,不必先复制 ArrayList。本文用代码说明视图与快照的差异、修改可见性和并发遍历边界。431 收藏 -
虚拟线程适合大量阻塞型任务,但它不会自动增加数据库连接等稀缺资源。本文从读者提问出发,说明虚拟线程不该再被线程池复用,连接池本身的并发边界,以及何时应使用 Semaphore。430 收藏 -
CompletableFuture.allOf 只能告诉你一组并发任务的聚合结果失败,不能直接定位具体任务。本文用 handle 保存每个任务的标识、成功值和原始异常,再结合 allOf 生成可重试、可告警的失败清单。429 收藏 -
Java 25 的 StructuredTaskScope 仍是预览 API,适合把一次请求拆成多个并发子任务,再以结构化的 join、失败传播和超时边界收拢结果。本文用商品详情聚合场景拆开 open、fork、join、TimeoutException 和预览编译参数。428 收藏 -
Java Semaphore 不会自动校验 release 的许可数量。本文用许可守恒、日志计数和最小并发测试定位多释放、少释放以及中断路径造成的并发泄漏。427 收藏 -
用 DateTimeFormatter 和 ResolverStyle.STRICT 解析 Java 日期,区分格式、时区、无效日期与时间字段,给出可运行的验收代码和常见边界。426 收藏 -
讲清 Java Stream 使用 groupingBy 搭配 maxBy 获取每组最大时间记录的方法,并比较 Optional 展平、toMap 合并、空值和并列时间的处理边界。426 收藏 -
Java 8 应用升级到 Java 21,真正容易卡住的不是语法,而是 JAXB 缺失、强封装反射和默认字符集变化。本文用一套可复用的检查顺序,把编译、启动和回归验证串起来。425 收藏 -
用一个可复现的锁竞争场景,说明 Java ReentrantLock.lockInterruptibly 的等待、中断、异常清理和 finally 释放顺序,避免把线程中断误写成强制解锁。422 收藏