java教程技术文章
-
Java Stream teeing 会把同一批元素交给两个下游收集器,再合并为一个结果。本文用订单统计、Optional 空结果和 groupingBy 分组案例说明适用场景与边界。500 收藏 -
Java StructuredTaskScope 失败时,joiner 如何取消未完成子任务,FailedException、isCancelled 和 close 又分别说明什么?本文用 Java 25 预览 API 示例拆开传播链与关闭边界。400 收藏 -
虚拟线程可以承载大量阻塞任务,但不会增加数据库连接数。本文用连接池、Semaphore 和等待指标拆开说明 Java 并发上限该怎么设。272 收藏 -
Java record pattern 解构嵌套 record 时,外层嵌套对象为 null 会匹配失败,而已存在 record 的字段值仍可为空。本文用地址解析小项目拆开三层边界,并给出 Java 21 的安全判断写法。190 收藏 -
Java Semaphore 不会自动校验 release 的许可数量。本文用许可守恒、日志计数和最小并发测试定位多释放、少释放以及中断路径造成的并发泄漏。427 收藏 -
Java ReentrantLock 公平模式会优先照顾等待更久的线程,但高竞争下通常吞吐量更低。本文解释排队协调成本、tryLock 边界,并给出可比的公平与非公平锁选择方法。252 收藏 -
Java Selector 的 wakeup 是一次性选择唤醒信号。本文解释提前 wakeup 后 select 仍阻塞的常见时序,说明 selectNow 如何清除唤醒效果,并给出任务队列与事件循环的稳定写法。287 收藏 -
Java AsynchronousFileChannel 的 write 是异步提交,写入完成前关闭通道会让未完成操作以 AsynchronousCloseException 失败。本文用回调和 Future 两种方式说明正确的关闭时机。385 收藏 -
文章 · java教程 | 1星期前 | 文件操作 · Java · nio · java nio Files.move ATOMIC_MOVE AtomicMoveNotSupportedException
Java Files.move 搭配 ATOMIC_MOVE 可以避免读者看到半成品,但并非所有文件系统都支持。本文给出异常边界、兼容降级和恢复策略。275 收藏 -
Java 的默认 Locale 会影响未显式指定区域设置的数字、日期和字符串格式化。本文说明 FORMAT Locale 的作用、常见不稳定场景,以及如何用显式 Locale 区分展示文本和机器协议。406 收藏 -
Java DateTimeFormatter 中大写 YYYY 表示周基准年,年末可能与公历年不同。本文解释 YYYY、yyyy、uuuu 的区别,并给出普通日期与周日期的正确写法。239 收藏 -
Java BigDecimal 的 scale 决定小数位表示,不等同于最终显示格式。本文用 setScale、RoundingMode 和 DecimalFormat 组合,让金额在计算、比较和展示时保持一致。251 收藏 -
Java Spliterator 的 characteristics 写错会影响并行流的拆分、顺序和尺寸优化。本文按 ORDERED、SIZED、SUBSIZED、CONCURRENT 等特征解释风险,并给出自定义 Spliterator 的边界检查清单。250 收藏 -
Java Stream.peek 是惰性中间操作,可能因没有终止操作、短路或实现优化而少执行。本文拆开触发边界,并给出把业务副作用移到可靠位置的重构方式。121 收藏 -
文章 · java教程 | 1星期前 | Java · 集合 · Stream · map 重复键 Collectors.groupingBy Java Collectors.toMap Stream收集
Java Stream 收集数据时遇到重复键,不要直接改成覆盖写法。本文用 groupingBy 保留同键的多条对象,再用 toMap 合并函数处理只需要一个值的场景,并说明顺序、空值与并行流边界。203 收藏