Java教程
已收录文章:71篇
-
文章 · java教程 | 2个月前 | 反序列化 · Java教程 · 安全编程 · java Java安全 ObjectInputFilter 反序列化过滤 Serialization FilterJava ObjectInputFilter 可以在对象反序列化过程中检查类名、数组长度、对象图深度、引用数和输入字节数。本文用一个白名单场景写出最小过滤器,并用可验证的拒绝案例检查边界。186 收藏
-
文章 · java教程 | 2个月前 | 密码学 · Java教程 · Java 25 · Java 25 KDF Key Derivation Function API HKDF JEP 510 密钥派生Java 25 新增 Key Derivation Function API,可用 HKDF 从已有密钥材料派生用途隔离的子密钥。本文用可运行示例说明 Extract、Expand、salt、info 和测试验收边界,避免把 KDF 当成加密或哈希替代品。147 收藏
-
Java 24 将 Class-File API 放进 java.base,ClassFileVersion 可以帮助工具识别 class 文件的 major/minor version。本文从一个可运行的小实验开始,演示读取版本、定位高版本拒绝原因,并延伸到 ClassModel、MethodModel 与生产边界。352 收藏
-
Java 25 的 StructuredTaskScope 仍是预览 API,适合把一次请求拆成多个并发子任务,再以结构化的 join、失败传播和超时边界收拢结果。本文用商品详情聚合场景拆开 open、fork、join、TimeoutException 和预览编译参数。428 收藏
-
文章 · java教程 | 2个月前 | 并发编程 · Java教程 · 虚拟线程 · threadlocal 请求上下文 Java 25 StructuredTaskScope ScopedValueJava 25 已将 ScopedValue 正式纳入平台 API。本文用一个并发读取请求上下文的场景,说明它与 ThreadLocal 的职责差异、绑定生命周期、StructuredTaskScope 继承规则,以及上线前如何验证预览 API 和不可变数据边界。391 收藏
-
Java Stream 的 mapMulti 适合把一个元素展开为零个或少量结果,尤其适用于带条件分支的解析和提取。本文用订单标签解析示例说明它与 flatMap 的选择、泛型推断、Consumer 生命周期和验收边界。250 收藏
-
文章 · java教程 | 2个月前 | 故障排查 · Java教程 · 虚拟线程 · synchronized reentrantlock 虚拟线程 JFR Java 21 VirtualThreadPinnedJava 21 虚拟线程并不是开得越多越快。只要把慢 I/O 放进 synchronized,虚拟线程就可能 pin 住承载它的平台线程,吞吐随并发上升反而下降。本文用 JFR 和 tracePinnedThreads 还原定位过程,并给出锁替换与版本边界。343 收藏
-
Java 批量任务平台遇到大客户集中提交时,不能只靠扩大线程数。本文用队列分片、租户并发配额、全局资源预算和可恢复回压,把慢租户与正常租户隔开,并给出可验证的 Java 实现骨架。300 收藏
-
Spring 服务里一个带 @Transactional 的方法被同类普通方法直接调用时,事务可能没有开启。以订单创建与库存扣减场景为例,本文说明代理边界、日志验证、拆分服务的稳妥修法,以及哪些替代写法不适合长期使用。406 收藏
-
文章 · java教程 | 3个月前 | 数据库 · 性能优化 · Java教程 · Optional · java 数据库查询 懒加载 optional supplier orElse orElseGetJava Optional 的 orElse 会先计算兜底参数,即使主值已存在也可能触发数据库或远程调用。用订单展示接口复现这个问题,说明 orElseGet、Supplier、异常处理与测试边界。238 收藏
-
文章 · java教程 | 3个月前 | 数据库 · 性能优化 · Java教程 · Optional · java 数据库查询 懒加载 optional supplier orElse orElseGetJava Optional 的 orElse 会先计算兜底参数,即使主值已存在也可能触发数据库或远程调用。用订单展示接口复现这个问题,说明 orElseGet、Supplier、异常处理与测试边界。186 收藏
-
Java record 没有 setter,并不表示放进 record 的 List、数组或可变对象不会在别处被改动。订单入参一旦把调用方集合或签名数组的引用直接保存,接口进入服务层后仍可能出现内容漂移。用 List.copyOf 固定集合结构、对数组在构造器和访问器两端复制,再用一段小检查覆盖输入侧与输出侧,就能把 record 的边界写得更可靠。247 收藏