java教程技术文章
-
GridLayout(网格布局管理器)会用横线和竖线把容器切分成 n 行 m 列、大小一致的网格,每个网格里都可以放置一个组件。组件加入容器后,会先落在第1行第1列(左上角)的位置,随后按照第1行从左到右的顺序依次排布;当前一行放满之后,再进入下一行,继续按从左到右的方式放置。它和 FlowLayo431 收藏 -
虚拟线程适合大量阻塞型任务,但它不会自动增加数据库连接等稀缺资源。本文从读者提问出发,说明虚拟线程不该再被线程池复用,连接池本身的并发边界,以及何时应使用 Semaphore。430 收藏 -
文章 · java教程 | 2个月前 | Java · 异步编程 · 后端开发 · CompletableFuture · 接口聚合 · java 结果合并 completablefuture 并行调用 超时兜底
页面接口经常需要同时查询用户、订单、优惠等多个服务。本文按完整工作流拆解 Java CompletableFuture 如何做并行调用、独立超时、异常兜底、统一 DTO 合并和最终检查。428 收藏 -
Java 25 的 StructuredTaskScope 仍是预览 API,适合把一次请求拆成多个并发子任务,再以结构化的 join、失败传播和超时边界收拢结果。本文用商品详情聚合场景拆开 open、fork、join、TimeoutException 和预览编译参数。428 收藏 -
用 DateTimeFormatter 和 ResolverStyle.STRICT 解析 Java 日期,区分格式、时区、无效日期与时间字段,给出可运行的验收代码和常见边界。426 收藏 -
Java 8 应用升级到 Java 21,真正容易卡住的不是语法,而是 JAXB 缺失、强封装反射和默认字符集变化。本文用一套可复用的检查顺序,把编译、启动和回归验证串起来。425 收藏 -
用一个可复现的锁竞争场景,说明 Java ReentrantLock.lockInterruptibly 的等待、中断、异常清理和 finally 释放顺序,避免把线程中断误写成强制解锁。422 收藏 -
文章 · java教程 | 2个月前 | 异步编程 · Java教程 · 超时治理 · CompletableFuture · java 异步任务 超时处理 completablefuture orTimeout completeOnTimeout
通过一个订单页异步聚合案例,演示 Java CompletableFuture 的 orTimeout、completeOnTimeout、异常兜底、耗时日志和常见坑,避免慢任务拖垮接口。421 收藏 -
在 Swing 组件体系里,除了负责输入的文本类组件,还有一类非常常用的展示型组件,那就是标签组件。说得更直接一点,标签组件主要就是拿来“显示内容”的。在 Swing 中,最常见的标签组件是 JLabel,它既能展示文本,也能显示图像,同时还支持对标签内容进行垂直和水平方向的对齐设置。 JLabel421 收藏 -
Java 21 的 SequencedCollection.reversed 返回反向视图,而不是复制集合。本文用 ArrayList 和 LinkedHashSet 验证首尾操作、修改传播与使用边界。417 收藏 -
BorderLayout(边界布局管理器)是一种较为复杂的布局方式,它将容器划分为五个区域,分别是页头(PAGE_START)、页尾(PAGE_END)、行首(LINE_START)、行尾(LINE_END)、中部(CENTER)。组件可以被放置在这五个区域中的任意一个位置。BorderLayout416 收藏 -
Java 虚拟线程适合承载阻塞 IO,但不应拿固定线程池限制资源并发。本文用 Semaphore 配合虚拟线程执行器,说明如何按连接池、上游限额和 CPU 预算设置可观察的并发边界。415 收藏 -
文章 · java教程 | 1星期前 | Java · nio · 工程实践 · 文件属性 · 配置热加载 · java 配置文件 Files.readAttributes BasicFileAttributes fileKey
配置热加载不能只比较 lastModifiedTime。本文用 Java Files.readAttributes 读取 BasicFileAttributes,结合 fileKey、文件大小和时间戳,判断原文件被覆盖、替换或仅内容变化时应该怎么处理。414 收藏 -
文章 · java教程 | 1个月前 | Java · 后端开发 · 批处理 · Stream API · JDK 24 · Gatherers · 分组 Java 24 Stream Gatherers windowFixed Stream.gather 批量接口
批量同步订单或调用外部接口时,手写 subList 循环容易把边界、尾批和调用节奏揉在一起。Java 24 正式提供 Stream Gatherers 后,可以用 gather(windowFixed(n)) 把元素按固定数量组成批次,再把网络调用放在流外逐批处理。本文给出最小写法、尾批语义、旧方案对比和 JDK 版本边界。411 收藏 -
文章 · java教程 | 2个月前 | Java · 集合 · ArrayList · Iterator · removeIf · java iterator ArrayList ConcurrentModificationException removeIf
ArrayList 遍历时删除元素很容易抛 ConcurrentModificationException。本文按完整流程拆解增强 for、modCount、迭代器检查机制,并给出 Iterator.remove、removeIf、复制新列表三种安全方案。410 收藏