java教程技术文章
-
Spring AI 2.0 的 ToolSearchToolCallingAdvisor 会按会话索引工具。本文从工具全量暴露的排查现场出发,说明 session ID、工具索引和 ChatClient 之间的边界,并给出 Java 配置示例与核对清单。367 收藏 -
Java Jackson 处理多态 JSON 时,使用业务基类、短类型名和 PolymorphicTypeValidator 白名单限制允许的子类型,并覆盖未知类型与不兼容类型的拒绝测试。367 收藏 -
用 ObjectInputFilter 和 jdk.serialFilter 为 Java 反序列化输入建立类白名单、拒绝规则与资源上限,并说明全局过滤器和单流过滤器的配置边界。367 收藏 -
Java 25 的 Foreign Function & Memory API 用 MemorySegment 表示连续内存,用 Arena 管理堆外区域的生命周期。本文演示 confined、shared 和 automatic arena 的边界,并用关闭后的访问异常完成验收。366 收藏 -
Java 21 的 Pattern.splitWithDelimiters 可以在切分字符串时同时保留匹配到的分隔符。本文用配置行和日志片段说明 limit、空字段、尾部分隔及 Java 17 兼容回退。366 收藏 -
Java Stream 使用 groupingBy 分组时,想让结果按输入中键第一次出现的顺序遍历,应指定 LinkedHashMap::new;同时要区分外层 Map 键顺序、组内 List 顺序,以及并行流和 TreeMap 的不同语义。366 收藏 -
Java 使用虚拟线程后,可以通过 jcmd Thread.dump_to_file 导出包含虚拟线程的文本或 JSON 线程转储。本文从目标 JVM、格式选择、输出边界和诊断材料整理四个方面说明用法,并提醒它不是暂停 JVM 的一致快照。366 收藏 -
LineNumberReader设置行号只修改计数,不会移动读取位置。通过独立Java示例区分编号和定位,说明顺序读取目标行的方法、调用数量与换行、EOF、mark/reset边界。366 收藏 -
Java Optional 的 orElse 会先求值备用参数,orElseGet 只在空值时调用 Supplier。本文用调用计数、代码对照和回归检查说明如何定位并修复不必要的备用计算。365 收藏 -
Java 正则中的命名捕获组可以用 Matcher.group(String) 按名称读取,但重复量词只保留最近一次成功捕获;需要全部结果时应改用 find 循环收集。365 收藏 -
Java HttpClient ofFileDownload 使用响应头文件名保存附件,说明目录准备、重名拒绝、状态码门控与异常处理边界,避免把落盘完成误认为业务成功。365 收藏 -
Java 的 DecimalStyle 可以把日期格式中的数字、正负号和小数点替换为本地化符号。本文用 DateTimeFormatter 演示非拉丁数字的配置、输出、解析与复用边界。365 收藏 -
Java 25+ 中用 ScopedValue 传递只读请求上下文,重点比较它与 ThreadLocal 的生命周期、可见性、嵌套绑定和结构化子任务继承边界。364 收藏 -
Java 21 的 switch pattern matching 不会让类型模式自动匹配 null。本文用独立 case null 与 case null, default 对比说明空引用、类型模式、default 和穷举规则的边界,帮助你为可能为空的 selector 选择清晰的分支设计。364 收藏 -
Java 模块系统中,uses、provides 和 requires static 负责描述服务边界,ServiceLoader.findFirst() 可以在没有可选实现时回退到默认实现。本文给出模块声明、加载代码与排错边界。363 收藏