去一家游戏公司面试,题目大概是给出权值,求出值,
当时题目太多了,没有做完
import java.util.HashMap;
/***
* hcmfys@163.com
* tomjnefu
* 一个负载均衡的算法
* * 2013-06-05 20:51
*
* @author Administrator
*
*/
public class WeightCheck {
private static HashMap<Integer, Integer> weightList = new HashMap<Integer, Integer>();
public synchronized void reset() {
weightList.clear();
}
public int getWeight(int weight[]) {
return getMaxWeight(weight);
}
/**
*
* @param weight
* @param curTotalSize
* @return
*/
private synchronized int getMaxWeight(int weight[]) {
double max = Double.MIN_VALUE;
int index = 0;
int total = 0;
int curTotalSize = 0;
int pos = 1;
if (weightList.get(0) == null) {
pos = 0;
weightList.put(0, 0);
}
if (pos == 0) {
for (int i = 0; i < weight.length; i++) {
int w = weight[i];
if (max < w) {
max = w;
index = i;
}
}
weightList.put(index, 1);
return index;
}
for (int i = 0; i < weight.length; i++) {
int w = weight[i];
total += w;
if (weightList.get(i) == null) {
weightList.put(i, 0);
}
curTotalSize += weightList.get(i);
}
for (int i = 0; i < weight.length; i++) {
int curWeight = weightList.get(i);
int w = weight[i];
double dw = curTotalSize * (w / (total + 0.0000000001)) - curWeight;
if (dw > max) {
max = dw;
index = i;
}
}
int toal = weightList.get(index);
weightList.put(index, toal + 1);
return index;
}
/**
* @param args
*/
public static void main(String[] args) {
int weight[] = { 3, 2, 2 };
WeightCheck wi = new WeightCheck();
int totalSize = 1000;
for (int i = 0; i < totalSize; i++) {
int ret = wi.getWeight(weight);
System.out.println(ret);
}
System.out.println("================");
for (int i = 0; i < weight.length; i++) {
System.out.println("wight=" + weight[i] + " total=["
+ weightList.get(i) + "] " + weightList.get(i)
/ (totalSize + 0.00001));
}
}
}
分享到:
相关推荐
基于动态反馈的负载均衡算法基于动态反馈的负载均衡算法基于动态反馈的负载均衡算法基于动态反馈的负载均衡算法
MMOG中的一种负载均衡算法 MMOG中的一种负载均衡算法
在介绍Hadoop,HDFS的原理的基础上,分析了Hadoop的数据负载均衡算法.Hadoop负载均衡算法只是根据空间使用率对各个结点的负载进行均衡,这种均衡方法没有考虑结点的处理能力、带宽、文件访问频度等因素,因此,造成了基本...
几种负载均衡算法
详解hbase负载均衡算法分析, hbase是一个非关系型列式数据库。
基于P2P的MMOG中动态负载均衡算法基于P2P的MMOG中动态负载均衡算法
一种基于服务类型的web集群负载均衡算法一种基于服务类型的web集群负载均衡算法
应用交换技术的负载均衡算法 应用交换技术里主要包括四项关键的技术: 截获和检查流量 服务器监控健康检查 负载均衡算法 会话保持 截获和检查流量保证只有合适的数据包才能通过; 服务器监控和健康检查随时了解...
基于CPU和内存利用率的负载均衡算法的研究.pdf
F5负载均衡算法详解:静态负载均衡算法和动态负载均衡算法
为解决通信过程中的负载均衡问题,提出了一种基于质距优化机制的水声传感器网络多跳通信策略,设计自适应负载均衡算法,加权评估普通传感器的通信质量与距离选择下一跳;在此基础上,提出了基于AUVs节点的数据平衡...
终端管理服务器负载均衡算法,周毅,李文璟,本文介绍了一种终端管理服务器负载均衡算法,并详细介绍了构架设计和算法设计。本文提出的算法提升了终端管理服务器的响应时间和
该文章能够提供一个任务分配的框架,基于该框架实现任务负载均衡,里面的算法思想较为适用。
Web集群系统的负载均衡算法Web集群系统的负载均衡算法Web集群系统的负载均衡算法
一种改进的Linux集群系统负载均衡算法.pdf
其中介绍了负载均衡的原理及相关算法,能够帮助你快速理解负载均衡
针对Web集群服务器在处理分配混合页面访问任务时开环负载均衡算法导致局部服务器负载偏高而降低系统效率的问题,建立了一类基于动态调节的闭环负载分配策略。根据服务器处理Web访问页面类型的特点,建立静态页面与...
本文将分析Nginx服务器负载均衡的体系架构,研究默认的加权轮询算法,并提出一种改进后的动态负载均衡算法,实时收集负载信息,重新计算并分配权值。通过实验测试,对比不同算法下的负载均衡性能,改进后的算法能有效提高...
面向云服务平台的弹性负载均衡算法.pdf
基于排队论综合指标评估的动态负载均衡算法.pdf