java教程技术文章
-
throws用于方法签名中声明可能抛出但不处理的受检异常,如IOException、SQLException;必须在调用可能抛出受检异常且未用try-catch处理时使用,可声明多个异常并用逗号分隔,子类重写时不能扩大异常范围。243 收藏 -
AtomicLongFieldUpdater是用于对volatilelong实例字段进行无锁原子更新的工具类,基于反射+Unsafe实现CAS,要求字段为volatile、long类型、非static非final,且updater需在字段可见范围内声明。300 收藏 -
JavaFXSpinner默认在长按上下箭头时会连续快速增减,本文介绍如何通过设置setRepeatDelay(Duration.INDEFINITE)禁用自动重复触发,使长按行为与单击一致——每次按下仅变更一个步长值。279 收藏 -
Java黑名单机制核心是“拦截+校验+持久化”,应置于请求进入业务逻辑前(如Web层Interceptor、RPC层Filter、服务内敏感操作前),避免DAO层硬编码;存储依规模与实时性选型。102 收藏 -
getClass().getName()返回带包名的全限定类名,如java.lang.String;需判空调用,优先用instanceof判断类型,字符串匹配应使用getSimpleName()。166 收藏 -
LockSupport.unpark能精准唤醒指定线程,关键在于其基于permit机制:unpark发放许可,park消费许可,许可可预存不丢失;而notify/notifyAll依赖同步块和等待队列,易信号丢失且无法指定目标。430 收藏 -
Java异常类必须实现Serializable,因为Throwable实现了该接口,确保异常可跨JVM传输;未显式声明serialVersionUID会导致结构变更时反序列化失败;含非transient不可序列化字段会抛NotSerializableException。247 收藏 -
Runtime.gc()不会强制触发垃圾回收,仅是向JVM发出建议,实际执行与否由JVM决定;生产环境中调用基本无效,还可能干扰GC策略。484 收藏 -
Java要求局部变量在使用前必须明确初始化;若仅用独立if语句而无else覆盖所有可能取值,编译器无法保证变量一定被赋值,从而报错。正确做法是用if-elseif-else结构或直接初始化默认值。266 收藏 -
StructuredTaskScope是防止孤儿线程的唯一有效边界,它通过作用域契约绑定子任务生命周期,要求必须用try-with-resources配合ShutdownOnFailure/ShutdownOnSuccess,并确保子任务响应中断。270 收藏 -
Arrays.setAll()是Java8提供的函数式数组填充方法,通过IntUnaryOperator或IntFunction按索引动态生成元素,要求数组预先创建且非null,不支持依赖前项的递推逻辑。320 收藏 -
字符串常量池是堆中固定大小的StringTable哈希表(JDK1.8+默认容量60013),存储堆中字符串对象的引用;双引号创建时通过哈希定位、equals比对实现复用,newString()强制新建堆对象且不自动复用,运行时拼接字符串需显式调用intern()才可能入池。151 收藏 -
File.mkdirs()能递归创建多级目录,自动补全所有不存在的中间目录;它线程安全、跨平台处理路径分隔符,但仅通过返回值判断成败,不抛异常。210 收藏 -
Arrays.parallelPrefix()是Java8提供的并行前缀累积工具,就地执行、支持自定义二元操作,要求操作满足结合律,适用于前缀和、积、积分近似等场景。198 收藏 -
Java中~对整数执行按位取反,结果解释为有符号补码值(如~2==-3),其数值含义由数据类型(如int)的符号性决定,而非比特模式本身;机器不“自动识别”正负,而是由指令语义和类型系统共同约定解释方式。305 收藏