#include <algorithm> #include <ctime> #include <iostream> #include <map> #include <vector> using namespace std; void timestamp() {time_t t = time(0);cout << ctime(&t) << endl; } // 模拟时钟 class PseudoTimer {int m_us; public:PseudoTimer() : m_us(0) {}int getMicroseconds() { return m_us += (rand() % 100); } // 登录平均间隔:1000000 / 20000 = 50微秒 }; /*hash表,表中保存最近一次登录时间但这个表可能会增长(有用户长时间不登录),需要定时清除其中的旧记录QQ号已经到10位了,8字节长整数保存 */ class HotUserMonitor {typedef long long QQ_t;struct UserStatus{int last_login_time;bool is_hot;UserStatus(int t, bool h) : last_login_time(t), is_hot(h) {}};map<QQ_t, UserStatus> m_cache;static int const US_IN_5_MINUTES = 1000000 * 60 * 5; public:void login(QQ_t qq, int now){map<QQ_t, UserStatus>::iterator p = m_cache.find(qq);if(p == m_cache.end()){ // qq号不在缓存中:保存时间、冷用户m_cache.insert(make_pair(qq, UserStatus(now, false)));}else{ // 命中p->second.last_login_time = now; // 更新最后登录时间p->second.is_hot = ( (now - p->second.last_login_time) <= US_IN_5_MINUTES); // 超时:冷却}}void scan_and_clean(int now){int host_user_count = 0;for(map<QQ_t, UserStatus>::iterator p = m_cache.begin(); p != m_cache.end(); ){if( (now - p->second.last_login_time) <= US_IN_5_MINUTES){if(p->second.is_hot){++host_user_count;//cout << p->first << ' ' << p->second.first << ' ' << p->second.second << '/n'; // 热用户太多}++p;}else{ // overtimem_cache.erase(p++);}}cout << "hot user count: " << host_user_count << endl;} }; int main() {srand(time(0));PseudoTimer pt;HotUserMonitor hsm;int const LOGIN_COUNT_IN_5_MINUTES = 20000 * 60 * 5; timestamp();for( int i = 0; i < LOGIN_COUNT_IN_5_MINUTES; ++i){ // 模拟6000000次登录事件(20000 * 5 * 60)hsm.login(rand() * rand(), pt.getMicroseconds());} timestamp();hsm.scan_and_clean(pt.getMicroseconds()); timestamp();return 0; }

“腾讯服务器每秒有2w个QQ号同时上线,找出5min内重新登入的qq号并打印出来。”相关推荐

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

    如果空间足够大,可以定义一个大的数组a[qq号],初始为零然后.这个qq号登陆了 就a[qq号]++ 最后统计大于等于2的QQ号 这个用空间来代替时间 不成熟的想法 2w x 300s 所以用6000 ...

  2. 腾讯面试题:64匹马,8赛道,找出最快的4匹最少要几次?

    本文转载自 小K算法 01 故事起源 有64匹马,8条赛道,要找出最快的4匹马,最少要几次呢? 补充: 1.不能计时哈,不然就没有意义了,题目就是要考察逻辑推理 2.默认马的速度不变哈,这是理想的数学 ...

  3. 从零开始学习iftop流量监控(找出服务器耗费流量最多的ip和端口)

    一.iftop是什么 iftop是类似于top的实时流量监控工具. 作用:监控网卡的实时流量(可以指定网段).反向解析IP.显示端口信息等 官网:http://www.ex-parrot.com/~p ...

  4. C#,ASP.NAT基于腾讯服务器实现自动发送邮件功能的几种方法及遇到的坑

    C#,ASP.NAT基于腾讯服务器实现自动发送邮件功能的几种方法及遇到的坑 目录 C#,ASP.NAT基于腾讯服务器实现自动发送邮件功能的几种方法及遇到的坑

  5. 项目上线,部署到服务器(腾讯服务器),http协议及https协议(微信小程序必须https协议才可发布)、Nginx配置

    一.准备服务器: 1.选择自己的服务器,这里有很多服务器比如,阿里服务器,腾讯服务器等,这里我选择腾讯服务器做测试,其官网:https://cloud.tencent.com/,微信扫码登录后如下进入 ...

  6. Navicat连接腾讯服务器时常见错误

    一般朋友们使用Navicat连接腾讯服务器时会出现这种错误 一般情况这是因为腾讯云没有设置安全组 1.先进入控制台 2.找到自己的云服务器 3.,点进去之后 找到安全组 4.点击修改规则 5.进到入站 ...

  7. mysql一秒支持多少个请求_假如想要建设一个能承受500万PV/每天的网站,服务器每秒要处理多少个请求才能应对?...

    假如想要建设一个能承受500万PV/每天的网站,服务器每秒要处理多少个请求才能应对?如何计算? 1.PV是什么: PV是page view的简写.PV是指页面的访问次数,每打开或刷新一次页面,就算做一 ...

  8. 腾讯面试题:服务器内存1G,有一个2G的文件,里面每行存着一个QQ号(5-10位数),怎么最快找出出现过最多次的QQ号。

    腾讯最新面试题:服务器内存1G,有一个2G的文件,里面每行存着一个QQ号(5-10位数),怎么最快找出出现过最多次的QQ号. 以下是个人所建第Algorithms_12群内朋友的聊天记录: 首先你要注 ...

  9. 影流服务器显示无法连接服务器,腾讯服务器崩溃?王者荣耀网络异常,LOL服务器也炸了...

    原标题:腾讯服务器崩溃?王者荣耀网络异常,LOL服务器也炸了 3月23日,来自王者荣耀和英雄联盟的玩家纷纷在游戏中受到了网络异常和游戏延迟,虽然英雄联盟中服务器经常网络波动,官方还为此道过谦,赠与了玩 ...

最新文章

  1. Linux如何查找大文件或目录总结
  2. gradle构建android项目
  3. python内置json模块的作用_python详解json模块
  4. linux apt-get dpkg,linux的sudo apt-get install 和dpkg -i package.deb命令
  5. 红帽企业版linux 7.3,红帽推企业Linux 7.3 新功能特性一览
  6. 两层卷积网络实现手写字母的识别(基于tensorflow)
  7. 黑客到底可以厉害到什么程度
  8. pip下载慢的解决方法
  9. 有知识和没有知识的两种人,哪种人最幸福,他们的区别在哪里?
  10. GO语言学习之路17
  11. pycharm 中Python 模板的自动生成
  12. makefile中伪目标的理解
  13. 作为软件工程师,如何进行知识管理
  14. 英特尔神经计算棒是什么?边缘计算又是什么?
  15. 高等数学学习笔记——第四十讲——微积分基本公式
  16. 供应链管理环境下,企业采购管理面临哪些要求?
  17. vue项目中Echarts两个图表之间连接两条线
  18. 【Android】 使用AndServer框架在手机上搭建服务器
  19. V4L2 驱动框架概览
  20. 2021-02-07 - GraphQL - 学习/实践

热门文章

  1. 明日之后如何将靶场武器带出去
  2. VS项目(工程)属性配置的总结
  3. 解决web应用程序[]中的Servlet[dispatcherServlet]引发了load()异常
  4. JAVA中LinkedList接口的方法
  5. 大张伟《世上最可爱的歌儿》
  6. Typora + GitHub = 效率
  7. NVIDIA查看CPU、内存、GPU、DLA使用情况
  8. 【MYSQL的QA】
  9. Ghost使用中的异常情况及应对方法
  10. 本博客去广告规则设置