-
SecurityException是Java安全模型检测到违规时抛出的异常,需通过启用SecurityManager(Java8–16)并配置policy文件限制PropertyPermission来阻止第三方JAR读取user.home等敏感属性。
-
枚举单例最可靠,因JVM硬性保障:反射时newInstance()必抛异常,反序列化时readEnum()直接返回预创建实例,无需readResolve或防御代码。
-
sdkman是Linux/macOS用户切换Java版本最省心的选择,它独立安装JDK于用户目录、仅修改PATH和JAVA_HOME、无污染无冲突;Windows用户可用jabba或手动配置;Ubuntu的update-alternatives不设JAVA_HOME,IDE和构建工具各有独立配置。
-
JavaAgent的premain必须在目标类加载前生效,否则无法增强已加载类;需显式配置ClassPool路径、处理类重定义限制、避开final/native方法、应对SpringBoot提前加载、适配JDK版本差异,并结合retransformClasses与调用点增强兜底。
-
Java接口与类本质不同:接口是行为契约,只声明“能做什么”,无状态无实现;类是实体蓝图,定义“有什么”和“怎么做”,可实例化。
-
匿名线程捕获局部变量实为编译器将其提升为闭包对象字段,问题本质是循环变量复用导致所有线程读取最终值,而非变量“存活”或作用域泄漏。
-
哈希表桶分布的数学期望值为n/m,即平均每个桶承载n/m个元素;该值源于线性期望原理,导出冲突不可避免、空桶数量可估算、查找成本有界三个推论,并指导HashMap负载因子控制、扩容策略与结构升级决策。
-
先捕获FileNotFoundException再处理IOException,结合文件路径验证与权限检查,提供清晰错误提示或降级方案,提升文件操作健壮性。
-
组合是生命周期强绑定的“我创建你,你活在我里面”,如Car含privatefinalEngine;聚合是“我用你但你不归我管”,如Department持Employee引用;关键看部分离开整体能否独立存在。
-
滑动窗口算法配合异常捕获可有效定位高频接口故障链:通过30–120秒窗口与5–10秒步长统计失败密度,结合失败率突变检测(偏离基线3σ)、多依赖接口时间对齐、trace_id上下文追溯及错误码组合规则,实现故障链精准聚合与根因定位。
-
ClassValue是Java中为每个Class对象关联延迟初始化、线程安全元数据值的轻量机制,用于类级别缓存(如反射信息、注解解析结果),核心特点是无锁、按需加载、每个类一份值。
-
Executors.newSingleThreadExecutor能保证任务严格按提交顺序串行执行,因其内部封装单线程ThreadPoolExecutor+无界LinkedBlockingQueue,任务FIFO排队、唯一线程逐个执行,天然避免竞态;但需注意异常处理、避免阻塞及合理关闭。
-
热部署中单例类无法被回收是因类加载器隔离失效与静态引用强持有共同导致;单例若持有业务对象、被跨模块静态引用或执行不可逆操作,便会阻塞热部署;应改为ClassLoader级唯一、切断外部静态依赖并配合工具干预。
-
opens不是JSON序列化的标准指令,仅存在于Java9+模块系统中用于授权反射访问私有字段;各语言需通过default=、@JsonProperty、导出字段或BindingFlags等真实机制实现私有字段序列化。
-
线程安全指多线程读写共享数据时结果始终符合预期;count++非原子,因拆为load-add-save三步,易发生竞态;volatile不解决中间插队;synchronized可快速止血;高并发宜用ReentrantLock或AtomicInteger。