自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 资源 (3)
  • 收藏
  • 关注

原创 深入 Spring MVC 参数解析底层原理:从自定义实现到源码级剖析

本文深入解析了Spring MVC参数解析机制,从核心接口HandlerMethodArgumentResolver入手,剖析了参数解析的整体流程:请求映射→解析器匹配→参数解析→方法调用。通过自定义ArgumentResolver接口设计了支持组合模式的参数解析器,包含叶子解析器(如PathVariableResolver、RequestParamResolver)和组合解析器CompositeArgumentResolver。重点分析了路径变量和请求参数的底层提取逻辑,揭示了Spring如何将HTTP请

2025-09-07 03:49:59 592

原创 深入 Spring MVC 底层:从 DispatcherServlet 到自定义组件的全链路解析

Spring MVC核心架构解析 摘要:Spring MVC采用前端控制器模式,以DispatcherServlet为核心调度中心,配合九大策略组件实现请求处理全流程。其核心架构包含: DispatcherServlet - 请求分发中枢,初始化时加载九大组件 RequestMappingHandlerMapping - 实现请求到处理器的精准映射,支持多维度匹配条件 HandlerAdapter - 统一处理器调用方式,支持自定义参数解析 组件间协同工作形成完整的请求处理管道,设计上通过策略接口实现高度可

2025-09-04 13:19:20 774

原创 营销工作台整体设计-未来规划以及当前实现

本文档介绍了一个基于JSON模板和反射机制的合同管理系统设计方案。系统采用多租户架构,支持合同全生命周期管理,包括起草、审批、下达和履约等环节。核心设计思想是通过JSON模板配置业务逻辑,利用反射机制动态执行。系统架构分为表示层、业务逻辑层和数据层,包含模板解析引擎、反射执行器等核心模块。JSON模板规范定义了字段映射、验证机制和动态类加载等功能,支持自定义表单类型和复杂校验。系统通过反射和缓存优化实现高效执行,为合同管理提供了灵活的配置方案。

2025-09-02 01:31:39 672

原创 基于 Spring AMQP 的 RabbitMQ 分布式消息系统实战

RabbitMQ作为分布式系统的消息中间件,通过三种交换器模式(Direct精确路由、Fanout广播、Topic通配符匹配)实现服务解耦。本文介绍了RabbitMQ的核心组件(队列、交换器、绑定)和消息确认机制,并基于Spring AMQP演示了环境配置与消息流转实践。重点讲解了Direct模式下的持久化队列和交换器配置,以及Spring Boot如何集成RabbitMQ(包括依赖配置和连接参数),为构建可靠异步通信系统提供解决方案。

2025-08-28 13:00:04 1027

原创 业务扩展字段系统设计理念与流程图

摘要: 本文提出了一种动态可扩展的业务字段设计方案,采用元数据驱动架构实现字段动态配置与实时生效。通过主表+扩展表分离存储核心与动态字段,优化EAV模型并引入JSON字段支持复杂结构。系统采用策略模式+工厂模式实现字段类型扩展,包含元数据管理、动态校验流程和查询优化策略。设计特点包括:模块化架构、无代码热更新字段、多种存储引擎适配,并通过索引优化和混合查询保障性能。最终实现业务字段的高灵活性与高性能平衡。

2025-08-21 17:42:58 858

原创 服务降级方式

本文介绍了Dubbo与Nacos集成的服务降级实现方案。首先阐述了Dubbo内置的本地降级(通过mock类或直接返回值)和远程降级(服务端强制返回)两种机制。重点讲解了如何结合Nacos实现动态降级配置:在Nacos中存储降级规则,消费端通过配置中心实时获取并应用。文章还对比了降级与熔断的区别,并建议高并发场景可结合Sentinel等熔断框架,通过Nacos配置更精细的流量控制规则。该方案既能保障系统稳定性,又能实现配置的动态调整。

2025-08-12 19:21:31 729

原创 Dubbo容错机制

Dubbo与Nacos集成的分布式架构中构建了多层次的容错体系。Dubbo提供RPC层容错机制,包括6种内置集群策略(默认failover)、超时控制、重试机制和熔断降级。Nacos则通过注册中心高可用部署、本地缓存机制和动态配置能力增强基础设施容错。两者协同可应对服务节点故障、注册中心宕机等场景,通过本地缓存、集群策略和动态配置调整等实现"故障自动隔离、配置实时调整"的目标。实践时需根据业务特点选择合适容错策略,如读写操作分别适用failover和failfast策略。

2025-08-12 19:17:47 552

原创 RPC 解析

摘要: RPC(远程过程调用)是分布式系统中实现服务间高效通信的核心技术,通过动态代理、序列化、网络传输等组件,使远程调用如同本地方法。其工作流程包括客户端序列化请求、网络传输、服务端反序列化与执行、结果返回等步骤。关键技术涉及序列化协议(如Protobuf/JSON)、网络模型(NIO/HTTP2)、服务注册发现(ZooKeeper/Nacos)及熔断限流等治理能力。相比REST,RPC以二进制协议和长连接提升性能,适用于微服务高频调用场景(如gRPC/Dubbo)。选型需权衡性能、开发成本与跨语言支持,

2025-08-07 18:20:30 928

原创 Dubbo 基础知识

摘要: Dubbo是阿里巴巴开源的高性能分布式服务框架,专注于微服务架构中的服务治理与通信。核心功能包括透明化RPC调用、服务注册与发现、智能负载均衡与容错机制,以及服务治理能力如流量控制和可观测性。其架构分为控制面和数据面,支持多语言和云原生适配,适用于微服务拆分、高并发系统及异构集成等场景。Dubbo通过动态服务发现、高性能通信和精细化治理,解决了分布式系统中的服务治理复杂性,提升了系统的可维护性、扩展性和可用性。其轻量级设计和与Spring的无缝集成,使其成为构建云原生分布式系统的优选框架。

2025-08-06 17:20:03 1333

原创 完整的动态按钮配置系统

本文提出了一种基于策略模式的动态按钮管理系统,通过模块化设计实现按钮行为的灵活配置和实时更新。系统采用YAML/JSON配置驱动,核心包含配置解析器、上下文管理器、策略工厂、行为执行器和热加载监听器五大模块。策略工厂根据上下文动态生成显示和功能策略,行为执行器通过命令模式解耦操作,热加载机制支持配置实时生效。该系统具有高动态性、强扩展性和安全性,适用于多租户SaaS、流程向导和全球化应用等场景,有效解决了传统方案中配置与代码耦合、权限管理分散等问题。

2025-08-06 12:56:00 985

原创 Spring AOP静态与动态通知的协作原理

摘要:本文深入解析Spring AOP核心架构与实现机制,重点分析代理创建流程、拦截器链构建原理和执行引擎。通过类图展示AnnotationAwareAspectJAutoProxyCreator等核心组件关系,详细解读代理创建7个关键步骤和拦截器链执行流程。对比静态通知与动态通知在匹配时机、执行效率等方面的差异,并提供性能调优建议,包括避免过度使用动态通知、利用拦截器链缓存机制等。文章包含核心代码实现和架构图,揭示Spring AOP底层运行机制。

2025-08-05 02:43:22 770

原创 多租户字典管理系统完整设计

本文介绍了一个多租户字典管理系统的数据库设计方案,包含核心表结构(租户表、字典类型表、字典数据表)和扩展表结构(字典扩展字段定义表、字典扩展字段值表、字典扩展字段历史表)。该系统支持多租户隔离、字典类型与数据管理、扩展字段定义以及变更历史记录等功能。数据库表设计采用主键自增、唯一约束、索引优化等手段,确保数据完整性和查询效率。领域模型部分展示了字典类型的Java实体类结构,体现了系统面向对象的设计思路。

2025-08-04 13:26:20 780

原创 消息顺序、消息重复问题

保证同Key进同一分区。M1 订单ID:001。M2 订单ID:001。Hash订单ID %3。Hash订单ID %3。防重:Redis+DB。防重:Redis+DB。消费者1-单线程消费。一致性Hash交换器。RabbitMQ集群。1. 带Key的消息。Hash Key路由。Hash Key路由。

2025-08-01 18:19:28 804

原创 Nginx反向代理负载均衡

本文详细解析Nginx代理配置的核心技术与优化策略。主要内容包括:1)请求代理流程解析,展示客户端到Nginx再到后端服务器的完整路径;2)Upstream模块深度配置,涵盖负载均衡策略、健康检查机制及会话保持方法;3)代理层关键设置,如超时控制、IP透传和缓冲区优化;4)性能调优方案,包括连接复用、限速控制和故障排查工具;5)高阶应用场景,如灰度发布、多区域容灾和GRPC负载均衡。通过合理配置可显著提升系统可用性至99.99%,实现毫秒级故障检测和10倍连接性能提升。

2025-07-31 13:00:21 861

原创 深入解析AOP调用链:递归与责任链模式的协同实现

本文深入解析AOP调用链的实现原理,通过代码示例展示递归调用与责任链模式如何构建"洋葱模型"。核心组件包括目标方法、拦截器(实现前置/后置逻辑)和递归引擎MyMethodInvocation。关键点在于proceed()方法通过currentIndex控制调用链推进,形成"前置→内层→后置"的执行结构。整个过程通过双栈(JVM方法栈和调用链栈)协同实现,最终构成完整的方法调用链。

2025-07-31 03:04:23 1263

原创 LVS (Linux Virtual Server) 解析

LVS 负载均衡原理与工作模式解析 LVS(Linux Virtual Server)是Linux内核的高性能四层负载均衡方案,通过IPVS模块实现流量转发。其核心流程为:数据包经PREROUTING链进入,由路由决策判断目标地址是否为本地VIP,若匹配则被INPUT链的ip_vs_in钩子拦截转发。IPVS支持四种工作模式: 1)NAT模式:双向地址转换(VIP↔RIP),需经Director返回; 2)DR模式:仅修改MAC地址,RS直接响应客户端; 3)TUN模式:IP隧道封装,跨网络传输; 4)Fu

2025-07-30 13:43:21 1211

原创 Spring AOP深度解析:调用链与适配器模式

本文深入解析了Spring AOP的核心实现机制,重点探讨了适配器模式在AOP中的应用及其执行流程。主要内容包括:1)AOP核心概念回顾,明确连接点、切点、通知等关键术语;2)适配器模式在Advisor和Advice转换中的具体应用,实现组件解耦和统一处理;3)调用链执行机制的深度解析,通过责任链模式实现拦截器的有序执行;4)Pointcut的精准匹配机制及双检查策略;5)多种设计模式在AOP中的协同应用,包括适配器、代理、责任链等模式。文章通过代码示例和流程图,系统展示了Spring AOP的分层设计思想

2025-07-30 02:28:44 801

原创 负载均衡、算法/策略

本文对负载均衡技术进行了系统梳理,主要包括以下内容:1)对比了四层和七层负载均衡的工作特性、性能差异及典型应用场景;2)详细解析了轮询、加权轮询、最小连接数等核心算法原理及适用场景;3)分析了Nginx、HAProxy、LVS等主流工具的功能矩阵;4)通过流程图对比了不同层级负载均衡的工作机制;5)给出了典型场景的技术选型建议。文章还提供了负载均衡算法的Java实现示例,包括基础轮询和加权轮询算法,并展示了代码执行输出规律。最后补充了Service Mesh、eBPF等前沿技术趋势。

2025-07-29 17:37:35 709

原创 RPC 详解

本文解析了RPC(远程过程调用)的核心实现机制,主要包括服务注册发现全流程和RPC调用全流程。通过序列图详细展示了服务提供者注册、消费者发现服务、客户端调用准备、网络传输和服务端处理等关键步骤。文章重点介绍了RPC优化技术,包括Protobuf序列化、Netty长连接传输、加权轮询负载均衡和服务熔断降级等机制,并通过性能指标对比展示了RPC相比传统HTTP的优势。此外,还提供了注册中心核心实现代码示例,说明服务注册发现的Zookeeper实现原理,以及Client/Server Stub的动态代理处理逻辑。

2025-07-28 19:02:03 1211

原创 CDN架构全景图

CDN(内容分发网络)通过全球部署边缘节点服务器,将内容缓存至用户最近位置,优化互联网内容传输效率。其核心架构包括运营管理系统(客户/业务/计费管理)、负载均衡系统(多级调度)、分发服务系统(静态/动态内容加速)和网络管理系统(监控/故障管理),形成全链路数据流转。通过智能缓存策略、动态路径优化等技术,实现缓存命中率99.2%、TTFB延迟120ms等高性能指标,显著提升用户体验并降低源站压力。

2025-07-28 17:06:19 867

原创 OSI七层模型和HTTP会话流程

本文通过Mermaid图表和表格详细解析了OSI七层模型的层级结构、功能及各层协议。图中展示了主机A到主机B的数据传输与解封装过程,重点包括:1)物理层的比特流传输;2)数据链路层的MAC寻址与帧校验;3)网络层的IP路由;4)传输层TCP/UDP特性对比;5)高层会话控制与数据表示处理。文中通过HTTP会话案例,完整呈现了TCP三次握手、数据封装解封装、四次挥手等通信生命周期,并对比了OSI与TCP/IP模型的对应关系,最后指出现代网络中会话/表示层功能多由应用层协议(如TLS)实现。全文通过可视化方式清

2025-07-28 02:15:01 976

原创 Spring AOP MethodInvocation 工作原理

Spring AOP通过适配器模式将注解型通知统一转换为MethodInterceptor接口实现,核心流程是:通知转换→调用链构建→链式执行。ReflectiveMethodInvocation通过索引控制拦截器顺序,嵌套调用proceed()实现责任链模式。该设计对外简化开发(注解声明),对内统一处理逻辑,支持灵活扩展,并通过finally块等机制保障异常处理和资源清理。典型流程如@Before→@Around→@After的顺序执行与反向异常传递,体现了AOP的优雅封装与健壮性。

2025-07-25 18:49:58 701

原创 DNS域名解析全流程详解

本文详细解析了DNS域名解析的全过程,分为本地解析和DNS服务器解析两个阶段。本地解析检查浏览器缓存、系统缓存、Hosts文件和路由器缓存;未命中时进入DNS服务器解析阶段,通过递归与迭代查询获取最终IP地址。文章揭示了直接输入IP访问失败的原因,包括负载均衡失效、CDN调度失灵等技术限制,并提供了主机名配置、DNS故障排查等运维实践指南。通过完整的技术流程分析,阐明了现代分布式系统对域名解析的依赖性及其在高可用架构中的核心作用。

2025-07-25 13:00:47 603

原创 Ping 过程原理详解

摘要: Ping工具基于ICMP协议,通过请求-响应机制测试网络连通性。其过程涉及ARP、IP、ICMP协议交互: 同一网段通信:主机A通过ARP广播获取目标主机B的MAC地址,随后发送ICMP Echo Request(封装为IP数据报),主机B响应ICMP Echo Reply。 跨网段通信:需通过路由器中转,源主机将ICMP请求发送至网关,由路由器转发至目标网络,目标主机响应后反向传回。 关键协议: ARP:解析IP到MAC的映射(局域网内)。 ICMP:携带Echo请求/应答(类型0x08/0x00

2025-07-24 17:57:10 727

原创 浏览器访问http://www.taobao.com,经历了怎样的过程。

访问淘宝网(https://www.taobao.com)的过程包含多个关键步骤:首先通过DNS解析将域名转换为IP地址,包括浏览器缓存、系统缓存、ISP查询等;随后建立HTTPS安全连接(TCP三次握手+TLS协商);浏览器发送HTTP请求后,服务器经过负载均衡、业务处理生成响应;最后浏览器解析HTML、构建DOM/CSSOM、加载资源并渲染页面。淘宝通过CDN加速、HTTP/2、缓存优化等技术实现快速访问。整个过程涉及数十个网络节点协作,体现了现代Web技术的高效性。

2025-07-24 17:50:13 5053

原创 深入Spring AOP底层原理:从切面注册到代理生成

本文深入解析Spring AOP底层实现机制,通过源码分析揭示其核心工作原理。首先介绍切面注册的两种方式:编程式通过DefaultPointcutAdvisor手动构建,注解式由AnnotationAwareAspectJAutoProxyCreator自动转换。重点剖析了切点匹配流程,包括findEligibleAdvisors方法如何筛选适用的Advisor,以及AspectJExpressionPointcut的类过滤和方法匹配机制。最后探讨代理生成过程,分析wrapIfNecessary方法的

2025-07-24 03:02:19 1335

原创 TCP/IP、SOCKET、HTTP

TCP协议数据传输过程中存在粘包和分包问题,主要由于TCP是面向流的协议,没有明确的消息边界。粘包指多个数据包被合并接收,分包指单个数据包被拆分接收。根本原因包括TCP流式传输特性、缓冲区机制、MSS/MTU限制等。解决方案包括:1)固定长度法;2)分隔符法;3)推荐的长度字段法(在数据头添加长度信息);4)自定义应用层协议。其中长度字段法最可靠通用,可有效解决边界问题。实际应用中需注意字节序处理,避免依赖UDP的天然分包特性。

2025-07-23 17:27:38 974

原创 对称加密与非对称加密、Servlet、Cookie

文章摘要 本文从加密技术和网络协议两个维度展开技术解析。对称加密(如AES)使用单一密钥加解密,速度快但密钥分发困难;非对称加密(如RSA)采用公钥/私钥对,解决密钥传输问题但性能较低,二者常结合使用。HTTP/2通过多路复用和头部压缩优化HTTP/1.1的队头阻塞问题。在Servlet线程安全方面,指出成员变量共享是线程不安全的主因,建议通过无状态设计、原子类或同步控制保障线程安全,强调避免可变成员变量的开发实践。 (字数:149)

2025-07-22 13:15:35 1080

原创 抽象文档模式

摘要: 抽象文档模式(Abstract Document Pattern)是一种处理半结构化数据(如JSON、XML)的设计模式,通过统一接口和不可变实现灵活应对动态数据结构。核心设计包括: Document接口:定义属性访问、子文档管理等标准化操作,支持类型安全检查和嵌套结构处理; AbstractDocument抽象类:封装不可变属性存储(如UnmodifiableMap),确保线程安全。 典型应用场景包括汽车零件管理系统,通过组合接口(如HasModel、HasParts)实现动态属性扩展,避免冗余类

2025-07-22 02:57:41 561

原创 TCP相关

TCP采用三次握手而非两次握手,核心原因在于双向确认通信能力和避免历史连接干扰。两次握手仅能单向验证收发能力,而三次握手通过客户端最终ACK确认服务端的接收能力,同时防止延迟的旧SYN报文导致资源浪费。 TCP连接关闭需四次挥手,因全双工特性需独立关闭双向数据流。客户端最后等待2MSL(TIME_WAIT状态)确保: 服务端收到最终ACK(若丢失可重传FIN) 网络残留报文超时丢弃,避免干扰新连接 三次握手快速建立连接,四次挥手谨慎终止连接,体现TCP可靠传输的设计哲学。

2025-07-21 13:23:19 977

原创 网络体系结构、网络协议、网络协议分层、TCP/IP 原理

计算机网络体系结构与协议摘要 分层体系结构是计算机网络的核心设计思想,通过将复杂功能划分为多个层次(如OSI 7层或TCP/IP 4层),实现模块化、标准化和可扩展性。

2025-07-17 19:00:53 881

原创 MyBatis 动态 SQL、#{}与 ${}区别、与 Hibernate区别、延迟加载、优势、XML映射关系

MyBatis 动态 SQL、#{}与${}区别、与 Hibernate区别、延迟加载、优势、XML映射关系

2025-07-16 13:30:54 1158

原创 MyBatis 核心知识点、插件

MyBatis核心知识点摘要 MyBatis核心流程分为四部分:配置加载、会话管理、SQL执行和元数据封装。配置加载通过解析XML文件生成全局Configuration对象;SqlSession负责会话生命周期管理,需注意线程安全问题;Executor是SQL执行核心,分为SimpleExecutor、ReuseExecutor和BatchExecutor三种实现;MappedStatement封装SQL元数据。MyBatis通过动态代理实现Mapper接口,支持事务管理和连接池配置,适用于复杂SQL场景。

2025-07-15 13:21:56 468

原创 JPA、缓存、数据源与连接池、简介

摘要:JPA(Java Persistence API)是Java官方定义的ORM规范,通过注解或XML映射实现对象与数据库的解耦。其核心组件包括实体类(Entity)、实体管理器(EntityManager)、持久化单元(Persistence Unit)和持久化上下文(Persistence Context),分别负责数据映射、数据库操作、配置管理和实体状态跟踪。JPA支持本地事务(单数据源)和JTA全局事务(多数据源),本地事务通过JDBC连接管理,JTA事务依赖应用服务器协调多资源。持久化上下文自动

2025-07-15 02:30:15 497

原创 多线程(6)

本文深入解析进程调度算法和CAS机制两大并发编程核心主题。进程调度部分系统介绍了FCFS、SJF、优先级调度、时间片轮转和多级反馈队列等算法,分析其原理、优缺点及适用场景,帮助开发者根据系统需求选择合适的调度策略。CAS机制部分聚焦无锁编程,详细讲解其乐观锁实现原理、典型应用和潜在问题,如ABA问题及其解决方案,为构建高性能并发系统提供关键技术指导。

2025-07-14 19:04:37 728

原创 多线程(5)

多线程编程中的协作与陷阱 线程上下文切换是操作系统实现多任务并发的核心机制,通过保存当前任务状态(寄存器、程序计数器)到PCB并加载新任务状态,让多个任务在单CPU上"分时"运行。触发原因包括时间片耗尽、IO阻塞、锁竞争等。 同步锁(如Java的synchronized)是解决线程安全问题的关键工具,通过互斥访问共享资源防止数据竞争,但也可能导致死锁。死锁发生的四大必要条件:互斥、持有并等待、不可抢占和循环等待。预防死锁的策略包括:按固定顺序加锁、一次性申请所有资源、使用超时机制等。 [

2025-07-14 18:41:48 387

原创 多线程(4)

Java线程池中主线程等待子线程执行完成的方法总结 本文介绍了三种Java中主线程等待子线程执行完成的方法: Thread.join():基础方法,主线程阻塞等待单个子线程完成。适合简单场景,可设置超时时间,但需注意多次调用和中断处理。 Future与Callable:通过ExecutorService提交任务,使用Future.get()阻塞获取结果。适用于需要返回值的异步任务,需处理异常和关闭线程池。 CountDownLatch:通过计数器实现多线程同步,主线程等待所有子线程完成。适合批量任务处理场景

2025-07-11 17:25:31 452

原创 多线程(3)

多线程相关知识点

2025-07-10 17:42:23 694

原创 多线程(2)

ThreadLocal可能导致OOM的核心原因在于线程池中的线程长期存活时,未及时清理ThreadLocal变量。其关键问题在于: ThreadLocalMap中Entry的Key是弱引用,会被GC回收,但Value是强引用 线程池复用线程时,ThreadLocal变量会持续累积 仅靠惰性清理机制无法彻底清除无效Entry 当存储大对象且未调用remove()时,内存泄漏最终导致OOM 解决方案:使用ThreadLocal后必须调用remove()方法,尤其在线程池场景中。

2025-07-09 17:26:17 1072

原创 Spring AOP:从代理创建到切点匹配

本文深入解析Spring AOP的运行时原理,主要从代理对象生成、通知执行链路和切点匹配三个维度展开分析。在代理创建方面,详细介绍了ProxyFactory的核心组件及JDK动态代理与CGLIB代理的选择逻辑和实现机制;在通知执行方面,阐述了五种通知类型的特点和执行顺序,并以环绕通知为例说明其底层执行流程。通过源码分析和示例代码,揭示了Spring AOP通过动态代理技术实现业务逻辑解耦的核心机制。

2025-07-09 02:45:16 697

Redis入门介绍-02.docx

Redis

2021-02-27

NoSQL-01.docx

Redis

2021-02-27

Redis数据类型-03.docx

Redis

2021-02-27

空空如也

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

TA关注的人

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