-
高位泄漏指高优先级线程因上下文错置长期持有TraceContext/Span/MDC,导致内存增长、GC压力升高等问题;本质是ThreadLocal强引用锁死引发的带业务语义泄漏。
-
ConcurrentHashMap在JDK1.8后采用CAS+synchronized实现线程安全,以Node数组+链表/红黑树结构提升并发性能,通过synchronized锁单个桶节点实现细粒度控制,允许多线程在不同桶上并发写入,仅在哈希冲突时竞争,显著提高吞吐量;推荐使用putIfAbsent、computeIfAbsent、merge等原子方法避免显式同步,合理设置初始容量和并发等级以减少扩容开销,并注意复合操作需用内置方法保证原子性,防止竞态条件。
-
VarHandle本身不参与访问控制,真正决定能否访问私有字段的是MethodHandles.Lookup实例的权限等级;MethodHandles.lookup()限本类,publicLookup()仅限public字段,privateLookupIn()是唯一合法跨类访问私有字段的方式,且需满足模块读取、类加载器一致等三重校验。
-
IntelliJIDEA在调用第三方库JAR中的接口方法时,常无法显示原始参数名(如name,type),仅显示占位符(如s,i),而默认方法却能正常显示——根本原因在于Java字节码规范对abstract接口方法不强制保留参数名信息,即使编译时加了-parameters也无效。
-
吞吐量优先应选ParallelGC,因其专为最大化吞吐量设计,全程STW但效率高、无协调开销;G1GC仅在兼顾吞吐与软实时停顿(≤200ms)时才适用。
-
Java自定义业务异常码核心是建立可读、可维护、可扩展的错误码体系,需统一管理、分层分类、携带上下文、与异常类强绑定,推荐枚举+自定义异常实现。
-
Java中“匹配”指用正则表达式模式匹配字符串,主要通过Pattern和Matcher类实现。1.Pattern编译正则,Matcher执行匹配,如提取邮箱;2.Matcher提供matches()、find()、group()等方法进行全串或子串匹配;3.String类支持matches()、replaceAll()、split()等便捷操作;4.正则分组可捕获子表达式内容,通过group(n)获取;需注意转义、性能及贪婪匹配细节。
-
自定义锁卡死或抛异常的主因是未正确实现AQS契约:tryAcquire必须原子返回true/false,state需按语义精确使用,shouldParkAfterFailedAcquire不可出错,且不可在其中抛异常或阻塞。
-
FixedThreadPool适合CPU密集型任务,线程数固定且资源可控,但遇IO阻塞易导致队列堆积和拒绝异常;CachedThreadPool适合短平快异步任务,但高并发下易OOM;SingleThreadExecutor仅保证串行执行,不保证线程安全;ScheduledThreadPoolExecutor是唯一可靠的定时方案,需注意任务幂等性和延时策略选择。
-
JVM是否启动JIT编译取决于方法调用或循环回边计数是否达到动态调整的阈值;其通过方法调用计数器和回边计数器识别热点,达阈值后提交C1/C2编译,但实际编译还受分层编译、代码缓存、GC等影响。
-
Field.getType()返回字段声明时的原始类型(如List.class),不包含泛型信息,也不反映运行时实际对象类型;需用getGenericType()获取泛型参数,用value.getClass()获取运行时类型。
-
Java异常类必须实现Serializable,因为Throwable实现了该接口,确保异常可跨JVM传输;未显式声明serialVersionUID会导致结构变更时反序列化失败;含非transient不可序列化字段会抛NotSerializableException。
-
线性查找从头遍历数组逐个比对,适合无序数据,时间复杂度O(n);二分查找基于有序数组,通过比较中间值缩小范围,效率更高,时间复杂度O(logn)。
-
方法引用无独立量化价值,其作用是优化代码结构的语法糖;通过减少重复Lambda、增强语义可读性、约束参数契约来降低维护成本,并可通过变更集中度、静态告警减少量、CodeReview耗时等间接指标评估收益。
-
本文详解如何使用JavaCompilerAPI正确编译多文件Java项目并生成可执行JAR,重点解决javac因参数分隔符错误导致的“Invalidfilename”编译失败问题,并提供健壮的源码扫描、类路径构建与JAR导出完整实现。