
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
策略模式” 是这个场景的设计模式层面的解决方案,而是Spring 容器层面的实现手段,两者是 “搭配使用” 而非 “互斥”;的核心价值是动态获取 Spring 容器中的 Bean,在策略模式中,它能帮我们自动收集所有策略实现类,避免硬编码;这个方案既解决了 “配置驱动默认策略” 的需求,又支持 “运行时动态切换策略”,完全不会 “死板”,是企业开发中支付 / 短信 / 物流等多渠道场景的标准落地方
java运行@Component@OverrideSystem.out.println("1. BeanPostProcessor - postProcessBeforeInitialization 执行");@OverrideSystem.out.println("4. BeanPostProcessor - postProcessAfterInitialization 执行");属性注入在 B
层级区分:klass 是 JVM 底层 C++ 结构体(方法区),Class 是 Java 层类对象(堆),实例是堆上的具体业务对象;关联逻辑:Class 对象指向 klass,实例也指向 klass,三者通过指针形成 “klass ← Class 对象、klass ← 实例” 的核心关联;访问逻辑:Java 程序操作 Class 对象,底层实际是 JVM 通过 klass 完成类信息读取和实例创
state 是一个无语义的整型变量,AQS 仅提供原子操作方法,具体语义由子类(如state = 0:锁处于空闲状态,当前无线程持有锁,新线程可尝试获取;state > 0:锁处于被持有状态,若为(可重入锁),state的值等于「当前线程重入锁的次数」(如重入 2 次则state=2释放锁时,线程需原子性减少 state 值,直到state=0,表示锁完全释放。队列关系:AQS 双向链表队列是原始
Web 项目的运行,是JVM(通用引擎)+ Tomcat(Web 专用容器)启动 Tomcat:本质是执行 Tomcat 的 Java 程序,触发 JVM 启动(Tomcat 依赖 JDK/JRE 内置的 JVM);部署 Web 项目:将 Web 项目的 WAR 包 / 目录放到 Tomcat 指定目录,Tomcat 启动时会加载项目的字节码;处理请求:Tomcat 监听 8080 端口接收 HT
JDK6:类元数据 + 运行时常量池 + 字符串常量池 都在堆的永久代;JDK7:字符串常量池迁堆,永久代保留类元数据 + 运行时常量池;JDK8永久代彻底移除,类元数据 + 运行时常量池迁本地内存的元空间,字符串常量池留在堆,静态变量迁堆的 Class 对象。
Maven 的生命周期是一套标准化的构建流程,按顺序执行,确保项目构建的一致性。插件是 Maven 实现具体功能的扩展,每个插件可以包含多个目标。
先定义一个处理数字的函数式接口,规定 “输入数字,输出处理后的数字”:java运行// 函数式接口:只有一个抽象方法(处理数字)这个接口是 “统一调用标准”,不管后续的处理逻辑是 “翻倍”“平方” 还是 “取绝对值”,都遵守这个规则。函数式接口是「单抽象方法的接口」(不是抽象类),它定义了 “方法的输入输出规则”;Lambda 不是 “重写抽象方法”,而是「直接为函数式接口的抽象方法提供方法体」,
Starter 核心是「自动化配置 + 依赖管理」,而非单纯的 “工具类包”;它的价值是遵循 “约定大于配置”,帮你省去手动引入依赖、编写配置类的繁琐工作;普通工具包只提供方法,而 Starter 能深度整合 Spring Boot,实现 “引入即能用”。简单说:Starter 是 Spring Boot 为特定场景打包的 “一站式解决方案”,工具类包只是其中的一部分(比如 Starter 里可能
做什么:老式的初始化方式,可通过或 xml 的指定;你的场景:现代开发几乎用替代,很少用,但如果配置了,会在之后执行。完整顺序:构造 → 依赖注入 → Aware 回调 → afterPropertiesSet () → @PostConstruct → init-method → Bean 就绪;核心节点:afterPropertiesSet () 是框架级配置激活,@PostConstruct







