- 博客(170)
- 收藏
- 关注

原创 Redis分片集群
Redis Cluster 是 Redis 官方提供的分布式解决方案。它不是像哨兵(Sentinel)那样只负责高可用切换,而是同时解决了数据分片和高可用两个问题。✨
2025-04-19 14:00:00
2649
26

原创 Spring Boot 断言:让你的代码在上线前就通过“体检”!
断言,就像你做菜时的这个“心里想的”。它是一种检查机制,用来确保你的代码在运行过程中,某些条件必须为真。✅
2025-03-23 18:30:00
5611
24

原创 你的网站安全吗?一文彻底搞懂 HTTPS!
HTTPS 就像给你的网络生活穿上了一件坚固的盔甲 🛡️,保护你免受各种网络攻击 👾。虽然不能保证 100% 安全,但能大大降低风险 📉。
2025-02-23 16:36:02
5333
4
原创 【MQ篇】RabbitMQ之惰性队列!
使用惰性队列,提高队列的容积上限,能存更多消息(治标,但很重要!惰性队列的优点(为啥要用它?):这是它最突出的优点!能应对可怕的消息堆积,存下数百万条消息而不崩。📦💯默认队列在内存不足时换页操作会带来性能波动。惰性队列一开始就存盘,避免了这种不稳定的换页过程。📊惰性队列的缺点(啥时候不适合?):从磁盘读消息比从内存慢是肯定的。如果你的业务对消息的“新鲜度”要求极高,需要消息一到就被秒级甚至毫秒级处理,那么惰性队列可能不是最佳选择。⏰。
2025-04-28 15:09:05
1008
1
原创 【MQ篇】RabbitMQ之死信交换机!
消费者使用或basic.nack声明消费失败,并且消息的requeue参数设置为false。这是最常见的主动制造死信的方式!“我不要这烫手山芋,你也别再发给我了,按死信处理吧!” 👋❌消息是一个过期消息,超时无人消费。消息或者它所在的队列设置了存活时间(TTL),时间到了还没被消费,就“自然死亡”了。🕰️👻要投递的队列消息满了,无法投递。队列像个仓库,容量有限,满了再来货,最老的可能被挤压“致死”。
2025-04-27 15:53:28
1344
28
原创 【MQ篇】RabbitMQ的消费者确认机制实战!
RabbitMQ 把消息发给消费者,如果消费者还没来得及处理完就“嗝屁了” 😵💫(程序崩溃、网络断开、处理异常),那这条消息对于 RabbitMQ 来说可能已经“送达”了,然后就被无情地从队列里删除了!如果在收到确认信号之前,消费者断开连接了,或者明确表示处理失败了,RabbitMQ 就会知道这条消息“有问题”,会考虑把这条消息重新发给其他消费者,或者等这个消费者恢复后再发给它。但如果家里没人,包裹被风吹走了 💨,或者被隔壁老王的狗叼走了 🐶📦💥,或者你拿到包裹后,手一滑掉粪坑里了 🚽…
2025-04-25 15:41:49
2114
28
原创 【MQ篇】RabbitMQ之消息持久化!
你想想,咱们电脑里的数据,要么放在内存里(速度快,但关机就没),要么存在硬盘上(速度慢点,但断电还在)。但如果 RabbitMQ 服务器突然“打个盹”😴 或者“哎呀,摔了一跤”💥(宕机或重启),内存里的东西就“唰”地一下都没了!,你就给这个队列上了把“锁” 🔒,告诉 RabbitMQ:“这个信箱要钉死在这儿,重启了也得给我留着!通过这个实验,你就能亲眼看到“持久化”的神奇力量:它让你的重要消息熬过了服务器的重启!
2025-04-25 11:12:59
1719
2
原创 【MQ篇】RabbitMQ的生产者消息确认实战!
开启发送方确认机制,就像给你的重要快递买了保险 🛡️,确保它至少能安全送达到快递公司的仓库,并被扫描入库。
2025-04-24 15:58:19
1464
8
原创 【MQ篇】RabbitMQ之发布订阅模式!
📣生产者和消费者之间通过交换机进行通信,无需直接交互,实现了生产者和消费者之间的解耦,提高了系统的可维护性和可扩展性。🤝可以根据不同的业务需求,配置不同的交换机类型和绑定规则,实现灵活的消息路由,从而更好地适应业务变化。⚙️发布/订阅模式非常适合需要将同一份消息发送给多个消费者进行处理的场景,例如实时通知 🔔、事件驱动 🎫、日志处理 📝、数据同步 🔄 等。
2025-04-23 14:09:04
1383
29
原创 【MQ篇】RabbitMQ之工作队列模式!
RabbitMQ 的工作队列模式就像一个高效的团队,通过将任务分发给多个 Worker 并行处理,极大地提高了系统的处理能力和吞吐量。
2025-04-23 10:08:16
950
2
原创 【MQ篇】RabbitMQ之简单模式!
RabbitMQ 的简单模式以其直观性和易用性,成为了我们踏入消息队列世界的良好起点。它就像一只勤劳的小兔子 🐇,默默地将消息从一个地方安全地送到另一个地方。
2025-04-22 15:01:23
1425
33
原创 【MQ篇】RabbitMQ初体验!
想象一下,你有很多信件(数据),需要寄给不同的朋友(应用程序)。如果让你一只一只地跑去送,那可真是累死个人!😩 这时候,RabbitMQ这只神奇的兔子就出现了。✨你可以把所有的信件都交给这只兔子,它会根据你事先设定的规则(路由),把信件准确无误地送到对应的朋友手中。这只兔子非常勤劳,不知疲倦,而且效率极高,能同时处理大量的信件。💨所以,简单来说,RabbitMQ就是一个消息队列中间件。它就像一个邮局或者一个快递公司,负责接收、存储和转发消息(数据)。
2025-04-22 11:19:59
1127
6
原创 【MQ篇】初识MQ!
想象一下,你开了一家网店,顾客下单后,你需要通知仓库发货、更新库存、给用户发送短信等等。如果没有MQ,你的系统可能就要像这样:顾客下单 -> 调用仓库系统 -> 等待仓库响应 -> 调用库存系统 -> 等待库存响应 -> 调用短信服务 -> 等待短信服务响应 -> 订单完成这就像让快递员直接跑遍所有环节,效率低下不说,万一哪个环节出了问题(比如仓库系统崩了),整个下单流程就卡住了!😱而MQ就像一个“快递中转站”。
2025-04-21 17:26:38
882
2
原创 【Netty篇】粘包和半包,Netty实战全解析!
想象一下,你跟远方的朋友老王用TCP发微信消息。📱你吸了肥胖消息:“今晚吃啥?”和“火锅怎么样?”,结果老王这边收到了一条消息:“今晚吃啥?火锅怎么样?对方的消息粘在一起了,就像一对热恋的情侣,分都分不开。🥰这就是粘包!你给老王发了一个超长的美食攻略,足足有10KB。结果这条消息在传输过程中被“切”成了好几段,老王先收到了“前面5KB…”,过一会儿又收到了“中间3KB…”,最后才收到“剩下的2KB…”。🔪一条完整的消息被拆掉了几块,这就是半包!怎么样,是不是有点画面感了?
2025-04-21 11:26:29
1146
原创 【Netty篇】Handler & Pipeline 详解
就像车间里的各路特种兵,不同的 Handler 负责不同的加工任务——有的负责“进料”(入站),有的负责“出货”(出站)。则是连接这些特种兵的生产线,就像流水线一样确保数据能够逐个被加工、转换后顺利送出。执行顺序入站:按照 Handler 添加的先后顺序依次处理(正序)。出站:按照 Handler 添加的逆序处理(倒序)。这一切就好像是一场精心设计的接力赛,数据作为接力棒在各个 Handler 之间传递、加工,最终将高质量的产品“送达”客户端!🍔🚀。
2025-04-17 15:02:49
1207
12
原创 【Netty篇】Channel 详解
Channel 是 Netty 中网络操作的核心抽象,代表了一个开放的连接。Channel 负责建立和维护连接,输送数据,处理异常。
2025-04-17 12:09:35
934
14
原创 【Netty篇】EventLoopGroup 与 EventLoop 详解
EventLoopGroup 就像是一个“包工头”,负责创建和管理 EventLoop。EventLoop 就像是“工人”,负责处理 I/O 事件、普通任务和定时任务。它们之间的关系就像是“领导”和“员工”,互相配合,共同完成任务。
2025-04-16 10:19:11
736
14
原创 【Netty篇】Netty的线程模型
Netty 的线程模型就像一个高效的餐厅管理系统,可以帮助你构建高性能、高可靠性的网络应用。虽然有一定的学习成本,但只要掌握了它的原理和使用方法,就能让你的应用如虎添翼,生意兴隆!💯 😊。
2025-04-15 15:33:13
951
19
原创 【NIO番外篇】之组件 Selector
Selector就是 NIO 请来的超级调度员!它允许你用一个线程(一个敬业的管制塔操作员 🧑✈️ 或总机接线员 ☎️)来同时监控多个通道(Channels)的状态。
2025-04-14 14:12:02
1399
30
原创 【NIO番外篇】之组件 Buffer
简单说,Buffer就是内存里的一块固定大小的区域,专门用来临时存储数据。它就像一个容量有限的快递车厢🚚 或者仓库里的托盘📦。
2025-04-14 10:35:50
1018
12
原创 【NIO番外篇】之组件 Channel
NIO,看完你就懂了!在Java NIO(New I/O)模型中,Channel扮演着核心角色。可以将其理解为一个连接到能够执行I/O操作的实体(如文件、网络套接字)的开放连接或通道。它类似于传统Java I/O中的Stream双向性:传统的只能读,只能写。而Channel通常是双向的,可以同时进行读和写操作(具体取决于通道类型,例如与Buffer交互Channel本身不直接存储数据。所有数据读写都必须通过Buffer对象进行。数据总是先从Channel读入Buffer,或者从Buffer写入。
2025-04-13 14:49:18
1137
8
原创 AIO,看完你就懂了!
AIO,全称 Asynchronous Input/Output(异步输入/输出),也称为 NIO.2,是 Java 7 引入的一套新的 I/O API,位于包下。它提供了真正的异步、非阻塞I/O 模型。
2025-04-13 10:32:56
734
4
原创 NIO,看完你就懂了!
NIO,通常指 Non-blocking I/O(非阻塞 I/O),也是 Java 4 (JDK 1.4) 引入的 New I/O API。
2025-04-12 14:37:00
1309
8
原创 BIO,看完秒懂!
BIO,全称 Blocking Input/Output(阻塞输入/输出),是 Java 中最早提供的 I/O 模型。它是一种同步阻塞的 I/O 模型。
2025-04-12 13:46:43
969
4
原创 ReentrantLock 实现公平锁和非公平锁的原理!
ReentrantLock 公平锁还是非公平锁?别再纠结了!性能与秩序的“锁”中智慧🤔
2025-04-11 21:22:45
740
4
原创 大白话聊MySQL覆盖索引
想象一下,你要查一本很厚的书 📖(数据库表)里的几条信息。普通索引(没覆盖):就像书的目录(索引)。你先在目录里找到你要查的章节 🔍(比如按年龄查人),目录告诉你这个章节在第几页(数据行的位置)。然后,你得翻到那一页 📄(回到主表数据),才能看到完整的章节内容(比如这个人的姓名、邮箱等)。这个“翻到具体页码再去找内容”的动作,就有点像数据库里的“回表” 🏃💨。覆盖索引:还是查书。但这次,你要查的信息(比如姓名和年龄),恰好在那个目录页上就直接写清楚了 ✨!
2025-04-11 21:17:12
881
原创 大白话趣解RSA:从“邮箱锁”到加密核心,彻底入门非对称加密
想象一下,你想给你的朋友小明寄一个秘密包裹 📦,但你担心邮递员或者其他人偷看。小明准备了一把锁 🔒(公钥)和一个只有他自己有的钥匙 🔑(私钥)。小明把这把打开的锁🔒(公钥)复制了很多份,给了所有想给他寄东西的人,包括你。这个锁谁都可以拿到,没关系。你想给小明寄包裹时,就用小明给你的那把打开的锁🔒(公钥)把包裹锁上。注意:一旦锁上,用这把锁(公钥)是打不开的!只有小明手里的那把独一无二的钥匙 🔑 才能打开。你把锁好的包裹寄给小明 ✉️。小明收到包裹后,用他自己私藏的钥匙。
2025-04-10 16:53:40
1782
11
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人