java教程技术文章
-
通过 Thread.ofVirtual 构建有限阻塞任务,讲清 start 与 unstarted、join 等待、失败记录及 interrupt 的协作取消边界,避免将线程终止误判为业务成功。481 收藏 -
Java 完成队列会把已完成的 Future 放入队列,适合从多个并发任务中按完成先后消费结果。本文用一个最快结果优先的查询场景,比较 take 与 poll 的边界,并说明超时后如何取消剩余任务和安全关闭线程池。479 收藏 -
文章 · java教程 | 2个月前 | 命令行工具 · Java教程 · Java 25 · 语言特性 · Java 25 Compact Source Files instance main JEP 512 java.lang.IO
Java 25 正式交付 Compact Source Files 和 instance main,单文件小工具可以省掉显式 class、static 与 String[] 参数,同时仍使用 java、javac 运行。本文从一个可运行的命令行小程序开始,核对 java.lang.IO、自动导入、参数入口和迁移回普通类时的边界。478 收藏 -
区分 Java 模块系统中 exports 与 opens 的职责,结合 module-info.java、setAccessible、trySetAccessible 和 Module API,给出框架反射排障与最小开放配置方法。478 收藏 -
文章 · java教程 | 3星期前 | JSON · Java · 序列化 · 类型系统 · java 反序列化 jackson sealed interface 多态JSON JsonTypeInfo
Java 多态 JSON 映射的关键不是把 JSON 直接绑定到任意类,而是在 sealed 类型集合、kind 判别字段和 Jackson 反序列化策略之间划清边界。本文给出从旧模型迁移到显式逻辑类型名的做法,并说明未知类型、缺失字段和新增子类型如何回归。478 收藏 -
Java record 可以通过规范化构造器统一完成参数校验、空白清理、大小写转换和范围规范化。本文说明紧凑构造器与显式构造器的写法,并解释替代构造器为什么必须委托到同一条校验路径。477 收藏 -
Java 进程 RSS 持续上涨时,先用 jcmd VM.native_memory 建立基线,再用 summary.diff 或 detail.diff 判断是 JVM 子系统、线程、类元数据还是 NMT 未覆盖的第三方原生内存。476 收藏 -
Java Stream takeWhile 不是筛出全部匹配项,而是在有序流中保留满足谓词的最长连续前缀。本文用具体数据说明首个 false、无状态谓词、unordered 和并行流的边界。476 收藏 -
Java NIO 中 ByteBuffer.flip() 会把当前 position 变成 limit,再把 position 归零,适合把写入态切换为读取态。本文用状态表、代码和边界示意说明 flip 怎么配置,以及如何排查读不到数据、下溢和多轮读写问题。475 收藏 -
使用 Jackson JsonNode 处理 JSON 更新请求时,字段缺失与显式 null 不是同一种状态。本文用 has、get、path、isNull 和 isMissingNode 给出清晰的判断方式,并说明 PATCH 更新时如何选择策略。475 收藏 -
Java 21 的 record pattern 可以递归匹配嵌套 record,并直接提取深层字段。本文用订单、客户和地址三层结构说明最小写法,重点处理 null、var 推断、泛型边界和可读性取舍。475 收藏 -
Java 16 起 Stream.toList() 进入生态,但迁移到 Java 21 时要处理空结果、并行行为和序列化返回类型差异,避免线上行为回归。473 收藏 -
按配置源、前缀键名、Bean 注册、类型转换和校验五层排查 Java Spring 配置绑定失败,附 @ConfigurationProperties、构造器绑定与嵌套校验示例。473 收藏 -
用 Java Normalizer 构建 NFC 名称比较键,区分组合字符、原始展示值和规范键,说明本地运行判断、数据集成与兼容折叠边界。473 收藏 -
Java 月度账期不要手写二月天数。使用 YearMonth 表达年月,再调用 atEndOfMonth() 得到月末 LocalDate;需要展示或复核时,用 lengthOfMonth() 和 isLeapYear() 处理闰年差异。472 收藏