系统设计题-日活月活统计
一、题目描述
根据访问日志统计接口的日活和月活。日志格式为
yyyy-mm-dd|clientIP|url|result
其中yyyy-mm-dd代表年月日,一个日志文件中时间跨度保证都在同一个月内,但不保证每行是按照日期顺序。
clientIP为合法的点分十进制ipv4地址(1.1.1.1和1.01.001.1视作同一IP地址)
url访问的地址,格式为/login.do,/query.html,,仅包含字母、英文句号.、斜杠/、和下划线_
result接口的访问结果,只有2种:success和fail
日活:统计当天有多少不同IP访问地址是/login.do且结果为success
月活:统计当月有多少不同IP访问地址是/login.do且结果为success。注意月活数量不是日活数量的简单累加!
输出规则
第一个是月活,第2~31代表当月第1到第31天的日活数
样例
输入
2025-01-01|192.168.218.218|/login.do|success
2025-01-01|192.168.218.218|/login.do|success
2025-01-01|192.168.210.210|/login.do|fail
2025-01-02|192.168.210.210|/login.do|success
2025-01-02|192.168.218.218|/login.do|success
输出
2 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
二、算法实现
// 获取月活,日活public static int[] getActiveUserNum(List<String> logs) {// key存当天,value存放IP,自动去重Map<Integer, Set<String>> activeIpMap = new HashMap<>();// 月活activeIpMap.put(0, new HashSet<>());for (String log : logs) {if (log.endsWith("fail") || !log.contains("login.do|success")) {continue;}Integer day = Integer.valueOf(log.substring(8, 10));String ip = getFormateIp(log);if (!activeIpMap.containsKey(day)) {activeIpMap.put(day, new HashSet<>());}// 日活activeIpMap.get(day).add(ip);// 月活activeIpMap.get(0).add(ip);}int[] res = new int[32];for (int i = 0; i < res.length; i++) {if (!activeIpMap.containsKey(i)) {continue;}res[i] = activeIpMap.get(i).size();}return res;}// 对IP地址格式化private static String getFormateIp(String log) {String[] infos = log.split("\\|");String[] ipNums = infos[1].split("\\.");String ip = "";for (int i = 0; i < ipNums.length; i++) {if (i == ipNums.length - 1) {ip += Integer.valueOf(ipNums[i]);} else {ip += Integer.valueOf(ipNums[i]) + ".";}}return ip;}
相关文章:
系统设计题-日活月活统计
一、题目描述 根据访问日志统计接口的日活和月活。日志格式为 yyyy-mm-dd|clientIP|url|result 其中yyyy-mm-dd代表年月日,一个日志文件中时间跨度保证都在同一个月内,但不保证每行是按照日期顺序。 clientIP为合法的点分十进制ipv4地址(1.1.1.1和1.01.…...
在CentOS7云服务器下搭建MySQL网络服务详细教程
目录 0.说明 1.卸载不要的环境 1.1查看当前环境存在的服务mysql或者mariadb 1.2卸载不要的环境 1.2.1先关闭相关的服务 1.2.2查询曾经下载的安装包 1.2.3卸载安装包 1.2.4检查是否卸载干净 2.配置MySQLyum源 2.1获取mysql关外yum源 2.2 查看当前系统结合系统配置yum…...
【数据结构与算法】快速排序霍尔版
💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注 ...
无人机5公里WiFi低延迟图传模组,抗干扰、长距离、低延迟,飞睿智能无线通信新标杆
在科技日新月异的今天,我们见证了无数通信技术的飞跃。从开始的电报、电话,到如今的4G、5G网络,再到WiFi的广泛应用,每一次技术的革新都极大地改变了人们的生活方式。飞睿智能5公里WiFi低延迟图传模组,它以其独特的优势…...
Kappa架构
1.Kappa架构介绍 Kappa架构由Jay Kreps提出,不同于Lambda同时计算和批计算并合并视图,Kappa只会通过流计算一条的数据链路计算并产生视图。Kappa同样采用了重新处理事件的原则,对于历史数据分析类的需求,Kappa要求数据的长期存储能…...
护网在即,助力安服仔漏洞扫描~
整合了个漏扫系统,安服仔必备~ 使用场景 网前布防,漏洞扫描,资产梳理 使用方法: 启动虚拟机后运行命令: ./StartSystemScript.sh 输入密码attack 启动完成后浏览器打开网站: http://IP:5000 相关账户…...
3C电子制造行业MES系统,提高企业生产效率
随着科技的不断进步,3C电子制造行业正迎来传统工厂向数字化工厂转型的阶段。在这场变革中,MES系统发挥着重要的作用,成为了企业变革的“智慧大脑”,引领着生产流程的优化和升级。 那么,MES系统究竟有哪些功能…...
C++ 多态和虚函数
参考C:多态 详解_c多态-CSDN博客 C多态——虚函数_c的a* a new b()是什么意思-CSDN博客 一.多态的概念 多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如 Student 继承了 Person。 Person 对象买票全价,…...
七月记录上半
7.5 运行mysql脚本 mysql -u root -p 数据库名 < 脚本名 7.6 使用screen在服务器后台长期运行一个程序: screen -S 窗口名:创建窗口 执行程序脚本 ctrlad:退出窗口 screen -ls :查看所有窗口 screen -r 窗口号 &#…...
Wing FTP Server
文章目录 1.Wing FTP Server简介1.1主要特点1.2使用教程 2.高级用法2.1Lua脚本,案例1 1.Wing FTP Server简介 Wing FTP Server,是一个专业的跨平台FTP服务器端,它拥有不错的速度、可靠性和一个友好的配置界面。它除了能提供FTP的基本服务功能以外&#…...
【Linux进阶】文件系统6——理解文件操作
目录 1.文件的读取 1.1.目录 1.2.文件 1.3.目录树读取 1.4.文件系统大小与磁盘读取性能 2.增添文件 2.1.数据的不一致(Inconsistent)状态 2.2.日志式文件系统(Journaling filesystem) 3.Linux文件系统的运行 4、文件的删…...
Python编译器的选择
了解如何使用一个集成开发环境(IDE)对于 Python 编程是非常重要的。IDE 提供了代码编辑、运行、调试、版本控制等多种功能,可以极大地提升开发效率。以下是一些流行的 Python IDE 和代码编辑器的介绍,以及如何开始使用它们&#x…...
Java | Leetcode Java题解之第217题存在重复元素
题目: 题解: class Solution {public boolean containsDuplicate(int[] nums) {Set<Integer> set new HashSet<Integer>();for (int x : nums) {if (!set.add(x)) {return true;}}return false;} }...
python基础语法 006 内置函数
1 内置函数 材料参考:内置函数 — Python 3.12.4 文档 Python 解释器内置了很多函数和类型,任何时候都能直接使用 内置函数有无返回值,是python自己定义,不能以偏概全说都有返回值 以下为较为常用的内置函数,欢迎补充…...
ABAP中BAPI_CURRENCY_CONV_TO_EXTERNAL函数详细的使用方法
在ABAP(SAP的应用程序开发语言)中,BAPI_CURRENCY_CONV_TO_EXTERNAL函数用于将SAP系统内部存储的货币金额转换为外部显示的格式。这个函数在处理财务报告、用户界面显示或与其他系统集成时非常有用。以下是该函数的详细使用方法: …...
Mac本地部署大模型-单机运行
前些天在一台linux服务器(8核,32G内存,无显卡)使用ollama运行阿里通义千问Qwen1.5和Qwen2.0低参数版本大模型,Qwen2-1.5B可以运行,但是推理速度有些慢。 一直还没有尝试在macbook上运行测试大模型…...
Qt:8.QWidget属性介绍(focuspolicy属性-控件焦点、stylesheet属性-为控件设置样式)
目录 一、focuspolicy属性-控件焦点: 1.1focuspolicy属性介绍: 1.2设置焦点策略——setFocusPolicy(): 1.3获取控件的焦点策略——focusPolicy(): 二、stylesheet属性——为控件设置样式: 2.1 stylesheet属性介绍…...
R可视化数据必要格式——长格式
一、引言 我们在对数据进行可视化时遇到最头疼、最常见的问题是什么?数据问题。 因为我们往往不会从零自己编程进行可视化,往往是现有模板或积累,而正确的数据格式对应正确的图形包要求,一定会正确出图,所以只有一个问…...
Android计算器界面的设计——表格布局TableLayout实操
目录 任务目标任务分析任务实施 任务目标 使用TextView、Button等实现一个计算器界面,界面如图1所示。 图1 计算器界面效果图 任务分析 界面整体使用表格布局,第一行使用一个TextView控件,横跨4列,中间4行4列,最后一…...
【数据结构】经典链表题目详解集合(反转链表、相交链表、链表的中间节点、回文链表)
文章目录 一、反转链表1、程序详解2、代码 二、相交链表1、程序详解2、代码 三、链表的中间节点1、程序详解2、代码 四、回文链表1、程序详解2、代码 一、反转链表 1、程序详解 题目:给定单链表的头节点 head ,请反转链表,并返回反转后的链…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...
