java教程技术文章
-
Java 模块反射报访问被拒绝时,先看调用是否需要深反射:exports 面向公开类型和成员,opens 面向运行时访问包内全部成员。本文用 module-info.java、--add-opens 和 Module API 给出排查与落地方法。100 收藏 -
文章 · java教程 | 1星期前 | 序列化 · Java教程 · 兼容性 · java Serializable ObjectInputStream ObjectOutputStream record
Java record 实现 Serializable 后,序列化状态由 record 组件决定,反序列化会调用规范构造器;普通可序列化类的重建路径和自定义钩子不同。本文用最小示例划清两者边界。313 收藏 -
Java record 需要校验或归一化参数时,可以在紧凑构造器中直接处理隐式参数;本文说明 public 访问级别、字段赋值限制、浅不可变集合和反射读取组件的迁移边界。156 收藏 -
Java 虚拟线程解决的是大量任务在阻塞等待时的并发容量,不会增加 CPU 核心,也不会让单个计算更快。本文用载体线程、调度器和执行器示例说明 CPU 密集任务的正确拆分方式。448 收藏 -
Java 虚拟线程适合高并发、以 HTTP、JDBC 等 I/O 等待为主的任务编排,但不能替代 CPU 并行、连接池和下游限流。本文用代码和边界表说明如何选择。387 收藏 -
Java StructuredTaskScope 仍是预览 API,适合请求内并行子任务的统一等待、失败传播和超时取消,不适合替代持久队列或长期后台任务。347 收藏 -
Java 项目拆成模块后,反射访问被拒绝通常不是反射 API 失效,而是 exports、opens 或调用方模块关系没有满足访问边界。本文用最小配置说明如何判断并收窄修复范围。391 收藏 -
用 JFR 的事件阈值、一次性录制时长和 jfr 结果读取,捕获 Java 服务一个有限的慢请求窗口,并区分网络等待、锁等待与应用执行线索。395 收藏 -
ConcurrentHashMap.computeIfAbsent 的映射函数不能递归更新同一键。本文解释原子计算边界、IllegalStateException 的成因,并用局部解析状态加 putIfAbsent 演示如何拆分递归计算与共享缓存发布。323 收藏 -
Java CompletableFuture 超时并不会自动停止底层任务。本文用可取消的 Future 连接超时结果与执行器任务,说明 Future.cancel(true)、线程中断和 I/O 超时该如何配合。175 收藏 -
Spring Retry 只能控制临时异常的再次调用,不能单独保证消息幂等。本文用稳定 messageId、inbox 唯一约束、事务边界和外部接口幂等键,说明如何避免异常重试造成重复处理。445 收藏 -
Spring 默认通过 AOP 代理处理 @Transactional,类内 this 自调用会绕过代理。本文用调用路径、拆分服务、代理引用和回滚验证说明如何定位并修复事务边界问题。129 收藏 -
Java Jackson 处理多态 JSON 时,使用业务基类、短类型名和 PolymorphicTypeValidator 白名单限制允许的子类型,并覆盖未知类型与不兼容类型的拒绝测试。367 收藏 -
Java HttpClient 在 JDK 25 及以上可用 BodyHandlers.limiting 限制下游收到的响应体字节数,超限会取消上游并以 IOException 结束;JDK 11 到 24 则可用自定义 Flow.Subscriber 实现同样的硬上限。263 收藏 -
用 Java NIO FileChannel、临时文件和 checkpoint 实现可恢复的大文件复制,处理短传输、force、源文件变化与最终替换。157 收藏