-
Java9的Optional.or()用于在当前Optional为空时惰性执行Supplier获取新Optional,返回值仍为Optional<T>;正确用法是opt.or(()->Optional.of("default")),而非传入实例或非Optional值。
-
MySQL的REPEATABLEREAD通过首次查询生成ReadView并全程复用,确保事务内多次读取同一字段结果一致;同时用Next-KeyLock锁定行及间隙,防止并发写冲突和幻读,但无法自动解决应用层“先读后写”导致的逻辑丢失更新。
-
Trie树用于敏感词过滤最核心优势是一次扫描、多词匹配,时间复杂度仅O(M),远优于正则或循环匹配的O(N×M);其共享前缀结构既节省空间又加速跳转,兼顾高效性与策略扩展性。
-
位运算不直接实现幂次转换,而是支撑快速幂算法:通过b&1判断指数二进制位、b>>=1推进位、a=aa维护幂次、res=resa条件累乘,将时间复杂度降至O(logb)。
-
Thread.setDefaultUncaughtExceptionHandler未生效的根本原因是设置时机过晚或仅对后续线程生效,且主线程异常不走该处理器;需在main开头设置,并单独为主线程、线程池、框架线程(如@Async)、UI线程分别配置handler。
-
static变量属于类级别,所有实例共享同一内存空间,类加载时初始化且仅一次;不可访问this或非static成员;用于无关具体对象的数据,误用会导致数据污染和线程安全问题。
-
通过try-catch捕获InputMismatchException和NumberFormatException,确保输入类型错误时程序不崩溃;2.使用循环结合异常处理强制用户重新输入,直至提供合法数据;3.对空值、空白字符及逻辑边界(如年龄范围)进行校验,防止无效输入进入业务流程;4.利用trim()判断字符串是否为空白,并通过if语句提示修正;5.采用try-with-resources自动管理Scanner资源,避免资源泄漏;6.综合异常处理、输入验证与资源管理,提升程序健壮性与用户体验。
-
ScheduledThreadPoolExecutor是Java中用于高效执行定时或周期性任务的类,支持多线程并发和灵活调度。它继承自ThreadPoolExecutor并实现ScheduledExecutorService接口,可通过newScheduledThreadPoolExecutor(n)创建实例,指定核心线程数。提供schedule()、scheduleAtFixedRate()、scheduleWithFixedDelay()等方法安排一次性或重复任务,并返回ScheduledFuture
-
正确使用wait()和notify()需在synchronized块中调用,用while循环检查条件并及时通知,避免死锁与竞争。
-
掌握JavaMailAPI并配置SMTP参数,即可实现邮件发送功能。1.添加javax.mail依赖;2.配置SMTP服务器、端口、账号及授权码;3.使用Session、MimeMessage和Transport发送HTML邮件;4.注意SSL、认证、编码等问题。复用Session可优化性能,后续可扩展附件与模板功能。
-
String.matches()仅能基础校验邮箱格式,无法验证真实存在性;推荐正则为"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$",需预判null、空格并trim处理。
-
答案:Maven多模块项目依赖管理核心在于父POM中使用<dependencyManagement>统一版本、合理划分模块实现高内聚低耦合、通过<exclusions>排除冲突传递依赖,并利用mvndependency:tree等工具分析依赖树,结合BOM引入、版本属性化管理等策略,确保依赖一致性与项目可维护性。
-
SynchronousQueue不是队列而是“手递手”通道,因它不存储元素,offer()和poll()总失败,仅put()与take()成对阻塞同步;size()恒为0,适用于严格配对的线程间一次性数据传递。
-
StampedLock不支持直接writeLock→unlockWrite→readLock的锁降级,必须用tryConvertToReadLock()在持有写锁时尝试转换;失败则需先unlockWrite再readLock,否则出现竞态窗口。
-
forEach不支持受检异常且无容错机制,应避免在其中写核心业务逻辑;需容错时优先用for循环或map+Optional封装结果统一处理。