-
CodeCache碎片化问题的解决方案是增大CodeCache大小、使用G1GC、禁用不必要的JIT编译、定期重启JVM、启用CodeCache分区与清理机制;其核心在于解决因频繁分配释放导致的连续内存不足,而非单纯空间耗尽。353 收藏 -
final局部变量成为编译期常量需同时满足:声明即初始化、类型为基本类型或String、右侧为编译期可确定的常量表达式;否则仅为普通final变量,不可用于switchcase或注解值。424 收藏 -
final修饰类会阻止继承,编译期直接报错;修饰方法则阻止重写但允许调用;final类中非private方法隐式final;其限制是编译期强制的,与性能优化无关,本质是设计契约。287 收藏 -
FileSystemException是操作系统权限或路径问题,非代码逻辑错误;需通过getReason()和getFile()定位具体原因,不可依赖getMessage()或instanceof判断。214 收藏 -
变量命名应精准表达逻辑与业务语境,避免依赖注释补救;优先用完整单词、明确作用域、布尔值加is/has前缀、常量带单位,且需随变量演进持续重构。463 收藏 -
NIO和NIO.2是Java面向缓冲区、通道与事件驱动的高性能I/O新范式;核心包括Buffer/Channel协作模型、Selector多路复用及NIO.2异步通道与现代文件操作,需注意非阻塞配置、flip/clear使用、零拷贝优化及线程模型设计。207 收藏 -
printStackTrace()默认输出到System.err,但可通过PrintWriter或PrintStream重定向至文件;推荐用try-with-resources的PrintWriter写入带时间戳的告警日志,并关闭资源;更佳实践是交由Logback等日志框架处理,以支持上下文、分级、归档与脱敏。158 收藏 -
Arrays.sort不能直接对任意对象数组排序,必须让对象实现Comparable接口或传入Comparator,否则抛ClassCastException;未实现Comparable时可用Comparator灵活定制排序规则,如按金额降序:Arrays.sort(orders,(a,b)->Double.compare(b.amount,a.amount))。461 收藏 -
Lambda表达式默认不可序列化,仅当实现Serializable接口且不捕获非序列化变量时才可安全序列化;捕获对象引用会导致反序列化后状态丢失,需严格验证上下文一致性与类结构。493 收藏 -
类职责应单一,避免“上帝类”;优先组合而非继承;字段默认private,谨慎暴露getter/setter;接口定义契约,抽象类提供共性实现;设计应映射业务稳定结构而非追求编码便利。390 收藏 -
确保临时文件正确创建、安全使用并可靠删除需显式控制清理:用createTempFile生成唯一文件,deleteOnExit()适用于短生命周期程序,长期服务应即用即删并检查delete()返回值,生产环境需启动时清理遗留文件。229 收藏 -
反射解析注解本身不直接导致元空间泄漏,真正危险的是运行时生成带注解的新类、频繁刷新Spring上下文、热部署中ClassLoader未卸载或动态注册注解处理器等行为。393 收藏 -
双指针法可原地移除数组中目标值元素:left指向结果数组写入位置,right遍历原数组;遇非目标值则复制至left并递增left,时间复杂度O(n),空间复杂度O(1)。287 收藏 -
面向对象设计应从现实角色出发,优先定义Book、Reader、LibrarySystem三类,通过封装隔离变化,用对象协作替代流程判断,以组合和小步重构代替过早继承。235 收藏 -
应优先用Lambda替代匿名内部类,仅在需访问外部类私有字段、需自引用且只用一次时才用newSomeInterface(){...}。123 收藏