-
Springfox3.x在SpringBoot2.6+需配置spring.mvc.throw-exception-if-no-handler-found:false且spring.resources.add-mappings:true,访问路径为/swagger-ui/;SpringBoot3.x不兼容Springfox,须迁移到springdoc-openapi。
-
SpringBootActuator的监控接口需通过权限控制、网络隔离、HTTPS加密及限制暴露端点等方式安全配置。首先,结合SpringSecurity配置拦截规则,仅允许特定角色或IP访问敏感端点;其次,将Actuator部署在内部网络或通过堡垒机访问,避免公网暴露;第三,启用HTTPS确保通信安全;第四,按需暴露必要端点,而非无差别开放全部接口。此外,可自定义HealthIndicator扩展健康检查逻辑,并利用healthgroups划分核心与非核心服务状态,实现更细粒度的健康监测。
-
不能直接在@Transactional方法里sendMQ(),因为事务提交发生在方法返回后,此时sendMQ()执行时数据库事务尚未真正落盘,导致消费者查不到数据;应使用@TransactionalEventListener(phase=TransactionPhase.AFTER_COMMIT)确保事务已刷盘后再发消息。
-
首先安装JDK并配置JAVA_HOME和PATH环境变量,再从Apache官网下载JavaSE版NetBeans安装包,安装时指定JDK路径,启动后设置项目路径、字体主题及自动编译,最后创建Java项目并运行HelloWorld测试成功。
-
答案:Java中List去重常用方法包括LinkedHashSet保持顺序、StreamAPI便捷去重、自定义对象需重写equals和hashCode、HashSet高效无序去重,应根据顺序需求和性能选择合适方式。
-
ThreadContext是Log4j2(非Java原生)提供的线程上下文工具,需引入log4j-api和log4j-core(≥2.7),配合%X{key}在PatternLayout中显式输出,且须手动清理、注意异步线程不自动继承。
-
SATB能防止漏标是因为通过pre-writebarrier捕获灰色对象删除的旧引用并重新扫描,确保初始快照中存活的对象不被误回收;但它不防浮动垃圾,因保留的旧引用可能指向已失效对象,只能留待下轮GC清理。
-
快速选择算法可在O(n)平均时间复杂度内找到无序数组中第K小元素;其通过分区操作将数组分为小于、等于、大于基准的三部分,并根据K与各区长度关系递归收缩查找范围,配合随机化基准选择避免最坏O(n²)性能。
-
Path.iterator()不解析变量目录,仅遍历路径字符串按分隔符切分后的逻辑段;需先手动展开变量(如${HOME}),再构建Path并调用iterator()。
-
双亲委派被破坏的典型场景有四类:1.线程上下文类加载器(TCCL)用于SPI加载;2.模块化容器如OSGi实现类隔离;3.JDK自身对动态代理、Lambda等的特殊处理;4.用户自定义ClassLoader主动绕过。
-
Java黑名单机制核心是“拦截+校验+持久化”,应置于请求进入业务逻辑前(如Web层Interceptor、RPC层Filter、服务内敏感操作前),避免DAO层硬编码;存储依规模与实时性选型。
-
HashMap允许null作为key和value,这是设计选择而非bug;但get()返回null时存在二义性:既可能键不存在,也可能键存在而值为null,易引发逻辑误判和偶发异常。
-
本文详解在Mockito5.0+中使用MockedStatic正确验证静态方法调用次数的方法,指出常见错误原因(如未在被测代码中实际触发静态调用),并提供可运行的完整测试示例与关键注意事项。
-
使用update-alternatives可管理多JDK版本,1.查看配置状态,2.添加JDK路径并设置优先级,3.交互式切换版本,4.验证java-version,实现灵活切换。
-
异或交换法利用a^a=0、a^0=a及结合律,通过a^=b;b^=a;a^=b三步完成整数交换,但仅适用于不同地址的整数,不适用于浮点数或同一变量。