java教程技术文章
-
Java HttpClient 遇到 3xx 时,301/302/303 可能让 POST 变成 GET,而 307/308 保留方法。本文讲清 followRedirects 的选择、请求体重发边界和响应链排查方法。207 收藏 -
Java 项目同时使用 module-path 和 classpath 时,问题通常来自依赖形态、命名模块可见性或编译与启动参数不一致。本文按路径对象、命令复现、模块声明和部署清单四层定位冲突。210 收藏 -
文章 · java教程 | 2星期前 | JSON · Java · 序列化 · 类型系统 · java 反序列化 jackson sealed interface 多态JSON JsonTypeInfo
Java 多态 JSON 映射的关键不是把 JSON 直接绑定到任意类,而是在 sealed 类型集合、kind 判别字段和 Jackson 反序列化策略之间划清边界。本文给出从旧模型迁移到显式逻辑类型名的做法,并说明未知类型、缺失字段和新增子类型如何回归。478 收藏 -
通过 LinkedHashMap、TreeMap 和下游 Collector,分别控制 Java Stream 分组后的键顺序与组内元素顺序。104 收藏 -
Java HttpClient ofFileDownload 使用响应头文件名保存附件,说明目录准备、重名拒绝、状态码门控与异常处理边界,避免把落盘完成误认为业务成功。365 收藏 -
Java HttpClient 的 connectTimeout 与请求级 timeout 负责不同阶段。本文用一组可复用的 Java 示例说明连接、响应体、异常分类和重试边界。344 收藏 -
用 sealed、permits 和模式匹配 switch 建立封闭的 Java 类型层次,逐项覆盖 record 分支,并说明 null、default、模式支配和类型层次变更后的重新编译边界。100 收藏 -
MethodHandle 的 invokeExact 失败,通常不是目标方法找错,而是调用点签名没有与句柄的 MethodType 完全一致。本文用 Java 代码说明如何定位类型差异,并选择 invoke 或 asType 完成适配。494 收藏 -
Java 虚拟线程的阻塞等待不等于长期占用载体。结合 JDK 版本区分卸载、固定限制与资源池竞争,并用同负载下的线程、连接等待、延迟和错误率判断改动,避免把承载优化当成容量扩张。401 收藏 -
ForkJoinPool 中混入队列、锁或外部 I/O 等阻塞操作时,直接等待可能拖住其他任务。本文用 ManagedBlocker 封装阻塞点,说明 managedBlock 的正确调用、中断处理、池参数边界,以及何时应换用独立 I/O 线程池。489 收藏 -
DatagramChannel 非阻塞接收需要正确处理 receive 的 null 返回。本文用有限时长示例说明 Selector 注册、读就绪提示与缓冲区状态,区分无包、空包和截断。337 收藏 -
Java HttpClient WebSocket 的接收节奏由 request(n) 控制回调次数,而不是由 CompletionStage 自动限流。本文结合 WebSocket.Listener 说明 request、last、CompletionStage、关闭和异常处理的边界,并给出单次与有限批量申请的选择方法。370 收藏 -
Java Flow 背压的关键不是让 Publisher 自己变慢,而是让 Subscriber 通过 Subscription.request(n) 明确可接收数量,Publisher 只在需求量大于零时调用 onNext。本文用一个单订阅示例说明请求、发送、取消、完成和错误边界。339 收藏 -
Java 19 引入的 Future.resultNow 适合读取已经成功完成的 CompletableFuture,而且不会等待。本文从状态判断、批量汇总、异常与取消边界出发,比较 resultNow、getNow 与 join 的选择。302 收藏 -
Java FFM API 的 MemorySegment 生命周期由关联作用域决定。本文比较四类 Arena,用独立示例说明切片与关闭后访问,并明确跨线程借用和释放责任。259 收藏