常见项目场景题1(数据量很大时如何去重,实现超时处理)

news2024/11/15 10:31:37

数据很多,限制内存,如何去重

对于大数据量去重的场景,我们可以考虑使用位图(Bitmap)
Bitmap 是使用二进制来表示某个元素是否存在的数组。用0和1来表示存在与不存在
使用Bitmap的话,一个数字占用1bit,大大减少内存消耗量
Bitmap 的常见应用场景如下

  1. 去重:如果需要对一个大的数据集进行去重操作,使用 Bloom Filter 来记录每个元素是否出现过。比如对巨量的 QQ号/订单号去重。
  2. 数据统计:Bitmap 可以用来记录某些特定事件发生的情况,例如某个用户是否登录某个用户是否点赞过某个视频等
  3. 布隆过滤器:布隆过滤器是一种基于 Bitmap 的数据结构,主要用于判断一个元素是否存在于一个大的集合中。相较于Bitmap,占用的空间更少,但其结果不一定是完全准确的。(所以如果使用了位图去重后,还想进一步节省空间并允许一部分差错,可以使用布隆过滤器)

Redis实现延时任务(订单,红包等超时如何实现)

延时任务常通过Redis 过期事件监听来实现
Redis 过期事件监听实现延时任务功能的原理?
Redis 2.0 引入了发布订阅 (pub/sub) 功能。在 pub/sub 中,引入了 channel(频道)的概念
pub/sub 涉及发布者(publisher)和订阅者(subscriber,也叫消费者)两个角色
运行流程如下:

  1. 发布者通过 PUBLISH 投递消息给指定频道
  2. 订阅者通过 SUBSCRIBE 订阅它需要的频道。订阅者可以订阅多个频道
    在这里插入图片描述

Redis 过期事件监听实现延时任务功能的缺点?
4. 时效性差
过期事件消息是在 Redis 服务器删除 key 时发布的,而不是一个 key 过期之后就会就会直接发布。
过期数据的删除策略有两个:
1.惰性删除:只会在取出 key 的时候才对数据进行过期检査。这样对 CPU 最友好,但是可能会造成太多过期 key 没有被删除。
2.定期删除:每隔一段时间抽取一批 key 执行删除过期 key 操作。并且,Redis 底层会通过限制删除操作执行的时长和频率来减少删除操作对 CPU 时间的影响
定期删除对内存更加友好,惰性删除对 CPU 更加友好。两者各有干秋, Redis 采用的是定期删除+惰性删除
因此,就会存在到了指定时间 key 还未被删除,进而没有发布过期事件的情况
5. 多服务实例下存在消息重复消息的问题
Redis 的 pub/sub 模式只有广播模式,这意味着当发布者向特定频道发布一条消息
时,所有订阅相关频道的订阅者都能够收到该消息。这时,会出现多个服务实例重复处理消息的问题,这会增加代码开发量和维护难度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2152935.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM 调优篇8 调优案例5- 逃逸分析

一 逃逸分析 1.1 概念 逃逸分析的基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,对象只在方法内部使用,则认为没有发生逃逸。当一个对象在方法中被定义后,它被外部方法所引用,则认为发生逃逸。例如作为…

打造未来企业:业务能力建模的实践应用与数字化转型的落地策略

在当今数字化迅速发展的时代,企业的转型迫在眉睫。通过数字技术提升运营效率、增强客户体验、优化资源配置成为了企业竞争的核心战略。《业务能力指南》为企业提供了清晰的业务能力建模框架,并指导企业如何将其应用于实际操作中,帮助企业在数…

(三)代码实现:Boustrophedon Cellular Decomposition Path Planning用珊格地图生成每个cell的覆盖路径

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言算法原理方法一:全地图进行牛耕覆盖步骤方法二:区域分解地图进行牛耕覆盖步骤凸多边形基于栅格地图的…

Windows系统文件夹中的文件名排序

一天张三、李四的同事周五接到王哥的一个任务需求,有一个文件夹,里面有许多图片文件,网页访问某个分类展示文件的时候,王哥希望文件名的展示顺序可以按照Windows资源管理器中文件名升序排序的方式展示。 网站图片目录中有如下图片…

程序遇到问题错误bug时的13种解决方法途径总结以及之前的一些具体例子

目录 1 信心--没有解决不了的bug 2 耐心、不要着急、静下心来、用脑思考 2.1 开始解决问题前不要着急,先思考 2.2 在解决问题的过程中也不要着急,要冷静思考 3 网络搜索 4 大模型问答:必应、kimi、通义千问、文心一言 5 看芯片手册、S…

0921VGG网络实现

深度学习之VGG网络搭建 1.VGG动机2.VGG架构3.代码4.结论1.VGG动机 随着卷积网络在计算机视觉领域的快速发展,越来越多的研究人员开始通过改变模型的网络结构在提高在图像识别任务中的精度,例如使用更小的卷积核和步长[2]。基于类似的想法,论文作者提出可以尝试通过改变卷积…

【设计模式】创建型模式(三):单例模式

创建型模式(三):单例模式 1.概念2.案例3.实现方式3.1 懒汉式,线程不安全3.2 懒汉式,线程安全3.3 饿汉式3.4 双检锁/双重校验锁(DCL,Double-Checked Locking)3.5 登记式/静态内部类3.…

俄罗斯OZON新生儿产品好不好卖,OZON新生儿产品

Top1 遥控水球坦克 Танк на радиоуправлении стреляющий орбизами PANAWEALTH 商品id:1384249985 月销量:692 欢迎各位OZON卖家朋友点击这里选品: 👉 D。DDqbt。COm/74rD 遥控射击水…

【项目管理进阶】风险问题

前言 各位盆友,你们期待的项目管理进阶系列有新的消息,请注意查收,并反馈哦~ 在参加项目的过程中,你是否面临或参加过类似如下的场面: 为了立项,先调研市场、技术、社会、组织内部的现状为了科学的管理项目…

如何使用Claude进行Android App开发 —— 基于Jetpack和Compose的电影App实例

如何使用Claude进行Android App开发 —— 基于Jetpack和Compose的电影App实例 近年来,人工智能(AI)在软件开发中的应用越来越广泛,帮助开发者在设计、编码、测试和优化中提高生产效率。Claude是Anthropic开发的一款强大的AI助手&…

Redis的三种持久化方法详解

Redis持久化机制详解 | JavaGuide Redis 不同于 Memcached 的很重要一点就是,Redis 支持持久化,而且支持 3 种持久化方式: 快照(snapshotting,RDB)只追加文件(append-only file, AOF)RDB 和 A…

Vue使用axios二次封装、解决跨域问题

1、什么是 axios 在实际开发过程中,浏览器通常需要和服务器端进行数据交互。而 Vue.js 并未提供与服务器端通信的接口。从 Vue.js 2.0 版本之后,官方推荐使用 axios 来实现 Ajax 请求。axios 是一个基于 promise 的 HTTP 客户端。 关于 promise 的详细介…

C++:类和对象OJ题

目录 一、求123...n 二、计算日期到天数的转换 三、日期差值 四、打印日期 一、求123...n 这里先把题目链接放在这里求123.....n 描述: 求123...n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C…

鸿萌数据恢复服务: 修复 Windows, Mac, 手机中 “SD 卡无法读取”错误

天津鸿萌科贸发展有限公司从事数据安全服务二十余年,致力于为各领域客户提供专业的数据恢复、数据备份解决方案与服务,并针对企业面临的数据安全风险,提供专业的相关数据安全培训。 公司是多款国际主流数据恢复软件的授权代理商,为…

老年人养生之道:岁月静好,健康常伴

老年人养生之道:岁月静好,健康常伴 随着年岁的增长,老年人更需注重养生,以维持身心的和谐与健康,享受幸福晚年。养生不仅是一种生活态度,更是一种智慧的选择,它涵盖了饮食、运动、心理、社交等…

搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(一)-概述

简介 此前的专栏介绍Onesearch1.0和2.0,详情参考4 参考资料,本文解释onesearch 3.0,从Elasticsearch6升级到Elasticsearch8代码实现 ,Elasticsearch8 废弃了high rest client,使用新的ElasticsearchClient,…

Hash入门-通过线性探测解决哈希冲突

unordered_set void test_unordered_set() {unordered_set<int> us;us.insert(4);us.insert(2);us.insert(1);us.insert(5);us.insert(6);us.insert(2);us.insert(2);//去重unordered_set<int>::iterator it us.begin();while (it ! us.end()){cout << *it…

Springboot使用ThreadPoolTaskScheduler轻量级多线程定时任务框架

简介&#xff1a; Spring注解定时任务使用不是很灵活&#xff0c;如果想要灵活的配置定时任务&#xff0c;可以使用xxl-job 或者 quartz等定时任务框架&#xff0c;但是过于繁琐&#xff0c;可能成本较大。所以可以使用ThreadPoolTaskScheduler来灵活处理定时任务 ThreadPoolT…

人工智能开发实战辅助诊断应用解析

内容导读 项目分析预备知识项目实战 一、项目分析 1、提出问题 随着人们生活水平的提升和健康意识的增强&#xff0c;民众定期进行身体健康体检已成为常态&#xff0c;这种早期的疾病检测和筛查可以及早发现身体里已经出现的异常体征信息&#xff0c;做出正确诊断和有效处理…

分布式系统的概念与设计模式

概念 定义&#xff1a;分布式系统是指将数据和计算任务分散到多个独立的计算机上&#xff0c;这些计算机通过网络进行通信和协作&#xff0c;共同对外提供服务。分布式系统不仅提高了系统的可靠性和可扩展性&#xff0c;还增强了系统的并发处理能力和数据管理能力。 特点&…