java教程技术文章
-
Java 多字段排序不要在比较器里直接调用可能为空字段的 compareTo。用 nullsFirst 或 nullsLast 包住每个字段的 Comparator,再用 comparing 和 thenComparing 组合;降序时只反转非空值顺序,避免 null 被一起翻到前面。310 收藏 -
Java HttpClient 复用同一个客户端,并分别设置连接建立超时与单次请求超时;通过异常类型和响应状态码快速定位网络、响应或业务问题。351 收藏 -
Java 读取大文件时,优先用 Files.lines 惰性产生 Stream,显式指定字符集,并用 try-with-resources 关闭文件流,避免一次性加载和资源泄漏。 311 收藏 -
Java 线程池会复用工作线程,ThreadLocal 中的用户信息不会在一次任务结束后自动消失。本文用 finally、remove 和任务装饰器建立可靠的清理边界,避免用户串号与对象滞留。188 收藏 -
Java record 的 List 仍能修改,是因为 final 只固定集合引用而不冻结集合内容。本文用引用链说明原因,并比较直接保存、只读视图与 List.copyOf 快照的适用场景。136 收藏 -
Java try-with-resources 中,主体代码和 close() 同时抛异常时,主体异常继续向外传播,关闭异常会被保存到 suppressed 列表。本文用一个可复用的排查场景说明关闭顺序、异常主次与 getSuppressed() 的读取方式。116 收藏 -
List调用 remove(1) 时,Java 会优先匹配 remove(int),删除下标为 1 的元素;如果要按值删除整数,应显式使用 Integer.valueOf(1)。本文再补充 removeIf、不可修改列表和 subList 的边界。 114 收藏 -
Java Optional 的 orElse 会先计算默认参数,所以即使 Optional 有值,默认方法也可能执行。本文用最小示例解释 orElse 与 orElseGet 的求值时机和选择边界。382 收藏 -
LocalDateTime 不包含时区,不能单独确定时间戳。本文用 ZoneId、ZonedDateTime 和 Instant 演示秒级、毫秒级转换,并说明夏令时、固定偏移和精度损失。443 收藏 -
用 CompletableFuture.allOf 等待并行任务,再用 handle 把成功值和失败原因统一成结果对象,最后按原顺序收集,避免一个异常吞掉其他已完成结果。452 收藏 -
Java BigDecimal 的 2.0 与 2.00 数值相同但 equals 返回 false,是因为 equals 同时比较数值和 scale。本文用代码说明 compareTo、setScale、stripTrailingZeros 与集合键的选择边界。456 收藏 -
Spring Framework 7.0.8 与 6.2.19 修复多项 WebFlux、MVC、WebSocket 会话和资源处理安全问题。本文按依赖盘点、版本选择、回归测试和灰度回滚给出一套不涉及漏洞利用的升级方法。251 收藏 -
文章 · java教程 | 2天前 | Java · Spring Boot · 工程实践 · 自动配置 · java spring boot Starter AutoConfiguration.imports
自定义 Starter 已加入依赖却没有 Bean,通常要分开检查 JAR 发现入口、自动配置条件和业务覆盖关系。本文用 AutoConfiguration.imports、@AutoConfiguration 与条件评估报告串起一套可验证的排查和发布边界。304 收藏 -
JDK 26.0.2 修复了 HttpClient 忽略 SSLParameters 中 named groups 和 signature schemes 的问题。本文用最小配置说明生效边界,并区分 null、空数组、优先级数组与 SunJSSE 提供者的行为。174 收藏 -
Oracle 计划提高 Java 安全更新频率。本文结合 JDK 26.0.2.1 的安全基线,说明团队如何固定 JDK 版本、安排回归窗口,并保留可执行的回滚记录。268 收藏