自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 Dubbo 与 Spring 整合全流程解析(含生产者与消费者

角色核心 Bean主要职责Provider暴露服务、注册服务Consumer引用服务、订阅服务列表、生成代理Registry保存动态服务列表Protocol创建服务端/客户端通讯生成服务接口代理ClusterFailoverCluster 等集群容错Spring XML——> 最终返回代理对象。

2025-11-30 19:00:41 1054

原创 Dubbo 消费者是如何与 Spring 融合的?

阶段Spring 组件Dubbo 组件主要作用Bean 解析将配置解析为 ReferenceBeanBean 实例化调用 get() 创建代理对象连接建立建立与 Provider 的连接调用执行发送请求、接收结果使用实现懒加载代理对象;使用实现注解扫描与注入;将 Dubbo 的服务治理逻辑无缝嵌入到 Spring Bean 生命周期中。得益于这种设计,Dubbo 消费者的使用方式得以简洁优雅,而底层却隐藏着一整套灵活的协议适配、连接管理与代理生成机制。

2025-10-26 17:15:48 785

原创 深入理解 Dubbo 的 ServiceConfig:服务粒度的配置机制

摘要:本文深入分析了Dubbo中ServiceConfig的核心机制,重点探讨其服务粒度的配置体系。ServiceConfig作为服务暴露的最小单元,通过多层继承机制实现配置管理,支持从全局到服务级别的配置合并。文章详细解析了RegistryConfig和ProtocolConfig的继承逻辑,揭示了ConfigManager在配置合并中的关键作用。这种分层配置设计使Dubbo能够兼顾统一性与灵活性,支持不同服务采用差异化配置,为复杂微服务场景提供精细化控制能力。

2025-10-21 00:00:00 723

原创 Dubbo 设计解析:为什么不直接对 Registry 做 SPI,而是抽象出 RegistryFactory?

摘要: Dubbo通过引入RegistryFactory而非直接对Registry做SPI,主要基于以下设计考量:1)避免重复创建注册中心实例,工厂层实现单例复用;2)解耦协议与业务逻辑,Registry专注注册/订阅功能,Factory处理实例化;3)支持动态适配,通过URL协议自动选择实现;4)统一管理生命周期(创建/销毁)。这种分层设计符合单一职责原则,提高了扩展性和资源利用率,例如多个服务共享同一Nacos实例时只需通过工厂获取,避免重复连接。该机制体现了Dubbo SPI的灵活性和面向对象设计思想

2025-10-18 13:00:31 529

原创 Dubbo SPI Wrapper 机制深入解析

本文深入解析了Dubbo框架中的SPI Wrapper机制。SPI(Service Provider Interface)是Dubbo实现组件扩展的核心机制,其中Wrapper机制通过装饰器模式实现功能增强而不修改原始代码。文章详细分析了Protocol接口的Wrapper实现链(如ProtocolFilterWrapper、ProtocolListenerWrapper等),阐述了ExtensionLoader如何自动装配Wrapper调用链的源码实现,包括扫描扩展配置、区分Wrapper类、链式构造实例

2025-10-12 12:37:55 596

原创 Spring 中 REQUIRED 事务的回滚机制详解

Spring的REQUIRED事务传播机制下,所有方法共享同一事务,内部方法抛出的异常即使被外层捕获,仍会导致整个事务回滚。这是因为Spring会标记事务为rollback-only状态,提交时检查该标记决定回滚而非提交。要避免这种"误回滚",可改用REQUIRES_NEW或NESTED传播属性实现更细粒度控制。本文揭示了REQUIRED事务"一荣俱荣、一损俱损"的特性及其底层实现原理。

2025-09-20 13:09:25 924

原创 Dubbo2 与 Dubbo3 的主要区别与演进

Dubbo2:接口级注册,直观但在大规模接口场景下订阅和推送压力过大。Dubbo3:应用级注册 + 元数据服务,将实例信息与接口信息分离,显著降低注册中心压力,更适合大规模、云原生、跨语言的微服务架构。Dubbo2 注册中心是“接口目录”。Dubbo3 注册中心是“应用实例目录”,接口信息由维护。

2025-09-12 21:00:58 546

原创 企业级应用日志规范最佳实践

本文系统阐述了企业级应用开发中的日志规范,从接口调用、业务动作、MQ消费、错误异常、定时任务五个维度提出具体建议。强调日志应具备调试、运维、审计三重价值,要求关键业务动作记录完整变更链条,MQ消费确保消息可追踪,异常处理必须包含上下文和完整堆栈。同时给出日志级别选择策略和最佳实践,如使用traceId贯穿全链路、JSON格式化、采样策略等。最终指出优质日志应平衡信息量与可读性,实现高效问题定位与系统可观测性,避免日志噪音。

2025-09-06 15:59:19 1018

原创 @Autowired 与 @Resource 的区别详解

摘要:本文对比分析了Spring中的@Autowired和@Resource两个依赖注入注解。@Autowired是Spring框架特有,默认按类型注入,支持可选注入和构造器注入;而@Resource是Java标准,默认按名称注入。两者在注入方式、是否必须、适用位置上存在差异:@Autowired更灵活,适合纯Spring项目;@Resource更具兼容性,适合整合Java EE组件。建议根据项目特性合理选择,多实例时需明确指定Bean名称。理解这些差异有助于编写更可靠的依赖注入代码。

2025-07-27 13:39:02 309

原创 java.lang.NoClassDefFoundError: org/springframework/data/redis/connection/zset/Tuple

Linux 环境报很多时候是依赖版本差异或类路径问题导致的。通过分析依赖结构与版本关系,最终将降级到兼容版本,问题得以解决。

2025-05-19 11:22:29 1120

原创 做一款自己的轻量级分库分表组件(二)

在上一篇文章中,我们介绍了开发一款自定义分库分表组件所需涵盖的核心内容。这一篇,我们将正式进入设计与实现阶段。首先要解决的问题是:这款组件应该如何在 application.yml 文件中进行配置,以及这些配置项应如何优雅地映射到 Java 配置类中,便于后续使用与扩展。

2025-05-17 14:01:51 384

原创 Mybatis插件机制的原理

在 MyBatis 中,插件机制是通过 Java 的动态代理机制实现的,其核心在于拦截器(Interceptor)和插件注册机制。插件机制可以用于拦截 MyBatis 核心接口的特定方法,从而实现对执行过程的增强和定制。

2025-05-10 17:21:01 386

原创 Arthas 是如何在类已加载后实现字节码增强的?

JVM 的类生命周期大致分为五个阶段:加载、验证、准备、解析、初始化。一旦类加载完成,JVM 默认不会再次加载同一个类(除非使用不同的 ClassLoader)。是 JVM Instrumentation API 提供的一种能力;只允许修改类的方法体,不允许修改方法签名、字段、继承结构;修改的是HotSpot虚拟机中方法区(或者 JDK 8 后的 metaspace)里的字节码;原有的类加载器、已创建对象均不变。这个过程不影响类的加载状态、也不会重新触发<clinit>

2025-04-30 14:22:00 870

原创 JDK动态代理与CGLIB动态代理完全指南(详细版)

参数说明loader当前使用的类加载器interfaces目标对象实现的接口数组h事件处理器InvocationHandler说明:JDK代理的前提是,目标类必须实现接口!CGLIB(Code Generation Library)通过继承目标类,并在字节码层面生成子类实现代理。JDK代理对象强制转换类型时要小心(只能转成接口类型)。CGLIB创建代理时,构造函数可能引发副作用(比如触发依赖注入)。Spring AOP默认优先使用JDK代理,如果类没有接口,再自动降级到CGLIB。

2025-04-28 17:26:14 1027

原创 深入理解 MyBatis 拦截器:使用方式、拦截种类与实战应用

MyBatis 拦截器(Interceptor)是通过 Java 的插件机制(基于动态代理)实现的一种增强功能。它允许开发者在 MyBatis 的核心执行流程中“插入”自定义逻辑,例如 SQL 执行前后、参数处理、结果映射等阶段。MyBatis 使用注解标识拦截点,通过实现接口来自定义插件。

2025-04-24 21:36:19 808

原创 做一款自己的轻量级分库分表组件(一)

本文从动因出发,分析了分库分表的必要性,结合 Spring 的数据源动态切换机制与 MyBatis 插件机制,构建了一个轻量级的分库分表组件。

2025-04-21 18:57:34 480

原创 一文解析 Maven 的 <optional> 与 <scope>在开发 Starter 时的用法与区别

Maven 的<optional>与<scope>是构建配置中非常重要的两个标签,尤其在开发 Starter 时尤为关键。

2025-04-20 17:00:00 1170

原创 Spring 中 Mapper 与数据源绑定的几种方式详解

Spring中Mapper与数据源绑定的几种方式

2025-04-19 16:16:47 984

原创 地理数据可视化

地理数据可视化

2024-06-21 08:21:46 258

原创 差异可视化-多维量法(MDS

第2关:美国国家教育统计中心数据——分别按特征和聚。第1关:美国国家教育统计中心数据——降维。

2024-06-13 10:20:56 647

原创 美国犯罪率数据散点图绘制——局部加权回归

【代码】美国犯罪率数据散点图绘制——局部加权回归。

2024-06-06 10:11:08 429

原创 美国犯罪率数据散点图绘制——散点图的基本绘制步骤

【代码】美国犯罪率数据散点图绘制——散点图的基本绘制步骤。

2024-06-06 10:10:33 380

原创 “大胃王”比赛数据柱形图绘制——绘制柱形图的基本步骤

【代码】“大胃王”比赛数据柱形图绘制——绘制柱形图的基本步骤。

2024-06-04 20:06:48 512

原创 “大胃王”比赛数据柱形图绘制——柱形图展示优化

“大胃王”比赛数据柱形图绘制——柱形图展示优化

2024-05-23 11:00:39 332 1

原创 头歌计算机图形学实验--三角形填充

【代码】头歌计算机图形学实验--三角形填充。

2023-10-27 23:05:48 725 1

原创 头歌计算机图形学实验--二维几何变换

【代码】头歌计算机图形学实验--二维几何变换。

2023-10-27 22:57:27 620 1

原创 头歌计算机图形学实验--直线裁剪

【代码】头歌计算机图形学实验--直线裁剪。

2023-10-27 22:54:46 2331 3

原创 头歌计算机图形学实验--直线绘制

【代码】头歌计算机图形学实验--直线绘制。

2023-10-27 22:47:29 1193 1

原创 头歌计算机图形学实验—图形几何变换和模型观察和视口变换

头歌计算机图形学实验—图形几何变换和模型观察和视口变换

2023-10-23 10:41:51 1323 1

原创 头歌计算机图形学实验—直线裁剪

头歌计算机图形学实验—直线裁剪

2023-10-09 11:29:55 838 1

原创 头歌计算机图形学实验—直线裁剪实验

【代码】头歌计算机图形学实验—直线裁剪实验。

2023-10-09 11:05:38 1444 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除