-
requires声明的是模块间的编译期依赖关系,而非引入变量;它确保JVM和构建系统明确知晓依赖来源、访问权限及导出包,是实现类型安全与封装控制的基础机制。
-
Windows10环境中Maven执行测试时出现乱码(如“Текст”),导致含非拉丁字符的断言失败,而IDEA内运行正常——根本原因是MavenSurefire插件默认未显式指定UTF-8编码,需在pom.xml中配置maven-surefire-plugin的encoding参数。
-
内部类是定义在类内部的类,能访问外部类所有成员,主要用于封装辅助逻辑、提升代码组织性。1.成员内部类用于与外部类强关联的场景;2.局部内部类封装方法内的复杂逻辑;3.匿名内部类常用于事件监听等临时实例;4.静态嵌套类适用于无需外部实例绑定的逻辑。通过private修饰可隐藏实现细节,增强封装性。典型应用如ArrayList的Itr类实现迭代器模式,直接访问内部数据,保证安全高效。内部类是解决类与辅助逻辑组织的有效手段,使代码更清晰、安全、易维护。
-
标记-清除算法在高频分配下加剧内存碎片,因其只回收死亡对象、不移动存活对象,导致空闲块大小不一、位置随机;高频短生命周期对象反复分配释放,使空闲链表中大量小碎片累积,无法拼凑出大块连续空间,进而触发频繁GC。
-
CodeCache碎片化问题的解决方案是增大CodeCache大小、使用G1GC、禁用不必要的JIT编译、定期重启JVM、启用CodeCache分区与清理机制;其核心在于解决因频繁分配释放导致的连续内存不足,而非单纯空间耗尽。
-
final局部变量成为编译期常量需同时满足:声明即初始化、类型为基本类型或String、右侧为编译期可确定的常量表达式;否则仅为普通final变量,不可用于switchcase或注解值。
-
final修饰类会阻止继承,编译期直接报错;修饰方法则阻止重写但允许调用;final类中非private方法隐式final;其限制是编译期强制的,与性能优化无关,本质是设计契约。
-
FileSystemException是操作系统权限或路径问题,非代码逻辑错误;需通过getReason()和getFile()定位具体原因,不可依赖getMessage()或instanceof判断。
-
变量命名应精准表达逻辑与业务语境,避免依赖注释补救;优先用完整单词、明确作用域、布尔值加is/has前缀、常量带单位,且需随变量演进持续重构。
-
NIO和NIO.2是Java面向缓冲区、通道与事件驱动的高性能I/O新范式;核心包括Buffer/Channel协作模型、Selector多路复用及NIO.2异步通道与现代文件操作,需注意非阻塞配置、flip/clear使用、零拷贝优化及线程模型设计。
-
printStackTrace()默认输出到System.err,但可通过PrintWriter或PrintStream重定向至文件;推荐用try-with-resources的PrintWriter写入带时间戳的告警日志,并关闭资源;更佳实践是交由Logback等日志框架处理,以支持上下文、分级、归档与脱敏。
-
Arrays.sort不能直接对任意对象数组排序,必须让对象实现Comparable接口或传入Comparator,否则抛ClassCastException;未实现Comparable时可用Comparator灵活定制排序规则,如按金额降序:Arrays.sort(orders,(a,b)->Double.compare(b.amount,a.amount))。
-
Lambda表达式默认不可序列化,仅当实现Serializable接口且不捕获非序列化变量时才可安全序列化;捕获对象引用会导致反序列化后状态丢失,需严格验证上下文一致性与类结构。
-
类职责应单一,避免“上帝类”;优先组合而非继承;字段默认private,谨慎暴露getter/setter;接口定义契约,抽象类提供共性实现;设计应映射业务稳定结构而非追求编码便利。
-
确保临时文件正确创建、安全使用并可靠删除需显式控制清理:用createTempFile生成唯一文件,deleteOnExit()适用于短生命周期程序,长期服务应即用即删并检查delete()返回值,生产环境需启动时清理遗留文件。