从spring 配置文件中 设置 每台服务器的 权重, 或者 在 .properties 中设置 ,进行热部署,,,,
public class WeightAllot implements Allot { protected static Logger logger = LoggerFactory.getLogger(WeightAllot.class); @Resource private AoigwService aoigwService; // 该字符串为逗号分割的数字 格式如:1,2,3 private String weights; /** 数据库中的AOG列表 */ List<AoiGw> aoigwlist = null; /** 每个AOG的权值 */ int[] aoiws; /** * 总权值 */ static int num = 0; @Override public void afterPropertiesSet() throws Exception { aoigwlist = aoigwService.findAll(); String[] ws = weights.replaceAll(",", ",").replaceAll(" ", "").trim().split(","); aoiws = new int[aoigwlist.size()]; for (int i = 0; i < aoiws.length; i++) { aoiws[i] = 1; if (i < ws.length) { try { aoiws[i] = Integer.parseInt(ws[i]); } catch (Exception e) { } } num += aoiws[i]; } logger.info("aogdns Allot: aogNode = " + aoigwlist.size() + ", weightStr = " + weights + ", sum = " + num); } public AoiGw getAoiGw(String lid) { // 先取LID后8位转成INT值,然后与权值和取模 long ai = 1; try { String s = lid.substring(lid.length() - 8, lid.length()); ai = Long.parseLong(s, 16); } catch (Exception e) { logger.warn("", e); } int mod = (int) (ai % num); int temp = 0; AoiGw result = aoigwlist.get(0); for (int i = 0; i < aoiws.length; i++) { temp += aoiws[i]; if (mod < temp) { result = aoigwlist.get(i); break; } } if (logger.isDebugEnabled()) logger.debug("lid:" + lid + ", mod: " + mod + ", serverId: " + result.getAoiId()); return result; } public String getWeights() { return weights; } public void setWeights(String weights) { this.weights = weights; } public AoigwService getAoigwService() { return aoigwService; } public void setAoigwService(AoigwService aoigwService) { this.aoigwService = aoigwService; } public static void main(String[] args) { try { Configuration.init("applicationContext.xml"); } catch (Exception e) { e.printStackTrace(); } Allot allot = Configuration.getInstance().getAllot(); for (int i = 0; i < 50; i++) { int tmp = new Random().nextInt(Integer.MAX_VALUE); System.out.println(" num: " + num + ", people: " + tmp + ", id: " + allot.getAoiGw(MseqUtil.toHex((int) tmp)).getAoiId()); } System.exit(1); } }
package Java2014.java20141102; import java.util.ArrayList; import java.util.List; public class OtherCategary { static int num =6 ; static int[] aoiws = {2,0,3,1}; /** * <pre> * 1 0 1 * 1 2 3 * 1 3 4 * 1 0 1 * 1 2 3 * 1 2 3 * </pre> * 标记 flag 第一次 flag = 0 ; * 注册一次 用户后 flag 偏移一位 ,flag++ ; flag = (flag >= aoiws.length?0:flag); * if(reaoiws[flag]<aoiws[flag]) {} else { continue;} * for (i< max ) * * j if(reaoiws[flag] < aoiws[flag]) reaoiws[flag]++; flag++;flag = (flag >= aoiws.length?0:flag); * * */ static int[] reaoiws = null; static List aoigwlist = null; static int currIndex = 0; static { aoigwlist = new ArrayList<Integer>(); aoigwlist.add(1); aoigwlist.add(2); aoigwlist.add(3); aoigwlist.add(4); reaoiws = new int[aoigwlist.size()]; } public static Integer getAoiGw(Integer ai) { Integer result = (Integer) aoigwlist.get(0); if(ai % num == 0) {currIndex = 0;reaoiws = null;reaoiws = new int[aoigwlist.size()];} for (int i = 0; i < aoiws.length; i++) { if(reaoiws[currIndex] < aoiws[currIndex]){ reaoiws[currIndex]++; result = (Integer) aoigwlist.get(currIndex); currIndex = (currIndex >= aoiws.length-1 ? 0 : currIndex+1); break; }else{ currIndex = (currIndex >= aoiws.length-1 ? 0 : currIndex+1); } } return result; } public static void main(String[] args) { for (int i = 0; i < 40; i++) { if(i%6==0) System.out.println ( ); // try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.print ( getAoiGw(i) +" "); } } }
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!
相关推荐
研究利用了GPU强大的并行处理能力,以期达到比传统CPU计算更快的算法执行效率,并通过动态策略来优化计算资源的利用,以适应不同规模和复杂度的问题,展现了GPU在优化算法中应用的巨大潜力和前景。
吉林大学操作系统课程设计(基于死锁避免动态策略的资源分配银行家算法的模拟实现) 利用Java实现了基本的算法和GUI界面,以及写了实验报告。 如果你成功获取了这个源码,可以联系我的QQ 2904184453来获取完整的实验...
本篇将回顾几种常见的动态策略,包括凸管理(Convex Management)、凹管理(Concave Management)、恒定比例投资组合保险(CPPI)和优化基础投资比例策略(OBPI)。 1. 凸管理与凹管理: 凸管理与凹管理是基于投资...
这样,我们可以通过键来获取对应的策略实例,实现动态策略选择。例如: ```java Map, Strategy> strategyMap = new HashMap(); strategyMap.put("strategyA", new StrategyA()); strategyMap.put("strategyB", new ...
论文研究-在线收益管理的动态售票策略及竞争分析.pdf, 基于... 同时比较了该类动态策略与一类静态策略的优劣性, 并指出:对于不同的需求序列, 两类策略具有不同的竞争性能.
针对远程视频监控的实时性要求,提出了一个基于动态策略的网络视频监控系统。该系统包括两个部分:基于X264编码器和Live555流媒体服务器的Linux平台网络视频监控系统服务器,以及基于VLC播放器的Windows平台网络视频...
在营销领域,面对高度同质化的市场环境,企业必须采取动态策略组合来建立竞争优势。同质化恶性竞争往往导致价格战、终端战、广告战和促销战,这些短期行为不仅可能导致利润下滑,还可能损害品牌形象。为了打破这种...
存在策略消费者的动态定价策略主要关注的是在线零售商如何通过历史价格和预期价格信息来调整其定价策略,以及消费者如何基于这些信息做出购买决策。该策略不仅涉及到零售商的定价灵活性,还涉及到消费者行为的预测,...
4. 动态策略选择:如何在运行时根据条件选择合适的策略实例。 总的来说,这个"java策略模式示例"是一个很好的学习资源,通过实践可以深入理解策略模式的精髓,提高软件设计能力。在学习过程中,建议动手编写代码,...
在方法简介部分,文章提到了基于模拟的方法,使用Brandt、Goyal、Santa Clara和Stroud的方法寻找最优动态策略,实现了对整个投资规划期进行过程控制。该方法使用泰勒展开、倒向递归和回归分析,具体流程见正文。 在...
2. **动态策略NAT(Dynamic Policy NAT)**:与静态策略NAT类似,但转换的全局IP地址是动态分配的。在这种情况下,`access-list`同样用于定义匹配的流量,然后使用`nat`或`global`命令指定地址池,系统会从这个地址...
基于abtestinggateway的学习研究笔记记录PPT 此外gti有源码和文档
在现代自动化加工系统中,智能轨道导向车(RGV)的动态调度策略是决定生产效率高低的关键因素。为了适应不同的工作场景,包括单一工序物料加工作业、多工序物料加工作业以及作业中的故障处理等,本文提出了一套基于...
上下文在运行时可以通过更改策略对象来改变其行为,这被称为动态策略选择。 4. **客户端代码**:在客户端代码中,根据实际需求选择并实例化相应的策略类,然后通过上下文来调用策略对象的执行方法。这样,客户端...