java教程技术文章
-
Java变量生命周期由类型、作用域和引用关系共同决定,并绑定JVM内存分区:基本类型局部变量存栈中,随方法进出而创建销毁;引用变量本身在栈、所指对象在堆;成员变量随对象存堆,静态变量存方法区/元空间;JVM还支持逃逸分析与活变量优化,使对象可提前被GC回收。348 收藏 -
下界通配符(?superT)不适用于ExecutorService.submit(Callable<T>)场景,因其要求Callable具有确定返回类型以构造类型安全的Future<T>,而?superT无法满足函数式接口call()方法的具体返回类型要求。348 收藏 -
必须用while而非if检查条件,因为notify()不保证唤醒线程立即获锁,且wait()返回后条件可能已被修改;if会导致虚假唤醒或竞态丢失,while可确保每次唤醒后重新验证状态。348 收藏 -
BigDecimal.divide抛ArithmeticException的常见原因有四:一是除零;二是未指定精度和舍入模式导致无限小数;三是指定了UNNECESSARY舍入但结果无法精确表示;四是divideToIntegralValue在无法整除时部分JDK版本异常。348 收藏 -
containsKey方法用于判断Map是否包含指定键,返回true表示键存在、false表示不存在;它只检查键而非值,即使键对应值为null也返回true,且要求Map已初始化、键的equals与hashCode一致。347 收藏 -
HashSet做拼写检查更快因平均查找复杂度O(1),而列表为O(n);10万词库中查找错词,前者近瞬时,后者平均比对5万次,前提词库稳定、只判存在性且无需顺序或频次。347 收藏 -
需删除所有-XX:MaxPermSize和-XX:PermSize参数,替换为-XX:MetaspaceSize和-XX:MaxMetaspaceSize,并排查ClassLoader泄漏导致的MetaspaceOOM。347 收藏 -
本文介绍如何通过WebViewClient拦截网络错误,在主域名不可访问时自动切换至备用域名,适用于因地区网络策略导致的合法网站访问受限场景。347 收藏 -
Xms与Xmx应设为相同值以避免运行时堆扩容卡顿。因初始堆过小会导致频繁向系统申请内存,引发数十至数百毫秒STW;需基于监控used峰值的1.2–1.5倍设定,并确保不超过容器内存限制的75%。347 收藏 -
try-catch后代码是否继续执行取决于异常是否被捕获及catch块内操作:未捕获或主动throw则终止,否则继续执行后续语句;finally几乎总执行,但System.exit()或JVM强制终止会跳过;多catch须子类在前、父类在后;空catch极危险,应记录日志或明确注释。347 收藏 -
ThreadLocal不能直接new使用,因其值与线程绑定且线程复用时不自动清理,易致数据错乱或内存泄漏;须staticfinal声明、显式remove()、避免存大对象,异步场景推荐TransmittableThreadLocal。347 收藏 -
Mixin必须与目标类结构严格匹配,方法、字段、构造器签名需完全一致;否则Jackson会退回到默认反射逻辑并报错。347 收藏 -
模块化系统不能直接限制Unsafe操作,但能提高滥用门槛和可检测性:通过封装隐藏访问路径、显式声明opens权限、隔离专用模块、启用非法访问禁止策略,并用VarHandle等标准API替代。347 收藏 -
ConcurrentHashMap比Hashtable和synchronizedMap更快,因其采用分段锁(JDK7)或CAS+synchronized锁单个Node(JDK8+),读操作无锁、写操作仅局部加锁;而后者均使用全局锁,高并发下严重串行化。347 收藏 -
MinIO连接失败主因是服务未启动或监听地址错误;默认仅监听localhost:9000,需用--address显式绑定IP;客户端endpoint须为完整无路径URL;bucket需显式创建且命名合规;SpringBoot需统一OkHttp版本。347 收藏