40亿个QQ号,限制1G内存,如何去重?【已通过代码实现】

news/2024/11/23 0:27:08/

前几天发现一个有趣的文章 “40亿个QQ号,限制1G内存,如何去重?”,发现很有意思,就想着用代码实现一下,下面是分析和实现过程

一、审题分析

  • 一个 QQ 号现在最长有 11 位,因为 int 是四字节,数值范围是2的31次方,因此得使用 long 存储,但考虑到实现,使用 int 存储(10位QQ);
  • 40亿 QQ 文件存储至少在 4000000000 * 4(字节) / 1024 / 1024 / 1024 ~= 14.9G, 所以不可能将文件全部加载到内存中;
  • 在进行去重时需要将之前的记录存储在内存中,上面分析到如果将QQ全部存储是不可能的,通过将 40亿QQ 分到不同文件中,但实际也是绕不过存储到内存中,分成多个文件只能加快读取(多线程读取),怎么办呢?
  • 仔细探究了一番,之前我们做项目的时候,为了去除百万级的数据重复问题,我们用了布隆过滤器;这次这个问题的话,需要从它下手。想了想它的原理“存在,可能存在;不存在,一定不存在”。得从“位”下手。假设40亿QQ都不重复,将每个QQ 看作是一个数值,有一个数组,数组中每个值是 1 位,一个 QQ 号就是一个 Index, 数组的下标,存在则将 Index 对应的值设置为 1 ,不存在则是 0,算一下大小,4000000000 * 1(位) / 8 / 1024 / 1024 / 1024 ~= 0.48G ,算完这个队列可以呀,不到 1g&#x

http://www.ppmy.cn/news/172422.html

相关文章

【目录】ARM/TEE/ATF/SOC微信群问题记录

类别内容TZC400请教下,TZC400, Fast Path IDentity (FPID)这条路径,怎么判断能不能访问某个region —2023/06/02

详解Handler

详解Handler 文章目录 详解Handler1.Handler的工作流程1.1主线程具有如上性质的原因1.2流程图 2.Handler流程中的重要的几个方法2.1Message中的属性2.2.1what2.2.2replyTo2.2.3obtain 2.2Handler.post()与Handler.sendMessage()2.2.1post的源码2.2.1.1sendMessageDelayed()源码…

《操作系统》—— 处理机调度算法

前言: 在之前的文章中,我们已经了解了进程和线程相关的基本概念,今天我们将要了解的是关于处理机调度相关的知识。 目录 (一)调度的概念 1、调度的基本概念 2、调度的层次 3、三级调度的关系 (二&…

《计算机网络——自顶向下方法》精炼——3.7(1)

少而好学,如日出之阳;壮而好学,如日中之光;志而好学,如炳烛之光。——刘向 文章目录 拥塞控制方法ATM ABR拥塞控制 TCP拥塞控制TCP拥塞控制算法的实现慢启动拥塞避免快速恢复总结 拥塞控制方法 在上一篇文章中,我们介绍了在数据传输过程中出现的问题。本节将简要介…

购买ipad学习软件全套平板苹果付费应用app笔记iso绘画画下载

购买ipad学习软件全套平板苹果付费应用app笔记iso绘画画下载:备忘链接 或者在这里留言,我看到就帮你们下载啦。

小米平板2驱动程序

刷机有风险,操作需谨慎,出现任何问题,楼主概不负责 刷入程序 Dism 进入软件选择驱动管理,添加驱动选择已解压的文件进行刷入。 点击获取驱动 提取码:6273

电脑手机ipad平板百度网盘下载文件保存位置

百度网盘是我们使用最多的一个网盘,一些新手小白不知道百度网盘下载的文件在哪,下面就和大家分享电脑手机ipad平板百度网盘下载文件保存位置。 1.电脑百度网盘下载的文件保存位置 我们在登录电脑端的百度网盘客户端后,点击右上角设置按钮&am…

在读书郎平板上安装第三方应用

读书郎平板上的限制诸多,应用商店的东西也是少的可怜。 最近更新了系统,用下载下来的apk安装已经不允许了。 此篇文章分享一下如何在读书郎平板上安装第三方应用。 材料 读书郎平板一台能上网的电脑USB连接线 在 Downloads - ADB Shell 处下载adb。…