java教程技术文章
-
分代收集理论基于弱分代假说(多数对象朝生夕灭)和强分代假说(高龄对象长期存活),将堆划分为年轻代与老年代,配合记忆集解决跨代引用,并随硬件与应用演进逐步弱化分代刚性。294 收藏 -
SATB能防止漏标是因为通过pre-writebarrier捕获灰色对象删除的旧引用并重新扫描,确保初始快照中存活的对象不被误回收;但它不防浮动垃圾,因保留的旧引用可能指向已失效对象,只能留待下轮GC清理。103 收藏 -
lockInterruptibly()仅在等待锁时响应中断,成功获取锁后不检查中断状态;必须配合try-catch处理InterruptedException,恢复中断标志并清理资源;需用isHeldByCurrentThread()判断是否持锁再unlock。122 收藏 -
Java中Object.hashCode()默认实现不直接返回内存地址,而是首次调用时基于对象内存地址(或线程相关随机数)生成并缓存在对象头中的32位不可变整数,后续调用直接返回该值。293 收藏 -
JPMS不直接解决Jar冲突,而是通过模块边界、强封装和显式依赖从架构上切断classpath冲突根源:自动模块命名隔离、exports限制包可见性、编译期报错同名包导出冲突。150 收藏 -
滑动窗口最大值用双端队列存下标以维护单调递减序,头部始终为当前窗口最大值下标;需剔除过期下标和小于新元素的旧下标;前k−1步建队不输出,结果数组长n−k+1。225 收藏 -
volatile修饰的变量在i++场景下线程不安全,因为i++包含读、改、写三步非原子操作,volatile仅保证可见性和禁止部分重排序,无法避免竞态条件。125 收藏 -
只有满足编译期常量条件的staticfinal变量才会被内联:即基本类型或String字面量、声明时直接初始化、值在编译期可确定;否则不内联且会触发类加载。436 收藏 -
因为SequenceInputStream的构造器接收Enumeration,若该Enumeration在首次遍历后已耗尽,则后续文件无法读取;需确保每次调用都提供未耗尽的新Enumeration实例。500 收藏 -
本文介绍如何让Android应用在不重新编译的前提下,为不同企业租户动态连接各自的FirebaseRealtimeDatabase实例,避免敏感数据集中存储,并提供安全、可扩展的多租户实现方案。121 收藏 -
Linux文件权限八进制表示(如755)本质是三个3位二进制数拼接,每位对应r=4、w=2、x=1的开关状态,天然适配位运算;755即111101101,分别表示用户rwx、组r-x、其他r-x,位或(|)添加权限、位与加取反(&~)清除权限才是安全操作方式。351 收藏 -
直接用Status.values()配合for-each循环最高效安全;Stream因每次values()都新建数组,易致GC压力与性能下降,仅在批量复用时宜缓存List后使用。335 收藏 -
EOFException不是正常结束信号,而是表示流被意外截断,如网络断开、文件被删或序列化中断;将其当作正常退出会掩盖真实故障,仅在可控且允许非对称结束的极少数场景下才可捕获处理。150 收藏 -
public类可被任何类访问,且文件名需与类名一致;2.默认修饰符使类仅在包内可见,适用于内部辅助类;3.顶层类不支持private和protected,仅成员可用。289 收藏 -
可以使用逻辑异或(^)实现int、long等基本整数类型的原地交换,依赖a^a=0和a^0=a恒等式;但不适用于BigInteger(不可变、不支持位运算符重载)和Integer(不可变、需拆箱装箱),且存在可读性差、未定义行为等缺陷,实际推荐用临时变量。216 收藏