java教程技术文章
-
Java Files.getLastModifiedTime 默认会按目标对象读取符号链接的时间;要读取链接目录项自身,应传入 LinkOption.NOFOLLOW_LINKS。本文结合一次文件时间排查,说明两种语义、异常边界和封装方式。298 收藏 -
Java 文件上传不能只检查后缀。本文从文件名拼接、Path.normalize 的边界、符号链接和临时文件落盘四个环节,给出一套可核对、可回滚的安全实现。296 收藏 -
Java Stream 使用 groupingBy 分组后,可以把 mapping 放在下游收集器中提取每组指定字段;如果改用 toMap,还要明确重复键的合并策略,并检查并行收集的顺序与合并边界。296 收藏 -
程序在运行过程中,可能需要将一些数据永久的保存到磁盘上,而数据在Ja va中都是保存在对象当中的。那么我们要怎样将对象中的数据保存到磁盘上呢?这时就需要使用Ja va中的对象序列化。 对象的序列化(Serializable)是指将一个Ja va对象转换成一个I/O流中字节序列的过程。其目的是为了将对294 收藏 -
Java HttpClient 的 HTTP/2 连接复用重点在于长期复用同一个 HttpClient,而不是每次请求新建客户端。本文说明 HTTP_2 协议偏好、HttpResponse.version() 实际结果、HTTP/2 多路复用,以及 connectionPoolSize 与 keepalive.timeout.h2 的配置边界。294 收藏 -
ResultSet 接口的作用,是承接 JDBC 执行查询后返回的结果集。可以把它理解为一个被封装起来的逻辑表格,而在这个表格内部,还维护着一个指向当前数据行的游标(或指针)。当 ResultSet 对象刚创建出来时,游标默认停留在第一行之前;这时候调用 next() 方法,游标就会向后移动一行。要293 收藏 -
用 Java NIO 的 Files.mismatch 比对两个文件,理解返回首个差异位置、-1 结果、长度差异和异常处理,避免把相同文件与前缀相同文件混为一谈。293 收藏 -
Java Stream.takeWhile 在有序流中取的是满足条件的最长前缀;放进并行流后,顺序约束会带来额外协调成本,而 unordered() 会改变结果语义。293 收藏 -
Java Compact Object Headers 将 HotSpot 64 位对象头从传统的 mark word/class word 布局收敛到 64 位,本文解释压缩类指针、锁、GC 转发、JDK 25/27 启用方式与迁移边界。293 收藏 -
Java record 的紧凑构造器可以在不重复声明参数和字段赋值的情况下完成参数校验与规范化。本文用值对象示例说明隐式参数、异常边界和常见限制。293 收藏 -
Java 模块系统没有单独的只读导出关键字。本文用 exports 暴露稳定 API 包,把实现包留在模块内部,并说明限定导出、public、子包与 opens 的边界。293 收藏 -
Java List.copyOf 可以按源集合的迭代顺序创建不可变列表,副本不接受增删改,也不允许 null 元素。本文用一个小实验说明源集合、列表结构和元素对象之间的边界。292 收藏 -
Java 模式匹配 switch 遇到 null 不会自动进入类型模式或 default,需要用 case null 显式表达空值策略;本文比较独立分支、与 default 合并的边界及测试清单。291 收藏 -
需要把一组标签、路径或查询条件拼成带分隔符的文本时,StringJoiner 比手动判断首尾逗号更稳。本文从空集合、前后缀、嵌套拼接和 Stream 收集几个边界出发,给出可直接运行的 Java 示例与验收方法。290 收藏 -
用 Java Collectors.teeing 在一次 Stream 消费中同时计算订单总额与通过数量,拆开两个下游 Collector、空输入默认值和结果对象的设计边界。290 收藏