-
Java反射无法真正修改final字段:编译期常量被内联,staticfinal字段在JDK9+模块化下不可写,非staticfinal字段虽可临时覆盖但受JIT优化和线程可见性影响,生产环境严禁使用。
-
Console类仅在真实终端有效,IDE中System.console()返回null;需判空降级;Scanner无终端限制但缓冲区易出错;Console.readPassword()是唯一安全密码输入方式。
-
hasQueuedPredecessors是公平锁的关键判据,因其在tryAcquire中严格检查当前线程是否队列最前:仅通过head和head.next判断有无前置等待者,返回false才允许CAS抢锁,精准保障先到先得。
-
ReentrantReadWriteLock的锁降级是读多写少且需强一致性的唯一可靠路径;锁升级不可行,会阻塞或抛异常。降级通过写锁未释放时获取读锁、再释放写锁实现强一致性,但须同线程、写锁重入数为1、显式释放读锁。
-
Collections.list()将Enumeration转为ArrayList,实现新旧API平滑过渡,简化代码并支持现代集合操作。
-
需继承Exception或RuntimeException,因所有异常必须是Throwable子类,且编译器强制要求;前者用于必须处理的检查型异常(如IO失败),后者用于无需强制处理的非检查型异常(如业务校验失败)。
-
本文介绍在JSON字段值本身为对象(如{"string":"value"})而目标Java字段声明为基本类型(如StringstringField1)时,如何通过Gson的TypeAdapter实现灵活、类型安全的反序列化,无需弃用Gson改用JSONObject。
-
Java项目用Javadoc生成含中文注释的API文档时,需统一源文件、Javadoc读取及HTML输出编码为UTF-8:确保源码存为UTF-8,IDE配置对应编码,命令行加-encoding和-docencoding参数,Maven/Gradle插件中同步设置三者。
-
WeakHashMap使用弱引用保存键,当键无外部强引用时可被GC回收,适用于缓存等易导致内存泄漏的场景。其值仍为强引用,需注意避免反向引用造成泄漏。与HashMap类似,但性能略低,因每次访问可能触发无效Entry清理。常用于GUI组件映射、附加元数据、弱监听器等场景,是标准库中开箱即用的弱引用Map实现。
-
学生、课程与选课记录构成多对多关系,需通过SelectRecord中间实体及studentRecords、courseRecords两个Map维护双向关联,配合Set去重和HashMap高效查询,选课退课须原子性同步更新三方数据,业务逻辑应封装在服务类中以保障可维护性与可扩展性。
-
Java通过MappedByteBuffer间接利用mmap实现零拷贝,映射文件到虚拟内存懒加载、不占堆内存;读G级日志需分块映射、批量读取、跳过无效区、避免String创建,并主动调用cleaner().clean()释放映射。
-
使用System.arraycopy合并数组前须确保类型兼容且目标数组长度足够,否则抛异常;拼接时第二段拷贝起始位置应为第一段长度,避免覆盖;基本类型数组不可与包装类混用。
-
在PostgreSQL中,当手动插入ID后需让序列从下一个合理值开始递增时,不能仅靠ALTERSEQUENCE...RESTART,而应使用setval()显式重置序列值,并确保序列与表列正确关联。
-
ReentrantLock可实现tryLock、限时等待、响应中断和灵活释放锁,而synchronized不支持;必须用try-finally确保unlock()执行,且仅在lock()成功后调用;公平锁降低吞吐量,应按需选用。
-
匿名内部类是Java中“定义即实例化”的语法糖,用于满足单次使用的接口/抽象类契约,适用于非函数式接口、需调用父类构造器、定义字段或方法等Lambda无法处理的场景。