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

原创 【MySQL】深入理解MySQL中的Join算法
在数据库处理中,Join操作是最基本且最重要的操作之一,它能将不同的表连接起来,实现对数据集的更深层次分析
2023-10-10 09:23:20
430

原创 【架构设计】高并发系统设计之负载均衡
当我们的应用单实例不能支撑用户请求时,此时就需要扩容,从一台服务器扩容到两台、几十台、几百台。此时我们就需要负载均衡,进行流量的转发。
2023-09-06 10:16:40
240

原创 【MySQL】 MRR
MRR,全称「Multi-Range Read Optimization」。先来了解下回表,回表是指,InnoDB在普通索引a上查到主键id的值后,再根据一个个主键id的值到主键索引上去查整行数据的过程。我们知道二级索引是有回表的过程的,由于二级索引上引用的主键值不一定是有序的,因此就有可能造成大量的随机 IO,如果回表前把主键值给它排一下序,那么在回表的时候就可以用顺序 IO 取代原本的随机 IO。简单说:MRR 通过把「随机磁盘读」,转化为「顺序磁盘读」,从而提高了索引查询的性能。
2022-09-12 21:28:10
2133
4

原创 【MQ】Kafka如何保证幂等性
文章目录幂等性要解决的问题?Kafka 是怎么保证幂等性的?开启幂等性配置Kafka幂等性的局限性事务kafka默认情况下,提供的是至少一次的可靠性保障。即broker保障已提交的消息的发送,但是遇上某些意外情况,如:网络抖动,超时等问题,导致Producer没有收到broker返回的数据ack,则Producer会继续重试发送消息,从而导致消息重复发送。如果我们禁止Producer的失败重试发送功能,消息要么写入成功,要么写入失败,但绝不会重复发送。这样就是最多一次的消息保障模式。但对于消息组件,
2022-05-03 22:30:11
7645

原创 【MQ】Kafka如何保证消息不丢失
文章目录Producer端保证消息不丢失Consumer端保证消息不丢失Broker端保证消息不丢失总结Producer端Consume端Broker端没时间的朋友建议直接看总结Kafka存在丢消息的问题,消息丢失会发生在Broker,Producer和Consumer三种。Producer端保证消息不丢失为了提升效率,减少IO,producer在发送数据时可以将多个请求进行合并后发送。被合并的请求发送之前缓存在本地buffer中。但是,buffer中的数据是危险的。一旦producer被
2022-05-03 12:30:14
1523

原创 【分布式】分布式事务基础概念(2PC,3PC,TCC)
文章目录XA协议两阶段提交协议(2PC)2PC 过程准备阶段提交阶段2PC总结三阶段提交协议(3PC)3PC过程阶段一 CanCommit阶段二 PreCommit阶段三 DoCommit3PC总结TCC(Try-Confirm-Cancel)流程设计要点TCC总结XA协议在讲分布式事务之前,必然需要先了解XA协议。XA是一个协议,由Oracle Tuxedo系统提出的XA分布式事务协议。XA协议定义了分布式事务参与方的两个角色:事务协调者(TM=Transaction Manager)资源管
2022-04-23 11:38:01
3085
1

原创 【大数据】亿级数据中判断一个数是否存在
文章目录问题描述解决方案BloomFilter(布隆过滤器)fpp布隆过滤器的特点布隆过滤器中的数据可不可以删除布隆过滤器应该设计为多大?布隆过滤器应该使用多少个哈希函数?布隆过滤器的时间复杂度和空间复杂度?Guava的布隆过滤器的实现BitMap问题描述在开发过程中,经常要判断一个元素是否在一个集合中。假设你现在要给项目添加IP黑名单功能,此时你手上有大约 1亿个恶意IP的数据集,有一个IP发起请求,你如何判断这个IP在不在你的黑名单中?类似这种问题用Java自己的Collection和Map很
2022-03-05 16:08:05
3177

原创 【并发】高并发下库存超卖问题如何解决?
文章目录出现场景解决方案数据库设置字段为无符号型悲观锁乐观锁通过redis队列解决分布式锁+分段缓存(推荐方案)Redis原子操作(Redis incr)+乐观锁LUA脚本保持库存原子性出现场景在并发的场景下,比如商城售卖商品中,一件商品的销售数量>库存数量的问题,称为超卖问题。主要原因是在并发场景下,请求几乎同时到达,对库存资源进行竞争,由于没有适当的并发控制策略导致的错误。例如简单的下单操作,通常我们会按照如下写法public ServerResponse createOrder(Integ
2022-03-01 23:25:08
4490
2

原创 【RabbitMQ】RabbitMQ如何做到保证消息100%不丢失?
文章目录写在前面如何保证消息100%不丢失生产端可靠性投递事务消息机制confirm消息确认机制消息持久化消息入库消费端可靠性投递ACK机制改为手动SpringBoot 提供的消息重试项目中使用RabbitMQ来作为消息队列,遇见过消息丢失的情况,特此记录一下。写在前面先来说下MQTT协议中的3种语义,这个非常重要。在MQTT协议中,给出了三种传递消息时能够提供的服务质量标准,这三种服务质量从低到高依次是:At most once:至多一次。消息在传递时,最多会被送达一次。也就是说,没什么消
2022-02-24 21:48:35
10618
1

原创 【Redis】Redis跟MySQL的双写问题解决方案
文章目录写在前面三种读写缓存策略Cache-Aside Pattern(旁路缓存模式)Read-Through/Write-Through(读写穿透)Write Behind Pattern(异步缓存写入)旁路缓存模式解析Cache Aside Pattern 的一些疑问Cache Aside Pattern 的缺陷项目中有遇到这个问题,跟MySQL中的数据不一致,研究一番发现这里面细节并不简单,特此记录一下。写在前面严格意义上任何非原子操作都不可能保证一致性,除非用阻塞读写实现强一致性,所以缓存
2022-02-23 13:56:25
1254
1

原创 计算机操作系统学习笔记(1)——硬件结构
文章目录一、冯诺依曼模型二、CPU二、寄存器三、总线四、执行过程一、冯诺依曼模型冯诺依曼模型分为5个组成部分:中央处理器(CPU)内存输⼊设备输出设备总线CPU可以分为:控制单元,逻辑运算单元和寄存器。其中,控制单元负责控制 CPU ⼯作,逻辑运算单元负责计算,⽽寄存器可以分为多种类,每种寄存器的功能⼜不尽相同。寄存器又可以分为:指令寄存器,通用寄存器和程序计数器等总线可以分为:控制总线,地址总线和数据总线。地址总线传的是内存中的地址,数据总线传的是对应地址的内存数据,控制总线
2021-12-01 16:22:32
6030
原创 业务幂等性设计的六种方案
本文围绕业务幂等性展开,先介绍其概念、重要性及需考虑幂等的业务场景,后从数据库唯一索引、防重表等多个方面阐述幂等设计的实现方式 。
2025-03-16 17:06:24
868
原创 压缩位图——Roaring Bitmap
位图最大的弊端是稀疏存储,如果数据很分散,那么将造成严重的空间浪费。压缩位图的出现解决了位图的稀疏存储问题。
2024-11-30 11:27:01
1245
原创 如何优雅地Spring事务编程
在开发中,有时候我们需要对 Spring 事务的生命周期进行监控,比如在事务提交、回滚或挂起时触发特定的逻辑处理。那么如何实现这种定制化操作呢?
2024-04-24 13:05:26
765
原创 一起学Elasticsearch系列-Pipeline
Elasticsearch Pipeline作为Elasticsearch中强大而灵活的功能之一,为用户提供了处理数据的机制,可以在数据索引之前或之后应用多种处理步骤,例如数据预处理、转换、清洗、分析等操作
2024-02-28 10:16:20
1513
原创 详解Redis持久化
了解Redis持久化的原理,对于Redis保障数据的完整性是至关重要的,这篇文章就跟各位一起来学习下Redis的持久化机制
2024-02-25 17:46:34
2182
原创 一文搞懂设计模式—享元模式
当系统中存在大量相似对象时,每个对象都需要占用一定的内存空间,如果这些对象的大部分属性是相同的,那么频繁创建这些对象会导致内存消耗过大。享元模式将这些相同部分抽取出来作为共享的内部状态,在需要时进行共享,从而减少内存占用。
2024-02-19 17:02:51
803
原创 一文搞懂设计模式—装饰器模式
装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许向现有对象添加新功能而不改变其结构。装饰器模式通过创建包装对象(装饰器)来动态地扩展对象的行为,是继承的替代方案之一。
2024-02-19 17:02:05
1070
原创 一文搞懂设计模式—适配器模式
适配器模式(Adapter Pattern)属于结构型模式,用于将一个类的接口转换成客户端所期望的另一个接口。它允许不兼容的类之间进行合作。
2024-02-19 17:01:26
984
原创 一文搞懂设计模式—模板方法模式
模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),是一种行为设计模式,它定义了一个操作中的算法框架,将某些步骤的具体实现留给子类。
2024-02-19 17:00:42
1121
原创 一文搞懂设计模式—工厂方法模式
工厂方法模式属于创建型模式,通过定义一个用于创建对象的接口,将具体的实例化延迟到子类中,提供了一种灵活、可扩展的对象创建方式,使得系统更加符合开闭原则
2024-02-19 16:59:45
854
原创 一文搞懂设计模式—门面模式
门面模式(Facade Pattern)也叫做外观模式,是一种结构型设计模式。它提供一个统一的接口,封装了一个或多个子系统的复杂功能,并向客户端提供一个简单的调用方式
2024-02-18 10:20:02
2476
原创 一文搞懂设计模式—观察者模式
观察者模式(Observer Pattern)是一种常见的行为型设计模式,用于在对象之间建立一种一对多的依赖关系。当一个对象的状态发生变化时,所有依赖它的对象都将得到通知并自动更新
2024-02-18 09:52:26
1352
原创 一文搞懂设计模式—责任链模式
责任链模式允许多个对象按照顺序处理请求,并且每个对象可以选择自己是否处理该请求或将其传递给下一个对象,这种模式将请求的发送者和接收者解耦
2024-01-29 10:11:33
1576
原创 一文搞懂设计模式—策略模式
在软件开发中,经常会遇到需要根据不同的条件来实现不同行为的场景。这种场景下,策略模式(Strategy Pattern)就是一种非常有用的设计模式
2024-01-29 10:01:33
1316
原创 实战Arthas:常见命令与最佳实践
当涉及到 Java 应用程序的诊断和调优时,Arthas 是一款备受推崇的开源工具,无论是线上问题的定位,还是实时性能监控和分析,Arthas 都能为您提供强大的支持
2024-01-23 10:10:36
1531
原创 异步编程利器:CompletableFuture深度解析
CompletableFuture 类提供了丰富的方法和功能,能够简化异步任务的处理和组合
2024-01-11 10:39:07
1029
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人