java教程技术文章
-
使用 Java HttpClient 与 CompletableFuture 封装可取消的异步 GET 重试:只重试暂时性异常和指定状态码,加入退避、最大次数与请求超时,并把外层取消传播到当前 HTTP 交换或等待任务。212 收藏 -
Java MultiValuedMap的get返回关联集合视图,修改会作用于原映射。通过标签编辑示例区分实时视图、草稿副本、只读快照和显式提交的边界。205 收藏 -
Java StringUtils.defaultIfBlank 会把 null、空串和仅空白视为需要回退;defaultIfEmpty 只处理 null 与空串。本文用边界表、代码和迁移清单说明如何选择。201 收藏 -
文章 · java教程 | 6天前 | Java · 异常处理 · AutoCloseable Java try-with-resources suppressed exception 关闭顺序 getSuppressed
Java try-with-resources 会按资源初始化的反序关闭。try 主体先失败时,关闭异常进入 suppressed;主体正常时,第一个关闭异常成为主异常。本文用多资源示例梳理完整判断方法。197 收藏 -
TreeSet 不是用 equals 直接判断重复,而是沿着 compareTo 或 Comparator.compare 的结果定位元素。本文用一个只比较年龄的场景解释 compare 返回 0 为什么会让第二个对象无法加入,并给出主键加唯一标识的稳定改法与迁移检查清单。190 收藏 -
Java 的 Pattern Matching switch 可以沿着 sealed 类型层级做穷尽匹配。本文用订单事件模型拆开直接子类型、叶子类型、default、null 和新增实现后的编译影响。189 收藏 -
文章 · java教程 | 5天前 | 配置管理 · Java · Spring Boot · 故障排查 · Java教程 · spring boot actuator @ConfigurationProperties 配置属性绑定 PropertySource
Spring Boot 配置属性绑定失败时,沿着失败字段、PropertySource 优先级、canonical key、类型转换和校验边界逐层排查,并用 configprops 与最小配置确认最终来源。184 收藏 -
Java Files.walk 返回的是惰性 Stream,它可能持有目录遍历资源,不能像普通集合一样长期放着不管。本文说明如何用 try-with-resources 包住完整消费范围,区分空结果、遍历异常和关闭边界,并整理一个可复用的安全封装。 180 收藏 -
Java Path.relativize 失败通常不是目标文件不存在,而是两个 Path 的绝对相对类型或根路径不匹配。本文用一个最小诊断工具说明判断条件、统一路径和安全降级写法。179 收藏 -
StampedLock 乐观读的安全回退方式是先读取共享字段,再校验 stamp;校验失败后获取读锁,并在锁内重新读取全部字段,最后在 finally 中释放读锁。本文给出最小模板、限时回退和常见误区。165 收藏 -
Java Commons Compress 解压归档时,不能直接把 ArchiveEntry 的名称拼到目标目录后写盘。本文用 Path.normalize 和 startsWith 建立目录边界,再补上目录项、不可读项、流式复制和资源限制。165 收藏 -
Java ZipEntry 的 extra 是 ZIP 条目的原始扩展字节。本文说明如何读取、复制和设置这段元数据,并从长度限制、未知字段和审计记录三个角度避免转存时丢失或误解析。160 收藏 -
通过自动表头映射按名称读取Java CSV字段,比较手动与位置绑定,并说明逐条导入、重复表头、空值、资源关闭和事务边界。127 收藏 -
文章 · java教程 | 5天前 | spring · Spring Boot · 事务管理 · Java教程 · REQUIRES_NEW Spring事务事件 TransactionalEventListener AFTER_COMMIT Spring事件
用 @TransactionalEventListener 把业务事件绑定到成功提交阶段,并讲清提交后落库、异步监听、无事务调用、幂等与 Outbox 的边界。126 收藏 -
Jackson 多态 JSON 需要稳定类型字段和明确子类型映射。本文用通知对象的往返示例说明 Id.NAME 的用法,区分缺失类型、未知类型、集合泛型和旧数据迁移边界。126 收藏