java教程技术文章
-
文章 · java教程 | 3星期前 | Java · 线程池 · 异步编程 · CompletableFuture · 线程池 Java CompletableFuture 异步超时 orTimeout completeOnTimeout
Java CompletableFuture 的 orTimeout 会让原任务以 TimeoutException 失败,completeOnTimeout 则把超时转换为备用结果。本文从订单查询的超时现场出发,拆开两种语义、异常回收与线程池验收边界。200 收藏 -
文章 · java教程 | 3星期前 | Java教程 · Optional · 性能边界 · 异常排查 · 空值处理 orElse orElseGet Java Optional orElseThrow
Java Optional 的 orElse 会提前计算默认值,orElseGet 只在空值时执行,orElseThrow 则把缺失数据转成明确异常。本文用订单查询和配置读取场景拆解三种写法的执行边界,并给出可复现的验收测试。168 收藏 -
Java 21 的 switch 模式匹配可以把类型判断和解构写进分支,但传统 switch 遇到 null 仍可能抛 NullPointerException。本文用订单状态路由场景说明 case null、类型覆盖、default 与旧代码兼容边界,并给出可复现的验收测试。338 收藏 -
用一个订单事件解析故障,拆开 Java record pattern 在类型匹配、嵌套解构和 null 分支中的边界。486 收藏 -
Java 16 起 Stream.toList() 进入生态,但迁移到 Java 21 时要处理空结果、并行行为和序列化返回类型差异,避免线上行为回归。473 收藏 -
Java 21 的 Pattern.splitWithDelimiters 可以在切分字符串时同时保留匹配到的分隔符。本文用配置行和日志片段说明 limit、空字段、尾部分隔及 Java 17 兼容回退。366 收藏 -
用一个可运行的小例子拆开 Java Map.computeIfAbsent 的 null 语义、递归更新限制和 ConcurrentHashMap 并发边界,避免把缓存未命中误判成已写入。462 收藏 -
BigDecimal 的 1.0 和 1.00 数值相等,但 equals 结果不同,放进 HashSet 也会留下两条记录。本文从订单金额比较误判的现场出发,说明 scale、compareTo、HashMap 去重和金额归一化的边界。330 收藏 -
处理跨地区订单或预约时间时,LocalDateTime 遇到夏令时重复小时会对应两个瞬间。本文用 ZoneRules 判断重复与缺失时间,明确偏移选择,并用回放测试锁住边界。264 收藏 -
Java java.time.Duration.dividedBy 可以把耗时切成固定时间片,但整数除法、零值除数和超大纳秒数都可能改变结果。本文用限流窗口和任务分片示例说明返回值、异常边界与测试验收。245 收藏 -
Java 25 的 Foreign Function & Memory API 用 MemorySegment 表示连续内存,用 Arena 管理堆外区域的生命周期。本文演示 confined、shared 和 automatic arena 的边界,并用关闭后的访问异常完成验收。366 收藏 -
Java 25 的 JFR CPU-Time Profiling 可在 Linux 上按 CPU 时间采样线程,并通过 jdk.CPUTimeSample 与 jdk.CPUTimeSamplesLost 观察热点和丢样。本文用 jfr、jcmd 与 throttle 参数建立一次可复查的定位流程。142 收藏 -
Java 21 引入 SequencedCollection 后,List、Deque 等有顺序集合可以用统一的首尾 API 与 reversed() 视图处理最近记录、队列和倒序展示。本文从订单事件列表出发,说明接口选择、空集合边界、反向视图写入和不可变包装的验收方法。100 收藏 -
程序在运行过程中,可能需要将一些数据永久的保存到磁盘上,而数据在Ja va中都是保存在对象当中的。那么我们要怎样将对象中的数据保存到磁盘上呢?这时就需要使用Ja va中的对象序列化。 对象的序列化(Serializable)是指将一个Ja va对象转换成一个I/O流中字节序列的过程。其目的是为了将对294 收藏 -
NIO是为替代传统标准的I/O而出现的。与标准的IO相比,NIO提供了一种与I/O不同的工作方式。NIO采用内存映射文件的方式来处理输入/输出,它将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样来访问文件了。 在标准IO中,使用的是字节流和字符流,而在NIO中,使用的是通道(Channe101 收藏