java教程技术文章
-
Java ObjectInputFilter 可以为 ObjectInputStream 增加类名、数组长度、引用数、深度和字节数限制。本文用一个小实验说明流级过滤器、程序化检查和 JVM 级配置的取舍。307 收藏 -
Java JDBC 批量插入后,可以通过 RETURN_GENERATED_KEYS 请求生成键,再用 getGeneratedKeys() 遍历驱动返回的 ResultSet。本文给出完整写法,并说明空结果、驱动支持、顺序映射、事务回滚和资源关闭等边界。341 收藏 -
Java Collectors.teeing把同一批元素交给两个下游收集器,再合并完成结果。用总数量与最大项示例说明结果类型、空流约定、并行特征和适用边界。327 收藏 -
Java 接口同时收到日期、带 T 的时间和带空格的时间时,可以用 DateTimeFormatterBuilder 组织可选秒数,再用多个候选格式器处理真正不同的分隔符。本文给出严格解析、parseBest 和落地边界。501 收藏 -
Java 25 StructuredTaskScope 子任务失败时,使用 FailedException 读取原始原因,让兄弟任务响应中断,并用 close 等待资源安全收尾。208 收藏 -
文章 · java教程 | 2星期前 | 字符集 · Java教程 · HTTP客户端 · java httpclient charset BodyHandlers ofByteArray ofString
Java HttpClient 的 BodyHandlers.ofByteArray 适合保留原始响应字节,ofString 适合文本,ofString(Charset) 适合协议或业务已明确字符集的文本。本文用响应资产、字符集和内存边界三个角度说明如何选择,并补充流式读取、文件落盘和敏感数据日志的安全边界。429 收藏 -
Java Optional.stream 会把有值的 Optional 变成只含一个元素的顺序 Stream,把空 Optional 变成空 Stream。本文用一组可选查询结果拆解 flatMap(Optional::stream) 的写法、边界和落地选择。170 收藏 -
Java sealed interface 在未命名模块中要求 permits 子类型同包;命名模块可以跨包但不能跨模块。本文按 package、module 和 permits 三层关系拆解常见编译错误与代码组织方式。265 收藏 -
Java record 的紧凑构造器可以在不重复声明参数和字段赋值的情况下完成参数校验与规范化。本文用值对象示例说明隐式参数、异常边界和常见限制。293 收藏 -
Java computeIfAbsent计算回调不应更新同一个Map。结合JDK25文档和单线程依赖计算示例,区分容器重入检测与业务依赖环,说明完成缓存、失败清理及并发改造边界。207 收藏 -
Java 21 开始可以用 SequencedCollection 统一表示具有明确遇到顺序、支持两端操作并可反向查看的集合。本文从 List、Deque、SortedSet 和 LinkedHashSet 的共同接口出发,说明 getFirst、getLast、addFirst、removeLast 与 reversed 的使用方式,以及空集合、不可修改集合和旧版本兼容边界。308 收藏 -
用一个小型任务协调器讲清 Java 虚拟线程执行器的创建边界、正常关闭、超时收敛和 Future 取消,帮助区分执行器生命周期与单任务中断。140 收藏 -
从 G1 GC 日志的事件行、Eden/Survivor/Old/Humongous 区域变化和阶段耗时入手,区分 Young、Mixed、Full GC 与 evacuation failure,建立暂停原因的分析顺序。221 收藏 -
用 PreparedStatement.addBatch 收集多组参数,在明确的提交窗口中执行 JDBC 批量写入;本文同时说明自动提交、更新计数、BatchUpdateException 与失败回滚的处理边界。156 收藏 -
Java 模式 switch 的 default 不接收 null。本文通过独立空值分支、组合兜底和输入矩阵,说明如何区分缺失值与未知类型,定位分支内部的空指针风险。162 收藏