-
不一定。Java允许包级私有类(不写访问修饰符),但仅限同包访问;public类必须与文件名一致;字段应默认private以保障封装;无参构造方法在定义任意构造后消失,影响框架使用;toString()和equals()需谨慎生成,避免逻辑错误或敏感信息泄露。
-
编译器优先选择非varargs的精确匹配方法,其次选更具体类型的重载,varargs仅作最后备选;多个等效varargs或数组与varargs重载共存时将导致编译错误。
-
LocalDate.plusMonths()基于日历月逻辑自动处理跨年和月份天数差异:①自动进位跨年,如2023-12-15加3月得2024-03-15;②月末日期智能对齐,如2023-01-31加1月得2023-02-28;③需注意边界截断,推荐用with(TemporalAdjusters.lastDayOfMonth())确保月末语义。
-
Collections.checkedList()是过渡性防护手段,仅在写操作时检查类型,将ClassCastException提前至插入时失败;它不替代泛型声明,需配合编译时泛型化逐步迁移。
-
用数组实现负载统计与延迟变量处理,通过serverArray[]、loadCount[]、lastAccessTime[]三数组联动管理节点状态和时间维度,支持轻量级监控与动态调度。
-
StringBuilder比+拼接快,因其内部维护可变char数组,append()复用内存,仅扩容时新建数组;而String不可变,每次+都生成新对象,增加GC压力。
-
CopyOnWriteArrayList.iterator()返回不可变快照,遍历基于创建时的数组副本,无法感知后续增删改操作;不支持remove()/set(),调用抛UnsupportedOperationException;读无锁、写加锁并复制数组,适用于读多写少场景。
-
final修饰引用类型参数无法防止对象内容被修改,仅禁止变量重新赋值;对基本类型和lambda捕获的局部变量有效;IDE提示加final仅为表达只读意图,非提升安全性;真正防护需防御性拷贝、不可变包装或显式校验。
-
getClass()返回对象运行时实际类型,与声明类型、泛型、接口无关,只取决于new创建的具体类;对null调用抛NullPointerException,数组返回JVM内部表示;严格类匹配应使用==而非instanceof。
-
应优先使用System.nanoTime()测量耗时,因其基于高精度计数器、不受系统时钟调整影响、分辨率达纳秒级;而currentTimeMillis()仅适用于挂钟时间,存在精度低(10–16ms)、易受NTP调整/虚拟机暂停等干扰、混入非业务耗时等问题。
-
Java项目需在pom.xml中添加pulsar-client3.3.0(或3.0.8+)依赖,支持BatchReceive及Java17+;serviceUrl须与Pulsar服务端advertisedAddress严格一致;subscriptionName须全局唯一且subscriptionType按场景选型;务必显式调用.close()释放资源。
-
module-info.java是CI/CD中模块治理的起点,通过显式声明依赖、强化编译期检查、支持模块图验证、实现增量构建与测试聚焦、支撑SBOM生成及安全扫描,将运行时问题提前至编译阶段拦截。
-
BST不支持二进制寻址,但可将查找路径映射为二进制编码(0左1右);该编码依赖树形结构,仅反映逻辑路径,用于日志、序列化等,需边查边记,无直接计算公式。
-
Selector监控通道I/O就绪状态而非变量,需非阻塞通道注册并正确管理SelectionKey:注册时设兴趣事件与attachment,select后用Iterator遍历并remove已处理key,业务逻辑须交由线程池执行。
-
从一次 Spring Boot 虚拟线程升级复盘讲起,拆解 JDK 21/23 与 24/25 下 synchronized pinning 的差异、JFR 诊断步骤、代码改造和上线检查清单。