-
动词+名词命名能直接暴露行为意图,如deriveUserStatus、validateEmailFormat;应避免get、process等宽泛动词,选用fetchOrderFromDatabase等具体表达;动词须与时态和返回值一致;业务层优先使用领域动词如assessCompatibilityScore。
-
高内聚低耦合指类职责单一且内部协作紧密、类间依赖弱;Java中一眼可判:new具体实现类或import大量非本模块实现类即耦合高,应改用接口+构造器注入,并将行为封装进对应数据类。
-
哈希桶采用链地址法时,每个桶隐含链表,哈希分布不均会导致链表过长、查询退化为O(n);常见雷区包括非质数取模、忽略字段组合、浮点粗暴截断;修复需改用优质哈希算法并合理组合字段。
-
先使用java-version查看Java版本,再通过/usr/libexec/java_home获取安装路径,最后用echo$JAVA_HOME检查环境变量设置情况,即可全面掌握Mac上的Java配置信息。
-
ByteBuffer.allocateDirect是JDK21+安全可控的堆外内存分配标准方式,内部封装Unsafe.allocateMemory等细节,禁止用户直接调用底层接口;应通过-XX:MaxDirectMemorySize限流、及时释放引用、监控水位,并优先采用VarHandle+MemorySegment等现代API替代Unsafe。
-
ArrayDeque通过循环数组连续存储提升L2缓存命中率:CPU以64字节cacheline预取相邻数据,连续布局使一次预取覆盖多个元素;而LinkedList节点分散,频繁cachemiss导致性能下降30%~60%。
-
最可靠方式是通过字节码分析Lambda运行机制:invokedynamic仅为占位符,实际逻辑由LambdaMetafactory引导方法和动态生成的$$Lambda类执行,其对应静态或实例方法可通过javap验证,动态类名在运行时生成且不可直接加载。
-
static代码块适合初始化必须在类首次使用前准备好且无法单行赋值的静态资源,如加载配置、注册JDBC驱动、构建不可变Map、预热缓存、加载本地库;不适合耗时I/O或网络请求。
-
CountDownLatch通过倒计数实现线程同步,计数归零后释放等待线程,适用于主线程等待多线程完成或统一并发启动场景,需注意不可重置、防止漏调countDown及合理设置超时。
-
Stream.min()报NullPointerException是因比较器访问null字段所致,应使用Comparator.nullsFirst()/nullsLast()安全处理;空流返回Optional,须用orElse()等方法避免NoSuchElementException。
-
staticfinal变量若是编译期常量(基本类型/String+字面量或常量表达式),则值被内联,不触发类初始化;否则仍执行静态块。
-
ConcurrentHashMap通过分段锁(JDK1.7)和CAS+synchronized(JDK1.8+)实现高效线程安全,支持无锁读、弱一致性迭代器及原子复合操作如putIfAbsent,适用于高并发场景下的缓存与状态管理。
-
Thread.currentThread().isAlive()仅表示线程已启动且未终止,即处于RUNNABLE、BLOCKED、WAITING或TIMED_WAITING状态时返回true,TERMINATED时才返回false;它不能用于判断线程是否可继续执行或响应停止信号。
-
是,调用私有方法前必须调用setAccessible(true),否则抛IllegalAccessException;这是JVM访问控制检查所致,与类加载器和模块系统无关。
-
LockSupport的线程挂起与唤醒依赖线程私有的permit状态(0或1),unpark设为1可预发,park检查并消耗;permit由JVM在native层维护,非public变量,原子且天然可见,但不保证共享变量同步。