-
Observable集合让集合本身可被监听,JavaFX中用ListChangeListener响应增删改移,需循环c.next()处理批次变更;普通ArrayList无通知机制,须用FXCollections.observableArrayList创建;KO的observableArray与JavaFX均不自动响应元素属性变化,需额外配置;监听器中避免耗时操作或递归修改。
-
preHandle适合鉴权和参数预处理,postHandle仅在Controller成功执行后调用且不处理异常,afterCompletion无论成败均触发并可捕获异常;路径匹配需用PathPattern风格如/api/**;读取请求体须用ContentCachingRequestWrapper;拦截器必须由Spring容器管理而非new创建。
-
NoSuchElementException总在调用next()时抛出,因迭代器或Scanner已到末尾却未校验hasNext()或hasXXX()就强行取值;常见于混用nextXXX()与nextLine()导致换行符残留、显式迭代漏判、或Scanner状态共享未重置。
-
设计Item类封装商品信息,使用ArrayList存储并支持持久化;2.通过服务类实现增删改查操作,确保数据准确;3.使用SpringBoot提供REST接口,前端动态调用展示清单。
-
Java子线程未捕获异常会静默退出,需通过Thread.UncaughtExceptionHandler捕获;ExecutorService中Runnable异常被吞,Callable异常需Future.get()触发;推荐用自定义ThreadFactory统一设置异常处理器。
-
abstract类必须被继承才能实例化,不能直接用new创建对象;它可含普通方法、静态方法、构造器等,但抽象方法无方法体且不能为private/final/static;子类须实现全部抽象方法或声明为abstract;与interface相比,abstract类支持代码复用和“is-a”关系,而interface适合“can-do”能力及多实现。
-
JVM堆内存分代管理,非连续空间:YoungGen(Eden、S0、S1)、OldGen和Metaspace;对象优先分配Eden,触发MinorGC后存活对象复制或晋升,大对象可直接入OldGen;字符串字面量存常量池,newString("abc")仅在堆建引用对象;AllocationFailure是GC正常触发提示,非OOM;逃逸分析可能使对象栈上分配。
-
Java定义常量的核心方式是publicstaticfinal修饰符组合,配合全大写下划线命名;需在声明时或静态代码块中初始化;接口中默认字段为publicstaticfinal但不推荐;枚举更适合类型安全、具行为的常量场景。
-
Java内存模型(JMM)是一套关于共享变量读写行为的语义规范,规定线程间修改如何可见;其通过主内存与工作内存的交互流程引发可见性问题,volatile可解决可见性与有序性但不保证原子性,happens-before是判断操作顺序的唯一可靠依据。
-
ClassNotFoundException发生在类路径缺失、类名错误或依赖未引入时,需通过try-catch捕获并结合日志、默认实现或SPI机制提升动态加载稳定性。
-
ConcurrentLinkedDeque是Java中线程安全的非阻塞双端队列,基于链表结构和CAS操作实现,支持高效并发插入与删除,适用于多线程环境下的队列、栈及工作窃取场景,具备弱一致性迭代器且允许null元素,但应避免频繁调用size()及contains等遍历方法以保障性能。
-
Semaphore通过许可机制控制并发线程数,常用acquire()和release()方法实现限流,如限制3个线程同时执行任务,适用于资源池管理、接口限速等场景,需注意及时释放许可并合理设置许可数量。
-
JavaSecurityManager被禁用后,policy文件还起作用吗不起作用。从Java17开始,SecurityManager已被标记为deprecated;Java21正式移除。只要没显式启用(比如启动时加-Djava.security.manager),哪怕你写了java.policy,JVM根本不会加载它,更不会校验任何权限。常见错误现象:改了java.security里的policy.url,重启应用却没效果;或者看到AccessControlExce
-
final类不能被继承的根本原因是JVM在类加载时强制校验ACC_FINAL标记,若尝试继承则抛出VerifyError或IncompatibleClassChangeError;String被设计为final是为了保障不可变性,确保字符串常量池、HashMap/HashSet行为、安全校验等核心机制可信。
-
Java程序无法执行JDK安装,必须由操作系统完成:Linux用apt装OpenJDK、macOS用Homebrew并配置PATH、Windows用.msi安装包;IDE和构建工具需手动指定JDK根路径而非依赖PATH。