java教程技术文章
-
Java Matcher 切换 Pattern 后不会自动回到输入开头。本文用紧凑示例说明 usePattern 如何保留当前位置、为什么旧分组失效,以及它与 reset、region、find(int) 的区别。500 收藏 -
Path.normalize 只按路径名称规则消除 . 和 ..,不会访问文件系统,也就不会检查符号链接。本文用 Java NIO 的 API 对比说明语义差异,并给出需要真实目标时的处理方式。497 收藏 -
DoubleSummaryStatistics 记录 NaN 后,count 仍会计入该值,而 min、max、sum 和 average 会受到 NaN 传播影响。本文说明如何识别 NaN、选择过滤策略,并处理空对象与 combine 边界。496 收藏 -
Java virtual threads 可以让每个请求保持简单的阻塞式写法,但 newVirtualThreadPerTaskExecutor 不会自动限制外部服务的并发量。本文用 Semaphore 包住真正的外部调用,说明许可归还、中断处理、超时和连接池边界。485 收藏 -
Java 24 及更高版本可以用 Stream.gather 和 Gatherers.windowFixed 把连续元素聚成窗口,再映射成业务摘要。本文说明固定窗口、滑动窗口、尾窗口、不可修改结果和大窗口内存边界。484 收藏 -
Java 21 的 record pattern 可以递归匹配嵌套 record,并直接提取深层字段。本文用订单、客户和地址三层结构说明最小写法,重点处理 null、var 推断、泛型边界和可读性取舍。475 收藏 -
用 Java Normalizer 构建 NFC 名称比较键,区分组合字符、原始展示值和规范键,说明本地运行判断、数据集成与兼容折叠边界。473 收藏 -
Java G1 混合回收暂停不能只看一行总耗时。本文从 Unified Logging 的事件行入手,结合 gc+phases、gc+ergo+cset 和 gc+heap 日志,定位集合选择、根扫描、对象复制与收尾阶段的长暂停来源。470 收藏 -
通过addAttribute为局部文本添加属性,解释左闭右开范围、属性迭代读取、UTF-16下标与码点换算,并提供完整Java示例。464 收藏 -
Java 25 的 StructuredTaskScope 仍是 preview API。本文用一个小型后端实验说明作用域取消如何中断未完成子任务,区分失败、超时、join 与 close 的结果,并给出正确响应 InterruptedException 的代码边界。460 收藏 -
Java JFR 自定义事件的关键不是把日志换一种格式,而是把事件类型、业务字段、持续时间和 Recording 采集边界放进同一套 JVM 诊断模型。本文从一个慢操作诊断场景出发,讲清 Event 定义、shouldCommit、begin/end、commit 与 Recording 的职责。456 收藏 -
Java Arrays.compareUnsigned 可按无符号字节的字典序比较两个 byte 数组。本文说明完整数组与范围重载、三态返回值、前缀边界和排序中的使用方式。453 收藏 -
Java Map.computeIfAbsent 的映射函数执行期间不应修改当前 Map。本文从外层写回时机、同键递归和不同 Map 实现的异常差异出发,给出纯计算、分阶段写入和回滚复查的排障手册。450 收藏 -
Java CompletableFuture.orTimeout 可以在指定时间内未完成时让同一个 CompletableFuture 以 TimeoutException 异常完成。本文给出最小写法,解释 timeout、TimeUnit、join 与异常处理的边界,并说明它不会自动停止底层任务。443 收藏 -
用 Java Stream 的 groupingBy 和 maxBy 按部门分组并保留工资最高的 Employee,说明 Optional、并列最大值、空输入和并行流边界。441 收藏