分享生活百科知识

注册/登录|最近发布|今日推荐

主页 综合百科生活常识数码科技传统文化互联网健康时尚影视娱乐教育学习
当前位置:首页 > 传统文化

给你一个含有1亿个QQ号码的文件,如何快速的查找某个QQ号码?

提问时间:2023-07-05 11:23关键词:QQ

问题补充: 给你一个含有1亿个QQ号码的文件,如何快速的查找某个QQ号码?找一个效率比较高的方法,如果答案是暴力扫最快的话,我自扇耳光三百下!

点赞1、运城市 网友:上演孤独

记得可以编一个程序,好像是找定点字的那种。我就是记不住,人真的很笨。

点赞2、东莞市 网友:野性入骨

我来捣乱一下,1亿个QQ号的文件,不用管他是怎么存放,放在那都行。

然后你只要告诉我你要找的那个qq号,我就能立即告诉你你要找的QQ号是什么。这个什么算法都不用。

好吧话回正题,1亿个QQ号,对应着什么?用一个QQ号是要确定在不在这个文件当中,还是说,这个文件里每个qq号都对应着一个昵称,要得到这个昵称呢?

这两种算法是完全不一样的,如果只需要确定是否存在,最佳办法应该是布隆过滤器,只需要构建一个信息指纹的大文件,通过集群,可以把速度缩减到毫秒级。

如果是找对应关系,之前的信息指纹就不行了,如果想够快,依然需要一个集群,先按qq号的最大位数做一个大集合,然后把这1亿个qq号按对应位置存入集合,最后把这个集合按0xFF分解到对应的机器上,查找时,只要把QQ号换算成地址,就可以直接访问了,速也不慢,只是空间上比较浪费,实际做的时候,应该还会做一定的压缩,以避免空间浪费,但这就需要使用cpu时间了,极限速度挑战的话,应该不会用这个。

点赞3、白银市 网友:王者风范

方法1,

微秒级查询方法,假设现在QQ号共10位数,声明一个Bitmap,大小99亿,每个bit只存0或1,读取文件,QQ号作为下标设置,如果对应位置的标记为0设置为1。某号码X,只需要判断下标位置X的标记是否为1即可


方法2,

节省内存的方法,创建一个文件共99亿行,每行一个换行符,读取QQ文件号码,用java中随机文件访问类,直接定位到对应行,写入QQ号,依次写完,待查X号码,类似定位方法,判定位置处内容是否是换行符

方法3,文件中每个QQ号命名一个文件,利用系统查找工具查找,或利用和编程语言中文件工具类判断是否存在


方法4,娱乐篇

搞一个网站,首页创建1亿个超链接,每个链接放一个QQ号,每个号链接到站内对应QQ号命名的网页,然后将网页登记到百度收录,一个星期后,在搜索框用site命令,指定上述网站地址,并输入要搜索的内容,也是毫秒级返回

点赞4、邯郸市 网友:鹊惜花

最简单的,grep命令搞定。想加快,先split,再并行跑多个grep。另外一个办法,perl脚本,先把整个文件读入内存,在内存里操作速度很快,再一条条比对。qq号只有十多位,按16位算,16字节,3亿为48亿字节,大约4.8GB,对服务器来说小case

点赞5、海口市 网友:挽吟袖

反正也就查一个号码,我就crtl +F慢慢找呗,你们写好代码,我估计也就查到了

点赞6、阳春市 网友:殇歌落

qq号码其实就是long类型,数据库以long类型作为非自增主键,建立1024张表,表名为qq_(0-1023),用qq号码除1024得到余数范围为0-1023,根据余数查表,然后再根据主键查qq号,查找效率,应该在10ms以内。附加:qq号除1024的余数=qq号 & 1023,qq号用整形比较运算效率最高,用数据库主键是因为聚合索引查找效率最高。

知识推荐

八哥问答——日常生活学习知识分享。 垃圾信息处理邮箱 tousu669@163.com 网站地图
icp备案号 闽ICP备2023007808号-3 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.12606.com All Rights Reserved