-
Files.deleteIfExists()不抛FileNotFoundException是因先调用Files.exists()判断,不存在则直接返回false;仅DirectoryNotEmptyException、AccessDeniedException等真实错误仍需try-catch处理。
-
Metaspace触发FullGC的真实条件是:当Metaspace使用量达到-XX:MetaspaceSize阈值时触发首次FullGC并尝试卸载类,但仅当ClassLoader被回收且其所加载的类实例全部不可达时,对应元数据才可能被卸载。
-
newWorkStealingPool()返回ForkJoinPool实例,基于工作窃取算法调度任务,不支持shutdownNow()精确中断,适用于可分割的CPU密集型任务,不适用于阻塞I/O或强依赖场景。
-
答案是:用jstack查RUNNABLE线程中是否反复出现getEntry或transfer栈帧,结合MAT分析heap.hprof确认next互指环。死循环表现为CPU100%、无异常、多线程卡在e=e.next且地址交替,根源是JDK7扩容时头插法与竞态导致A↔B环。
-
答案:通过开发在线投票应用掌握JavaWeb核心技能。该系统使用JavaServlet处理请求,JSP生成前端页面,MySQL存储投票数据,实现用户投票、防重投及结果展示功能,部署于Tomcat服务器,涵盖前后端交互、数据库操作等关键技术点。
-
ServiceLoader实现轻量级插件变量化开发的核心是配置驱动的实现切换,即通过稳定接口契约、可替换实现及META-INF/services配置文件控制启用不同插件,而非动态行为注入。
-
switch语句用于多分支选择,支持byte、short、int、char、String(Java7+)和枚举类型;每个case值必须是唯一常量,需用break防止穿透,default处理默认情况,String比较区分大小写且表达式不能为null。
-
CountDownLatch和Semaphore均基于AQS共享模式,统一通过tryAcquireShared判断放行:前者state==0返回1(仅当前线程放行),后者返回剩余许可数(可能触发后续传播);countDown()与release()均调用releaseShared(1),但state语义相反——前者递减倒计时,后者增减许可数。
-
本文介绍在Java中高效提取字符串中从起始位置到某个目标单词结尾处的子串,核心方法是结合indexOf()与substring(),避免遍历或正则开销,简洁且性能优越。
-
静态绑定在编译期确定方法调用,依据引用类型,适用于private、static、final及构造方法;动态绑定在运行时通过vtable或itable依据实际对象类型分派非私有实例方法或接口方法。
-
答案:Java实现邮件发送需引入JavaMailAPI,配置SMTP参数并使用授权码,通过封装EmailSender类调用send方法即可发送。
-
HashSet通过组合HashMap实现,所有操作委托给内部map字段,add本质是map.put(e,PRESENT)==null,去重依赖HashMap的hashCode和equals协同判断,其他方法也全部代理。
-
int转byte或short一定会发生精度丢失,因取值范围更小而强制截断高位:int→byte保留低8位(-128~127),int→short保留低16位(-32768~32767),需手动校验范围以防意外。
-
短链接服务核心是Base62编码自增ID生成唯一短码并实现高效302跳转;需解决编码冲突、并发安全、缓存穿透问题,推荐Nginx前置+SpringBoot兜底架构。
-
HashedWheelTimer不适合百万级心跳检查,因其内存模型面向中低频延时任务,百万级Timeout实例引发OOM、GC压力与任务延迟;应改用状态快照+批量扫描方案。