-
自定义ThreadFactory可为线程池线程指定统一、可识别的名称,解决默认命名(如pool-N-thread-M)缺乏业务上下文、不利于问题排查的问题;通过实现ThreadFactory接口、构造传入前缀与原子计数器、重写newThread设置setName,可生成如payment-processor-thread-1等规范名称,提升日志可读性、监控识别度和故障定位效率。
-
Java对象头MarkWord存储哈希码、GC年龄、锁状态等,用JOL配合HotSpot源码可解析其二进制结构:无锁为001、偏向锁101、轻量级锁000、重量级锁010、GC标记111。
-
Java初学者应先用命令行验证JDK版本一致性,再手动编译运行Hello.java,严格遵守类名与文件名一致、main方法签名及访问修饰符要求,通过故意出错理解类加载与字节码机制。
-
equalsIgnoreCase更安全,因它基于Unicode标准大小写折叠、不依赖locale,避免非ASCII字符(如ß、İ)转换异常;仅用于用户名/邮箱等标识符,需判空且不可用于密码;应配合Unicode正规化和输入清洗。
-
throws是Java中声明受检异常的强制语法,仅对继承Exception而非RuntimeException的异常(如IOException、SQLException)生效,用于明确告知调用者需处理异常,而非逃避责任。
-
public、private、protected在类成员上的可见性差异Java的访问修饰符本质是编译期的“门禁规则”,不是运行时检查——它只决定谁能在源码里合法写obj.field或obj.method(),不阻止反射绕过。关键区别不在“能不能用”,而在“从哪能用”:public:任何地方都能访问,只要类型可见(比如publicclassA被import了)private:仅限本类内部,连子类都不行;注意:同一个类的不同实例之间可以互访private字段(比如othe
-
Files.isExecutable()仅检查文件系统权限位或可执行扩展名,不评估运行时安全权限;需结合路径存在性、POSIX权限、解释器可用性及系统策略等多维度验证。
-
throws用于方法签名中声明可能抛出但不处理的受检异常,如IOException、SQLException;必须在调用可能抛出受检异常且未用try-catch处理时使用,可声明多个异常并用逗号分隔,子类重写时不能扩大异常范围。
-
ConcurrentModificationException是Java集合的fail-fast机制抛出的异常,用于检测单线程中遍历时非法修改结构(如for-each中直接调remove),其根源是迭代器的expectedModCount与集合modCount不一致;正确做法是用Iterator.remove()(需先next())、removeIf()(JDK8+,注意Predicate纯函数性)或线程安全容器。
-
javap-v输出中,synchronized块对应monitorenter和monitorexit指令,位于Code:区域;前者在同步块入口前,后者在正常出口及每个异常出口(Exceptiontable所示)前,常有2–3个;staticsynchronized方法则用ldc/getstatic加载Class对象而非aload_0。
-
CGLIB通过生成目标类的非final子类实现代理,核心组件为Enhancer、MethodInterceptor和MethodProxy;它绕过JDK代理必须接口的限制,但要求目标类及方法不可为final,构造器需public/protected。
-
关系运算符(>、<、==、!=)比较两值返回True或False;数字按大小、字符串按Unicode码点、列表按元素顺序比较;==判等,=赋值;结果可用于条件判断或变量存储。
-
CyclicBarrier适用于多阶段并行计算,支持重复使用,每轮等待所有线程到达后自动重置;CountDownLatch不可重用,频繁新建实例会增加开销和出错风险。
-
window.scrollTo({top:0,behavior:'smooth'})可实现按钮点击平滑回顶;需绑定click事件,配合scroll监听显示按钮、降级兼容及防重复触发优化,或全局设CSSscroll-behavior。
-
@FunctionalInterface注解触发编译期静态检查,确保接口有且仅有一个抽象方法;编译器合并继承链中未被default覆盖的抽象方法,并排除Object方法重写,违规则报错且不生成class文件。