java教程技术文章
-
围绕 Java 21 pattern switch 和 sealed 类型,说明 permitted 分支覆盖、when 守卫、无守卫兜底、支配关系与 null 边界的实现方法。448 收藏 -
用同一段 Java 线程实验复现 ReentrantReadWriteLock 非公平与公平策略下的写锁等待,解释读者持续到达时的排队边界,并给出可复查的选择方法。447 收藏 -
用 Introspector 取得 BeanInfo 并遍历 PropertyDescriptor,说明属性名、类型、读写方法与只读属性的处理,以及字段扫描、继承范围和业务筛选的区别。447 收藏 -
Java MethodHandle.asType 会返回一个拥有新签名的适配句柄。本文用一个静态方法调用实验拆开参数转换、返回值转换、invokeExact 校验和 WrongMethodTypeException 的边界。446 收藏 -
从停顿、吞吐和进程内存余量三个维度比较 G1 与 ZGC,给出 Xmx 估算、统一压测参数、GC 日志指标和灰度回退清单。446 收藏 -
Java String.split 默认会丢弃结果末尾的空字符串。本文用 limit 参数对比正数、0 和负数的行为,说明怎样完整读取空字段、怎样固定列数并保留剩余内容,以及正则分隔符的常见边界。446 收藏 -
Spring Retry 只能控制临时异常的再次调用,不能单独保证消息幂等。本文用稳定 messageId、inbox 唯一约束、事务边界和外部接口幂等键,说明如何避免异常重试造成重复处理。445 收藏 -
虚拟线程适合承载大量阻塞 I/O,但连接池仍是有限资源。本文给出 Java 21+ 的执行器选择、连接借用代码、锁边界和排障方法。444 收藏 -
Java HashMap 的桶并不是碰撞一多就立刻变成红黑树。本文结合 TREEIFY_THRESHOLD、MIN_TREEIFY_CAPACITY、resize 和 putVal 说明树化条件、扩容优先级与读取路径。443 收藏 -
LocalDateTime 不包含时区,不能单独确定时间戳。本文用 ZoneId、ZonedDateTime 和 Instant 演示秒级、毫秒级转换,并说明夏令时、固定偏移和精度损失。443 收藏 -
Java CompletableFuture.orTimeout 可以在指定时间内未完成时让同一个 CompletableFuture 以 TimeoutException 异常完成。本文给出最小写法,解释 timeout、TimeUnit、join 与异常处理的边界,并说明它不会自动停止底层任务。443 收藏 -
Java 26 迁移不要只看编译是否通过。本文把弃用 API 清单拆成已移除、标记待移除和内部 API 三类,再用 jdeprscan、jdeps 与 javac --release 26 建立可追踪的构建门禁。441 收藏 -
用 Java Stream 的 groupingBy 和 maxBy 按部门分组并保留工资最高的 Employee,说明 Optional、并列最大值、空输入和并行流边界。441 收藏 -
Java CompletableFuture 使用 whenComplete 记录成功值和异常时,如何保持上游结果语义?本文用代码和边界表说明观察、异常传播及验证方法。439 收藏 -
Java record 适合承载请求对象,但校验、默认值和集合可变性必须在紧凑构造器与工厂方法中分清边界。本文用一个请求 DTO 示例说明如何写出稳定的不可变输入。439 收藏