-
WebSecurityConfigurerAdapter被彻底移除,因其继承式配置僵化,无法支持响应式安全与模块化;替代方案是函数式配置SecurityFilterChain,并注意PasswordEncoder、CSRF及路径匹配等关键变更。
-
Java类加载顺序为:启动类加载器→扩展类加载器→应用类加载器,且遵循双亲委派模型;启动加载JAVA_HOME/jre/lib下核心类,扩展加载lib/ext(JDK9+废弃),应用加载-cp指定路径、CLASSPATH或当前目录,从左到右查找首个匹配类。
-
JavaAgent启动时修改的是JVM加载进内存前的字节码流,即ClassLoader.defineClass前经ClassFileTransformer处理的原始字节码;常见错误源于签名不匹配、访问修饰符误改或字段未初始化,需正确注册transformer并注意类加载时机与栈图校验。
-
Java入门靠javac编译、java运行、System.out.println输出,免费资源足够:官方API文档查方法、OpenJDK精简教程跑通HelloWorld、CodingBat练基础语法;付费课价值仅在督促完成首个Maven项目。
-
正则表达式可通过替换为空字符串高效删除字符:一、直接匹配单字符;二、用[...]匹配多个任一字符;三、用+删除连续重复字符;四、用^/$锚点删行首/尾字符;五、用1否定类删非字母数字字符。...↩
-
方法重载匹配发生在编译期,依据编译时参数类型、数量和顺序确定调用版本,遵循三阶段规则:先精确匹配与基本类型提升,再装箱/拆箱,最后可变参数;null值易致歧义,泛型重载需避免擦除后签名冲突。
-
Java8的merge方法适用于需按规则合并同key值的场景,如计数累加、字符串拼接、对象字段合并;它强制处理冲突逻辑,非putAll升级版,性能略低但语义更精确。
-
什么时候该用CyclicBarrier而不是CountDownLatch当你需要多个线程反复在某个点同步、等彼此都到达后再一起往下走,就该选CyclicBarrier;CountDownLatch是一次性倒数,用完就废,没法重用。典型场景:分段计算后汇总结果(比如4个线程各自处理一批数据,算完必须等齐了再合并统计),且这个“分段→等待→合并”流程要跑好几次——这时候CyclicBarrier的可重用性才是关键。CyclicBarrier构造时指定参与线程数,到达的线程调用aw
-
ServiceLoader通过读取META-INF/services/下以接口全限定名命名的文本文件来加载实现类,文件每行一个实现类全限定名,需严格匹配包名和大小写;load()仅解析配置,next()才触发Class.forName和实例化,使用线程上下文类加载器,默认非单例。
-
最常见原因是未正确配置spring-boot-maven-plugin或继承了非SpringBoot的parent;若用自定义parent必须显式声明该插件,否则仅生成普通jar,无BOOT-INF和Main-Class,无法java-jar运行。
-
对象创建始于new指令,JVM先加载类到方法区并生成Class对象;随后在堆中分配内存,采用指针碰撞或空闲列表策略,取决于垃圾回收器和内存整理情况;为保障线程安全,优先使用TLAB实现线程私有分配,不足时通过CAS重试保证原子性;对象内存布局由对象头、实例数据和对齐填充组成,包含哈希码、锁状态、字段值等信息,并按8字节对齐;最后设置对象头并执行构造函数完成初始化,整个过程由JVM高效管控。
-
怎么让SonarQube扫描到你的Java项目源码SonarQube默认不会自动发现pom.xml或src/main/java,它只认你明确告诉它“从哪扫”“用什么编译器”。常见现象是扫描后显示0行代码、java.lang.NoClassDefFoundError、或者连src目录都不出现在文件列表里。必须在项目根目录下运行扫描命令,且该目录要包含pom.xml(Maven)或build.gradle(Gradle)用sonar-scanner时,显式指定-Dso
-
JAR是否含module-info.class决定其路径:有则必须放--module-path,无则只能放-cp;混用会导致类加载失败或模块解析错误。
-
JAVA_HOME必须指向JDK根目录(如C:\ProgramFiles\Java\jdk-17.0.1或/usr/lib/jvm/java-17-openjdk-amd64),不可指向bin或jre子目录,否则Maven等工具会因无法识别JDK而启动失败。
-
Arrays.parallelSort从Java8引入,适用于大数组并行排序,利用多核提升性能,对小数组退化为普通sort以避免开销,支持基本类型和对象数组自定义比较,需结合数据规模与硬件环境合理使用。