求一个求高手帮找回被盗qq号。

21:05 提问
给你一个含有1亿个QQ号码的文件,如何快速的查找某个QQ号码?
如题,我要找一个效率比较高的方法,欢迎大家来讨论。如果答案是暴力扫最快的话,我自扇耳光三百下!
按赞数排序
这个问题不在于算法,主要是数据的存储方式,你一个文件存放1亿个QQ号码,这个文件就得超过几G大小,如果你内存够大,全读到内存中虽然也可以,但一般来说不能这样,因为你读文件的复杂度已经是O(n)的量级了。
因为你为了查找一个qq号,就得读取几个G数据到内存,这个开销就太大了,所以这个问题不是算法问题,是数据在磁盘中的结构应如何存储。
一般来说,像数据库这种有自建索引的,比较好弄,但如果你想自建维护磁盘存储结构,就很复杂了,这里说一种简单易懂的。
直接利用磁盘目录做简易索引,由于磁盘本身是有B树索引的,所以管理效率也不低。例如,将QQ号码的前六位作为索引,所有前六位相同的QQ号,都处理存放到一个文件中。然后文件名就以该六位qq号命名。所有文件全放到一个文件夹下可能较难管理,那么可以利用这种思路,上一级目录就用前5位QQ做索引,依次管理,最后整个目录就是一个10叉树。
以前效率不高的原因就是因为读取全部文件太费时间,你将文件打散后存放,读取文件时就很快了,查找的范围也很小了。
整体复杂度 = 几次文件寻找时的随机磁盘寻址+1M左右磁盘读取,接下来直接线性查找都很快。
其实我们发现,这个数量级的查找,复杂度已经不是在内存上了,而是要避免大量从磁盘上的数据读取。数据库做这个事情一般比用文件快,原因是,第一数据库有缓存,之前查过的集合会缓存一段时间,其次,磁盘上有原生的索引结构,比咱们自己用文件树模拟来的高效。
一个含有1亿个QQ号码的文件,面对这种大数据处理,还要满足最快查找到QQ的需求,如果是我,我会先从这几方面考虑。
一、硬件配置
二、编程语言
四、查前判断
五、存储区域
-------------------------------且听我慢慢道来---------------------------
一、硬件配置——命令行下运行的最快的计算机
想快点查找,兵器必须要好,那么就得做到以下几点:
1. 操作系统
放弃图形用户界面用命令行界面的操作系统,不解释。如果Windows和Linux之间,貌似只得选Linux了。
2. 采用世界上最快的计算机
国产的天河二号超级计算机,Cray超级计算机,、量子计算机,生物计算机,哪个最快就用哪个吧。
3.世界上最快的计算机构成的服务器集群来最优共同合作处理。
二、编程语言——尽量接近底层的编程语言
高级语言貌似总是没有低级语言的处理速度快,因此应该尽量使用接近底层的编程语言。
三、算法——操作系统分页原理+时间复杂度最低的算法
题目中只求查询速度快即可,那么意思是不是只要时间复杂度低点,多牺牲点空间似乎也无所谓。
始终觉得操作系统的分页查询原理很不错,在此基础上再使用一种时间复杂度最低的算法,那么速度应该会提高不少。
四、查前判断
1.查询前先判断QQ位数
查询之前,先判断QQ位数,可缩小一部分分页查询范围。
2.逐位位数分页判断
从最高位开始判断每一位都进行判断,该位属于从哪一页,哪个表。
五、存储区域——构造高速缓冲区
尽量存储到一个存取速度比较快的数据结构内,并放到存取速度最快的存储区内,位数判断后将满足的页加载到内存。
异想天开班门弄斧胡言乱语一番,梦中不知所云。
最简单的办法就是字典树。查找效率为Log(N)
问一下题主,你要查几次?如果是查一次的话,你可以开始表演自扇了。
取决于你的数据类型:
要是qq号以整型的方式保存在数据库,那么完全可以通过数值查找;
如果是字符型,可以通过双重遍历:(算法用python实现为)
current_src = []
"""itering the dst_qqs"""
for dst_qq in dst_qqs:
print 'match --&',dst_qq,'in ',index
for src_qq in src_qqs:
if src_qq[index]==dst_qq:
current_src.append(src_qq)
print 'match:',src_qq
print 'not match:',src_qq
time.sleep(1)
index += 1
src_qqs = current_src
原理:先遍历目标qq号,每次获取一位,并且内部遍历目标qq源,进行比对每一组qq的对应位,符合添加到列表中;
此时,设1亿位qq号中,0~9对应每一位的概率相同,则选出1000万组qq号;
继续遍历:(设目标qq号为9位)则遍历外部遍历9次,内部遍历依次为:
10000万 (即1亿)
时间复杂度可以自行演算;
如果平台支持,还可以用平台提供的的接口,比如在Windows系统,可以内存映射文件,当然最好能编写驱动程序,在驱动程序中直接控制磁盘设备,避免了在应用层调用API,中断进内核,系统服务例程,I/O管理,缓冲区复制,过滤设备等等的影响读取速度
struct node{
int flag;
struct node *next[10];
struct node *father;
一个字符一个字符读,每个字符一个节点,判断下该字符节点是否存在,不存在动态创建个,遇到空格前面那个字符对应的节点flag赋值1
ftell得到位置,复制到节点的pos中,然后不断读啊写啊
最后构成了一个好大的树
最后查的时候循环遍历下去就行了吧
10叉树很不错 可以考虑
使用比较底层的编程语言
算法,优化
有条件的话分布式计算
建议使用数据挖掘的思想做一下,对数据进行预处理,分块分片处理,感觉会解决数据大,内存不够的问题
其他相关推荐
其他相似问题谁可以给给我一个一个太阳以上的QQ号(自己不用的) - 『悬赏问答区』
- 吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|
后使用快捷导航没有帐号?
只需一步,快速开始
请完成以下验证码
请完成以下验证码
查看: 2146|回复: 11
谁可以给给我一个一个太阳以上的QQ号(自己不用的)
阅读权限10
就是工作用,自己的QQ长时间不玩,等级太低了,有些群里不让加等级低的,有好心人送我一个嘛?
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
是觉得CB太少了吗?????诚心想要一个
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
楼主到淘宝买把。 很便宜的
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
话说一个太阳的号不是很容易 自己上点心 很容易就能挂出来的 现在都不看等级了&&太水 你要是想要就把每天的升级任务都做一下 一天能升4天吧 很快就一个太阳了
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
楼主到淘宝买把。 很便宜的
哦哦哦 我不知道淘宝可以买 谢谢!
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
哦哦哦 我不知道淘宝可以买 谢谢!
买回来之后前几天用手机登录, 不要用wifi, 大概一周左右,直接网页登录安全中心,修改 密保, 和密码,&&然后就可以上电脑了。
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
淘宝才7-8元一个。
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
太阳号不是很容易的啊
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
我有一个69级的QQ的九位数,花了我500元冲的QQ会员,现在都没有用了,会员VIP7
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
楼主这也需要啊,私信我 我以前有注册的QQ号 很少用了的
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
免责声明:吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
( 京ICP备号 | 京公网安备 87号 )
Powered by Discuz!
Comsenz Inc.页面已拦截
无锡网警提示您:
该网站已被大量用户举报为虚假的刷Q币/刷Q钻网站,可能通过要求购买充值卡的方式来骗取您的财产,或通过诱导运行软件的方式导致您的电脑中病毒。  大家有没有不要了的qq号,级别一般的那种, 能不能送一个给我啊。我有急用,谢谢了!  友情提醒:   1.请遵守国家的法律法规,不发布违法违规信息,并对自己的行为承担全部民事和刑事责任。   2.请尊重网络道德,不污言秽语,不侵犯他人的权利和个人隐私。   3.请遵守社区规则和版规,不进行刷屏、恶意顶贴、恶意灌水等影响他人阅读的行为。广告发布到分类信息。  4.所有帖子仅代表作者本人意见,不代表本社区立场。  5.转载文章请注明出自“天涯社区( )” 并署上作者姓名,商业用途须获得作者和本社区授权
楼主发言:1次 发图:0张 | 更多
  不可以再申请了?  
  秒沉啊
  @island16
14:27:31  不可以再申请了?  本帖发自天涯社区手机客户端  -----------------------------  再申请的话,qq级别太低,一眼就能看出来是新的qq号,  这样,你懂的……
  555555
  我很久以前就申了2个QQ号,现在一个三十多级一个十多级,作为备用,楼主你要学习学习,别临时抱佛脚
  给你 2 个 。QQ 号 随便用吧。。我早都不用了
看见这号就恶心。。一段不堪回首的往事
<span class="count" title="万
请遵守言论规则,不得违反国家法律法规回复(Ctrl+Enter)

我要回帖

更多关于 求免费qq号没绑定的 的文章

 

随机推荐