java教程技术文章
-
Java CDS 默认归档可以复用核心类元数据;固定启动命令的应用还可以用 AppCDS 动态归档覆盖应用类,从而减少启动阶段重复加载。本文给出生成、加载和排查归档失效的最小方案。112 收藏 -
ConcurrentHashMap 的 size() 返回 int,mappingCount() 返回 long。本文从返回范围、并发更新下的估算语义和业务用途三个角度说明迁移边界:大规模计数优先 mappingCount,普通展示可保留 size,严格控制逻辑不能依赖任一瞬时计数。112 收藏 -
用 ValueSource、CsvSource 和 MethodSource 组织 JUnit 5 参数化测试输入,覆盖单值、表格与动态对象场景。110 收藏 -
Java switch 表达式要求覆盖所有可能输入;当枚举分支覆盖全部已知常量时,编译器会插入隐式 default。本文从多模块服务中的状态映射场景出发,说明箭头规则、块体 yield、显式 default、null 边界以及新增枚举常量后的维护取舍。110 收藏 -
通过 Java AclFileAttributeView 读取并保序展示文件 ACL,解释主体、类型、权限和标志,区分视图不支持、读取失败与空列表,并说明有效访问权限的判断边界。110 收藏 -
用 Java ScopedValue 传递请求上下文时,绑定位置、线程边界和版本 API 是最容易出错的地方。本文给出配置示例与排查清单。107 收藏 -
Java 25 的 JEP 512 让小型程序可以省略显式 class 和传统 public static main(String[] args)。本文用一个单文件示例说明实例 main 的写法、java 与 javac 的启动命令、main 入口匹配规则,以及何时应恢复普通类声明。106 收藏 -
Java 21 的 List.reversed() 返回反向有序视图,不是副本。本文用 ArrayList 和只读 List 对比说明 set、remove、addFirst 是否会写回原集合,以及什么时候必须显式复制。105 收藏 -
Java 工具方法需要知道是谁调用了它时,可以用 StackWalker.getCallerClass() 获取调用者 Class。本文从 RETAIN_CLASS_REFERENCE 配置开始,说明 getCallerClass、walk、隐藏帧和底部调用栈异常的边界。105 收藏 -
Java ScopedValue 的内层绑定只在嵌套动态作用域中遮蔽外层值,退出后自动恢复。本文用 where、run、get、isBound 和 orElse 说明嵌套读取、异常边界、线程继承与不可变上下文的使用方法。104 收藏 -
通过 LinkedHashMap、TreeMap 和下游 Collector,分别控制 Java Stream 分组后的键顺序与组内元素顺序。104 收藏 -
Map.copyOf 明确拒绝 null 源映射、空键和空值。文章说明输入约束、过滤与默认值的语义选择,并用 HashMap 副本加只读包装保留空值,区分视图、浅拷贝与深度不可变。104 收藏 -
Java HttpClient 可以用 HttpRequest.BodyPublishers.ofFile(Path) 把本地文件作为请求体发送。本文说明文件请求体的构造关系、Content-Type 设置、异常处理和与响应文件下载的区别。103 收藏 -
Java Files.isSameFile 判断的是两个 Path 是否定位到同一个文件实体,而不是只比较路径字符串或文件内容。本文说明最小调用方式、相等 Path、不同文件系统 provider、符号链接和 IOException 的边界。103 收藏 -
讲清 Java ExecutorService.shutdownNow 对排队任务和运行中任务的不同处理方式,并给出可响应中断、等待终止、记录重试任务的关闭方案。103 收藏