-
ReferenceQueue是监控对象实例被回收的通知通道,入队的是WeakReference或PhantomReference等引用对象本身,而非原始对象;需构造时显式传入,通过poll()/remove()轮询确认回收完成。
-
正则表达式核心功能包括文本匹配、子串提取、文本替换、文本分割及断言与定位控制。它通过模式规则实现精准文本处理,广泛应用于验证、抽取、清洗、切分和上下文限定等场景。
-
CopyOnWriteArrayList写操作慢是因为每次add/set/remove都要复制整个底层数组,导致CPU和GC压力双升;数组大时单次add可能分配几十MB临时对象;迭代器基于快照,修改不可见且不抛ConcurrentModificationException。
-
用equals()比较字符串内容,别用==;equals()逐字符比较且安全处理null,但需非null对象调用;忽略大小写用equalsIgnoreCase();防NPE应字面量在左或用Objects.equals()。
-
应先用jstack和ps-T确认线程数暴增及OS级线程耗尽,再排查未关闭线程、第三方库泄漏及线程池配置不当(如newCachedThreadPool无界问题),而非盲目调大ulimit或-Xss。
-
强制转换不能实现归一化,仅辅助精度保留与类型适配;归一化需先识别指标属性(极大型、极小型、类别型、区间型),再选择对应方法(min-max、倒数反转、标签编码、三折线等),并在流式场景中结合分位数截断、对数压缩或Welford算法实现轻量无状态处理。
-
Vector和Hashtable因全局synchronized锁导致高并发性能差;ConcurrentHashMap(JDK8+)采用分桶锁+CAS提升吞吐;CopyOnWriteArrayList仅适用于读多写少场景;BlockingQueue选型需权衡容量、锁机制与背压策略。
-
封装通过隐藏内部实现、暴露稳定接口,保护数据安全并提升代码复用性;私有字段与公共方法结合校验逻辑,确保状态可控;公共方法聚焦单一职责,支持多场景调用;构造器统一初始化逻辑,简化对象创建;包级访问控制组织复用单元,形成清晰API边界,促进模块化迁移。
-
Lombok的@Builder注解会覆盖类中已初始化的集合字段(如privateList<Category>children=newArrayList<>();),导致调用addChild()时触发NullPointerException。根本原因在于Builder生成的构造逻辑未保留字段默认值。
-
Java开发环境配置成功的关键是正确安装JDK、设置JAVA_HOME指向JDK根目录、将%JAVA_HOME%\bin(Windows)或$JAVA_HOME/bin(macOS/Linux)加入PATH,验证java-version和javac-version能正常输出版本号。
-
DuplicateKeyException实际由数据库驱动抛出,MyBatis仅做包装;Spring通过异常翻译器将其统一转换,需确保spring-jdbc在classpath且配置了DataSourceTransactionManager。
-
-XX:+UseStringDeduplication是JVM在G1GC下启用的字符串去重机制,仅对老年代中内容相同的String对象合并副本,需JDK≥8u20且配合-XX:+UseG1GC使用,可降内存占用15%–40%,附带轻微CPU开销。
-
Thread.yield()仅是向JVM发出的建议性让权提示,不保证暂停、不释放锁、不改变线程状态,实际效果微弱且依赖底层实现;适用于低竞争自旋等待或调试模拟,不可用于正确性保障。
-
<p>~是按位取反运算符,对int的32位补码(含符号位)逐位翻转,结果恒等于-(x+1),如~5==-6、~-3==2、~0==-1,其本质是补码体系下的数学恒等式~x==-x-1。</p>
-
浅拷贝只复制对象本身及基本类型值,引用类型仅复制地址;深拷贝则递归复制整个对象图,确保完全独立。关键看是否允许共享状态:读取或全局配置用浅拷贝,并发修改、缓存备份等须用深拷贝。