- 博客(32)
- 收藏
- 关注
原创 RabbitMq高级特性:TTL,死信队列,延迟队列
本文基于SpringBoot与SpringAMQP实现RabbitMQ的TTL、死信队列及延时队列。通过设置消息或队列过期时间,结合死信机制实现延时效果,适用于订单超时取消、定时提醒等场景。传统TTL+死信队列存在时效性差问题(如后入先出),而使用RabbitMQ官方延迟插件(x-delayed-message)可精准控制消息延迟投递,提升时效性,更适合高精度延时需求。
2026-09-10 18:33:59
170
1
原创 RabbitMq高级特性:消息确认,持久化,重试机制
本文基于SpringBoot与SpringAMQP,详解消息可靠传输的实现机制。通过发送方确认(Confirm/Returns模式)、接收方手动确认(MANUAL模式)、交换机/队列/消息持久化及重试机制,全面保障生产端、Broker端、消费端的消息可靠性。针对多消息确认,使用CorrelationData标识;若死锁导致无法ack,RabbitMQ将重投消息至其他消费者,避免丢失。
2026-09-10 18:33:53
213
1
原创 RabbitMQ :与AMQP的关系、核心组件、交换机类型
AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一套开源、标准化、跨平台的消息队列通信协议,核心作用是定义消息中间件服务端与客户端的通信规范,统一消息的发送、路由、接收、确认等交互逻辑。简单来说,AMQP 相当于消息队列的「通用行业标准」,只要中间件遵循该协议,不同语言、不同客户端都可以无缝对接通信,无需适配不同中间件的私有逻辑。目前主流版本为AMQP 0-9-1,也是 RabbitMQ 专属适配的协议版本。交换机类型匹配规则通信模式性能。
2026-09-04 16:09:48
71
2
原创 吃透redis数据结构(一)
<think>我们根据用户要求,基于提供的长内容生成≤150字的文章摘要。内容涵盖了Redis各类数据结构的底层原理、特点、使用场景等。摘要需要概括核心要点,语言精炼。字数限制严格。 主要点:String底层SDS、线程安全、场景;List的QuickList、消息队列优缺点;Hash的编码转换、扩容、缺点;Set的底层与场景。摘要应简明扼要。 尝试: "本文系统梳理Redis核心数据结构:String底层为SDS,支持O(1)长度与二进制安全,INCR原子;List基于QuickLi
2026-09-04 16:07:53
422
1
原创 redis十连问(一)
redis是使用内存来存储数据的内存数据库,区别于MySQL这类数据库,redis并非使用表的结构爱存储数据,而是主要使用 key-value的键值对格式存储数据,总结来说redis就是一种高性能(使用内存)key-value 内存数据库。特性:使用内存来存储数据,支持多种数据结构,支持持久化,事务,使用单线程来处理客户端请求,支持主从复制,哨兵模式,集群模式,同时也支持多种语言客户端。1,redis的绝大部分操作是内存操作,速度很快,瓶颈大多不在CPU,而在网络IO。
2026-08-17 18:53:08
226
1
原创 redis集群原理,核心重点
本文系统介绍了Redis三大集群方案及其演进路线,重点剖析了主流的Cluster分片集群架构。内容涵盖:1. 三大方案对比:主从复制(基础备份)、哨兵(高可用)、Cluster(分片+高可用);2. Cluster核心原理:16384哈希槽分片机制、去中心化Gossip通信、智能请求路由(MOVED/ASK重定向);3. 高可用保障:主观/客观下线判定、自动故障转移流程;4. 选型建议与常见误区。Cluster凭借分片存储、横向扩容、无单点故障等优势,成为大规模业务首选方案。
2026-08-12 21:28:29
338
1
原创 redis哨兵机制,原理,流程,搭建过程详解
摘要: Redis哨兵模式是主从架构的高可用增强方案,通过独立哨兵进程集群(通常3节点)实现节点监控、自动故障转移和客户端通知。核心流程包括主观/客观下线判定、领导者选举、最优从节点升级(优先级+数据偏移量)及配置同步。标准部署为1主2从3哨兵,具备自动容灾、读写分离和客户端无感切换等优势,但存在单节点容量限制和数据异步复制延迟问题。生产环境需注意奇数哨兵部署、网络隔离、主从延迟优化,并建议结合RDB+AOF持久化。该方案适用于中小规模场景,超大数据量需升级至Redis Cluster分片集群。 (字数:1
2026-08-09 15:20:42
447
1
原创 redis主从复制,原理,流程,搭建过程详解
Redis主从复制解决了单机Redis的两大核心问题:数据不安全(通过多节点热备份)和读写高并发(读写分离),采用全量+增量复制机制保障数据一致性。典型架构为一主多从,支持链式扩展,但存在同步延迟、无法自动故障转移和水平扩容的局限性。主从复制是高可用架构的基础,生产环境需结合哨兵(实现故障转移)或Cluster集群(实现分片扩容)使用。该架构简单易部署,适合作为Redis高可用体系的底层基础。
2026-08-09 00:23:46
220
原创 redis缓存完整详解
Redis作为高性能内存数据库,是解决高并发场景下数据库IO瓶颈的理想缓存方案。摘要介绍了Redis缓存的核心概念、工作模式和三大经典问题解决方案:1)缓存穿透采用空值缓存和布隆过滤器;2)缓存击穿通过分布式锁和永不过期key应对;3)缓存雪崩采用过期时间随机化、多级缓存等策略。最佳实践强调必须设置缓存过期时间、规范读写策略(先更新DB再删缓存)、统一key命名规范,并通过集群部署和多级缓存确保高可用。Redis凭借内存操作、丰富数据结构和持久化机制,能有效提升系统响应速度并降低数据库压力。
2026-08-07 19:42:48
273
原创 redis分布式锁完整详解
Redis分布式锁是解决微服务架构下共享资源并发访问问题的关键技术。文章系统介绍了分布式锁的演进过程:从基础的setnx命令实现(存在死锁和误删风险),到引入过期时间解决死锁问题,再到通过唯一ID和Lua脚本保证原子操作防止误删。最后提出两种高级方案:看门狗机制实现锁自动续约,以及Redlock算法通过多节点写入确保集群环境下的可靠性。整个过程围绕死锁、误删、原子性和续约四大核心问题展开,展示了分布式锁的完整技术演进路径。
2026-08-07 19:42:02
393
原创 Redis持久化详解:RDB与AOF原理、配置、优缺点
Redis提供RDB和AOF两种持久化方式。RDB通过定期生成内存快照实现全量备份,具有恢复快、体积小的特点,但存在数据丢失风险;AOF记录所有写命令,数据安全性高但文件较大。Redis 5.0+支持混合持久化,结合二者优势,在AOF重写时首部保存RDB快照,尾部追加增量命令,兼顾恢复速度与数据安全。生产环境推荐开启混合模式,根据业务需求配置适当的触发策略,在性能和数据可靠性间取得平衡。
2026-08-02 18:03:08
448
原创 Redis事务详解:原理、实战、坑点与实践
Redis事务是一组原子性执行的命令集合,通过MULTI/EXEC命令实现批量操作,具备顺序性和排他性,但不支持完整ACID特性。其核心特点包括:部分原子性(仅语法错误时整体不执行)、一致性、串行化隔离级别,但缺乏回滚机制和持久性保证。通过WATCH命令实现乐观锁控制并发,执行阶段出现逻辑错误会导致部分命令执行。相比Lua脚本,Redis事务适用于简单批量操作,而Lua脚本则提供更强的原子性、灵活性和性能。实际应用中需根据场景选择,简单操作可用原生事务+WATCH,高并发强一致性需求更推荐Lua脚本。
2026-08-02 18:02:52
306
1
原创 redis的key的过期策略
Redis采用惰性删除+定期删除组合策略处理过期Key:惰性删除在访问时检查过期并删除,定期删除定时随机清理过期Key。为防止内存泄漏,Redis还提供内存淘汰机制,推荐使用allkeys-lru策略淘汰冷门数据。生产环境中需为缓存Key设置分散的过期时间,避免集中失效导致雪崩。该机制平衡了CPU与内存资源,但无法保证完全实时清理过期数据,需结合内存淘汰策略兜底。
2026-07-25 15:16:43
505
1
原创 redis采用的单线程模型,为什么这么快?
Redis单线程高性能的核心原理:采用单线程执行命令(网络IO多线程化),通过纯内存操作、IO多路复用技术、无锁设计及高效数据结构实现超高吞吐量。关键优势在于规避多线程的上下文切换和锁竞争开销,但存在慢命令阻塞风险。Redis 6.0的多线程仅优化网络IO,命令执行仍保持单线程串行以保证线程安全。生产环境需避免阻塞命令,采用集群部署充分利用多核CPU。
2026-07-25 15:16:30
33
2
原创 从架构演进搞懂redis存在的意义,redis核心本质
文章摘要:Redis通过内存存储和高效数据结构解决传统数据库在高并发场景下的性能瓶颈。系统架构演进从单机部署逐步发展为应用与数据库分离、负载均衡、读写分离和分库分表,但依然面临磁盘IO限制。引入Redis作为缓存层后,热点数据常驻内存,大幅减少数据库访问,提升响应速度。Redis的核心优势在于内存操作避免磁盘IO,以及直接操作优化的内存数据结构,使其性能远超传统数据库。(149字)
2026-07-23 16:03:01
22
1
原创 Cookie跨域限制
Cookie跨域限制是浏览器同源策略的安全机制,要求协议、域名、端口完全一致才能自动传输Cookie,否则会被拦截。传统Session登录依赖Cookie,跨域时无法传递SessionID导致登录失效。而JWT通常存储在LocalStorage中,由前端手动添加到请求头,不受跨域限制。浏览器存储方式对比:Cookie自动携带但受同源策略限制且容量小;LocalStorage永久存储且容量大,需手动传输;SessionStorage仅当前标签页有效。JWT方案通过LocalStorage存储和手动传输,有效规
2026-07-15 16:54:08
237
2
原创 彻底搞懂JWT令牌:原理与实战应用
本文介绍了JWT令牌的原理及应用场景。JWT是一种基于JSON的无状态令牌,由Header、Payload、Signature三部分组成,解决了传统Session在分布式系统中的存储和跨域问题。文章详细分析了JWT的工作流程、与Session的对比、优缺点及安全解决方案,包括黑名单机制和双令牌机制。JWT适用于微服务架构,具有轻量、跨平台等优势,但需注意其无法主动注销和可解码的特性,建议通过加密、HTTPS等方式提升安全性。
2026-07-15 16:51:36
299
1
原创 吃透Spring事务 :核心原理,传播机制,隔离级别,使用场景
本文系统介绍了Spring事务的实现原理与应用场景。首先阐述事务的ACID特性(原子性、一致性、隔离性、持久性)及Spring通过AOP动态代理实现的两种事务管理方式:声明式(@Transactional注解)和编程式。重点解析了@Transactional的核心配置属性(rollbackFor、传播机制、隔离级别)及其使用注意事项,详细说明了7种常见的事务失效场景及解决方案。最后揭示了Spring事务底层实现机制:基于ThreadLocal的线程上下文管理,配合事务管理器和AOP动态代理实现完整的事务流程
2026-06-29 17:13:23
227
3
原创 彻底搞懂Spring AOP:AOP底层原理
本文深入分析了Spring AOP的实现原理,指出其本质是基于动态代理实现方法逻辑增强。文章详细对比了JDK动态代理和CGLIB动态代理的核心原理、实现方式及适用场景:JDK代理适用于接口类,通过InvocationHandler实现方法拦截;CGLIB通过生成子类实现代理,但无法处理final/private/static方法。文中还阐述了AOP的工作流程、注解解析过程以及常见问题,如默认代理选择规则(SpringBoot 2.0+强制使用CGLIB)和无法增强的场景。最后总结了AOP通过动态代理实现业务
2026-06-27 16:57:16
335
2
原创 彻底搞懂Spring AOP:如何实现AOP
Spring AOP(面向切面编程)的核心价值在于解耦通用逻辑与业务代码,解决代码冗余和维护难题。通过定义切面类(@Aspect)和通知注解(如@Around),开发者能统一处理日志、性能监控等横切关注点。典型应用包括:1)使用execution或@annotation表达式精准拦截方法;2)通过@Order控制多切面执行顺序;3)结合自定义注解实现细粒度增强(如接口耗时统计)。AOP以非侵入方式实现功能扩展,显著提升代码复用性和可维护性。
2026-06-27 16:56:43
243
原创 一文吃透Maven:从依赖冲突到生命周期
在Java开发中,Maven几乎是所有项目的构建和依赖管理标准工具,本文系统梳理Maven核心知识点,带你一次性吃透Maven。
2026-06-03 16:21:34
246
1
原创 SpringMVC 会话机制: Cookie和Session
用户打开浏览器,访问网站的多个资源,直到关闭浏览器的整个过程中,称为一次会话。会话的核心需求:保存用户状态,让服务器识别同一用户的连续请求。
2026-06-03 16:21:14
298
1
原创 什么是JDK,JDK能干什么??(简易入门版)
JDK是Java开发工具包,包含开发工具(如javac编译器、java运行器)、JRE和JVM。JRE是Java运行环境(JVM+核心库类),仅支持运行程序。JVM负责将字节码翻译为机器码,实现"一次编写,到处运行"。JDK=JRE+开发工具;JRE=JVM+核心库类。C++等语言因直接编译为特定系统机器码而难以跨平台,而Java通过JVM实现跨平台兼容性。
2026-05-31 18:38:10
262
1
原创 POM:Maven的核心配置
POM(项目对象模型)是Maven项目的核心配置文件pom.xml,它相当于项目的"身份证+购物清单+施工说明书"。POM主要定义三方面内容:项目坐标(GAV标识)、依赖包清单(包含传递依赖)以及构建配置(如JDK版本)。Maven完全基于POM运行,所有操作(依赖管理、编译打包等)都通过读取pom.xml执行,就像施工队必须依赖施工图纸才能工作。没有POM文件,Maven无法识别和构建项目。
2026-05-31 18:33:17
332
1
原创 教你彻底搞懂HTTPS的加密原理
HTTPS本质上就是给HTTP“穿了一身衣服”。没有这层衣服的HTTP就像是在互联网上“裸奔”,任何人只要和你连着同一个WIFI,都能看到你在网上的一举一动。HTTPS协议保证了应用层数据传输的安全可靠性。
2026-05-21 18:22:02
396
原创 Java -- 栈
栈在生活中的实例:子弹从顶部压入弹仓(入栈),射击时也是从顶部先取出最后压入的那发子弹(出栈),完全契合 “后进先出” 的特性。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。栈:一种特殊的线性表,其只允许在固定的一端进行插⼊和删除元素操作。补充:栈(stack)中还包括size()方法,java.util.Stack。—— 看似 “没有”,实则 “继承获得”,本质上是可以使用的。压栈:栈的插⼊操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。
2025-12-04 19:46:15
302
原创 java -- String(二)
在这段代码中,字符串并没有被修改,原本的字符串“hello”并没有改变,而是创建了一个新的String对象,如果采用循环的方式一直拼接字符串,会产生许多个临时对象,从而导致运行效率很低;在Java中 ,intern()方法时String类的一个native方法,其核心作用是将字符串对象加入(或关联到)字符串常量池,从而实现字符串的复用,节省内存空间。此时final修饰该数组表示,该数组不能指向其他的对象,但是可以修改数组内部的数据。3.若不存在,则将当前字符串str的引用加入常量池,并返回该引用。
2025-10-24 13:40:23
298
1
原创 Java -- String类(一)
字符串构造一般为以下四种方式1.使用字符创常量进行构造2.直接new String对象3.使用字符数组进行构造4.使用字节数组进行构造5.查看源码可以发现,String为引用类型,内部并不存储字符串本身我们通过观察String类源码中的成员变量可以发现String 内部通过来存储字符数据(字节数组形式),是String类的一个核心存储容器。这说明String 并不是直接存储 “字符串本身” 的字符序列,而是通过字节数组(结合编码)来存储字符的底层数据。
2025-10-23 11:25:51
812
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅