统计业务流量的毫秒级峰值 - 华为机试真题题解

考试平台: 时习知

分值: 200分(第二题)

考试时间: 两小时(共3题)

alt

题目描述

业务模块往外发送报文时,有时会出现网卡队列满而丢包问题,但从常规的秒级流量统计结果看,业务的流量并不大。

实际上可能是业务出现了毫秒级的流量突出,导致短时间内超过出了网卡的处理能力;而这种突发持续时间并不长,因此,秒级统计结果呈现不出异常。

现给出一段时间内各个时间点业务发送的报文数,请统计出此段时间内流量的毫秒级峰值,即1毫内业务发送的最大报文数 (时间戳相差小于1毫秒范围的发送报文数,不含时间戳相差正好为1毫秒的时刻)

输入

第1行:n,标示这段时间内有多少条记录 (即后续还有n行数据),n的取值范围为[1,1000000]

第2行开始,每行的数据格式为:t m,标示为某个时间点t(随着行数的增加,t会随之变大),业务发送的报文数m,

其中,t的单位为微秒,取值范围为[1,268435455],1毫秒等于1000微秒;

m的取值范围为[1,1000]

输出

m,表示这段时间内流量的毫秒级峰值,即1毫秒内业务发送的最大报文数(时间戳相差小于1毫秒范围的发送报文数,不含时间戳相差正好为1毫秒的时刻)

示例1

输入:
3
1024 100
1050 100
2100 150

输出:
200

解释: 
前两条记录在一个毫秒内,报文数为200,第2条和第3条记录不属于同个毫秒内

示例2

输入:
3
1024 100
1050 100
2100 250

输出:
250

解释: 
第3条记录和前面的记录不在一个时间点内,而它的值最大

Python 题解

统计一段时间内毫秒级流量峰值的程序。以下是代码的一些解释:

  1. from collections import deque 引入双端队列(deque)来维护时刻和报文数的记录。
  2. n = int(input()) 获取输入,表示有多少条记录。
  3. 初始化 max_ans 为最大结果值,sum 为队列中的总报文数,q 为双端队列。
  4. 使用循环遍历每一条记录,获取时刻 t 和报文数 m
  5. 将时刻和报文数添加到队列中,并更新总报文数 sum
  6. 使用 while 循环,判断最早的报文是否和当前时刻相差大于等于1毫秒,如果是,则从队列中移除,并更新总报文数 sum
  7. 在每次循环内都尝试更新最大值 max_ans,保留当前时刻1毫秒内的报文总数的最大值。
  8. 循环结束后,输出最终的结果 max_ans

这个程序通过使用双端队列来维护1毫秒内的报文数,实时更新最大值。通过循环遍历所有记录,可以得到最终的结果。

Python 题解

from collections import deque

n = int(input())

# 最大的结果值, 队列中的总报文数
max_ans, sum = 0, 0
q = deque()

for _ in range(n):
    # 时刻t, 报文数m
    t, m = map(int, input().split())
    q.append((t, m))
    sum += m

    # 最早的报文和当前时间不在 1 毫秒内,因此抛弃
    while q and t - q[0][0] >= 1000:
        sum -= q.popleft()[1]

    # 尝试更新最大值
    max_ans = max(max_ans, sum)


print(max_ans)

🙏整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/417118.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis 学习(一)之 MyBatis 概述

目录 1 MyBatis 介绍 2 MyBatis 的重要组件 3 MyBatis 执行流程 4 参考文档 1 MyBatis 介绍 MyBatis 是一个半自动化的 ORM (Object-Relational Mapping,对象关系映射)持久层框架,它允许开发者通过 XML 或注解将对象与数据库中…

【python】Python Turtle绘制流星雨动画效果(附源码)

在这篇技术博客中,我们将学习如何使用 Python 的 Turtle 模块绘制一个流星雨的动画效果。通过简单的代码实现,我们可以在画布上展现出流星闪耀的场景,为视觉带来一丝神秘与美感。 一、效果图: 二、准备工作 (1)、导入…

生产报工异常信息提示器如何精确提醒管理人员

在现代生产环境中,生产报工异常信息的及时提醒对于管理人员来说至关重要。为了精确提醒管理人员并确保生产流程的顺利进行,智能信息接收腕表作为一种先进的工具,结合了多项功能,可以有效地实现生产报工异常信息的精确提醒。以下将…

【vmware安装群晖】

vmware安装群晖 vmware安装群辉: vmware版本:17pro 下载链接, https://customerconnect.vmware.com/cn/downloads/details?downloadGroupWKST-1751-WIN&productId1376&rPId116859 激活码可自行搜索 教程: https://b…

RK3568 Android12 适配抖音 各大APP

RK3568 Android12 适配抖音 各大APP SOC RK3568 system:Android 12 平台要适配抖音和各大APP 平台首先打开抖音发现摄像头预览尺寸不对只存在右上角,我将抖音APP装在手机上预览,发现是全屏 一开始浏览各大博客 给出的解决方法是修改framework 设置为全屏显示: framewo…

day09_面向对象_构造方法_封装

今日内容 零、 复习昨日 一、构造方法 二、重载 三、封装 零、 复习昨日 1 类和对象是什么关系? 类是模板(原材料)对象是具体实例(成品)类创建出对象 2 类中有什么?(类的成员) 成员属性(成员变量), 成员方法 3 创建对象的语法? 类名 对象名 new 类名(); 4 调用对象属性,方法…

Spade CNN技术细节

Input: (1,3,256,64,128) 做downsample 成 : (1,3,8,16,32) 首先有一个 EqualConv3D(3,128,3,3,stride1,padding1) 对 input 进行卷积得到: (1,128,8,16,32) input channel: 3 output channel: 128 EqualConv3D 就是一个普通的3D CNN, 只是 用到了 equ…

如何使用Docker部署IT-Tools并结合内网穿透实现公网访问本地工具箱服务

作为程序员,在日常工作中,需要借助一些工具来提高我们工作效率,IT-Tools是为开发人员度身打造的一套便捷在线工具。它提供全面功能,使开发者能以更高效方式完成任务。经由IT-Tools,开发人员能轻松应对各类技术挑战&…

Rocky Linux 运维工具 ls

一、ls 的简介 ​​ls​ 用于列出当前目录下的文件和目录,以及它们的属性信息。通过 ​ls​命令可以查看文件名、文件大小、创建时间等信息,并方便用户浏览和管理文件。 二、ls 的参数说明 序号参数描述1-a显示所有文件,包括以 ​.​开头的…

C# OpenVINO Nail Seg 指甲分割 指甲检测

目录 效果 模型信息 项目 代码 数据集 下载 C# OpenVINO Nail Seg 指甲分割 指甲检测 效果 模型信息 Model Properties ------------------------- date:2024-02-29T16:41:28.273760 author:Ultralytics task:segment version&#…

msys2使用MinGW64编译ffmpeg 64bit库

搭建编译环境 下载安装msys2,参考文章《QT Mingw编译ffmpeg源码以及测试》。 安装必要的库文件 双击msys2安装目录下的msys2.exe,在cmd窗口中执行以下命令: //升级所有库 pacman -Syu //使用下列命令安装ffmpeg编译的依赖和工具 pacman -S mingw-w64-x8…

插值、逼近、拟合、光顺

插值 插值(Interpolation)是数学和计算科学中的一个重要概念,它指的是通过已知的一系列数据点,构造一个函数或曲线,并据此估计未知数据点的值。这个过程通常发生在已知数据点之间,用于预测或估算在这些已知…

操作系统系列学习——系统调用的实现

文章目录 前言系统调用的实现 前言 一个本硕双非的小菜鸡,备战24年秋招,计划学习操作系统并完成6.0S81,加油! 本文总结自B站【哈工大】操作系统 李治军(全32讲) 老师课程讲的非常好,感谢 【哈工…

【飞桨EasyDL】飞桨EasyDL发布的模型转换onnx(附工程代码)

一个愿意伫立在巨人肩膀上的农民...... 一、paddle转onnx转rknn环境搭建 paddle转onnx和onnx转rknn两个环境可以分开搭建,也可以搭建在一起。这里选择分开搭建,先搭建paddle转onnx。 1.1、创建环境 选择python3.8.13包进行创建环境 conda create --nam…

事物管理(黑马学习笔记)

事物回顾 在数据库阶段我们已学习过事务了,我们讲到: 事物是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功,要么同时…

经典DP-最长单调子序列

最长递增子序列 思路 定义状态: 我们定义一个数组 dp,其中 dp[i] 表示以 nums[i] 结尾的最长递增子序列的长度。初始化状态: 对于数组中的每个元素 nums[i],初始时都可以被视为一个长度为1的递增子序列,因此 dp[i] 的…

Mac电脑输入正确密码后提示密码错误

🏝 背景 Mac Pro 在擦键盘时,屏幕一直亮起,导致密码一致输入错误,想来没有什么问题便没有处理。但是!!!在擦完键盘后输入正确的密码依旧提示密码错误😱 接下来就是不断的重启、关机…

如何制作一款建材商城微信小程序

现在,微信小程序已经成为了很多企业和商家开展线上业务的重要渠道之一。对于建材商城而言,制作一款专属的微信小程序可以帮助企业更好地展示产品、提供服务,并增加销售额。下面将介绍如何制作一款建材商城微信小程序。 首先,登录【…

ai作画在线生成!这8个AI生图工具一定要知道。

过去的2023年被称作AI元年,随之而来的2024,被业内人士称之为AI应用元年,即随着大模型和各类AI应用的涌现速度放缓,人们关注的焦点也从产品层面(有哪些好用的AI应用),转移到AI如何更好地赋能实际…

如何下载和配置Linux(使用VMware部署Centos)--看这篇文章就懂了

目录: LinuxLinux概述Linux特点Linux的各个发行版本Linux和Windows区别 Linux的下载和安装安装VMWare虚拟机和Centos安装Centos实现Linux的远程登录使用Xshell连接 Linux Linux概述 Linux内核最初只是由芬兰人林纳斯托瓦兹1991年在赫尔辛基大学上学时出于个人爱好而编写的。 …
最新文章