java教程技术文章
-
Spring AI 2.0 的 ToolSearchToolCallingAdvisor 会按会话索引工具。本文从工具全量暴露的排查现场出发,说明 session ID、工具索引和 ChatClient 之间的边界,并给出 Java 配置示例与核对清单。367 收藏 -
文章 · java教程 | 3星期前 | 网络编程 · Java · HTTP客户端 · java httpclient HttpRequest expectContinue 100 Continue 大请求
Java HttpRequest.Builder 的 expectContinue(true) 可以让服务器先确认是否接收请求,再发送较大的请求体。文章结合 BodyPublisher、100 Continue、错误响应和 timeout,说明它适合什么场景、哪里容易误判,以及如何设计可核对的请求边界。384 收藏 -
Java 25 的预览稳定值接口只能设置一次,适合做惰性初始化,但循环依赖会在取值时抛出 IllegalStateException。本文用两个稳定值的依赖图拆解触发边界、并发语义与强可达带来的生命周期取舍。335 收藏 -
用 Java Collectors.teeing 在一次 Stream 消费中同时计算订单总额与通过数量,拆开两个下游 Collector、空输入默认值和结果对象的设计边界。290 收藏 -
用同一段 Java 线程实验复现 ReentrantReadWriteLock 非公平与公平策略下的写锁等待,解释读者持续到达时的排队边界,并给出可复查的选择方法。447 收藏 -
用同一段 Java 代码验证 String.lines 对 LF、CRLF、末尾换行和空字符串的处理,并说明什么时候应该改用 split 或 Scanner。272 收藏 -
ArrayList.subList 返回的是由父列表支撑的视图。父列表一旦绕过该视图发生结构修改,视图语义就会失效,常见表现是 ConcurrentModificationException。本文用可运行示例拆开视图、结构修改、复制隔离和安全删除的边界。494 收藏 -
用一个批次编号生成场景拆开 Java IntStream.iterate 的三参数重载,说明 seed 是否入流、hasNext 何时判断、next 是否会多执行,以及 limit 的边界。138 收藏 -
用 Java Runtime.Version 解析并比较运行时版本,区分 feature、interim、update、patch 与 pre 预览标记,避免把字符串排序误当成版本判断。332 收藏 -
从一个用户查询场景拆开 Java Optional.orElseThrow 的默认异常、业务异常供应器、消息来源和空值边界,给出可回归的最小写法。165 收藏 -
用一个只允许从 0 变为 1 的状态位,拆开 Java VarHandle compareAndExchangeAcquire 的 witness 返回值、acquire 读取语义、失败分支和可验证测试。453 收藏 -
文章 · java教程 | 3星期前 | 网络编程 · 并发 · Java · websocket · 故障排查 · java websocket httpclient CompletionStage sendClose onClose
Java HttpClient WebSocket 关闭时,sendClose 的 CompletionStage、Listener.onClose 和 onError 可能以不同顺序到达。本文用一个订阅客户端拆解正常关闭、异常断线、状态竞态与重连边界,给出可验证的收尾写法。162 收藏 -
周期任务看起来每分钟执行一次,实际却可能因单次执行超时、未捕获异常或重复创建调度器而失控。本文拆解固定频率调度下的任务不重叠、异常终止和恢复路径,给出可验证的 Java 写法。387 收藏 -
用一个订单报价查询示例说明 CompletableFuture.exceptionallyCompose 如何把异常恢复串成新的异步阶段,并核对 exceptionally、exceptionallyAsync、orTimeout 的边界。233 收藏 -
Java 完成队列会把已完成的 Future 放入队列,适合从多个并发任务中按完成先后消费结果。本文用一个最快结果优先的查询场景,比较 take 与 poll 的边界,并说明超时后如何取消剩余任务和安全关闭线程池。479 收藏