-
应遍历NetworkInterface.getNetworkInterfaces()获取真实网卡名,按isUp()、非loopback、有MAC地址筛选;getHardwareAddress()为null时需检查权限或系统限制;获取IPv4地址时应过滤本地、链路本地、回环及APIPA地址;Windows中文名乱码需用GBK重解码。428 收藏 -
用二维数组实现配置解析,核心是将配置项定义为“字段名→默认值→类型→是否必填”的表格结构,通过遍历匹配、类型转换和嵌套展开,生成类型安全、可直接使用的键值对配置。175 收藏 -
JavaAgent的两种加载方式核心差异在于介入时机与字节码修改能力:静态加载通过-javaagent在JVM启动前执行premain,可无限制拦截类加载并增强字段访问;动态加载通过VirtualMachine.attach()触发agentmain,仅支持已注册transformer的类重转换,无法新增字段或修改继承关系,且JDK21起默认禁用。348 收藏 -
分代收集理论的核心是“对象生命周期差异显著”,实战优化关键在于:让短命对象快速回收、长命对象少被扫描、中等寿命对象不卡晋升瓶颈;需根据变量真实存活特征反向设计分配与引用方式,避免误判导致不必要的FullGC。355 收藏 -
使用BufferedReader逐行读取并计数是统计大文件行数最轻量、内存友好的方式,核心是只读不存、用int计数器、try-with-resources确保关闭资源,空行也计为一行。180 收藏 -
分代收集理论基于弱分代假说(多数对象朝生夕灭)和强分代假说(高龄对象长期存活),将堆划分为年轻代与老年代,配合记忆集解决跨代引用,并随硬件与应用演进逐步弱化分代刚性。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 收藏