- 博客(94)
- 资源 (3)
- 收藏
- 关注
原创 07_JVM 双亲委派机制
双亲委派机制是Java类加载的核心规则,通过"父加载器优先"原则确保类加载的安全性和有序性。在Java 17中,类加载器层级调整为:启动类加载器→平台类加载器→应用类加载器→自定义类加载器。工作流程采用递归委托方式,从子加载器逐级向上委托,若父加载器无法加载再由子加载器处理。该机制具有单向委托、父优先加载和类唯一性三大原则,能有效防止核心类被篡改(如禁止自定义java.lang包)。代码演示验证了核心类由启动加载器处理,并展示了完整的加载器层级关系,体现了Java对系统安全性的严格把控。
2026-02-12 17:22:32
574
原创 06_Java 类初始化(Initialization)
摘要 类初始化是Java类加载的最后一步,通过执行编译器生成的<clinit>()方法完成静态变量赋值和静态代码块执行。<clinit>()由编译器自动合并静态变量赋值和静态代码块生成,与实例构造器<init>()不同,它只在类首次被主动引用时触发。使用jclasslib工具可分析字节码验证初始化顺序,如静态变量和代码块按源码顺序执行。类初始化仅在主动引用时触发,包括创建实例、访问静态成员、调用静态方法等场景,而访问编译期常量等被动引用不会触发初始化。
2026-02-09 02:06:27
825
原创 05_Java 类加载过程
本文概述了Java类加载机制的核心原理和实现方式。类加载过程分为加载、链接、初始化、使用和卸载五个阶段,其中加载阶段将字节码转换为Class对象。文章详细介绍了类加载器的层次结构(启动类加载器、扩展类加载器、应用类加载器)和双亲委派模型,该模型保证了类的唯一性和核心类库安全。此外,还讲解了自定义类加载器的应用场景和实现方法,通过重写findClass()而非loadClass()来遵循双亲委派原则。最后提供了完整的自定义类加载器代码示例,包括从磁盘路径加载字节码并转换为Class对象的具体实现。
2026-02-07 17:03:54
811
原创 04_JVM 类加载子系统与内存结构
类加载子系统是JVM的核心组件,负责将.class文件加载到内存并转换为可执行的Java类。其生命周期包含7个阶段:加载→验证→准备→解析→初始化→使用→卸载,其中前5个阶段最为关键。类加载采用双亲委派模型,通过启动类、扩展类和应用类加载器的层级关系确保类加载的安全性和唯一性。运行时数据区则分为线程共享区(堆和方法区)和线程私有区(程序计数器、虚拟机栈等),共同构成JVM执行代码的载体。堆是最大内存区域,采用分代设计优化GC效率。
2026-02-05 01:46:29
973
原创 03_JVM(Java Virtual Machine)的生命周期
JVM的生命周期对应一个独立运行的Java程序进程,包括启动、运行和终止三个阶段。启动阶段通过java命令创建JVM实例,加载核心类库并初始化主类;运行阶段执行main方法,管理内存、线程和垃圾回收等资源;终止阶段分为正常退出、显式调用、异常终止和外部强制终止四种方式,可通过关闭钩子实现资源清理。整个生命周期中,JVM负责类加载、内存管理、线程调度等核心功能,确保Java程序的安全执行。
2026-01-30 02:37:06
920
原创 02_JVM 架构模型中“栈式”与“寄存器式”指令集架构
摘要:指令集架构分为栈式和寄存器式两类,核心差异在于操作数的寻址方式。栈式架构(如JVM)通过软件模拟的操作数栈传递数据,具有跨平台性强、设计简单等优势,但执行效率较低;寄存器式架构(如x86/ARM)直接操作硬件寄存器,执行效率高但依赖特定硬件。JVM选择栈式架构以实现"一次编写,到处运行"的目标,并通过JIT技术弥补性能短板。现代技术正推动两种架构的融合,如GraalVM的AOT编译和LLVM的虚拟寄存器设计。选择架构本质是跨平台性与执行效率的权衡,需根据具体场景决定。记忆口诀概括了
2026-01-26 17:36:18
632
原创 01_ JVM 核心架构详解
JVM(Java虚拟机)是Java跨平台运行的核心,由五大组件协同工作:类加载器子系统负责安全加载字节码;运行时数据区管理程序运行时的内存数据;执行引擎将字节码转换为机器指令;本地方法接口实现Java与C/C++交互;垃圾回收器自动管理内存回收。JVM采用双亲委派模型确保类加载安全,通过分代设计优化GC效率,并混合使用解释器和JIT编译器平衡性能。运行时数据区分为线程共享区(堆、方法区)和私有区(栈、程序计数器),其中堆采用分代模型管理对象生命周期。
2026-01-23 17:42:17
1013
2
原创 流程架构的解耦与进化设计
本文探讨业务流程系统的耦合困境及解耦方案。传统流程设计中,业务逻辑与流程执行深度耦合,导致修改成本高、维护困难。提出三元解耦架构:收敛节点类型(4种核心)、外置流转规则、内聚循环执行引擎。通过层级架构设计(PUB/IND/TEN三级)实现通用与个性化的平衡,支持动态下跳规则、节点适用范围管控等特性。JSON配置规范作为核心中枢,严格定义节点标识、动态跳转等关键字段。该方案融合拓扑图思想,将静态结构转化为灵活执行业务流程,实现"结构稳定、业务灵活"的目标。
2025-11-06 17:44:23
795
原创 从 Tool Calling 到 MCP
大模型技术正向生产力工具转型,Tool Calling技术解决了模型联动外部能力的问题,而MCP协议则进一步统一了工具调用生态。本文系统梳理了两者的技术逻辑:Tool Calling通过结构化指令实现模型与外部工具的协同工作,MCP则构建了标准化的模型-工具-应用协同体系。重点解析了MCP的C/S架构实践,包括协议网关、元数据中心等核心组件,实现了工具热插拔、全链路管控等优势。两者的结合推动大模型应用从单点工具调用向复杂场景协同升级,为企业业务流程自动化提供了更高效、可控的解决方案。
2025-10-23 01:59:52
885
原创 LLM 与 RAG:AI 语言技术的核心搭档
本文介绍了AI语言技术的两大核心技术支柱——LLM(大语言模型)和RAG(检索增强生成)。LLM通过海量数据训练掌握语言能力,擅长自然语言生成但存在知识时效性不足等问题;RAG则通过检索外部知识库增强回答准确性,弥补LLM的不足。两者不是替代关系,而是互补协作:LLM提供核心生成能力,RAG确保事实准确性和知识更新。这种"LLM+RAG"的组合已成为当前AI应用的主流方案,既保留语言生成优势,又满足实际场景的可靠性需求。
2025-10-23 01:50:26
773
原创 RedisStack 简介
RedisStack 是 Redis 官方打包的增强版发行版,预装了向量检索、JSON 存储等核心模块,开箱即用。它基于 Redis 核心,通过 Redisearch、RedisVL 等模块支持向量检索、全文搜索等高级功能,适用于中小规模场景。相比普通 Redis,RedisStack 提供一站式解决方案,无需手动安装模块;相比专业向量数据库,它更轻量、易用,学习成本低,适合实时性要求高的应用,如智能客服、商品推荐等。但需注意单机向量规模建议控制在 100 万以内,并合理配置内存和持久化策略。RedisSt
2025-10-23 01:46:16
831
原创 读懂向量、文本向量化与向量数据库
AI世界的"数据语言体系"依赖于向量、文本向量化、向量维度优化和向量数据库四大核心技术。向量是将复杂事物转化为数字标签的基础工具;文本向量化通过词嵌入模型让AI理解语义;维度优化需平衡信息完整性和计算效率;向量数据库则能基于语义相似性快速检索。这套技术链让AI从机械匹配进化为语义理解,支撑了精准推荐、智能搜索等日常应用场景。掌握这一逻辑,就能理解AI如何通过数字语言实现"懂你"的交互体验。
2025-10-23 01:44:07
761
原创 持久化输出与 ChatMemory
AI 持久化输出与 ChatMemory 技术解析 AI 持久化输出和 ChatMemory 是智能对话系统的核心,分别解决数据长期存储和上下文管理问题。 持久化输出通过数据库、文件或向量存储实现对话记录的可追溯性,支持审计合规与数据分析。ChatMemory则动态管理对话历史,通过内存、数据库或混合存储优化上下文理解,结合摘要提取、向量检索等技术提升回复准确性。两者协同工作,确保对话连贯性,同时需平衡性能、隐私与多模态扩展等挑战。未来趋势包括异步优化、联邦学习及跨模态支持。
2025-10-21 16:23:09
851
原创 解析 Prompt 工程中的四大核心角色
摘要: Prompt工程通过系统角色(定义AI行为准则)、用户角色(明确需求输入)、工具角色(扩展AI能力)和响应处理角色(优化输出结果)四大核心角色协同工作,实现高效人机交互。系统角色设定AI身份与输出规范,用户角色传递需求与上下文,工具角色调用外部系统获取实时数据,响应处理角色优化最终输出。代码示例展示了Spring AI中如何实现角色分工,如法律助手角色定义、多轮对话上下文管理、天气API工具调用等,体现LLM应用的交互骨架与设计原则。 代码地址
2025-10-21 02:06:47
789
原创 Spring AI 简单调用
本文介绍了Spring AI的调用机制与技术实现,包括分层架构设计、模型客户端注册和配置绑定方法。详细解析了Ollama本地模型集成指南,对比了ChatClient与ChatModel的功能差异,并展示了流式输出的实现原理与性能优化策略。最后探讨了多模型共存与动态切换的配置方案,通过@Qualifier注解实现不同模型的灵活调用。全文涵盖了从基础配置到高级应用的完整技术方案。
2025-10-15 18:29:15
498
原创 深入 Spring 事件机制
摘要:Spring事件机制基于观察者模式,通过解耦业务模块实现间接通信。本文解析了其核心组件(事件、发布者、监听器、多播器)和同步/异步实现原理。同步机制依赖主线程执行监听逻辑,而异步改造通过配置线程池和自定义多播器实现任务并行处理。文章还介绍了使用@EventListener简化监听器实现的方法,并提供了代码示例展示完整事件流转逻辑。
2025-10-14 01:46:52
673
原创 深入 Spring 依赖注入底层原理
本文深入解析Spring依赖注入(DI)的核心机制,从底层组件到复杂场景实现。首先介绍了Spring DI的三大核心组件:DefaultListableBeanFactory、DependencyDescriptor和ResolvableType,它们是所有注入逻辑的基础。随后详细拆解了字段注入、延迟注入(ObjectFactory与@Lazy的区别)以及Optional注入的实现原理。在复杂场景部分,重点分析了数组/List注入的批量处理机制、通过ResolvableType解决泛型匹配问题,以及Appl
2025-10-13 19:06:22
698
原创 Spring 组件扫描底层:@Indexed 注解如何让大型项目启动提速 50%?
本文解析了Spring项目中@ComponentScan扫描性能瓶颈及@Indexed注解的优化原理。通过将运行期遍历类路径的耗时操作转为编译期生成索引文件(META-INF/spring.components),@Indexed可显著提升启动速度。核心在于ClassPathBeanDefinitionScanner优先读取索引,避免全量扫描。使用时需注意:索引自动生成不可手动修改、存在索引时严格按索引扫描、兼容依赖jar包的索引文件。该方案特别适合大型项目,能叠加提升模块扫描效率,但需确保所有组件正确标注
2025-10-13 09:10:36
1019
原创 Spring @Value 注解底层原理
本文深入解析了Spring中@Value注解的底层工作机制,介绍了其四大核心组件:ContextAnnotationAutowireCandidateResolver负责提取表达式,Environment处理${}占位符,BeanExpressionResolver解析SpEL,TypeConverter完成类型转换。通过四个典型场景分析,包括环境变量解析、字面量转换、SpEL引用Bean和混合表达式处理,揭示了Spring处理@Value的固定流程:先解析${}再处理SpEL,最后进行类型转换。文章配有实
2025-10-13 09:10:13
1002
原创 Spring 中 FactoryBean与 BeanPostProcessor 的深度解析
本文深入剖析了Spring框架中两个核心接口FactoryBean和BeanPostProcessor的工作原理与应用。FactoryBean作为Bean工厂接口,通过getObject()方法自定义Bean创建逻辑,支持单例/原型模式,在MyBatis等第三方库集成中发挥关键作用。BeanPostProcessor则作为Bean增强器,在Bean初始化前后插入统一逻辑,广泛应用于AOP代理、属性验证等场景。文章还特别分析了BeanPostProcessor对FactoryBean产物的特殊处理机制,帮助开
2025-10-13 09:09:40
1005
原创 深入 Spring AOP 底层原理:从代理机制到方法增强边界
摘要: Spring AOP的核心机制是动态代理,通过JDK动态代理或CGLIB代理实现方法增强。代理对象与目标对象分离,依赖注入和初始化仅作用于目标对象,代理负责拦截和转发调用。增强存在局限性:final方法、static方法以及private方法无法被增强。开发中应避免直接访问代理字段,方法设计需避开增强禁区,自调用时可通过AopContext获取代理对象。理解代理机制与增强边界是掌握Spring AOP的关键。
2025-10-13 08:24:48
1168
原创 深入 Spring 条件化配置底层:从硬编码到通用注解的实现原理
Spring条件化配置是其核心特性,通过Condition接口、@Conditional注解和ConfigurationClassPostProcessor三大组件实现动态配置。基础版通过硬编码Condition判断类路径是否存在特定类(如Druid),决定配置是否生效;进阶版通过自定义@ConditionalOnClass注解和通用ClassExistenceCondition,实现灵活的条件判断。关键在于Spring会在解析配置类时执行Condition.matches()方法,根据结果决定是否跳过该配
2025-10-11 18:21:05
621
原创 Spring Boot自动配置:原理、利弊与实践指南
Spring Boot自动配置通过"约定优于配置"思想,基于@EnableAutoConfiguration注解、SpringFactoriesLoader机制和@Conditional条件注解三大支柱实现。它自动扫描依赖和环境,智能推断需求并配置组件,大幅简化开发流程。这种机制虽提升效率,但也存在调试复杂、灵活性受限等问题。理解其底层原理有助于开发者合理利用自动配置,在简化开发与保持控制权间取得平衡。
2025-10-10 18:01:37
1025
2
原创 嵌入式 Tomcat 与 Spring MVC 集成
本文将深入解析Spring Boot内嵌Tomcat的启动原理与实现机制。文章从Tomcat核心架构切入,对比传统部署与嵌入式场景的差异,重点分析Tomcat实例创建、Connector配置、Context构建等关键步骤。通过代码示例揭示NIO2协议选择、Spring容器独立初始化、Servlet 3.0动态注册等核心技术点,最终阐明Tomcat启动流程与主线程保活机制。全文从代码实现到底层原理,系统性地拆解嵌入式Web应用的运行本质,帮助开发者深入理解Spring Boot内嵌服务器的技术实现。
2025-10-04 23:39:40
899
原创 深入理解 SPI:从定义到 Spring Boot 实践
本文深入解析了SPI(服务提供者接口)机制,重点对比了Java原生SPI和Spring SPI的实现差异。SPI通过接口定义与实现分离的机制,使系统能够在不修改源码的情况下灵活接入新服务实现。Java原生SPI基于ServiceLoader类实现,但存在强制加载所有实现类、不支持依赖注入等局限性。Spring SPI通过自定义SpringFactoriesLoader进行增强,优化了配置文件格式(spring.factories键值对)、支持按需加载和依赖注入,并与Spring环境深度集成。这两种SPI机制
2025-09-29 17:14:14
1370
2
原创 Spring Boot 核心启动机制与配置原理剖析
本文深入剖析了Spring Boot自动配置的底层机制,重点解析了环境增强层的核心实现。通过EnvironmentPostProcessor接口,Spring Boot在环境初始化后动态添加配置源和功能,如加载application.properties和生成随机值。文章详细演示了基于事件驱动的后处理器执行链,包括SpringApplication实例创建、监听器注册、事件发布等关键步骤。同时提供了手动触发后处理器进行调试的方法,帮助开发者更深入理解Spring Boot启动流程的内部工作原理。
2025-09-29 16:01:57
854
原创 深入 Spring MVC 底层原理:从传统控制器到函数式编程与静态资源处理
本文深入剖析Spring MVC的核心架构与工作原理,从设计模式角度解析其三大组件(HandlerMapping、HandlerAdapter、Handler)的协作机制。文章首先介绍Spring MVC基于前端控制器和责任链模式的宏观架构,重点分析传统控制器模式中BeanNameUrlHandlerMapping的映射机制和SimpleControllerHandlerAdapter的适配逻辑,并对比了@Component和@Bean两种控制器注册方式的实现差异。随后探讨了函数式控制器模式,解析Route
2025-09-23 02:13:35
760
原创 深入 Spring Boot 异常处理底层机制
Spring Boot 异常处理机制解析 Spring Boot 异常处理遵循"异常捕获-规则匹配-响应生成"流程,涉及多个核心组件协同工作。DispatcherServlet捕获异常后,ExceptionHandlerExceptionResolver优先匹配局部@ExceptionHandler方法,未匹配时查找@ControllerAdvice全局处理器,最终由BasicErrorController兜底处理。关键组件包括负责错误页注册的ErrorPageRegistrar和收集错
2025-09-17 02:42:18
1374
2
原创 深入 Spring MVC:MessageConverter 与 ResponseBodyAdvice
Spring MVC中的HttpMessageConverter和ResponseBodyAdvice是两个关键组件:前者负责HTTP消息体与Java对象的双向转换(如JSON/XML),后者用于响应体增强。HttpMessageConverter通过canRead/canWrite判断类型支持,read/write方法实现转换。常用的MappingJackson2HttpMessageConverter支持JSON处理,MappingJackson2XmlHttpMessageConverter处理XML
2025-09-16 02:03:20
1111
原创 深入 Spring MVC 返回值处理器
本文深入剖析了Spring MVC返回值处理机制的核心原理与实现细节。主要内容包括: 核心组件解析:HandlerMethodReturnValueHandler接口、组合处理器、模型视图容器和消息转换器的协作机制 设计模式应用:策略模式与链模式的结合实现灵活扩展 完整工作流程:从容器初始化、方法执行到返回值处理和视图渲染的完整链路 典型处理场景:详细分析@ResponseBody和ModelAndView两种典型返回值的处理逻辑 文章通过组件职责说明、关键代码片段和流程图解,系统性地揭示了Spring M
2025-09-14 18:45:20
773
原创 深入 Spring MVC 底层:控制器方法执行流程与参数绑定原理解析
本文深入解析了Spring MVC框架的底层工作原理,从核心组件到执行流程全方位剖析。重点阐述了HandlerMethod作为控制器方法的元信息封装器,以及参数解析器、数据绑定工厂和模型容器这"三驾马车"的协同机制。通过模拟Spring上下文初始化和HTTP请求处理,还原了控制器方法从接收请求到返回响应的完整9步执行链路,包括初始化容器、查找处理器、参数绑定、方法执行等关键环节。文章穿透了Spring MVC的封装层,揭示了自动参数绑定和灵活响应处理背后的实现逻辑,为深入理解框架原理提供
2025-09-10 19:50:52
668
原创 Spring MVC 增强机制底层原理
Spring MVC 增强机制的核心是「全局复用、局部定制增强类型执行顺序优先级规则作用范围全局 → 局部局部覆盖全局(后执行)全局:所有控制器;局部:当前控制器全局 → 局部局部覆盖全局(后执行)全局:所有控制器;局部:当前控制器局部 → 全局 → 兜底局部优先(就近原则)全局:所有控制器;局部:当前控制器。
2025-09-10 03:05:03
586
原创 Spring MVC 类型转换与参数绑定:从架构到实战
摘要: Spring MVC通过一套分工明确的转换体系解决前后端数据格式差异问题,核心是ConversionService统筹管理Converter(单向转换)和Formatter(双向格式化),并兼容旧系统的PropertyEditor。组件注册流程由WebAppInitializer启动Servlet容器并初始化Spring上下文,ConversionConfig配置类负责将自定义转换器注册到FormattingConversionService,实现全局调用。该机制通过适配器模式无缝衔接新旧系统,高效
2025-09-09 02:02:31
794
原创 深入 Spring MVC 参数解析底层原理:从自定义实现到源码级剖析
本文深入解析了Spring MVC参数解析机制,从核心接口HandlerMethodArgumentResolver入手,剖析了参数解析的整体流程:请求映射→解析器匹配→参数解析→方法调用。通过自定义ArgumentResolver接口设计了支持组合模式的参数解析器,包含叶子解析器(如PathVariableResolver、RequestParamResolver)和组合解析器CompositeArgumentResolver。重点分析了路径变量和请求参数的底层提取逻辑,揭示了Spring如何将HTTP请
2025-09-07 03:49:59
894
原创 深入 Spring MVC 底层:从 DispatcherServlet 到自定义组件的全链路解析
Spring MVC核心架构解析 摘要:Spring MVC采用前端控制器模式,以DispatcherServlet为核心调度中心,配合九大策略组件实现请求处理全流程。其核心架构包含: DispatcherServlet - 请求分发中枢,初始化时加载九大组件 RequestMappingHandlerMapping - 实现请求到处理器的精准映射,支持多维度匹配条件 HandlerAdapter - 统一处理器调用方式,支持自定义参数解析 组件间协同工作形成完整的请求处理管道,设计上通过策略接口实现高度可
2025-09-04 13:19:20
886
原创 营销工作台整体设计-未来规划以及当前实现
本文档介绍了一个基于JSON模板和反射机制的合同管理系统设计方案。系统采用多租户架构,支持合同全生命周期管理,包括起草、审批、下达和履约等环节。核心设计思想是通过JSON模板配置业务逻辑,利用反射机制动态执行。系统架构分为表示层、业务逻辑层和数据层,包含模板解析引擎、反射执行器等核心模块。JSON模板规范定义了字段映射、验证机制和动态类加载等功能,支持自定义表单类型和复杂校验。系统通过反射和缓存优化实现高效执行,为合同管理提供了灵活的配置方案。
2025-09-02 01:31:39
774
原创 基于 Spring AMQP 的 RabbitMQ 分布式消息系统实战
RabbitMQ作为分布式系统的消息中间件,通过三种交换器模式(Direct精确路由、Fanout广播、Topic通配符匹配)实现服务解耦。本文介绍了RabbitMQ的核心组件(队列、交换器、绑定)和消息确认机制,并基于Spring AMQP演示了环境配置与消息流转实践。重点讲解了Direct模式下的持久化队列和交换器配置,以及Spring Boot如何集成RabbitMQ(包括依赖配置和连接参数),为构建可靠异步通信系统提供解决方案。
2025-08-28 13:00:04
1156
原创 业务扩展字段系统设计理念与流程图
摘要: 本文提出了一种动态可扩展的业务字段设计方案,采用元数据驱动架构实现字段动态配置与实时生效。通过主表+扩展表分离存储核心与动态字段,优化EAV模型并引入JSON字段支持复杂结构。系统采用策略模式+工厂模式实现字段类型扩展,包含元数据管理、动态校验流程和查询优化策略。设计特点包括:模块化架构、无代码热更新字段、多种存储引擎适配,并通过索引优化和混合查询保障性能。最终实现业务字段的高灵活性与高性能平衡。
2025-08-21 17:42:58
1029
原创 服务降级方式
本文介绍了Dubbo与Nacos集成的服务降级实现方案。首先阐述了Dubbo内置的本地降级(通过mock类或直接返回值)和远程降级(服务端强制返回)两种机制。重点讲解了如何结合Nacos实现动态降级配置:在Nacos中存储降级规则,消费端通过配置中心实时获取并应用。文章还对比了降级与熔断的区别,并建议高并发场景可结合Sentinel等熔断框架,通过Nacos配置更精细的流量控制规则。该方案既能保障系统稳定性,又能实现配置的动态调整。
2025-08-12 19:21:31
858
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅