请选择 进入手机版 | 继续访问电脑版
发帖
查看: 45|回复: 0

腾讯服务器每秒有2W个QQ号同时上线,找出5min内重新登入的qq号

[复制链接]

腾讯服务器每秒有2W个QQ号同时上线,找出5min内重新登入的qq号[复制链接]



如果空间足够大,可以定义一个大的数组a[qq号],初始为零然后.这个qq号登陆了

就a[qq号]++

最后统计大于等于2的QQ号

这个用空间来代替时间

不成熟的想法

2w x 300s

所以用6000.000个桶。刪除超时的算法后面说,所以平均桶的大小是1

假设qq号码一共有10^10个,所以每个桶装的q号码是10^10/(6*10~6)个,

这个是插入时候的最坏效率(插入同个桶的时候是顺序查找插入位置的)

qq的节点结构和上面大家讨论的基本一样,增加一个指针指

向输出列表,后面说

struct QQstruct {

num_type qqnum,

timestamp last_logon_time,

QQstruct *pre,

QQstruct *next,

OutPutlist *out //用于free节点的时候,顺便更新下输出列表

}

另外增加两个指针列表

第一个大小300的循环链表,自带一个指向 QQStruct的域,循环存300秒内的qq指针。

时间一过就fee掉,所以保证所有桶占用的空闾在2wX30以内.

第二个是输出列表,就是存放题目需要输出的节点。

如果登陆的用户,5分钟内完全没有重复的话,每秒free2w个节点

不过在free的时候,要判断一下时间是不是真的超时,因为把节点入桶的时候,遇到重复的,

会更新一下最后登陆的时间。当然啦,这个时候,要把这个q号码放到需要输出的列表里面


2020年更多、更全、更新大厂面试资料,欢迎+群学习交流,个人简介信息加群领取

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

注册会员

48

主题

48

帖子

150

积分

注册会员

Rank: 2

积分
150