java教程技术文章
-
Java 高并发统计计数优先考虑 LongAdder:它通过分散内部计数降低更新竞争,再用 sum 汇总;AtomicLong 则更适合序列号、额度和需要原子读改写的精确状态。本文对比两者的吞吐、读取、重置和迁移边界。243 收藏 -
Java Optional 的 empty 表示没有值,不等于异常。通过 map、filter 和 orElseThrow 的边界设计,可以保留真实故障并稳定处理缺省结果。242 收藏 -
用CompletableFuture编排多个异步阶段时,应在阶段边界设置orTimeout,在异常出口区分TimeoutException与业务失败,并用handle统一结果,避免超时被吞掉或阻塞线程池。242 收藏 -
Java HttpClient 的 sendAsync 返回可取消的 CompletableFuture。本文区分请求级超时与业务主动取消,给出保留原始 future、定时 cancel、异常分类和响应体收尾的完整写法。240 收藏 -
Java DateTimeFormatter 中大写 YYYY 表示周基准年,年末可能与公历年不同。本文解释 YYYY、yyyy、uuuu 的区别,并给出普通日期与周日期的正确写法。239 收藏 -
讲清 Java 虚拟线程改造中任务并发与数据库连接的不同边界,并用连接池、超时和背压保护下游资源。236 收藏 -
讲清Java并行Stream的遇到顺序、Collector并发特征和稳定结果设计,给出保序List、并发Map与带序号排序的选择方法。232 收藏 -
Java 21 的 SequencedMap 可以用 reversed() 得到反向视图。本文用 LinkedHashMap 说明如何成对遍历键值、验证首尾顺序,并解释视图、快照和兼容性边界。229 收藏 -
Java JDBC 处理 SQLException 时,先用 SQLState 做跨驱动的错误分类,再用 vendorCode 映射厂商细节,结合异常类型和异常链决定重试、降级与告警。229 收藏 -
本文说明 Java FileChannel.transferTo 为什么可能只传输部分字节,并给出按返回值推进 position、处理返回 0 和区分非阻塞目标的可靠循环方案。229 收藏 -
Java HttpClient 没有直接的 multipart 表单构造器,需要自己处理 boundary、CRLF、文件段和长度。本文给出可计算长度的拼接方案,并说明大文件如何改用可重复创建的流式请求体。225 收藏 -
Java 25 的 ScopedValue 适合在明确的动态作用域内单向传递不可变上下文;ThreadLocal 仍适合可变的线程本地状态,但在线程池任务结束时必须 remove。本文用最小代码和选择表说明两者在任务边界、嵌套绑定和子任务继承上的区别。225 收藏 -
Java record pattern 如何拆解嵌套数据?本文用订单、地址和金额示例说明 instanceof、switch、null 边界及泛型嵌套模式的写法。223 收藏 -
MethodHandle 没有独立的类型配置项,类型由 MethodType 和查找方式决定。本文从句柄创建、接收者位置、invokeExact 严格匹配与 asType 适配四层排查常见 WrongMethodTypeException。214 收藏 -
Java Pattern 使用命名捕获组读取可选字段时,要区分分支未参与匹配产生的 null 与匹配空文本产生的空字符串,并在解析边界统一处理默认值和异常。209 收藏