java教程技术文章
-
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 收藏 -
解释 Java Map.computeIfAbsent 递归更新同一个键为何失败,区分 HashMap 与 ConcurrentHashMap 的异常边界,并用递归返回值和外部缓存改写回调内更新。184 收藏 -
ServiceLoader找不到provider时,先核对META-INF/services文件或module-info.java声明,再检查类加载器、可见性和无参构造器。本文给出一套可复用的配置与排查方法。488 收藏 -
MethodHandle 没有独立的类型配置项,类型由 MethodType 和查找方式决定。本文从句柄创建、接收者位置、invokeExact 严格匹配与 asType 适配四层排查常见 WrongMethodTypeException。214 收藏 -
Java NIO 中 ByteBuffer.flip() 会把当前 position 变成 limit,再把 position 归零,适合把写入态切换为读取态。本文用状态表、代码和边界示意说明 flip 怎么配置,以及如何排查读不到数据、下溢和多轮读写问题。475 收藏 -
Files.walk 返回的 Stream会持有遍历目录的资源,正确做法是用 try-with-resources 包住完整操作,并区分创建、懒遍历和关闭阶段的异常。 347 收藏 -
Java Optional 的 orElse 会先求值备用参数,orElseGet 只在空值时调用 Supplier。本文用调用计数、代码对照和回归检查说明如何定位并修复不必要的备用计算。365 收藏