java教程技术文章
-
文章 · java教程 | 2个月前 | 序列化 · Java教程 · 兼容性 · java Serializable ObjectInputStream ObjectOutputStream record
Java record 实现 Serializable 后,序列化状态由 record 组件决定,反序列化会调用规范构造器;普通可序列化类的重建路径和自定义钩子不同。本文用最小示例划清两者边界。313 收藏 -
讲清 Java DataInputStream.readFully、read 和 EOFException 的边界,帮助定长二进制记录导入时区分正常少读、文件截断与底层 I/O 错误。313 收藏 -
Java ArrayDeque 适合在队列两端进行插入、删除和查看。本文用首尾语义拆开 add、offer、poll、peek、push、pop 的选择,并说明空队列、null 元素和线程安全边界。312 收藏 -
文章 · java教程 | 2个月前 | 并发 · Java教程 · CompletableFuture · java 异步任务 completablefuture TimeoutException orTimeout
CompletableFuture.orTimeout 只会让阶段在超时后以 TimeoutException 结束,并不会自动中断已经运行的底层任务。本文用可运行示例拆解超时、异常分支、cancel 和线程中断的边界,给出可验证的停止方案。311 收藏 -
Java 读取大文件时,优先用 Files.lines 惰性产生 Stream,显式指定字符集,并用 try-with-resources 关闭文件流,避免一次性加载和资源泄漏。 311 收藏 -
Java 线程池队列一直变长,通常不是把容量调得更大就能解决。本文用有界队列、最大线程数和 CallerRunsPolicy 组成简单背压,并说明拒绝策略、指标与任务类型的取舍。311 收藏 -
通过 FileTypeDetector、META-INF/services 和 Files.probeContentType,把自定义文件扩展名接入 Java 的服务发现机制,并正确处理 null 回退与类路径排查。311 收藏 -
Java 多字段排序不要在比较器里直接调用可能为空字段的 compareTo。用 nullsFirst 或 nullsLast 包住每个字段的 Comparator,再用 comparing 和 thenComparing 组合;降序时只反转非空值顺序,避免 null 被一起翻到前面。310 收藏 -
Java 的 java.text.ListFormat 能按 Locale、Type 和 Style 生成自然的多项文本。本文从 String.join 的局限切入,给出标准、选择和单位三种语义的用法,并说明空列表、空值和 parse 不保证往返的边界。310 收藏 -
Java Package.getImplementationVendor 读取运行时包的实现供应商,未知时返回null。本文给出目标类读取和空值处理示例,解释清单属性、类加载器及命名模块的差异,避免把元数据误作身份认证。310 收藏 -
JDK 26 开始,深反射修改 final 字段会给出警告。本文用 debug、JFR 和 deny 预演定位真正的库依赖,并划清临时放行与长期修复边界。309 收藏 -
Java 记录模式可以在 instanceof 和 switch 中递归拆解嵌套 record。本文从逐级访问器迁移到嵌套模式,说明 var 推断、null、泛型与失败分支,并给出紧凑的回归检查清单。308 收藏 -
Java 21 开始可以用 SequencedCollection 统一表示具有明确遇到顺序、支持两端操作并可反向查看的集合。本文从 List、Deque、SortedSet 和 LinkedHashSet 的共同接口出发,说明 getFirst、getLast、addFirst、removeLast 与 reversed 的使用方式,以及空集合、不可修改集合和旧版本兼容边界。308 收藏 -
Java ObjectInputFilter 可以为 ObjectInputStream 增加类名、数组长度、引用数、深度和字节数限制。本文用一个小实验说明流级过滤器、程序化检查和 JVM 级配置的取舍。307 收藏 -
Java Pattern 适合长期复用,Matcher 则携带可变匹配状态。本文比较一次性调用、顺序批处理和 ThreadLocal 三种方式,说明如何用 reset 复用 Matcher,同时避开多线程共享和输入生命周期问题。307 收藏