-
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主动绕过。
-
顺序栈用top跟踪栈顶,top=-1时data[0]为首个入栈位,入栈先++top后赋值,出栈先取data[top]再--top;top=0时入栈先赋值后++top,出栈先--top再取data[top-1];所有操作须严格判空判满防越界。
-
构造方法不能有返回类型,因其设计目的是初始化对象而非返回结果。语法规则要求构造方法名与类名相同、无返回类型(包括void)、可重载且由new自动调用;若添加返回类型,将被视为普通方法,破坏对象创建机制的清晰性与可靠性。
-
wait/notify必须在synchronized块中调用,否则抛IllegalMonitorStateException;推荐用while而非if防虚假唤醒;Condition提供更清晰的等待队列;BlockingQueue是生产者-消费者首选;volatile不能替代同步机制。
-
JavaStream无显式Pipeline类,其流水线机制由惰性中间操作和触发执行的终端操作构成;应优先用无状态操作、前置filter、拆分长链路,并避免重复消费、修改集合、误用并行流与peek。
-
SpringBoot3.0+需用Freemarker2.4.0+以兼容JakartaEE,配置需指定模板路径、编码和共享变量,Java对象访问须遵循BeanWrapper规则,路径问题优先检查classpath加载策略。
-
在Java等高级语言中,所有数据结构最终都基于数组或链式结构(即内存块与指针引用)实现;而从计算机底层看,二者可统一归约为“连续内存块”与“地址偏移”,本质上是同一物理内存的不同抽象方式。