当前位置: 首页 > news >正文

【轮询负载均衡规则算法设计题】

一、题目描述

给定n台主机(编号1~n)和某批数据包,数据包格式为(抵达主机时刻,负载量)。这里数据每个时刻最多只有1条数据到达。负载量表示该主机处理此数据包总耗时。请计算轮询负载均衡规则下,哪些主机负载最高(即处理数据的负载量总和),升序输出主机编号。

二、说明

轮询负载均衡规则:如果3台主机均空闲,分配方案为1,2,3,1,2…。如果某主机繁忙,则跳过该主机;如果某条数据到达时所有主机均繁忙,则丢弃这条数据。

三、举例

输入
3
1 15
2 10
12 10
5 10
6 10
30 15
32 10
输出
1 3

四、算法

public int[] findHighestHost(int serverNum, Message[] messages) {Arrays.sort(messages, Comparator.comparingInt(m -> m.time));// times[i]表示第i台主机,下次可处理请求的时刻int[] times = new int[serverNum];// 初始值设置为1Arrays.fill(times, 1);// load[i]表示第i台主机的负载值int[] loads = new int[serverNum];// 轮询主机索引,从第1台主机开始int start = 0;for (Message message : messages) {boolean flag = false;int j = 0;for (int i = 0; i < serverNum; i++) {j = (start + i) % serverNum;if (times[j] <= message.time) {// 当前主机j下次可以处理请求的时刻值 <= 当前消息时刻值,满足处理条件times[j] = message.time + message.load;loads[j] += message.load;flag = true;// 找到满足条件的主机编号j后,直接跳出当前for循环,轮询寻找下次消息处理的主机编号break;}}// 轮询寻找下次主机编号if (flag) {start = (j + 1) % serverNum;}}// 找出最大负载结果List<Integer> ans = new ArrayList<>();ans.add(0);for (int i = 0; i < serverNum; i++) {if (loads[i] > loads[ans.get(0)]) {ans.clear();ans.add(i);} else if (loads[i] == loads[ans.get(0)]) {ans.add(i);}}// 由于主机编号从1开始,而ans中值从0开始,所以这里需要自增1return ans.stream().mapToInt(i -> i + 1).toArray();}static class Message {int time;int load;}

相关文章:

【轮询负载均衡规则算法设计题】

一、题目描述 给定n台主机&#xff08;编号1~n&#xff09;和某批数据包&#xff0c;数据包格式为&#xff08;抵达主机时刻&#xff0c;负载量&#xff09;。这里数据每个时刻最多只有1条数据到达。负载量表示该主机处理此数据包总耗时。请计算轮询负载均衡规则下&#xff0c…...

张一鸣的产品哲学:与巨头共舞,低调中寻求突破

一、引言 在当今互联网竞争激烈的格局下&#xff0c;与巨头企业打交道是每个新兴科技企业都需面对的挑战。字节跳动创始人张一鸣在多次访谈中分享了他与巨头企业打交道的经验&#xff1a;保持低调、补齐技术、产品和市场各方面的能力。本文将探讨这一策略背后的产品哲学&#…...

【面试干货】throw 和 throws 的区别

【面试干货】throw 和 throws 的区别 1、throw1.1 示例 2、throws2.1 示例 3、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java中&#xff0c;throw和throws都与异常处理紧密相关&#xff0c;但它们在使用和含义上有明显的区别。…...

安卓手机删除的照片怎么恢复?3个方法,小技巧大作用

你是否曾经不小心删除了手机里的珍贵照片&#xff0c;却不知道怎么恢复&#xff1f;别担心&#xff0c;今天我们就来分享几个简单的小技巧&#xff0c;帮助你轻松找回那些丢失的照片。这些技巧虽然简单&#xff0c;但却能发挥大作用&#xff0c;让你不再为丢失照片而烦恼。手机…...

Unity制作背包的格子

1.新建一个面板 2.点击面板并添加这个组件 3.点击UI创建一个原始图像&#xff0c;这样我们就会发现图像出现在了面板的左上角。 4.多复制几个并改变 Grid Layout Group的参数就可以实现下面的效果了...

道可云元宇宙每日资讯|厦门:运用元宇宙技术助力直播电商发展

道可云元宇宙每日简报&#xff08;2024年6月20日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 厦门&#xff1a;运用元宇宙技术助力直播电商发展 近日&#xff0c;厦门市商务局印发《厦门市促进直播电商高质量发展若干措施&#xff08;2024年-2026年&#xff0…...

电脑怎么卸载软件?多个方法合集(2024年新版)

在电脑的日常使用中&#xff0c;我们经常需要安装各种软件来满足不同的需求&#xff0c;但随着时间的推移&#xff0c;可能会出现一些软件不再需要或需要更换的情况。此时&#xff0c;及时从电脑上卸载这些不必要的软件是非常重要的。它不仅可以释放硬盘空间&#xff0c;还可以…...

【深度学习基础】详解Pytorch搭建CNN卷积神经网络LeNet-5实现手写数字识别

目录 写在开头 一、CNN的原理 1. 概述 2. 卷积层 内参数&#xff08;卷积核本身&#xff09; 外参数&#xff08;填充和步幅&#xff09; 输入与输出的尺寸关系 3. 多通道问题 多通道输入 多通道输出 4. 池化层 平均汇聚 最大值汇聚 二、手写数字识别 1. 任务…...

面试技巧:正确回答JavaScript中Map和Object的选择问题

在JavaScript的面试中&#xff0c;对于何时使用Map和Object的选择问题&#xff0c;是一个常见的考察点。这两个数据结构都能存储键值对&#xff0c;但它们各有优势和适用场景。本文将深入探讨两者的区别&#xff0c;并通过实际代码示例来指导您如何选择。 基本概念 Map&#…...

sd StableDiffusion库学习笔记

目录 DeepSpeed realesrgan BasicSR超分辨率&#xff0c;去噪&#xff0c;去模糊&#xff0c;去 JPEG 压缩噪声 segment_anything mmengine controlnet_aux accelerate transfersformer pytorch_fid einops compel transfersformer 文本嵌入调整库 报错&#xff1a…...

【单片机毕业设计选题24017】-基于STM32的禽舍环境监测控制系统(蓝牙版)

系统功能: 系统分为主机端和从机端&#xff0c;主机端主动向从机端发送信息和命令&#xff0c;从机端 收到主机端的信息后回复温湿度氨气浓度和光照强度等信息。 主要功能模块原理图: 电源时钟烧录接口: 单片机和按键输入电路: 主机部分电路: 从机部分电路: 资料获取地址 主…...

每天一个数据分析题(三百七十八)- 系统聚类

在系统聚类方法中&#xff0c;哪种系统聚类是直接利用了组内的离差平方和&#xff1f; A. 最长距离法 B. 重心法 C. Ward法 D. 类平均法 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖Python&#…...

守护系统稳定性的关键技术之看门狗

目录 一、独立看门狗 二、窗口看门狗 三、总结 看门狗定时器&#xff08;Watchdog Timer&#xff0c;WDT&#xff09;是嵌入式系统中至关重要的组件&#xff0c;用于监控和维护系统的稳定性。主要是用来监测单片机运行状态和解决程序引起的故障的模块。在由单片机构成的微型…...

【Linux】进程间通信上 (1.5万字详解)

目录 一.进程间通信介绍 1.1进程间通信的目的 1.2初步认识进程间通信 1.3进程间通信的种类 二.匿名管道 2.1何为管道 2.1实现原理 2.3进一步探寻匿名管道 2.4编码实现匿名管道通信 2.5管道读写特点 2.6基于管道的进程池设计 三.命名管道 3.1实现原理 3.2代码实现 四.…...

测试用例设计:提升测试覆盖率的策略与方法

测试用例设计&#xff1a;提升测试覆盖率的策略与方法 前言测试用例设计的原则提高测试覆盖率的方法测试类型的分析 测试用例设计的基本方法等价类划分边界值分析正交法判定表法因果图法 方法与策略方法策略 如何评价测试用例结论 前言 在软件开发过程中&#xff0c;测试用例设…...

【微服务】什么是Hystrix?一文带你入门Hystrix

文章目录 强烈推荐引言主要功能实现容错应用场景1. 远程服务调用2. 防止级联故障3. 网络延迟和超时管理4. 资源隔离5. 高并发场景6. 熔断与自动恢复7. 故障检测与监控 示例应用场景使用实例1. 引入依赖2. 创建 Hystrix 命令类3. 使用 Hystrix 命令4. 配置 Hystrix5. 实时监控集…...

AI学习指南机器学习篇-支持向量机超参数调优

AI学习指南机器学习篇-支持向量机超参数调优 在机器学习领域中&#xff0c;支持向量机&#xff08;Support Vector Machines&#xff0c;SVM&#xff09;是一种非常常用的监督学习模型。它通过寻找一个最优的超平面来进行分类和回归任务。然而&#xff0c;在实际应用中&#x…...

掉电安全文件系统分析

掉电安全FS 掉电安全的文件系统&#xff08;Power-Fail Safe File Systems&#xff09;被设计为在电源故障或系统崩溃的情况下仍能保持数据一致性的文件系统。这样的文件系统通常通过使用日志&#xff08;journaling&#xff09;或写时复制&#xff08;copy-on-write&#xff…...

React-Redux学习笔记(自用)

1. 环境搭建 插件安装&#xff1a;Redux Toolkit和react-redux npm i reduxjs/toolkit react-redux2、 store目录结构设计 集中状态管理的部分会单独创建一个store目录&#xff08;在src下&#xff09;应用通常会有很多个子模块&#xff0c;所以还会有个modules目录&#x…...

【机器学习】:线性回归模型学习路线

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…...

C++设计模式——Flyweight享元模式

一&#xff0c;享元模式简介 享元模式是一种结构型设计模式&#xff0c;它将每个对象中各自保存一份数据的方式改为多个对象共享同一份数据&#xff0c;该模式可以有效减少应用程序的内存占用。 享元模式的核心思想是共享和复用&#xff0c;通过设置共享资源来避免创建过多的实…...

Github 2024-06-19 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-06-19统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目3Rust项目2Go项目2JavaScript项目1Python项目1Dart项目1非开发语言项目1Ruby项目1HTML项目1项目化学习 创建周期:2538 天协议类…...

【ARM】如何通过Keil MDK查看芯片的硬件信息

【更多软件使用问题请点击亿道电子官方网站】 1、文档目标&#xff1a; 解决在开发过程中对于开发项目所使用的的芯片的参数查看的问题 2、问题场景&#xff1a; 在项目开发过程中&#xff0c;经常需要对于芯片的时钟、寄存器或者一些硬件参数需要进行确认。大多数情况下是需…...

elasticsearch的安装和配置

单节点安装与部署 我们通过docker进行安装 1.docker的安装 如果以及安装了docker就可以跳过这个步骤。 首先更新yum: yum update安装docker: yum install docker查看docker的版本&#xff1a; docker -v此时我们的docker就安装成功了。 2.创建网络 我们还需要部署kiban…...

华为云下Ubuntu20.04中Docker的部署

我想用Docker拉取splash&#xff0c;Docker目前已经无法使用&#xff08;镜像都在国外&#xff09;。这导致了 docker pull 命令的失败&#xff0c;原因是timeout。所以我们有必要将docker的源设置在国内&#xff0c;直接用国内的镜像。 1.在华为云下的Ubuntu20.04因为源的原因…...

1、C++编程中的基本运算 - 课件

一、基础知识 1、C程序的基本框架 // 预处理器指令&#xff0c;引入需要的头文件 #include <iostream> // 使用标准命名空间 using namespace std; // 主函数&#xff0c;程序的入口 int main() {// 局部变量声明// 程序逻辑代码// 返回值&#xff0c;表示程序正常结束…...

Java动态代理详解

文章目录 一、JDK动态代理1、关键类和接口2、实现步骤 二、CGLIB动态代理1、关键类2、实现步骤 三、总结 Java中的动态代理是一种设计模式&#xff0c;它允许在运行时创建代理对象&#xff0c;而不是在编译时。代理对象可以用来代理真实对象的方法调用。 Java中的动态代理主要…...

Python基础学习文档

一、Python入门 1.Python简介&#xff1a; Python是一种高级编程语言&#xff0c;用于多种应用&#xff0c;包括网站开发、数据科学、人工智能等。 Python具有语法简洁、易读性强、功能强大等特点。 2.安装Python ①访问Python官网&#xff08;https://www.python.org/&am…...

数据结构与算法笔记:基础篇 - 分治算法:谈一谈大规模计算框架MapReduce中的分治思想

概述 MapReduce 是 Google 大数据处理的三姐马车之一&#xff0c;另外两个事 GFS 和 Bigtable。它在倒排索引、PageRank 计算、网页分析等搜索引擎相关的技术中都有大量的应用。 尽管开发一个 MapReduce 看起来很高深。实际上&#xff0c;万变不离其宗&#xff0c;它的本质就…...

如何清除anaconda3缓存?

如果长期使用anaconda不清理缓存&#xff0c;会导致anaconda占用磁盘空间越来越多&#xff0c;甚至系统磁盘撑爆。 清除包缓存&#xff1a; 打开 Anaconda Prompt 或者命令行窗口。运行以下命令清除包缓存&#xff1a;conda clean --all这会清除所有的包缓存&#xff0c;释放磁…...

wordpress 关键词/个人自己免费建网站

摘要 js字符串转日期&#xff0c;js日期转字符串。 更新日志 2018/08/21 在字符串转日期中&#xff0c;修改“日”的默认值为1.可以识别单数字的“日”&#xff0c;”月“。比如 1-9-2018可以直接这样转换NayiUtil.to_date("1-9-2015", "dd-mm-yyyy") …...

杭州强龙网站建设电话/网站制作的流程是什么

2019独角兽企业重金招聘Python工程师标准>>> 在软件开发领域&#xff0c;高级开发工程师通常是指那些编写代码超过3年的人。这些人可能会被放到领导的位置&#xff0c;但经常会产生非常糟糕的结果。Matt Briggs是一名高级开发工程师兼Scrum管理员。他认为&#xff0…...

应用网站建设/seo检查工具

第1周的编程题。请注意1.x的“如何交作业” 温馨提示&#xff1a; 1.本次作业属于Online Judge题目&#xff0c;提交后由系统即时判分。 2.学生可以在作业截止时间之前不限次数提交答案&#xff0c;系统将取其中的最高分作为最终成绩。 1温度转换&#xff08;10分&#xff09;题…...

动态表情包在线制作网站/网络宣传的方法有哪些

相对中资公司来说&#xff0c;美国或者西方公司的面试流程更加复杂&#xff0c;考核的内容更多。 不管是那种面试&#xff0c;很多时候求职者会遇到&#xff1a;面着面着就没了。 当然我们这说的只是你应聘中层以下的技术或者部分管理岗。 如果你是应聘公司高层&#xff0c;…...

wordpress主题需要ftp/制作公司网站的步骤

weblogic8.1 5 ip 限制 报错信息如图所示&#xff1a; 解决办法&#xff1a;此weblogic 未破解&#xff0c;去网上下载破解包&#xff0c;然后放到 copy weblogic_sp.jar to $WL_HOME/server/lib/ copy license.bea to $BEA_HOME 此目录下即可。 本人资源里面有 weblogic 8.…...

wordpress搭建多少钱/上海专业seo服务公司

。。。。。。。。...