登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
每日签到
每天签到奖励2圆-6圆
发帖说明
VIP申请
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
VIP申请
VIP网盘
网盘
联系我们
每日签到
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
场景题:有40亿个QQ号如何去重?仅1GB内存 ...
场景题:有40亿个QQ号如何去重?仅1GB内存
[ 复制链接 ]
滕佩杉
2025-6-1 21:26:39
场景题也有一些套路可以考虑,比如去重、判断给定数据是否存在
1.大数据去重
1.1 现在有40亿个QQ号如何去重?仅1GB内存
参考链接:https://juejin.cn/post/7396332696660131849
介绍2种方法:Bitmap和布隆过滤器
方法一:Bitmap
首先介绍下什么是位图Bitmap
位图是使用bit数组表示的,它只存储0或者1,因此我们可以把全部的QQ号放到位图中,当index位置为1时表示该索引位的QQ号已经存在。
数据规模分析+可行性分析
QQ号是32位的无符号整型数据,整型数据范围是[-2^31, 2^31-1],总计数据量有43亿,可以覆盖40亿的QQ号。直接存储40亿QQ号,需要的空间为40亿 * 4字节 = 14.9GB,超过1GB了。
使用Bitmap来存储,每个QQ号仅占1位,比如:QQ号23333,只需要判断Bitmap的索引位23333是否为1,为1表示数据已经存在,就能判断是否重复了。所需要内存空间: 2 ^ 32 * 1bit / 8 = 512MB
实现步骤
直接用java自带的Bitset来实现代码,假设QQ号都在整型范围内
[code]//初始化长度为2 ^ 32位的位数组BitSet bitmap = new BitSet(1L
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
代码
签约作者
程序园优秀签约作者
发帖
滕佩杉
2025-6-1 21:26:39
关注
0
粉丝关注
17
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
杭环
9988
凶契帽
9988
4
氛疵
9988
5
黎瑞芝
9988
6
猷咎
9986
7
里豳朝
9986
8
肿圬后
9986
9
蝓俟佐
9984
10
虽裘侪
9984
查看更多