按比例分配资源

现在项目中需要将某一资源按比例分配给不同的应用处理,比如10个资源请求,按2:3:5分配给A、B和C三个应用服务器处理,那么就是A应用处理2个资源请求,B应用处理3个资源请求,C应用处理5个资源请求。问题是10个资源请求不是同时到达,而是一个一个的分配处理,此时就不能定量的分配处理。目前想到的实现方式是将分配比例看作概率,然后利用随机数产生概率事件决定由哪个应用处理资源。还是上面的例子,就是某一个资源有20%的概率给A处理,30%的概率给B处理,50%的概率给C处理。以下为JAVA实现的代码:

 1 // 定义App数组
 2    String[] sApps = new String[]{};
 3
 4    /*
 5     * 定义分配比例数组,值为1~100间的整数
 6     * 分配比例数组元素下标与App数组元素下标对应
 7     * 数组中所有元素的值之和等于100
 8     */
 9    int[] iRates = new int[]{};
10
11    // 定义随机数,随机数区间为[1,100]中的整数
12    int rndNum = new Random().nextInt(100) + 1;
13
14    int iStart = 1; // 区间起始位
15    int iEnd = 0; // 区间结束位
16
17    /*
18     * 将100分成App个数个连续区间
19     * 每个App分配比例对应一个区间
20     * 循环判断产生的随机数在哪个区间
21     */
22    for (int i = 0; i < iRates.length; i++)
23    {
24        iEnd = iEnd + iRates[i];
25
26        if (iStart <= rndNum && rndNum <= iEnd)
27        {
28            System.out.println("Winner:"+sApps[i]);
29            break;
30        }
31
32        iStart = iStart + iRates[i];
33    }

可能还有其他好的实现方式,以后想到再添加。

(That‘s all)

时间: 2024-10-07 18:41:37

按比例分配资源的相关文章

固定资产过帐成批增加报错:您必须定义此折旧惯例的比例分配期

年底运行固定资产过帐成批增加请求报错,一批数据卡在批量增加的界面,而且状态是webadi导入的[过帐]状态,而不是正常导入的[已过帐]. 报错日志如下: 成批增加过帐执行报告                                           06/01/2016 11:59:33 帐簿: XXX_FA_BOOK 请求识别符: 9542620 您必须定义此折旧惯例的比例分配期. 成批增加标识: 61960 ==> ** 失败 ** 您必须定义此折旧惯例的比例分配期. ------

Android之使用weight属性实现控件的按比例分配空间

从今天開始,把看书时候的知识点整理成博客, 这个比較简单,预计有经验的都用过,weight属性 在做Android布局的时候,常常遇到须要几个控件按比例分配空间的情况 比方下图效果 在底部设置两个button,占领底部宽度一部分的同一时候,保持1:3的比例, 当然了,这么难看的布局用处不大,仅是用来说明weight的使用方法 布局代码例如以下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q

Android开发技巧之使用weight属性实现控件的按比例分配空间

从今天开始,把看书时候的知识点整理成博客, 这个比较简单,估计有经验的都用过,weight属性 在做Android布局的时候,经常遇到需要几个控件按比例分配空间的情况 比如下图效果 在底部设置两个button,占据底部宽度一部分的同时,保持1:3的比例, 当然了,这么难看的布局用处不大,仅是用来说明weight的用法 布局代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" x

spark作业调优(一)-------合理分配资源

原理: spark作业sparkcontext.DAGDAGSchedler.taskSchulder.会将编写算子.切割成大量的task,会提交到application的excutor上执行如何资源设置cup core和excutor较少,就会造成能并行处理的task数量较少,从而就会增加task的运行时间,所以根据资源配置分配资源是很有必要的会很大程度的提高task的运行时间. 例子: 设置参数: 原文地址:https://www.cnblogs.com/SupperMan/p/903544

Project:如何为项目中的任务合理分配资源

Blog 地址:https://blog.51cto.com/13969817 一个完整的项目除了包含不同阶段的细分的任务之外,还需要项目负责人\经理为每个任务分配所需要的资源,不限于人力资源,成本或者设备等资源,以此来衡量该项目资源储备是否充足,预算是否超过预期标准,设备是否满足项目需求,在Project中,资源分配包含: 给一个任务分配一个资源 给一个任务分配多个资源 给多个任务分配多个资源 给一个任务分配一个资源: 在实际的项目管理中,为了方便日后统计每个任务的进展情况以及每个参与项目的人

spark优化(一):合理分配资源

分配更多资源:性能调优的王道,就是增加和分配更多的资源,性能和速度上的提升,是显而易见的:基本上,在一定范围之内,增加资源与性能的提升,是成正比的:写完了一个复杂的spark作业之后,进行性能调优的时候,首先第一步,我觉得,就是要来调节最优的资源配置:在这个基础之上,如果说你的spark作业,能够分配的资源达到了你的能力范围的顶端之后,无法再分配更多的资源了,公司资源有限:那么才是考虑去做后面的这些性能调优的点. 问题:1.分配哪些资源?2.在哪里分配这些资源?3.为什么多分配了这些资源以后,性

从托管堆分配资源

进程初始化时,CLR要保留一块连续的地址空间,这个地址空间最初并没有对应的物理空间.这个地址空间就是托管堆.托管堆还维护着一个指针,称为NextObjPtr.它指向下一个对象在堆中的分配位置.刚开始的时候,NextObjPtr设为保留地址空间的基地址. IL指令newobj用于创建一个对象.newobj指令将导致CLR执行以下步骤: 1.计算类型(及其所有基类型)的字段所需要的字节数. 2.加上对象的开销所需的字节数.每个对象都有两个开销字段:一个是类型对象指针和一个同步块索引.对于32位应用程

软件项目开发中需求分析与设计时间和开发时间的比例分配的问题

从毕业到现在做开发已经有近7年了,大大小小的项目也经历了几十个了.在项目开发的过程中很少有项目在设计阶段投入很多时间的, 有很多情况下,甚至都没有怎么做设计就直接开始编码了,处于一种边开发边设计到状态,还有些时候,设计就是完成一些文档来应付下,很 少有认认真真做设计,然后就直接开始编码,如果遇到需求上问题,再确认.还有些时候,是一边确认需求,一边开始做原型,然后再进入开 发,这种方式倒是比较好,至少可以在前期发现很多问题,避免后续的重大问题出现的几率. 其实从我个人的角度来观察,很多时候我们重开

WPF GridView的列宽度设置为按比例分配

<Grid> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="3*" /> <ColumnDefinition Width="2*" /> <ColumnDefinition Width="2*"/> <ColumnDefinition Width="1*"/> </Gri