-
ServiceLoader加载不到实现类主因是META-INF/services位置错误或接口全限定名拼写错误;必须置于classpath根目录(如Maven的src/main/resources/META-INF/services/),文件名须为接口全限定名,内容为实现类全名,且实现类需有public无参构造器;Java9+模块化需在module-info.java中声明provides;其核心价值在于编译期解耦,运行时动态加载,支持插件扩展与多实现共存,但无优先级、条件加载等高级能力。
-
要在SpringBoot应用中监控MongoDB,核心步骤包括:1.添加Micrometer相关依赖;2.配置Prometheus注册表;3.启用Actuator端点。通过引入spring-boot-starter-actuator和micrometer-registry-prometheus等依赖,SpringBoot自动配置MongoMetricsAutoConfiguration,为MongoDB注入CommandListener以收集命令执行和连接池指标。随后,在application.yml中开
-
死锁的典型现象是Java程序卡住、线程长时间处于BLOCKED或WAITING状态且CPU使用率极低;快速检测方法包括jstack-l查看Found1deadlock、JVM启动加-XX:+PrintConcurrentLocks、JConsole检测死锁;预防手段有tryLock()超时获取、按System.identityHashCode固定顺序加锁、优先使用ConcurrentHashMap等并发工具类替代手动锁。
-
Struts2不提供类似SpringBoot的@Value或@ConfigurationProperties原生支持,但可通过struts.properties、全局资源包(struts.custom.i18n.resources)及自定义TextProvider灵活管理应用级配置项(如applicationId、timeout),兼顾可维护性与安全性。
-
Java元注解用于定义注解的行为特性,包括:@Target指定作用元素如类、方法等;@Retention控制保留阶段,如SOURCE、CLASS、RUNTIME;@Documented使注解出现在API文档中;@Inherited实现注解的继承;@Repeatable支持重复注解。
-
异常分支结构决定程序能否恢复:CheckedException强制处理以支持可预期恢复;UncheckedException默认不恢复,反映逻辑缺陷;Error不可恢复,属系统级崩溃;自定义异常通过继承关系传递恢复意图。
-
SynchronousQueue不存储元素,每个put需等待take完成,适用于线程间直接协作,如生产者-消费者模型、即时任务处理及高并发线程池等场景。
-
答案是Java中实现井字棋游戏需定义棋盘、玩家轮流下棋、判断胜负。使用二维数组存储3×3棋盘,'X'和'O'代表玩家,通过循环输入落子位置,每次落子后检查胜利条件或平局,满足则提示结果并可选择重新开始。
-
Java项目Docker化核心是运行时行为与宿主机一致:需调整本地路径、localhost硬编码、JVM参数;Dockerfile注意JAVA_HOME、ENTRYPOINT/CMD、jar路径;推荐eclipse-temurin镜像;配置须外部化,用docker-compose统一管理依赖服务及健康检查。
-
为解决Java应用日志文件过大问题,应配置日志框架实现自动切割与归档。1.使用Logback时,通过logback-spring.xml配置TimeBasedRollingPolicy和SizeAndTimeBasedFNATP策略,实现按天和按大小(如50MB)滚动日志,并设置maxHistory保留7天历史日志;2.使用Log4j2时,在配置中使用RollingFileAppender,结合TimeBasedTriggeringPolicy和SizeBasedTriggeringPolicy实现相同功
-
RejectedExecutionHandler是线程池拒绝策略的兜底接口,当工作队列满且线程数达maximumPoolSize时触发;常见于高并发日志、埋点等非核心路径,需自定义安全实现并验证生效。
-
FileNotFoundException不是运行时异常,而是IOException的子类,属于受检异常,必须显式捕获或声明throws。
-
本文介绍一种泛型方法,通过单个abs()方法统一处理String[]、Double[]和Integer[]类型数组,将其中的负数(或可解析为负数的字符串)安全转换为对应正数形式,并保持原数组类型与顺序。
-
this指向当前对象实例,用于区分成员变量与局部变量、调用本类其他构造器或传递当前对象;super用于访问父类成员,可调用父类构造器、方法或属性,两者均不能在静态上下文中使用,且构造器中this()与super()只能选其一。
-
该抛异常的三种典型场景是:违反业务规则、资源不可用且无法自动恢复、参数明显非法且非调用方可控;不该抛异常的误区包括用异常控制流程、包装异常丢失上下文、对可预期失败沉默处理。