-
JDK6的substring共享原字符串char[],导致内存泄漏;JDK7u6+改为复制新数组,彻底解耦。可通过检查value.length是否等于原数组长度判断是否安全,兼容方案是newString(s.substring(start,end))。
-
JavaGC通过可达性分析(从GCRoots出发)判断对象是否为垃圾,而非引用计数;新生代用复制算法因存活率低,老年代用标记-整理避免碎片;软/弱/虚引用仅影响回收时机,不改变可达性。
-
本文详解如何在Kotlin中实现多层级、非字典序的自定义排序逻辑,包括按预设优先级分组、城市顺序、逆字母街道名及正序姓名的复合排序,并提供可直接复用的安全、可读、可维护的代码实现。
-
构造方法可以且必须重载以支持不同初始化场景;需参数列表不同,调用用this()且须首行,禁循环调用,无显式构造时才有默认无参构造,不可返回值但可return提前退出。
-
在Java中,使用Comparator.comparing结合thenComparing可实现多字段排序,如按name升序再按age升序:people.sort(Comparator.comparing(Person::getName).thenComparing(Person::getAge))。
-
本文介绍如何在Java中高效判断一个可能超过long范围的正整数(以字符串形式给出)是否为2的幂,避免类型溢出与高开销转换,提供两种纯字符串模拟算法及优化思路。
-
该用::而非lambda当且仅当lambda体仅调用一个已有方法且参数数量、顺序、类型完全对齐;否则语义错位或编译失败。
-
SeleniumWebDriver本身不提供原生的“窗口关闭事件监听”机制,无法像Swing的WindowListener那样实时捕获用户手动关闭浏览器窗口的动作;但可通过轮询检测UnreachableBrowserException异常来间接判断会话是否已失效。
-
Java字符串+拼接在编译期仅对常量字面量直接合并为单个字符串,对局部变量则优化为StringBuilder调用;循环中动态拼接不会优化,需显式使用StringBuilder避免性能问题。
-
使用接口与依赖注入实现松耦合:1.接口定义行为,分离“做什么”与“怎么做”;2.依赖注入传递实现,避免类内直接new对象;3.Spring框架通过@Autowired自动装配,简化配置;4.松耦合提升可维护性、可测试性,支持灵活替换实现,符合开闭原则。
-
ConcurrentHashMap默认loadFactor为0.75是工程权衡最优解,兼顾哈希冲突概率、内存占用与扩容开销;过高(如0.9)加剧碰撞、锁争用与树化开销,过低(如0.5)则浪费内存、增加扩容频次且损害缓存局部性。
-
Eclipse高效开发需掌握核心快捷键与工作空间设置:Ctrl+Space补全、Ctrl+Shift+R/T查资源/类、Ctrl+O定位成员、F3跳转声明、Ctrl+1快速修复;工作空间须独立使用、定期清理、设UTF-8编码与LF换行符。
-
ClassCircularityError是JVM在类加载链接阶段检测到类定义存在直接或间接自引用时主动抛出的LinkageError,不抛StackOverflowError因其发生在字节码执行前、无递归调用栈。
-
Redis预减库存必须用DECRBY而非GET+SET,因后者存在竞态条件导致超卖;DECRBY原子性防超卖,需配合EXISTS校验key存在、检查返回值是否为负、Lua脚本封装操作,并在DB层用WHEREstock>0二次校验。
-
使用Enum管理异常码可实现类型安全、编译期校验、IDE自动补全,并支持绑定HTTP状态码、可重试性等行为;通过code键+MessageSource动态解析多语言消息,避免硬编码;需正确注入MessageSource并传入Locale与参数,HTTP状态码应按语义严格对齐。