-
安全获取文件列表需先判空再过滤,用SwingWorker异步加载防卡顿;双击打开前须检查Desktop.isDesktopSupported()和open支持;JFileChooser路径统一转绝对路径;删文件前用FileChannel加锁检测占用;UI更新必须invokeLater切回EDT。
-
Executors.newFixedThreadPool()易OOM是因为其使用无界LinkedBlockingQueue,任务持续提交而消费滞后时队列无限膨胀,堆内存被占满;newCachedThreadPool()更危险,会因SynchronousQueue+无限线程数导致栈内存溢出。
-
static变量属类且共享,类加载时初始化一次;static方法不能访问非静态成员;static块仅执行一次;static内部类不持外部类引用。
-
接口隔离原则要求将大接口拆分为多个小接口,避免类实现无关方法。通过按角色划分、遵循单一职责,使依赖更清晰,提升系统灵活性和可维护性。
-
LockSupport.parkNanos不挂起线程是因为前置unpark消耗了许可或线程已被中断;参数单位为纳秒,误用毫秒值会导致等待时间远短于预期;它不释放锁、不抛InterruptedException,仅响应中断状态且不自动清除。
-
VectorAPI是JDK16引入的孵化特性(jdk.incubator.vector),用于编写可被编译为CPUSIMD指令的向量化代码,非java.util.Vector;现可用,但需JDK19+、显式添加模块并正确处理数组对齐与掩码。
-
HashMap通过哈希机制实现快速存取,核心操作包括put、get、remove及遍历;其性能依赖hashCode和equals的正确实现,需注意键的不可变性、非线程安全、初始容量与负载因子设置,以及null键值的使用风险。
-
Scanner输入卡住因nextInt()不读换行符,导致nextLine()读空行;应统一用nextLine()后转换,或在nextInt()后加nextLine()清缓存;BMI用double足够,Math.round四舍五入;if-else需按BMI区间升序判断;文件写入推荐Files.write()避免乱码和资源泄漏。
-
条件谓词是防止虚假唤醒和竞态的唯一防线,必须用while循环包裹、仅读取受同一锁保护的共享状态,且须为纯函数;省略或写错将导致死锁或脏数据。
-
EventLoopGroup是Netty的线程调度骨架,负责为Channel分配绑定固定线程的EventLoop;Boss专管连接建立,Worker专管I/O处理,二者职责隔离以避免相互阻塞,需正确配置线程数并避免在Boss线程执行耗时操作。
-
本文详解JPA单元测试中使用H2内存数据库(jdbc:h2:mem:)时数据“丢失”的根本原因,并提供线程安全、符合测试隔离原则的正确共享策略,包括@BeforeAll初始化、连接URL命名复用及事务管理最佳实践。
-
Java二进制字面量必须用0b或0B前缀,Java7起支持;八进制用0开头但易错应避免;十六进制用0x/0X,最安全常用。
-
retainAll是破坏性操作,会修改原Set;对不可变Set需先复制再调用;addAll返回boolean而非新Set;removeAll实现差集a−b;Stream方式性能较差且不推荐滥用。
-
不该直接用JDBC写增删改查,因其需手动管理连接、防空指针、拼SQL、处理异常与事务,易出错且难维护;MyBatis强调SQL优先,Hibernate强调对象优先,二者设计哲学相反,选错将导致返工。
-
首先定义Student类封装学生信息与成绩,通过ArrayList存储学生数据,利用Collections.sort()按总分降序排序并输出排名,可扩展平均分、最高分、及格率等统计功能。