-
Math.abs()对Integer.MIN_VALUE返回负数是因补码取反溢出;应改用Math.abs((long)Integer.MIN_VALUE)或Math.absExact();Math.pow()性能差、精度低,小整数幂宜用乘法。
-
Optional是Java8引入的容器类,用于明确表达“可能为空”的值,核心用途是将空值检查从隐式运行时错误转为显式编译期契约;正确用法包括:作为方法返回类型、用empty/of/ofNullable创建、链式调用优先map/flatMap、默认值优先orElseGet而非orElse、禁用isPresent()+get()反模式。
-
-Xms与-Xmx设为相同值可避免堆动态扩容触发的FullGC及对象复制开销,推荐生产环境设为相等且不低于物理内存1/4(≤32GB);G1需显式配置-XX:MaxGCPauseMillis=100~200ms才能发挥低延迟优势,jstat的GCT包含混合GC而YGC/FGC不统计,JDK17+部分参数行为变更或失效,调参须以GC日志为准。
-
本文介绍如何通过Spring的RequestContextHolder机制,将重复出现的请求头(如flowId、customerId等)封装为线程安全的RequestContext对象,避免在每个Controller方法中冗余声明@RequestHeader参数,提升代码可维护性与清晰度。
-
本文详解JavaSwing中通过按钮事件触发新窗口显示的完整实现,重点解决因类继承与JFrame实例混淆导致的“空白窗口”问题,并提供结构清晰、可复用的代码范式。
-
本文详解为何无法直接用Hibernate的@Check注解实现跨表计数校验,并提供基于数据库设计、应用层控制与并发安全的可行替代方案。
-
匿名内部类必须基于已有类型(接口或父类)声明,不能凭空创建,需实现接口或继承非final类,且只能访问final或effectivelyfinal的局部变量。
-
Stream是惰性、只读的,不修改原集合;重复使用会抛IllegalStateException;collect需选对收集器;并行流慎用;空值和null须显式处理。
-
UUID.randomUUID()生成的是密码学安全的伪随机数,基于SecureRandom从操作系统熵源(如/dev/urandom)获取,非真随机但足够唯一和不可预测。
-
ArrayList.trimToSize仅收缩elementData数组容量,不触发GC,内存是否减少取决于冗余空间大小和GC时机;仅当size<elementData.length时生效,适用于一次性列表、筛选小结果等场景,需避免与subList共用。
-
不该直接用JDBC写增删改查,因其需手动管理连接、防空指针、拼SQL、处理异常与事务,易出错且难维护;MyBatis强调SQL优先,Hibernate强调对象优先,二者设计哲学相反,选错将导致返工。
-
ByteBuffer.wrap()不等于入池,它仅创建共享原数组的非池化HeapByteBuffer;真正入池需用Netty等框架的PooledByteBufAllocator分配并拷贝数据。
-
本文详解SpringBoot应用在JBossEAP/WildFly(如7.4)上通过JNDI复用服务器内置数据源的正确配置方式,重点解决因自动配置冲突导致的Failedtodetermineasuitabledriverclass启动失败问题。
-
CountDownLatch是Java并发包中用于让一个或多个线程等待其他线程完成一组操作的同步辅助类,适用于不关心返回值、只关注“全部执行完毕”信号的场景,如异步任务完成后统一日志汇总;初始化时指定等待的countDown()次数,需在任务启动前完成,每个任务必须在真正执行完毕(推荐finally块)调用countDown(),主线程通过await()阻塞等待,支持超时;它是一次性、无返回值、不处理中断的轻量同步工具,区别于CompletableFuture(需结果聚合)和CyclicBarrier(可
-
Condition的await()/signal()唤醒的是等待队列头部任意线程而非指定线程;交替执行靠多个Condition分离等待逻辑、while循环严格检查条件、修改状态后signal,且需正确处理中断。