自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分库分表核心理念

本文深入探讨了分库分表的策略、算法和实践,包括何时分库分表、横向与纵向拆分、分表算法、全局ID生成及迁移方案。

2024-09-08 13:34:16 1613

原创 如何设计一个秒杀系统?

如何设计一个秒杀系统?

2024-06-16 18:35:05 1203 1

原创 12306技术内幕

12306承受了这个世界上能秒杀任何系统的QPS

2024-05-25 19:32:52 861 1

原创 【MySQL】深入理解MySQL中的Join算法

在数据库处理中,Join操作是最基本且最重要的操作之一,它能将不同的表连接起来,实现对数据集的更深层次分析

2023-10-10 09:23:20 241

原创 【架构设计】高并发系统设计之负载均衡

当我们的应用单实例不能支撑用户请求时,此时就需要扩容,从一台服务器扩容到两台、几十台、几百台。此时我们就需要负载均衡,进行流量的转发。

2023-09-06 10:16:40 181

原创 【DDD】全网最详细2万字讲解DDD,从理论到实战(代码示例)

2万字DDD学习笔记总结,全是干货。理论+实战(代码示例) 结合

2022-10-10 18:03:31 19067 1

原创 【Redis】Redis知识点阶段性总结

对Redis中的一些知识点做的一些笔记总结

2022-10-03 12:05:32 974

原创 【MySQL】 MRR

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

2022-09-12 21:28:10 2060 3

原创 【MQ】Kafka如何保证幂等性

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

2022-05-03 22:30:11 7551

原创 【MQ】Kafka如何保证消息不丢失

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

2022-05-03 12:30:14 1469

原创 【分布式】分布式事务基础概念(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 2976 1

原创 【分布式】分布式基础 CAP理论 & BASE 理论

【分布式】分布式基础 CAP理论 & BASE 理论

2022-04-12 17:50:49 224 2

原创 【大数据】亿级数据中判断一个数是否存在

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

2022-03-05 16:08:05 3102

原创 【并发】高并发下库存超卖问题如何解决?

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

2022-03-01 23:25:08 4265 2

原创 【RabbitMQ】RabbitMQ如何做到保证消息100%不丢失?

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

2022-02-24 21:48:35 10022 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 1207 1

原创 计算机操作系统学习笔记(1)——硬件结构

文章目录一、冯诺依曼模型二、CPU二、寄存器三、总线四、执行过程一、冯诺依曼模型冯诺依曼模型分为5个组成部分:中央处理器(CPU)内存输⼊设备输出设备总线CPU可以分为:控制单元,逻辑运算单元和寄存器。其中,控制单元负责控制 CPU ⼯作,逻辑运算单元负责计算,⽽寄存器可以分为多种类,每种寄存器的功能⼜不尽相同。寄存器又可以分为:指令寄存器,通用寄存器和程序计数器等总线可以分为:控制总线,地址总线和数据总线。地址总线传的是内存中的地址,数据总线传的是对应地址的内存数据,控制总线

2021-12-01 16:22:32 5988

原创 DAO层和Service层的究极理解--这波我在大气层

说实话,学了挺久的MVC架构了,到现在也一直没整明白Service层和DAO层是干什么用的。这波是Dao成和Service层的究极理解,相信大家看了之后会有所感悟

2020-07-21 16:47:24 35321 50

原创 时间复杂度 & 空间复杂度分析

时间复杂度就是需要执行多少次,空间复杂度就是对象被创建了多少次。

2024-06-17 17:33:52 699

原创 如何优雅地Spring事务编程

在开发中,有时候我们需要对 Spring 事务的生命周期进行监控,比如在事务提交、回滚或挂起时触发特定的逻辑处理。那么如何实现这种定制化操作呢?

2024-04-24 13:05:26 709

原创 熬夜整理的2W字DDD学习笔记,从理论到实战

DDD 不是架构,而是一种架构设计方法论

2024-04-15 11:16:37 908 1

原创 一起学Elasticsearch系列-Pipeline

Elasticsearch Pipeline作为Elasticsearch中强大而灵活的功能之一,为用户提供了处理数据的机制,可以在数据索引之前或之后应用多种处理步骤,例如数据预处理、转换、清洗、分析等操作

2024-02-28 10:16:20 1336

原创 详解Redis持久化

了解Redis持久化的原理,对于Redis保障数据的完整性是至关重要的,这篇文章就跟各位一起来学习下Redis的持久化机制

2024-02-25 17:46:34 1962

原创 一文搞懂设计模式—代理模式

代理模式(Proxy Pattern)是一种结构型设计模式,也叫做委托模式,它允许你提供一个间接访问对象的方式

2024-02-19 17:03:35 1448

原创 一文搞懂设计模式—享元模式

当系统中存在大量相似对象时,每个对象都需要占用一定的内存空间,如果这些对象的大部分属性是相同的,那么频繁创建这些对象会导致内存消耗过大。享元模式将这些相同部分抽取出来作为共享的内部状态,在需要时进行共享,从而减少内存占用。

2024-02-19 17:02:51 742

原创 一文搞懂设计模式—装饰器模式

装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许向现有对象添加新功能而不改变其结构。装饰器模式通过创建包装对象(装饰器)来动态地扩展对象的行为,是继承的替代方案之一。

2024-02-19 17:02:05 984

原创 一文搞懂设计模式—适配器模式

适配器模式(Adapter Pattern)属于结构型模式,用于将一个类的接口转换成客户端所期望的另一个接口。它允许不兼容的类之间进行合作。

2024-02-19 17:01:26 926

原创 一文搞懂设计模式—模板方法模式

模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),是一种行为设计模式,它定义了一个操作中的算法框架,将某些步骤的具体实现留给子类。

2024-02-19 17:00:42 1054

原创 一文搞懂设计模式—工厂方法模式

工厂方法模式属于创建型模式,通过定义一个用于创建对象的接口,将具体的实例化延迟到子类中,提供了一种灵活、可扩展的对象创建方式,使得系统更加符合开闭原则

2024-02-19 16:59:45 787

原创 【设计模式】设计模式导引

设计模式文章索引

2024-02-19 16:47:00 502

原创 一文搞懂设计模式—门面模式

门面模式(Facade Pattern)也叫做外观模式,是一种结构型设计模式。它提供一个统一的接口,封装了一个或多个子系统的复杂功能,并向客户端提供一个简单的调用方式

2024-02-18 10:20:02 1585

原创 一文搞懂设计模式—观察者模式

观察者模式(Observer Pattern)是一种常见的行为型设计模式,用于在对象之间建立一种一对多的依赖关系。当一个对象的状态发生变化时,所有依赖它的对象都将得到通知并自动更新

2024-02-18 09:52:26 1250

原创 一文搞懂设计模式—单例模式

在软件开发中,有些对象我们只需要一个实例,通过单例模式可以确保一个类只有一个实例

2024-02-04 10:09:43 1077

原创 一文搞懂设计模式—责任链模式

责任链模式允许多个对象按照顺序处理请求,并且每个对象可以选择自己是否处理该请求或将其传递给下一个对象,这种模式将请求的发送者和接收者解耦

2024-01-29 10:11:33 1414

原创 一文搞懂设计模式—策略模式

在软件开发中,经常会遇到需要根据不同的条件来实现不同行为的场景。这种场景下,策略模式(Strategy Pattern)就是一种非常有用的设计模式

2024-01-29 10:01:33 1229

原创 实战Arthas:常见命令与最佳实践

当涉及到 Java 应用程序的诊断和调优时,Arthas 是一款备受推崇的开源工具,无论是线上问题的定位,还是实时性能监控和分析,Arthas 都能为您提供强大的支持

2024-01-23 10:10:36 1346

原创 六个案例搞懂间隙锁

MySQL中的间隙是指索引中两个索引键之间的空间,间隙锁用于防止范围查询期间的幻读,确保查询结果的一致性和并发安全性

2024-01-16 10:28:47 1260

原创 良心推荐!几款收藏的神级IDEA插件分享

几款神仙级别的IDEA插件分享

2024-01-15 10:11:11 1305 1

原创 异步编程利器:CompletableFuture深度解析

CompletableFuture 类提供了丰富的方法和功能,能够简化异步任务的处理和组合

2024-01-11 10:39:07 965

原创 详解MVCC

在当今高度并发的数据库环境中,有效的并发控制是至关重要的。MVCC是MySQL中被广泛采用的并发控制机制,它通过版本管理来实现事务的隔离性,允许读写操作同时进行,提高数据库的并发性能和响应能力。本文将深入解析MVCC机制的原理,帮助读者更好地理解和应用这一关键技术。MVCC,全称 Multi-Version Concurrency Control,即多版本并发控制MVCC的目的主要是为了提高数据库并发性能,用更好的方式去处理读-写冲突,做到即使有读写冲突时,也能做到不加锁。

2024-01-09 10:21:33 1473 1

空空如也

空空如也

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

TA关注的人

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