java教程技术文章
-
Swing组件中不仅具有JFrame和JDialog这样的顶级窗口,还提供了一些面板组件(也称之为中间容器),这些面板组件不能单独存在,只能放置在顶级窗口容器中。其中最常见的面板组件有两种:JPanel和JScrollPane,接下来分别来介绍这两种面板组件。 1.JPanel JPanel面板组件452 收藏 -
用 CompletableFuture.allOf 等待并行任务,再用 handle 把成功值和失败原因统一成结果对象,最后按原顺序收集,避免一个异常吞掉其他已完成结果。452 收藏 -
BigDecimal 的 equals 同时比较数值和 scale,而 compareTo 只比较数值。本文用 2.0 与 2.00 说明条件判断、规范化和 HashSet、TreeSet 的选择边界。452 收藏 -
区分 Java 泛型记录的静态类型推断与组件值匹配,比较显式实参、var、通配符和嵌套模式,说明未经检查转换及空值边界。452 收藏 -
用 Java jcmd 排查运行中 JVM 的线程问题:先通过 jcmd -l 确认 PID,再用 Thread.print -l 查看线程栈和并发锁,必要时用 Thread.dump_to_file 导出 plain 或 JSON 转储,并说明权限、容器与结果判断边界。452 收藏 -
用 Java NIO AsynchronousFileChannel 写文件时,连续提交回调可能让任务堆积。本文用批量写入、单飞窗口和可复现吞吐基线,说明如何控制并发、等待完成并验证结果。451 收藏 -
Java虚拟线程适合承载大量等待型请求。本文用按任务创建、资源闸门和有界CPU执行器,说明阻塞I/O服务的线程模型与迁移边界。451 收藏 -
Java虚拟线程支持ThreadLocal,但不适合用它缓存连接、大对象或可复用资源。本文说明状态隔离、remove清理、继承语义与迁移检查边界。451 收藏 -
文章 · java教程 | 2星期前 | 异常处理 · 工程实践 · java IOException 目录遍历 walkFileTree FileVisitor postVisitDirectory
Java walkFileTree 的 postVisitDirectory 不只在目录正常遍历后调用,目录迭代提前结束时也会带着 IOException 进入该回调。本文用最小 Visitor 说明 exc 的判断、继续与终止的取舍,以及批量文件任务如何保存部分结果并支持恢复。450 收藏 -
writeUTF 使用 modified UTF-8 并用两字节保存长度,编码后超过 65535 字节就会抛出 UTFDataFormatException。本文说明如何预判限制,并给出长文本改用长度加 UTF-8 字节的写读方案。450 收藏 -
Java Map.computeIfAbsent 的映射函数执行期间不应修改当前 Map。本文从外层写回时机、同键递归和不同 Map 实现的异常差异出发,给出纯计算、分阶段写入和回滚复查的排障手册。450 收藏 -
解释 Java record 作为 HashMap 键时查询失败的原因,覆盖 equals、hashCode、一致性约束、可变字段与嵌套对象的排查方法。449 收藏 -
批处理任务常常不是一次屏障就能解决:参与者会动态加入,也可能提前退出。本文用 Java Phaser 写一个三阶段批处理示例,核对 register、arrive、onAdvance 和 forceTermination 的职责与边界。449 收藏 -
Java 虚拟线程解决的是大量任务在阻塞等待时的并发容量,不会增加 CPU 核心,也不会让单个计算更快。本文用载体线程、调度器和执行器示例说明 CPU 密集任务的正确拆分方式。448 收藏 -
用 TreeMap 工厂和自定义 Comparator 控制 Java Stream groupingBy 的分组键顺序,并说明时间比较器相等导致键合并的边界。448 收藏