java教程技术文章
-
Java HttpClient 的 BodyHandlers.ofInputStream 适合边收边处理的大响应,但调用方必须消费或关闭返回的 InputStream。本文对比 ofString、ofByteArray、ofFile 和 ofInputStream,给出状态码判断、流复制与资源清理的安全写法。145 收藏 -
Java Record 的参数校验应集中放在规范构造器中:用 compact constructor 处理清洗、非空、格式和范围约束,重载构造器统一委托,避免对象从旁路入口创建。189 收藏 -
解释 Java Pattern.DOTALL 为什么让点号匹配换行,区分 DOTALL、MULTILINE 与 UNIX_LINES 的作用,并用 Java 示例说明如何限定跨行匹配范围、避免贪婪量词吞掉后续内容。199 收藏 -
Java NIO FileChannel 共享 position 时,多个线程先定位再写入可能互相覆盖。本文用显式位置写入、区间分配和应用层锁,说明并发读写的安全边界。175 收藏 -
Java Path.normalize() 只整理 . 和 .. 等冗余名称,不检查文件是否存在;toRealPath() 会访问文件系统并返回已存在目标的绝对真实路径。本文用符号链接和选择清单说明两者边界。298 收藏 -
已知 HashMap 的预计映射数时,不要直接把条目数当初始容量;本文用默认负载因子 0.75 说明估算公式、JDK 19+ 的 newHashMap 和容量过大的代价。350 收藏 -
BigDecimal 的 equals 同时比较数值和 scale,而 compareTo 只比较数值。本文用 2.0 与 2.00 说明条件判断、规范化和 HashSet、TreeSet 的选择边界。452 收藏 -
文章 · java教程 | 1个月前 | 异常处理 · 并发编程 · api设计 · Java教程 · CompletableFuture · java 异常处理 异步编程 completablefuture Handle 统一结果
用 CompletableFuture.handle 同时处理成功值和异常,把异步调用统一转换为稳定的业务结果对象,并对比 exceptionally、whenComplete 的适用边界与常见误区。338 收藏 -
通过可观察的工厂示例解释 Java Optional.orElse 与 orElseGet 的求值边界,给出默认值成本、副作用、异常语义和代码评审清单,帮助选择真正惰性的默认值写法。436 收藏 -
用 TreeMap 工厂和自定义 Comparator 控制 Java Stream groupingBy 的分组键顺序,并说明时间比较器相等导致键合并的边界。448 收藏 -
ByteBuffer 写入完成后要先 flip 才能按有效数据读取。本文用具体状态值说明 position、limit、capacity 的变化,并区分 flip、rewind、clear 与 compact。368 收藏 -
Java Files.find 和 Files.walk 都能搜索文件树,但过滤条件的落点不同:属性条件优先放进 find,路径流组合和后续转换更适合 walk。本文用可关闭资源的示例说明 maxDepth、BasicFileAttributes、filter 和异常边界。348 收藏 -
文章 · java教程 | 1个月前 | Java · 异常处理 · 资源管理 · java try-with-resources AutoCloseable close suppressed exception
Java try-with-resources 多个资源时按声明顺序初始化、按相反顺序关闭;本文说明初始化失败、close 异常和 suppressed exception 的判断方法。501 收藏 -
Java 25 的 ScopedValue 适合在明确的动态作用域内单向传递不可变上下文;ThreadLocal 仍适合可变的线程本地状态,但在线程池任务结束时必须 remove。本文用最小代码和选择表说明两者在任务边界、嵌套绑定和子任务继承上的区别。225 收藏 -
Java 虚拟线程可以承载大量并发任务,但外部服务仍有容量上限。本文用 Semaphore 只限制下游调用区,并说明中断、等待超时、finally 释放以及连接池重复限流的边界。468 收藏