java教程技术文章
-
用 ValueSource、CsvSource 和 MethodSource 组织 JUnit 5 参数化测试输入,覆盖单值、表格与动态对象场景。110 收藏 -
Java record 和 Lombok @Data 都能减少数据类样板代码,但它们表达的对象契约不同。本文从不可变语义、访问器、继承、框架绑定和迁移成本比较两种方案,并给出 DTO、配置对象与领域实体的选择规则。422 收藏 -
Gradle configuration cache 不复用时,先用 help 区分配置阶段和任务阶段,再根据问题报告修复 Project、监听器、外部进程和任务状态依赖;暂时无法迁移的任务只做局部 opt-out。281 收藏 -
Jackson 多态 JSON 需要稳定类型字段和明确子类型映射。本文用通知对象的往返示例说明 Id.NAME 的用法,区分缺失类型、未知类型、集合泛型和旧数据迁移边界。126 收藏 -
Java Maven BOM 可以把一组相关依赖的版本集中到一个 POM,再由项目通过 dependencyManagement 和 import 引入。本文用原创示例说明 BOM 的写法、子模块声明、effective POM 排查,以及多个 BOM 重叠时的显式覆盖边界。279 收藏 -
文章 · java教程 | 21小时前 | Java · 异常处理 · try-with-resources IOException Java InputStream.transferTo Java 字节流复制 OutputStream
用 Java InputStream.transferTo 把输入流复制到 OutputStream,理解返回字节数、流关闭责任、IOException 与部分写入边界,并给出文件、响应流和进程流的处理方式。455 收藏 -
BigDecimal 的 equals 同时比较数值和 scale,所以 1.0 与 1.00 可能被判定为不同对象;compareTo 只比较数值。本文用金额判断、集合键和输入构造说明两者的边界。499 收藏 -
Java Files.walk 返回的是惰性 Stream,它可能持有目录遍历资源,不能像普通集合一样长期放着不管。本文说明如何用 try-with-resources 包住完整消费范围,区分空结果、遍历异常和关闭边界,并整理一个可复用的安全封装。 180 收藏 -
虚拟线程适合承载大量阻塞 I/O,但连接池仍是有限资源。本文给出 Java 21+ 的执行器选择、连接借用代码、锁边界和排障方法。444 收藏 -
文章 · java教程 | 22小时前 | 异步编程 · Java教程 · CompletableFuture · 进程管理 · java completablefuture process ProcessHandle onExit 异步进程
Java Process.onExit() 返回 CompletableFuture,可以把子进程结束接入异步链,而不必让当前线程一直阻塞在 waitFor。本文说明退出码、标准输出、错误输出、超时和 destroy 之间的职责边界。 233 收藏 -
Java Commons Codec 可以直接消费 InputStream 计算文件摘要,不必先把整个文件读入内存。本文比较 DigestUtils 的便捷入口、File/Path 重载和 MessageDigest 组合写法,给出大文件场景的选择清单。370 收藏 -
Java StringUtils.defaultIfBlank 会把 null、空串和仅空白视为需要回退;defaultIfEmpty 只处理 null 与空串。本文用边界表、代码和迁移清单说明如何选择。201 收藏 -
Java Commons Compress 解压归档时,不能直接把 ArchiveEntry 的名称拼到目标目录后写盘。本文用 Path.normalize 和 startsWith 建立目录边界,再补上目录项、不可读项、流式复制和资源限制。165 收藏 -
用 Java Commons Compress 读取 tar 时,核心是以 TarArchiveInputStream 为当前归档流,用 getNextEntry() 逐项定位,再读取当前项字节。本文补上目录、编码、路径安全、资源关闭和大文件处理边界。274 收藏 -
Java MultiValuedMap的get返回关联集合视图,修改会作用于原映射。通过标签编辑示例区分实时视图、草稿副本、只读快照和显式提交的边界。205 收藏