java教程技术文章
-
TreeSet 不是用 equals 直接判断重复,而是沿着 compareTo 或 Comparator.compare 的结果定位元素。本文用一个只比较年龄的场景解释 compare 返回 0 为什么会让第二个对象无法加入,并给出主键加唯一标识的稳定改法与迁移检查清单。190 收藏 -
Java 月度账期不要手写二月天数。使用 YearMonth 表达年月,再调用 atEndOfMonth() 得到月末 LocalDate;需要展示或复核时,用 lengthOfMonth() 和 isLeapYear() 处理闰年差异。472 收藏 -
用 Java Instant.truncatedTo 按分钟截断时间戳,理解支持单位、UTC 截断方向、比较方式与负时间戳边界。229 收藏 -
Java LocalDateTime 本身没有时区信息,使用显式 ZoneOffset 调用 toInstant 可以得到不依赖机器默认时区的绝对时间点。362 收藏 -
Java ZipEntry 的 extra 是 ZIP 条目的原始扩展字节。本文说明如何读取、复制和设置这段元数据,并从长度限制、未知字段和审计记录三个角度避免转存时丢失或误解析。160 收藏 -
Java Deflater 的 nowrap 参数决定是否保留 zlib 包装。本文对比 zlib 与 raw deflate 的数据边界、解压入口以及 GZIP、ZIP 的区别,帮助你正确匹配跨端压缩协议。373 收藏 -
InflaterInputStream.available() 只表示当前是否已到 EOF,未结束时通常返回 1,结束后返回 0,并不代表还剩多少字节。本文用正确的 read() 循环、资源关闭和排查日志说明如何判断压缩流真正结束。271 收藏 -
Java ByteBuffer 默认按大端序读取多字节值。本文从字节序、position、remaining 和视图缓冲区四个排查点说明如何按协议切换大小端并正确读取整数。421 收藏 -
writeUTF 使用 modified UTF-8 并用两字节保存长度,编码后超过 65535 字节就会抛出 UTFDataFormatException。本文说明如何预判限制,并给出长文本改用长度加 UTF-8 字节的写读方案。450 收藏 -
讲清 Java DataInputStream.readFully、read 和 EOFException 的边界,帮助定长二进制记录导入时区分正常少读、文件截断与底层 I/O 错误。313 收藏 -
Java walkFileTree 的 postVisitDirectory 不只在目录正常遍历后调用,目录迭代提前结束时也会带着 IOException 进入该回调。本文用最小 Visitor 说明 exc 的判断、继续与终止的取舍,以及批量文件任务如何保存部分结果并支持恢复。450 收藏 -
Java Path.relativize 失败通常不是目标文件不存在,而是两个 Path 的绝对相对类型或根路径不匹配。本文用一个最小诊断工具说明判断条件、统一路径和安全降级写法。179 收藏 -
Java Files.find 通过 maxDepth 限制目录层级,并把 BasicFileAttributes 交给匹配器筛选普通文件、大小和后缀。本文还说明惰性 Stream 的关闭方式,以及 IOException 与 UncheckedIOException 的处理边界。487 收藏