![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
项目问题场景
文章平均质量分 94
码农BookSea
Java开发工程师,写文章的初衷是为了沉淀我所学习,累积我所见闻,分享我所体验。站在巨人的肩膀上,我也能看得更远,希望和更多的人交流学习。
展开
-
【大数据】亿级数据中判断一个数是否存在
文章目录问题描述解决方案BloomFilter(布隆过滤器)fpp布隆过滤器的特点布隆过滤器中的数据可不可以删除布隆过滤器应该设计为多大?布隆过滤器应该使用多少个哈希函数?布隆过滤器的时间复杂度和空间复杂度?Guava的布隆过滤器的实现BitMap问题描述在开发过程中,经常要判断一个元素是否在一个集合中。假设你现在要给项目添加IP黑名单功能,此时你手上有大约 1亿个恶意IP的数据集,有一个IP发起请求,你如何判断这个IP在不在你的黑名单中?类似这种问题用Java自己的Collection和Map很原创 2022-03-05 16:08:05 · 3068 阅读 · 0 评论 -
【并发】高并发下库存超卖问题如何解决?
文章目录出现场景解决方案数据库设置字段为无符号型悲观锁乐观锁通过redis队列解决分布式锁+分段缓存(推荐方案)Redis原子操作(Redis incr)+乐观锁LUA脚本保持库存原子性出现场景在并发的场景下,比如商城售卖商品中,一件商品的销售数量>库存数量的问题,称为超卖问题。主要原因是在并发场景下,请求几乎同时到达,对库存资源进行竞争,由于没有适当的并发控制策略导致的错误。例如简单的下单操作,通常我们会按照如下写法public ServerResponse createOrder(Integ原创 2022-03-01 23:25:08 · 4159 阅读 · 2 评论 -
【项目场景】如何保证接口的幂等性?
文章目录什么是幂等性?什么情况会发生幂等性问题幂等性的解决方案唯一索引乐观锁悲观锁建防重表分布式锁状态机token机制具体实现步骤什么是幂等性?幂等性:任意多次执行所产生的影响均与一次执行的影响相同幂等性用在接口上可以理解为:同一个接口,多次发出同一个请求,必须保证操作只执行一次。调用接口发生异常并且重复尝试时,总是会造成系统无法承受的损失,所以必须阻止这种现象的发生。比如下面这些情况,如果没有实现接口幂等性会有很严重的后果:支付接口,重复支付会导致多次扣钱订单接口,同一个订单可能会多次创原创 2022-02-26 20:08:55 · 3005 阅读 · 0 评论 -
【RabbitMQ】RabbitMQ如何做到保证消息100%不丢失?
文章目录写在前面如何保证消息100%不丢失生产端可靠性投递事务消息机制confirm消息确认机制消息持久化消息入库消费端可靠性投递ACK机制改为手动SpringBoot 提供的消息重试项目中使用RabbitMQ来作为消息队列,遇见过消息丢失的情况,特此记录一下。写在前面先来说下MQTT协议中的3种语义,这个非常重要。在MQTT协议中,给出了三种传递消息时能够提供的服务质量标准,这三种服务质量从低到高依次是:At most once:至多一次。消息在传递时,最多会被送达一次。也就是说,没什么消原创 2022-02-24 21:48:35 · 9475 阅读 · 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 · 1185 阅读 · 1 评论