-
InetAddress.getLocalHost()不可靠,应遍历NetworkInterface获取真实网卡IP;getByName("www.baidu.com")抛UnknownHostException是因DNS解析失败;IPv6地址带%后缀需截断或用InetAddress对象直连;DNS缓存需合理配置TTL。
-
项目SDK与模块SDK不一致会导致编译报错或NoClassDefFoundError,因模块SDK才真正决定字节码版本、语言特性及依赖解析,两者冲突时IDE行为不可预测,且Gradle同步可能覆盖设置。
-
确认内存泄漏需观察老年代使用率“只涨不跌”、FGC频次激增且回收无效、OOM频繁复现、特定类实例持续增长;jmap加live可导出纯净堆快照;MAT中通过PathtoGCRoots查强引用链,DominatorTree定位真正内存支配者。
-
hashCode决定对象在哈希集合中的存储位置,影响查找、插入、删除的平均时间复杂度;必须与equals保持一致,否则导致哈希集合行为异常;好hashCode需满足快、散、稳三特征。
-
本文详解如何在Javalin应用中配置静态资源目录,并通过服务端重定向方式自动响应PDF请求,避免流读取失败问题,实现安全、简洁的静态文件分发。
-
JDK包含JRE,JRE包含JVM;装JDK即自带JRE和JVM,仅运行程序只需JRE;JVM依赖JRE的rt.jar等类库,显式使用-cp会忽略默认类路径,导致NoClassDefFoundError。
-
ATM类设计需保证线程安全:账户余额用AtomicInteger或synchronized保护;Account与ATM解耦;余额操作返回boolean;避免在getter/toString中做业务判断;withdraw需严格参数校验。
-
tryTransfer是TransferQueue的核心能力,主动发起同步传输而非入队;它仅在有线程正阻塞于take时立即传递并返回true,否则返回false且不入队、不阻塞。
-
Java用POI导出Excel卡顿的核心原因是写法不当导致内存暴涨、GC频繁或IO阻塞,应使用SXSSFWorkbook流式写入、复用样式与字体、关闭自动刷新、优化SQL及分批处理。
-
本文介绍如何使用Java11+的HttpClient动态传入未知数量与键值对的请求头,支持单值/多值Header场景,提供两种高效实现方式(扁平化数组构造与链式构建),并附可直接运行的示例代码与关键注意事项。
-
Java增强for循环不支持var声明,因语法结构限制和编译期类型推导机制不兼容,强行使用将导致编译错误;替代方案包括显式声明、传统for循环或StreamAPI。
-
Tomcat通过重写WebAppClassLoader的loadClass()方法调整双亲委派顺序:先加载本应用/WEB-INF/classes与lib中的类,未找到再委托父加载器;各应用独享类加载器实现类隔离;共享库由SharedClassLoader统一加载;线程上下文类加载器确保框架能访问应用类。
-
锁消除是JVM通过逃逸分析确认对象未逃逸后自动移除无竞争同步的操作。若对象仅在方法内创建使用、不被返回、不赋值给静态字段、不传入跨线程方法,则判定为线程私有,synchronized块被JIT直接删除;典型场景包括局部new的StringBuffer、ArrayList等;但对象赋值给static字段、作为返回值、进入全局容器或逃逸分析被关闭时,锁消除失效。
-
Future.get超时后任务仍在运行,必须手动调用cancel(true)中断;重试前需确保上轮任务终止,区分TimeoutException、ExecutionException和InterruptedException处理逻辑,并合理配置线程池。
-
ATM类设计需保证线程安全:账户余额用AtomicInteger或synchronized保护;Account与ATM解耦;余额操作返回boolean;避免在getter/toString中做业务判断;withdraw需严格参数校验。