-
最清晰通用的解决变量遮蔽方式是使用this.前缀明确访问成员变量;配合命名约定(如成员变量加前缀)、IDE警告及静态分析工具可有效预防和识别遮蔽问题。183 收藏 -
大顶堆用数组实现时,节点i的左子为2i+1、右子为2i+2、父为(i-1)/2,且每个节点值≥子节点值;构建需shiftUp(插入后上浮)和shiftDown(堆顶替换后下沉),建堆从最后一个非叶子节点起调用shiftDown,时间复杂度O(n)。365 收藏 -
EnumMap比HashMap存枚举更快,因其用数组实现,索引由枚举ordinal()直接决定,省去hash计算、寻址、扩容及树化等开销,且内存局部性好、分支预测友好。369 收藏 -
堆内存存储对象本体,栈内存存储基本类型和引用变量;堆中对象被多线程共享,栈中变量线程私有;栈溢出因递归过深或局部变量过多,堆溢出因对象过多或过大且GC无法及时回收。150 收藏 -
Java中方法调用基于运行时对象实际类型,遵循继承链向上查找,子类重写方法会动态绑定执行,静态方法则按引用类型绑定;多层继承下从实际类型逐级回溯,建议避免深层继承、优先使用组合,并谨慎处理构造器中可重写方法的调用。329 收藏 -
throws用于方法签名中声明可能抛出但不处理的受检异常,如IOException、SQLException;必须在调用可能抛出受检异常且未用try-catch处理时使用,可声明多个异常并用逗号分隔,子类重写时不能扩大异常范围。243 收藏 -
AtomicLongFieldUpdater是用于对volatilelong实例字段进行无锁原子更新的工具类,基于反射+Unsafe实现CAS,要求字段为volatile、long类型、非static非final,且updater需在字段可见范围内声明。300 收藏 -
JavaFXSpinner默认在长按上下箭头时会连续快速增减,本文介绍如何通过设置setRepeatDelay(Duration.INDEFINITE)禁用自动重复触发,使长按行为与单击一致——每次按下仅变更一个步长值。279 收藏 -
Java黑名单机制核心是“拦截+校验+持久化”,应置于请求进入业务逻辑前(如Web层Interceptor、RPC层Filter、服务内敏感操作前),避免DAO层硬编码;存储依规模与实时性选型。102 收藏 -
getClass().getName()返回带包名的全限定类名,如java.lang.String;需判空调用,优先用instanceof判断类型,字符串匹配应使用getSimpleName()。166 收藏 -
LockSupport.unpark能精准唤醒指定线程,关键在于其基于permit机制:unpark发放许可,park消费许可,许可可预存不丢失;而notify/notifyAll依赖同步块和等待队列,易信号丢失且无法指定目标。430 收藏 -
Java异常类必须实现Serializable,因为Throwable实现了该接口,确保异常可跨JVM传输;未显式声明serialVersionUID会导致结构变更时反序列化失败;含非transient不可序列化字段会抛NotSerializableException。247 收藏 -
Runtime.gc()不会强制触发垃圾回收,仅是向JVM发出建议,实际执行与否由JVM决定;生产环境中调用基本无效,还可能干扰GC策略。484 收藏 -
Java要求局部变量在使用前必须明确初始化;若仅用独立if语句而无else覆盖所有可能取值,编译器无法保证变量一定被赋值,从而报错。正确做法是用if-elseif-else结构或直接初始化默认值。266 收藏 -
StructuredTaskScope是防止孤儿线程的唯一有效边界,它通过作用域契约绑定子任务生命周期,要求必须用try-with-resources配合ShutdownOnFailure/ShutdownOnSuccess,并确保子任务响应中断。270 收藏