-
public类可被任何类访问,且文件名需与类名一致;2.默认修饰符使类仅在包内可见,适用于内部辅助类;3.顶层类不支持private和protected,仅成员可用。
-
可以使用逻辑异或(^)实现int、long等基本整数类型的原地交换,依赖a^a=0和a^0=a恒等式;但不适用于BigInteger(不可变、不支持位运算符重载)和Integer(不可变、需拆箱装箱),且存在可读性差、未定义行为等缺陷,实际推荐用临时变量。
-
DelayQueue是基于PriorityQueue的无界阻塞队列,要求元素实现Delayed接口,按剩余延迟时间升序排列,支持take()阻塞获取和poll()非阻塞获取,适用于单机定时任务等场景。
-
ByteBuffer.allocateDirect是JDK21+安全可控的堆外内存分配标准方式,内部封装Unsafe.allocateMemory等细节,禁止用户直接调用底层接口;应通过-XX:MaxDirectMemorySize限流、及时释放引用、监控水位,并优先采用VarHandle+MemorySegment等现代API替代Unsafe。
-
捕获FileAlreadyExistsException是处理文件已存在异常的最直接方式,需置于IOException之前;也可用Files.exists()预检(有竞态风险)或Files.write()配合TRUNCATE_EXISTING实现覆盖语义。
-
String.intern()适用于低基数、高重复、长生命周期字符串(如日志状态、配置key、JSON字段名),可省内存、提==判断速度;但须赋值接收返回值,禁用于动态拼接、敏感信息和超长字符串,且需配合JVM参数调优。
-
Record类的equals和hashCode是编译器按契约自动生成的底层行为:基于值语义逐字段比较、严格依赖字段声明顺序、由不可变性保障哈希稳定性,三者共同确保符合Object规范且不可绕过。
-
Java单元测试环境的核心是确保JUnit能被正确识别和执行,关键在于依赖范围设为test、避免JUnit4混用、IDE配置正确及SpringBoot版本匹配。
-
共享内存是Linux中多个进程直接访问同一物理内存空间的技术,实现零拷贝通信;线程间共享数据则依赖共享变量、ConcurrentHashMap、BlockingQueue或Exchanger等线程安全结构,配合合理线程池配置以保障高效、安全的数据交换。
-
因为Objects.compare()是静态方法,返回int值而非Comparator实例,无法直接作为Comparator函数式接口的实现传入;必须配合lambda或方法引用封装为Comparator。
-
本文介绍在Java中根据阈值筛选数组元素时避免冗余零值的正确方法,重点讲解使用StreamAPI进行过滤与转换,以及传统循环方式的优化策略。
-
PooledByteBufAllocator通过预分配PoolChunk并复用ByteBuf对象,避免每次分配都触发malloc和JVM堆创建;其线程本地缓存与分级内存池(tiny/small/normal)协同减少竞争与GC,但需合理配置参数并确保显式release才能发挥实效。
-
TimeZone是Java处理时区的抽象类,需通过getTimeZone()等静态方法获取实例,提供偏移量、夏令时规则及时区ID等元数据,配合Calendar或ZonedDateTime完成时间转换;推荐使用java.time包替代。
-
抽象类该有构造函数,且通常必须有;它不能是private,推荐用protected修饰,子类构造器需显式调用super(...)。
-
HashSet查找失败的根本原因是hashCode()与equals()未同步重写:只重equals()导致哈希值不同而散列到不同桶,只重hashCode()则因equals()未重写仍判为不等且性能退化为O(n),正确做法是二者同时重写并保持逻辑一致。