自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 三十五、面向对象底层逻辑-Spring MVC中AbstractXlsxStreamingView的设计

本文深入剖析了SpringMVC框架中AbstractXlsxStreamingView的设计原理与实现机制,该组件有效解决了大数据量Excel导出时的内存溢出问题。通过采用POI的SXSSF(Streaming API)技术,实现行窗机制将内存占用从线性增长降为常量级,并详细解析了其类继承体系、关键实现方法(如流式工作簿创建、样式优化和数据分片写入)以及性能优化策略(内存配置调优、异步处理和资源清理)。文章还给出了典型应用场景和扩展建议,指出该设计体现了空间换时间、分治策略等核心思想,为处理百万级数据导出

2025-06-08 23:33:15 1118

原创 二、即时通讯系统设计经验

本文剖析了现代即时通讯系统的架构设计要点:1. 采用四层架构(接入层、逻辑处理层、存储层、基础设施层)满足实时性与扩展性需求。2. 混合协议选型策略(WebSocket/TCP私有协议/MQTT)适配多端场景。3. 通过连接复用、消息可靠性保障、流量削峰等技术应对高并发挑战。4. 构建同城多活+异地容灾的高可用体系,实现99.99%服务可用性。系统设计兼顾性能与安全,为亿级用户规模的IM服务提供技术支撑。

2025-06-08 22:51:26 991

原创 三十四、面向对象底层逻辑-SpringMVC九大组件之FlashMapManager接口设计哲学

摘要: SpringMVC的FlashMapManager机制为解决重定向(PRG模式)导致的数据传递问题提供了优雅方案。通过FlashMap暂存数据,FlashMapManager管理其生命周期,确保数据在一次重定向后安全传递并自动清理。开发者可通过RedirectAttributes接口便捷操作,默认实现SessionFlashMapManager基于Session存储,支持精准投递、一次性访问和自动过期清理。该设计兼顾轻量、安全与可扩展性,适用于分布式环境需自定义存储策略。最佳实践包括传递短消息、规范

2025-06-06 20:37:01 1236

原创 三十三、面向对象底层逻辑-SpringMVC九大组件之HandlerExceptionResolver接口设计

SpringMVC通过HandlerExceptionResolver接口提供多层次的异常处理机制,包括@ExceptionHandler注解、ResponseStatus注解解析、框架异常转换等策略。该架构采用责任链模式,支持异常处理的集中化、非侵入式管理,能有效应对Web开发中的异常分散问题。最佳实践推荐使用@ControllerAdvice+@ExceptionHandler组合,配合@ResponseStatus实现业务异常与HTTP状态码的映射,为现代REST API提供灵活的错误响应能力。

2025-06-06 20:05:24 1229

原创 三十二、面向对象底层逻辑-SpringMVC九大组件之LocaleResolver接口设计哲学

SpringMVC的LocaleResolver接口为国际化应用提供了优雅的区域解析方案。该设计实现了业务逻辑与区域策略的分离,支持通过不同实现(如基于Header/Cookie/Session)灵活切换解析策略。文章详细剖析了四种内置实现(AcceptHeader/Cookie/Session/Fixed)的机制与适用场景,并展示了如何通过LocaleChangeInterceptor实现动态切换。同时介绍了自定义实现方法及与其他组件(MessageSource)的整合,为全球化应用开发提供了完整的解决方

2025-05-28 22:56:10 846

原创 三十一、面向对象底层逻辑-SpringMVC九大组件之RequestToViewNameTranslator接口设计哲学

摘要: SpringMVC的RequestToViewNameTranslator接口遵循“约定优于配置”原则,自动将请求URI推导为视图名,减少显式配置。默认实现DefaultRequestToViewNameTranslator通过剥离前缀/后缀、处理扩展名等规则生成视图名,支持前缀、后缀等灵活配置。适用于RESTful资源展示、传统页面导航等场景,可简化Controller代码。开发者可通过自定义实现扩展规则,需注意动态路径等复杂场景仍需显式返回视图名。该机制提升了代码整洁度,是SpringMVC视图

2025-05-28 22:30:41 1258 1

原创 三十、面向对象底层逻辑-SpringMVC九大组件之HandlerInterceptor接口设计

HandlerInterceptor是SpringMVC的请求拦截接口,提供preHandle、postHandle和afterCompletion三个核心方法,分别在控制器执行前、后及请求完成时介入处理。它采用责任链模式,支持多拦截器顺序执行,与Filter相比更深度集成Spring上下文,适合业务相关的横切逻辑如权限控制、日志记录等。通过WebMvcConfigurer可灵活配置拦截器及其执行顺序,体现了开闭原则和关注点分离的设计思想,是Spring模块化架构的典型实践。

2025-05-27 21:28:54 998

原创 二十九、面向对象底层逻辑-SpringMVC九大组件之MultipartResolver接口设计

Spring框架通过MultipartResolver接口提供了高效的文件上传解决方案,该接口采用策略模式实现了底层技术的解耦,支持Apache Commons FileUpload和Servlet 3.0+两种实现方式。文章分析了其核心方法、设计优势及处理流程,包括请求检测、解析和控制器整合,并给出异常处理和性能优化建议。该设计体现了单一职责和开闭原则,是Spring模块化思想的典型范例,为开发者屏蔽底层复杂性,使能专注于业务逻辑实现。

2025-05-27 21:19:47 1055

原创 二十八、面向对象底层逻辑-SpringMVC九大组件之ViewResolver接口设计

本文深入探讨了SpringMVC框架中视图解析器(ViewResolver)的设计哲学与实现机制。ViewResolver作为连接控制器与视图技术的核心组件,采用策略模式实现了业务逻辑与视图技术的解耦,支持JSP、Thymeleaf等多种视图技术。文章从接口设计原则出发,分析了其单一职责、开闭原则等核心思想,并详细解读了InternalResourceViewResolver、ContentNegotiatingViewResolver等实现类的设计特点。通过自定义Markdown视图解析器的实践案例,展示

2025-05-26 22:12:59 975

原创 二十七、面向对象底层逻辑-SpringMVC九大组件之HandlerAdapter接口设计

本文深入剖析了SpringMVC框架中HandlerAdapter的设计思想与实现原理。作为关键组件,HandlerAdapter通过适配器模式解耦了处理器调用逻辑,支持多种控制器类型(如传统接口、注解和函数式处理器)。其接口设计严格遵循单一职责原则和开闭原则,将处理器执行逻辑抽象为统一的supports和handle方法,实现了模块化扩展。文章详细分析了HandlerAdapter与HandlerMapping的协作流程,以及RequestMappingHandlerAdapter等典型实现类的设计特点,

2025-05-26 21:29:41 1174

原创 二十六、面向对象底层逻辑-ImportSelector动态配置加载接口设计

Spring框架的ImportSelector接口通过动态配置加载机制,突破了传统静态配置限制。该接口的核心selectImports()方法根据运行时元数据决定加载哪些配置类,实现了条件化配置和模块化装配。作为SpringBoot自动配置的基石,它支持环境适配、功能开关等场景,并与@Conditional注解配合使用。最佳实践包括保持轻量、异常处理和合理缓存,其设计体现了开闭原则和单一职责等Spring核心思想,为框架提供了强大的扩展能力。

2025-05-26 13:19:29 677

原创 二十五、面向对象底层逻辑-SpringMVC九大组件之HandlerMapping接口设计

本文深入解析SpringMVC框架中HandlerMapping接口的核心作用与实现机制。作为请求调度的"导航仪",该接口负责将HTTP请求路由到对应Controller,支持RESTful路径匹配、拦截器链集成等特性。文章详细剖析了BeanNameUrlHandlerMapping、RequestMappingHandlerMapping等内置实现,并分享了RESTful版本控制、动态路由等高级配置实践。通过多版本API共存、路由优先级管理等生产环境案例,揭示了HandlerMappi

2025-05-24 16:54:19 1206

原创 二十四、面向对象底层逻辑-自动配置基石Condition接口设计哲学

Spring条件配置机制进化史:从Profile到Condition的架构跃迁 摘要:Spring框架从3.1的Profile机制到4.0的Condition接口,实现了条件化配置的质的飞跃。Condition接口通过策略模式设计,提供编程式条件判断能力,支持动态评估、组合条件和深度容器集成三大核心特性。其应用模式包括直接实现、注解驱动和组合条件,在自动配置、蓝绿发布、多租户等场景发挥关键作用。该设计体现了开放封闭原则和关注点分离思想,通过ConditionContext与AnnotatedTypeMeta

2025-05-24 15:06:46 880

原创 二十三、面向对象底层逻辑-BeanDefinitionParser接口设计哲学

Spring框架中的BeanDefinitionParser接口是扩展XML配置的核心机制,允许开发者将自定义XML元素转换为Spring Bean定义。该接口通过parse方法实现配置解析,与NamespaceHandler等组件协作完成Bean注册流程。文章详细解析了接口设计原理、典型实现流程,并提供了自定义数据源配置的完整案例,涵盖XSD定义、命名空间处理器实现和Spring配置注册。同时探讨了高级应用场景和生产实践,如复杂结构解析、条件化注册及错误处理。虽然现代Spring更倾向注解配置,但Bean

2025-05-23 22:55:02 1073

原创 二十二、面向对象底层逻辑-FactoryBean接口设计

/ 核心方法:返回实际Bean实例@Nullable// 返回Bean类型@NullableClass<?// 是否为单例模式。

2025-05-23 13:20:41 932

原创 二十一、面向对象底层逻辑-scope作用域接口设计

Spring框架中的Scope接口是Bean生命周期管理的核心机制,允许开发者对Bean实例的创建、获取和销毁进行精细控制。该接口不仅支持Spring内置的作用域(如Singleton、Prototype、Request、Session等),还支持自定义作用域的实现,满足复杂业务场景的需求。通过实现Scope接口,开发者可以定义如集群级、线程级、事务级等自定义作用域,并与Spring容器深度集成。此外,Scope接口还提供了资源释放、生命周期监控、资源泄漏防护等高级功能,确保Bean实例在作用域结束时能够正

2025-05-22 23:43:02 543

原创 二十、面向对象底层逻辑-ServiceRegistry接口设计集成注册中心

在微服务架构中,SpringCloudCommons模块通过定义ServiceRegistry和Registration接口,为服务治理提供了基础。ServiceRegistry接口负责服务实例的注册、注销及状态管理,抽象了与不同服务发现组件(如Eureka、Consul、Nacos)的交互。Registration接口则承载服务实例的元数据,包括服务ID、网络地址和自定义元数据等。这两个接口协作管理服务实例的生命周期,从启动注册到运行时状态维护,再到关闭时注销。此外,文章还探讨了生产环境中的应用场景,如多

2025-05-22 23:08:47 330

原创 十八、面向对象底层逻辑-消息广播ApplicationEventMulticaster接口设计

/ 添加监听器// 移除监听器// 移除所有监听器// 核心广播方法// 带事件类型解析的广播方法。

2025-05-22 01:45:00 1194

原创 十九、面向对象底层逻辑-PropertySourceLocator接口设计集成配置中心

SpringCloud中的PropertySourceLocator接口是微服务架构中统一管理分布式配置的关键扩展点。该接口通过标准化机制,支持从远程或本地获取配置数据,并控制配置源的加载顺序,实现配置热更新和多源适配。其核心方法locate(Environment environment)用于定位并返回属性源,支持与SpringCloudConfig、Consul、Nacos等配置中心集成。典型应用场景包括远程配置中心集成、多环境配置隔离和敏感信息加密。开发者可以通过注册自定义定位器、控制优先级和实现错误

2025-05-22 00:33:00 550

原创 十七、面向对象底层逻辑-MessageSource接口设计

/ 基础消息获取方法// 强制获取方法(无默认值)// 消息解析(包含MessageSourceResolvable包装)

2025-05-21 20:44:04 1168

原创 十六、面向对象底层逻辑-BeanPostProcessor接口设计

本文深入探讨了Spring框架中BeanPostProcessor接口的核心作用及其在Bean生命周期管理中的应用。BeanPostProcessor作为Spring容器中Bean实例化过程的关键扩展点,提供了对Bean初始化阶段的精细控制,支持AOP代理、注解驱动开发等高级特性。文章详细解析了接口的定义、执行机制及其在AOP代理生成、注解处理和接口协议适配等典型场景中的应用。此外,还对比了BeanPostProcessor与BeanFactoryPostProcessor的差异,并提供了生产级最佳实践和注

2025-05-21 13:04:29 982

原创 十五、面向对象底层逻辑-BeanDefinitionRegistryPostProcessor接口设计

Spring容器启动过程中,BeanDefinitionRegistryPostProcessor接口是开发者深度介入Bean定义注册阶段的核心扩展点。作为BeanFactoryPostProcessor的子接口,它允许开发者直接操作BeanDefinitionRegistry,支持动态注册、条件化装配等高级场景。该接口自Spring 2.5引入,成为JavaConfig体系的重要支撑。其核心方法postProcessBeanDefinitionRegistry在容器启动的第一阶段执行,允许增删改BeanD

2025-05-20 21:14:31 579

原创 十四、面向对象底层逻辑-BeanFactoryPostProcessor接口设计

Spring框架中的BeanFactoryPostProcessor接口是开发者干预Bean定义的核心扩展点,允许在Bean实例化前修改或补充配置元数据,从而增强框架的灵活性和可扩展性。该接口的核心方法postProcessBeanFactory在BeanDefinition加载完成后、Bean实例化前执行,支持修改属性值、动态注册新Bean等操作。典型应用场景包括属性占位符解析、配置加密解密以及条件化Bean注册。与BeanPostProcessor不同,BeanFactoryPostProcessor作

2025-05-20 20:54:35 840

原创 十三、面向对象底层逻辑-Dubbo序列化Serialization接口

本文深入探讨了Dubbo框架中Serialization接口的设计与实现,分析了其在分布式服务调用中的关键作用。Serialization接口负责将Java对象转换为二进制流,支持多种序列化协议,并通过SPI机制实现协议的无缝切换。文章详细解析了接口的核心实现类及其适用场景,特别是Hessian2序列化流程的解析。此外,文章还提供了生产级配置与扩展的实践指导,包括如何自定义序列化扩展以及解决典型问题的方案。最后,文章总结了Serialization接口的优缺点,并建议新项目升级至Dubbo3.x以获得更现代

2025-05-19 22:06:24 1012

原创 十二、面向对象底层逻辑-Dubbo报文编解码Codec接口

本文深入探讨了Dubbo框架中Codec2接口的设计与实现,该接口是分布式服务调用中网络通信的核心编解码抽象。Codec2接口支持多协议、多格式的编解码,解决了TCP粘包/拆包问题,并通过SPI机制支持自定义协议扩展。文章详细解析了Codec2接口的核心方法、实现类及其在Dubbo协议中的编解码流程,包括协议头结构、编码流程和解码状态机。此外,文章还介绍了Codec2接口的配置与扩展实践、生产级最佳实践、源码级实现分析以及典型问题与解决方案。通过本文,读者可以全面了解Codec2接口在Dubbo框架中的重要

2025-05-19 03:00:00 787

原创 十一、面向对象底层逻辑-Dubbo过滤器Filter接口

本文深入探讨了Dubbo框架中Filter接口的设计原理、核心实现及其在生产环境中的应用。Filter接口作为Dubbo服务治理的核心扩展点,通过责任链模式实现服务调用的拦截,支持日志记录、权限校验、性能监控等非业务功能的解耦与动态加载。文章详细解析了Filter接口的核心方法、内置Filter的功能及激活条件,并提供了自定义Filter的开发步骤和配置方法。此外,还介绍了Filter在生产级应用中的最佳实践,如全链路追踪、敏感参数脱敏和性能监控埋点。最后,文章分析了Filter接口的源码级实现,并提供了典

2025-05-18 14:35:41 1157

原创 十、面向对象底层逻辑-Dubbo负载均衡LoadBalance接口

本文深入探讨了分布式系统中流量调度的核心机制,特别是Dubbo框架中的LoadBalance接口。文章首先介绍了LoadBalance接口的设计哲学和核心定位,强调了其在节点选择、流量分配优化、容错能力增强和扩展基础方面的重要性。接着,详细解析了接口的核心方法及其实现,包括加权随机算法和最少活跃调用算法等内置负载策略。此外,文章还探讨了LoadBalance与上下游组件的协作、配置与扩展实践、性能调优指南以及源码级实现分析。最后,针对负载不均和哈希倾斜等典型问题,提供了具体的解决方案。通过本文,读者可以全面

2025-05-18 06:00:00 1387

原创 九、面向对象底层逻辑-Dubbo路由Router接口

本文深入探讨了Dubbo框架中Router接口的设计原理、核心实现及其在生产环境中的应用。Router接口作为Dubbo服务路由决策的核心抽象,支持多种流量管控策略,如条件路由、标签路由和权重路由等,以实现精准的请求路由。文章详细解析了Router接口的核心方法、内置路由策略对比、路由决策机制以及配置与扩展实践,并提供了生产级最佳实践和典型问题的解决方案。通过源码级实现分析,进一步揭示了路由链构建逻辑和条件路由解析器的内部工作机制。本文为开发者在复杂分布式服务架构中实现高效、灵活的路由策略提供了全面的指导。

2025-05-17 17:08:57 913

原创 八、面向对象底层逻辑-Dubbo的RegistryFactory接口

RegistryFactory接口是Dubbo框架中用于封装注册中心的核心接口,其入参为URL元数据,出参为Registry接口。该接口通过getRegistry(URL url)方法连接注册中心,并支持多种配置,如认证、集群地址、缓存文件、请求超时等。RegistryFactory作为服务域对象,以单实例服务于所有调用,确保线程安全。其实现类如ZookeeperRegistryFactory和DubboRegistryFactory,均设计为无状态或初始化不变状态。Registry接口负责将服务元数据注册

2025-05-16 23:27:07 645

原创 七、面向对象底层逻辑-Dubbo的ProxyFactory接口

ProxyFactory接口是Dubbo框架中用于封装远程调用细节的核心接口,通过生成代理对象实现透明化调用。它支持多种代理实现,如基于JDK动态代理的JdkProxyFactory和基于Javassist字节码生成的JavassistProxyFactory。接口主要提供getProxy和getInvoker方法,分别用于生成代理对象和封装代理类为Dubbo核心模型Invoker。ProxyFactory作为服务域对象,设计为无状态以保证线程安全,且其元数据对象Invoker与代理对象一一对应。Invok

2025-05-16 23:04:32 735

原创 六、面向对象底层逻辑-dubbo日志适配LoggerAdapter接口

LoggerAdapter接口是Dubbo框架中用于统一管理日志的接口,旨在屏蔽不同日志框架的差异,支持如log4j、jdkLogger等日志实现。该接口提供了获取Logger、设置日志级别和日志文件等功能。LoggerAdapter作为服务域对象,以单实例形式存在,加载后不可变并缓存在ExtensionLoader中。Logger对象与类或键一一对应,属于实体域对象,可缓存复用。LoggerAdapter接口遵循单一职责原则,仅封装日志变化因子,便于切换日志实现而不影响其他接口。通过多态包装Logger,

2025-05-13 23:31:52 108

原创 五、面向对象底层逻辑-dubbo交换层Exchanger接口

Exchanger接口的本质是把rpc请求的参数封装成request对象,将rpc请求结果封装成response,将request-response一一对应,从而确定响应结果对应哪次请求。transport层仅负责无状态数据发送,并没有request-response语义。

2025-05-13 23:04:51 137

原创 四、面向对象底层逻辑-dubbo框架传输层Transporter接口

Transporter接口是dubbo框架为了屏蔽各种通讯框架差异而封装的统一对外接口,允许扩展者基于此接口扩展各种传输方式。

2025-05-13 20:41:16 299

原创 三、面向对象底层逻辑-dubbo框架Protocol接口

Dubbo是阿里巴巴开源的高性能Java RPC框架,支持远程方法调用、智能容错、负载均衡及服务自动注册与发现,并能与Spring框架无缝集成。在Dubbo中,Protocol接口负责服务引用,其核心方法refer通过元数据(type和url)描述服务调用,并将元数据包装为实体域Invoker。Invoker是线程安全的,由ProxyFactory封装为代理对象并缓存于Spring容器中。会话域对象invocation用于传递远程调用请求,每次调用时创建,轻量且线程安全。Protocol接口职责单一,仅封装

2025-05-11 21:49:10 663

原创 二、面向对象设计中的职责解耦之道

服务域、实体域、会话域的划分,是面向对象设计应对复杂业务场景的智慧结晶。它通过职责分离状态管理解耦和关注点隔离,为构建健壮、可维护的系统提供了结构化蓝图。在Java生态中,结合Spring框架的依赖注入、作用域管理()及JPA持久化能力,开发者能高效实现这一模式。掌握三域设计的精髓,意味着能在业务复杂性、技术实现与用户体验之间找到优雅的平衡点,从而驾驭现代软件开发的挑战。

2025-05-10 18:11:47 84

原创 一、面向对象设计原则

摘要:面向对象设计原则是软件开发的核心指导方针,主要包括SOLID五大原则(单一职责、开闭原则、里氏替换、接口隔离、依赖倒置)及迪米特法则和组合复用原则。这些原则通过降低耦合度、提高扩展性来构建健壮系统,如单一职责原则提倡模块功能专一,开闭原则支持扩展而非修改。实践中需平衡原则应用,避免过度设计,并适配微服务、云原生等现代架构。合理运用这些原则能有效预防代码腐化,提升软件可维护性。

2025-05-09 22:29:33 277

原创 luckysheet协同编辑增删行列光标下移

基于luckysheet开发类似腾讯文档的协同编辑,在协同编辑测试过程中发现如果有用户A在另外一个用户B的单元格上面新增或者删除了一行,用户B的光标不会自动下移,从而导致用户B的数据被覆盖。我们期望的需求是用户A新增行列时能够自动让其他用户的光标下移。

2025-04-04 14:42:30 251

转载 协同编辑OT算法

协同编辑OT算法深入介绍

2025-02-18 21:09:57 104

原创 即时通讯系统架构设计与实现方案

基于Java的即时通讯系统建设需要深度整合网络编程、分布式系统、数据库优化等多领域技术。建议采用渐进式架构演进策略:初期使用Netty+Spring Boot单体架构快速验证,中期引入微服务拆分,最终实现全球化多活部署。未来可探索Vert.x响应式编程、GraalVM原生编译等新技术方向,持续提升系统性能和开发效率。通过合理的技术选型和架构设计,Java完全能够支撑亿级用户规模的IM系统建设需求。

2025-02-16 22:23:49 266

原创 tomcat远程debug

1、在startup.sh中添加jdwp2、在catalina.sh中添加监听端口3、在IDEA中开始调试 

2018-12-26 18:45:42 960

springboot+netty开发即时通讯软件

springboot+netty开发即时通讯软件

2025-05-08

空空如也

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

TA关注的人

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