当前位置: 首页 > news >正文

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

前几天发现一个有趣的文章 “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.lryc.cn/news/90360.html

相关文章:

  • Talk预告 | 新加坡国立大学张傲:10%成本定制类 GPT-4 多模态大模型
  • 从C语言到C++_13(string的模拟实现)深浅拷贝+传统/现代写法
  • reduce()方法详解
  • C++虚假唤醒
  • 【AI】dragonGPT - 单机部署、极速便捷
  • Uuiapp使用生命周期,路由跳转传参
  • 定积分的计算(牛顿-莱布尼茨公式)习题
  • leak 记录今天的一个小题
  • 软考A计划-试题模拟含答案解析-卷二
  • 【C++】pthread
  • 2023年前端面试题汇总-浏览器原理
  • react介绍,react语法,react高级特性,react编程技巧
  • Locust接口性能测试
  • Python类的特殊方法(通过故事来学习)
  • Vue.js 中的父子组件通信方式
  • Python之并发编程二多进程理论
  • 纯干货:数据库连接耗时慢原因排查
  • 【OneNet】| stm32+esp8266-01s—— OneNet初体验 | 平台注册及设备创建 | demo使用
  • 解决win无法删除多层嵌套文件夹
  • 用Vue简单开发一个学习界面
  • Oracle数据库从入门到精通系列之五:数据文件
  • 使用MockJS进行前端开发中的数据模拟
  • Ex-ChatGPT本地部署+Azure OpenAI接口配置+docker部署服务
  • 【收藏】FP独立站建站安心收款经验分享
  • python:绘制GAM非线性回归散点图和拟合曲线
  • 每日算法(第十四期)
  • uboot的使用
  • 学习HCIP的day.09
  • Electron-Builder Windows系统代码签名
  • 数据分析概述