java教程技术文章
-
多个 Java ModuleLayer 同时存在时,不要用父层、同名模块或类加载器是否相同来猜 reads 关系。本文用 Module.canRead、addReads、findModule 和 findLoader 建立可观察的判断方法。361 收藏 -
介绍 Java 17+ HexFormat 的 formatHex 与 parseHex,演示大小写、分隔符、前后缀、区间转换和非法输入处理。361 收藏 -
Java Record 的 final 组件不等于集合不可变。本文用 ArrayList、unmodifiableList 和 List.copyOf 对比可变、只读视图与防御性拷贝,帮助排查 Record 中集合被外部修改的问题。359 收藏 -
Java Vector API 处理非整数倍数组长度时,用 VectorSpecies.indexInRange 生成尾部 Mask,安全完成加载、计算和写回,并对比 loopBound 加标量尾循环的适用边界。358 收藏 -
Java 泛型 record pattern 会先根据选择器的静态类型推断记录类型参数,再把适配后的组件类型交给 var。本文用 Box、显式写法和嵌套模式说明推断链、选型方法及泛型擦除边界。 357 收藏 -
支付请求交给 Java CompletableFuture 后,超时不等于扣款失败,直接重试可能造成重复扣款。本文用幂等键、任务状态表、超时收口和延迟重试搭出一条可核对的处理链,并补上失败通知与人工复核边界。352 收藏 -
Java 24 将 Class-File API 放进 java.base,ClassFileVersion 可以帮助工具识别 class 文件的 major/minor version。本文从一个可运行的小实验开始,演示读取版本、定位高版本拒绝原因,并延伸到 ClassModel、MethodModel 与生产边界。352 收藏 -
Java HttpClient 复用同一个客户端,并分别设置连接建立超时与单次请求超时;通过异常类型和响应状态码快速定位网络、响应或业务问题。351 收藏 -
已知 HashMap 的预计映射数时,不要直接把条目数当初始容量;本文用默认负载因子 0.75 说明估算公式、JDK 19+ 的 newHashMap 和容量过大的代价。350 收藏 -
说到TCP/IP的整体结构,传输层里有两个绕不开的高级协议:UDP和TCP。前者是User Datagram Protocol的缩写,中文通常叫用户数据报协议;后者是Transmission Control Protocol的缩写,对应的中文名称是传输控制协议。 UDP是无连接通信协议,即在数据传输348 收藏 -
Java Files.find 和 Files.walk 都能搜索文件树,但过滤条件的落点不同:属性条件优先放进 find,路径流组合和后续转换更适合 walk。本文用可关闭资源的示例说明 maxDepth、BasicFileAttributes、filter 和异常边界。348 收藏 -
Java StructuredTaskScope 仍是预览 API,适合请求内并行子任务的统一等待、失败传播和超时取消,不适合替代持久队列或长期后台任务。347 收藏 -
Java Pattern 的 UNICODE_CHARACTER_CLASS 只负责让 \d、\s、\w 等预定义字符类采用 Unicode 语义;如果规则只针对字母、脚本或数字属性,可直接使用 \p{...}。本文用边界样例说明如何选择编译标志,避免正则匹配范围意外放大。347 收藏 -
Files.walk 返回的 Stream会持有遍历目录的资源,正确做法是用 try-with-resources 包住完整操作,并区分创建、懒遍历和关闭阶段的异常。 347 收藏 -
Java record 适合表达由多个字段组成的 Map key 值对象,因为它按组件生成 equals 和 hashCode;本文同时说明浅层不可变、集合组件和防御性拷贝的边界。346 收藏