java教程技术文章
-
Java CompletableFuture 的超时处理要先选对语义:用 orTimeout 保留超时异常,再用 exceptionally 做回退;如果超时本身就是可接受结果,则用 completeOnTimeout 直接返回默认值。396 收藏 -
Java flatMap 可以自然展开空集合,但 null 子集合和 null 元素需要不同策略。通过标签汇总示例说明空流、参数拒绝、职责边界与接入清单。266 收藏 -
Files.readString(path) 默认按 UTF-8 解码;文件实际编码不是 UTF-8 时,应使用带 Charset 参数的重载。本文从乱码根因、显式字符集写法和大文件边界三个方面给出可落地的选择方法。377 收藏 -
Java ByteBuffer.slice 创建的是共享内容视图:新缓冲区从源 position 开始,拥有独立的 position、limit 和 mark,但对共享字节的修改仍会彼此可见。本文用结构示例区分 slice、duplicate、只读视图和显式复制。464 收藏 -
区分 Java 泛型记录的静态类型推断与组件值匹配,比较显式实参、var、通配符和嵌套模式,说明未经检查转换及空值边界。452 收藏 -
Java record 可以通过规范化构造器统一完成参数校验、空白清理、大小写转换和范围规范化。本文说明紧凑构造器与显式构造器的写法,并解释替代构造器为什么必须委托到同一条校验路径。477 收藏 -
Java Pattern.split 遇到连续、首尾分隔符时,关键在于 limit 参数:默认 limit=0 会丢弃尾部空字符串,负数 limit 才能保留完整字段。本文用静态边界说明和可复制示例讲清选择方法。149 收藏 -
Java Stream 中直接修改外部 List、Map 或计数器,会让并行执行出现数据竞争、结果不稳定或锁竞争。本文说明如何识别共享可变状态,并用 toList、groupingBy、reduce 和 Collector 改写。403 收藏 -
以G1统一日志为范围,说明如何按进程与时间窗归并GC记录,区分暂停、并发阶段和安全点等待,并依据资源与对象分配证据进行单项处置及回退。352 收藏 -
介绍 Java Gradle 项目如何使用 libs.versions.toml 集中维护依赖版本,并结合 BOM、平台和 dependency constraints 处理版本对齐与解析排查。232 收藏 -
从 dependencies、dependencyManagement、依赖树、BOM 和作用域五个边界说明 Java Maven 依赖管理怎样处理,帮助定位传递依赖冲突并统一多模块版本。382 收藏 -
CompletableFuture.delayedExecutor 负责延迟触发,不是业务任务本身的线程池。本文用 Java 12+ 示例拆开触发器、基础 Executor、取消和异常边界,说明怎样安排可控的延迟任务。465 收藏 -
Java 虚拟线程出现 BLOCKED 或吞吐下降时,先区分普通等待、载体线程固定和下游资源耗尽,再按 JDK 21–23 与 JDK 24+ 的差异使用线程转储、JFR、Semaphore 和资源边界控制。493 收藏 -
文章 · java教程 | 2星期前 | Java · 异步编程 · 性能排查 · java httpclient completablefuture 异步超时 HttpTimeoutException sendAsync
Java HttpClient 的 connectTimeout 只约束建立新连接,HttpRequest.timeout 才是请求级截止时间。本文用 sendAsync 示例区分两类超时,说明 CompletableFuture 的异常分类、取消边界和 p95/p99 指标记录方式。485 收藏 -
按配置源、前缀键名、Bean 注册、类型转换和校验五层排查 Java Spring 配置绑定失败,附 @ConfigurationProperties、构造器绑定与嵌套校验示例。473 收藏