java教程技术文章
-
局部变量表是编译期确定的字节码静态结构,不参与运行时压栈;真正压栈的是调用过程中参数、返回地址及局部变量值,它们在操作系统栈中动态分配并按固定偏移(如ebp±n)布局,可通过C+GDB实操观测。342 收藏 -
ThreadLocal通过为每个线程维护独立变量副本解决线程间数据污染,核心是“线程内单例”;需显式remove()避免内存泄漏,且子线程默认不继承其值。342 收藏 -
ConcurrentLinkedQueue的head指向哑节点、tail可能滞后,是为在无锁下安全实现offer/poll;它通过一次性节点避免ABA问题,offer性能优于poll,无界且不阻塞,不适合需容量控制或等待语义的场景。341 收藏 -
被动引用不会触发类初始化,指JVM规范中定义的不主动使用类的情形,仅进行符号引用解析而不执行<clinit>;包括编译期常量访问、子类引用父类非final静态字段、创建类数组、以及ClassLoader.loadClass或SomeClass.class获取Class对象。341 收藏 -
Character.digit()将数字字符按指定进制解析为整数,参数为码点和进制(2–36),非有效数字或超范围时返回-1;需校验结果,不适用于整串转换。341 收藏 -
Java安装包解压失败主因是java.exe残留进程、%TEMP%路径空间不足、杀毒软件拦截7z.dll或NTFS权限异常;应结束java进程、检查并清理%TEMP%、添加安全软件白名单、以管理员身份运行安装包。341 收藏 -
应优先选择ChannelInboundHandlerAdapter;SimpleChannelInboundHandler会自动释放消息,仅适用于只读场景,否则易致ReferenceCountException或ClassCastException。341 收藏 -
Metaspace触发FullGC的真实条件是:当Metaspace使用量达到-XX:MetaspaceSize阈值时触发首次FullGC并尝试卸载类,但仅当ClassLoader被回收且其所加载的类实例全部不可达时,对应元数据才可能被卸载。341 收藏 -
LinkedHashMap通过双向链表维护插入或访问顺序,遍历时按插入顺序输出;设置访问顺序后可实现LRU缓存;序列化和复制时能保留顺序,适用于配置项、有序响应、缓存等场景。341 收藏 -
Java调用OpenCV前必须确保System.loadLibrary("opencv_java455")成功,核心是native库(dll/so/dylib)路径正确、版本严格匹配、架构一致,且系统依赖完整;否则抛UnsatisfiedLinkError。341 收藏 -
Files.createTempDirectory创建安全临时工作区需指定不可预测前缀、显式设0700权限、绑定生命周期主动清理、使用专属父目录隔离,并校验目录真实性防符号链接攻击。341 收藏 -
Buffer.slice()创建共享内存视图而非复制数据,修改子缓冲区会影响原Buffer,长期持有易致脏读或崩溃;安全引用需用toString()转不可变类型、Buffer.from()创建副本或copy到预分配空间。341 收藏 -
将传统类路径项目迁移到模块路径,核心是分阶段重构代码结构与依赖关系;变量不可见主因是模块封装强制要求显式导出包,未导出的public类也无法跨模块访问,需通过exports或opens声明可见性,并正确使用--module-path替代-cp。341 收藏 -
最常用方案是JDBC+MySQL,需将连接参数抽到配置文件、用PreparedStatement防SQL注入、建表预留扩展性、字段类型与Java类型对齐、DAO封装资源、事务由Service层控制。340 收藏 -
无符号右移(>>>)将整数二进制位序列整体右移,高位恒补0,不考虑符号位,使负数转为非负大整数;需基于补码理解,注意类型提升、移位量取模及不可用于取绝对值。340 收藏