-
FileLock是Java中基于操作系统实现的进程级文件锁,用于多进程间协调文件访问,分为排他锁和共享锁,需通过FileChannel获取,属建议性锁且不保证JVM内线程安全。
-
Resilience4j的CircuitBreaker不会一直OPEN,需显式配置waitDurationInOpenState(建议30000毫秒)并合理设置eventConsumerBufferSize(如1024),同时确保@CircuitBreaker注解在SpringAOP代理下生效、正确区分fallbackMethod与ignoreExceptions。
-
Collectors.toList()返回有序可变ArrayList(JDK15前)或不可修改视图(JDK16+),toSet()返回无序HashSet且不支持null;groupingBy分类函数返回null会直接抛NPE;averagingDouble等对空流返回默认值易掩盖数据缺失;自定义Collector用于并行流时combiner须满足结合律且无副作用。
-
Java继承是一把双刃剑:它提升复用与结构清晰,但易引发紧耦合、脆弱基类、语义失真和测试爆炸等问题;推荐优先使用组合+接口、策略模式等更可控的替代方案。
-
Collections工具类提供静态方法操作集合,如排序(sort)、反转(reverse)、查找(max/min/binarySearch)、替换(replaceAll)、同步(synchronizedList)和只读视图(unmodifiableList),以及填充(fill)、交换(swap)、旋转(rotate)等,所有方法直接通过类名调用,位于java.util包中,不可实例化,合理使用可简化代码、提升效率并支持线程安全与不可变集合处理。
-
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平滑过渡,简化代码并支持现代集合操作。
-
本文介绍在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()释放映射。