-
答案:安全遍历线程安全队列需根据集合类型选择策略。1.使用CopyOnWriteArrayList可获迭代快照,适合读多写少;2.ConcurrentLinkedQueue迭代器弱一致性,不保证实时性,禁止遍历时修改;3.可复制队列内容到本地集合遍历,但存在性能开销;4.阻塞队列推荐drainTo批量处理,保证原子性。应依据读写频率、实时性需求选择合适方式,避免并发修改导致不一致。
-
根本原因是Eclipse未触发Maven项目刷新或本地仓库异常,需右键“UpdateProject”并勾选强制更新,同时检查.settings、.classpath、settings.xml配置及清理.lastUpdated文件。
-
分布式登录核心是凭证统一管理与跨服务校验,推荐JWT实现无状态认证,配合Redis支持主动踢出,网关层统一鉴权并透传用户信息,兼顾高效性与可控性。
-
DelayQueue要求元素实现Delayed接口,否则poll()始终返回null;需用绝对时间戳实现getDelay()和compareTo(),并配守护线程消费任务。
-
Swing仍可用但已标记弃用,JavaFX需单独引入;二者线程模型不同(EDTvsApplicationThread),布局与打包方式差异显著,JavaFX依赖模块化且具现代UI能力。
-
Java应用异常必须过滤重写,禁止直接返回Exception.toString()或堆栈;应统一拦截转换为业务错误码+模糊提示,日志需记录完整堆栈并脱敏敏感信息,第三方SDK异常须显式捕获、安全包装且保留cause链。
-
答案是Java中switch语句用于多分支选择,支持byte、short、int、char、对应包装类、enum和String(Java7+),不支持long、float、double、boolean;基本语法为switch(表达式)匹配case值,break防止穿透,default处理默认情况;使用时需注意case值为常量、避免fall-through、default位置任意、表达式非null。
-
Desktop.getDesktop().browse()报java.awt.HeadlessException是因在无图形界面环境(如Linux无X11、Docker默认)下运行,需先调用isDesktopSupported()判断支持性,再检查isSupported(Desktop.Action.BROWSE),否则必然失败。
-
一眼看出强耦合:看是否直接依赖具体实现(如newUserServiceImpl)、硬编码字段/方法名、跨层调用、用字符串控制流程等;接口编程通过分离“做什么”与“谁做”降低耦合,使实现可替换且调用方无感。
-
局部内部类必须定义在方法或代码块内,不能出现在类成员位置;只能用abstract或final修饰,不可用访问控制符或static;可访问外部类所有成员及方法中final或“事实上final”的变量。
-
CAS是JVM通过Unsafe调用CPU硬件指令(如x86的CMPXCHG)实现的原子操作,依赖volatile保证可见性、硬件指令保证原子性;AtomicInteger.incrementAndGet()采用乐观自旋重试,高并发下可能大量失败;ABA问题需AtomicStampedReference解决;CAS仅保障单变量原子性,不可替代多字段/复合操作的锁机制。
-
答案:Java字符串操作需注意不可变性与性能优化。1.推荐使用字面量创建字符串以利用常量池,比较内容应调用equals()方法;2.通过toCharArray()和charAt()实现字符串与字符的转换;3.常用方法如trim()、substring()、replace()、split()、大小写转换等提升处理效率;4.频繁拼接应使用StringBuilder避免产生过多临时对象,提升性能。掌握这些技巧可显著提高代码质量与执行效率。
-
答案是使用Java+Servlet+JSP+MySQL+Tomcat技术栈,通过MVC分层实现用户认证、新闻增删改查及安全防护等基础功能的Web应用。
-
Java泛型不能用int等基本类型,因类型擦除机制要求类型参数必须是引用类型;基本类型需通过Integer等包装类配合自动装箱/拆箱实现,但存在GC压力、缓存陷阱和空指针风险;高性能场景应选用Trove或EclipseCollections等专为基本类型优化的集合库。
-
static变量属类且共享,类加载时初始化一次;static方法不能访问非静态成员;static块仅执行一次;static内部类不持外部类引用。