java教程技术文章
-
Java 文本块可以写得整齐,但源码排版带来的公共缩进不一定适合最终字符串。本文用 HTML 和 SQL 片段说明 String.stripIndent 如何去掉偶然公共缩进、保留内部相对层级,并比较 strip 与 indent 的使用边界。320 收藏 -
Java MethodHandles.Lookup 的权限不是全局开关:本文用私有实例方法、publicLookup 和模块 opens 关系说明句柄创建时的访问检查,以及如何收窄和管理句柄能力。320 收藏 -
用 Java Vector API 对 float 数组执行批量乘加,介绍 SPECIES_PREFERRED、fromArray、intoArray、loopBound、标量尾部和掩码尾部的完整写法。319 收藏 -
使用try-with-resources关闭Files.walk返回的Stream,讲解findFirst短路与异常路径的资源释放,区分IOException和UncheckedIOException,并说明返回Path、集合或Stream时的所有权。315 收藏 -
ByteBuffer flip 与 rewind 对比:理解 position、limit 和 capacity,用写后读取与从头重读示例说明选择规则,避免重复 flip 和误读容量尾部。314 收藏 -
讲清 Java DataInputStream.readFully、read 和 EOFException 的边界,帮助定长二进制记录导入时区分正常少读、文件截断与底层 I/O 错误。313 收藏 -
Java ArrayDeque 适合在队列两端进行插入、删除和查看。本文用首尾语义拆开 add、offer、poll、peek、push、pop 的选择,并说明空队列、null 元素和线程安全边界。312 收藏 -
Java 线程池队列一直变长,通常不是把容量调得更大就能解决。本文用有界队列、最大线程数和 CallerRunsPolicy 组成简单背压,并说明拒绝策略、指标与任务类型的取舍。311 收藏 -
Java 记录模式可以在 instanceof 和 switch 中递归拆解嵌套 record。本文从逐级访问器迁移到嵌套模式,说明 var 推断、null、泛型与失败分支,并给出紧凑的回归检查清单。308 收藏 -
Java 21 开始可以用 SequencedCollection 统一表示具有明确遇到顺序、支持两端操作并可反向查看的集合。本文从 List、Deque、SortedSet 和 LinkedHashSet 的共同接口出发,说明 getFirst、getLast、addFirst、removeLast 与 reversed 的使用方式,以及空集合、不可修改集合和旧版本兼容边界。308 收藏 -
Java ObjectInputFilter 可以为 ObjectInputStream 增加类名、数组长度、引用数、深度和字节数限制。本文用一个小实验说明流级过滤器、程序化检查和 JVM 级配置的取舍。307 收藏 -
Java Pattern 适合长期复用,Matcher 则携带可变匹配状态。本文比较一次性调用、顺序批处理和 ThreadLocal 三种方式,说明如何用 reset 复用 Matcher,同时避开多线程共享和输入生命周期问题。307 收藏 -
Java GC 日志不能只看最大耗时。本文以 JDK 25 HotSpot/G1 为例,说明统一日志采集、GC 编号关联、暂停与并发阶段区分,以及安全点、CPU 时间和分配压力的判读边界。306 收藏 -
Java StringSubstitutor 可以用 ${变量名:-默认值} 为未提供的变量设置回退文本。本文说明默认分隔符、空值边界、自定义分隔符和严格解析的选择。304 收藏 -
Java 19 引入的 Future.resultNow 适合读取已经成功完成的 CompletableFuture,而且不会等待。本文从状态判断、批量汇总、异常与取消边界出发,比较 resultNow、getNow 与 join 的选择。302 收藏