日交易,根据权重分配流量的算法,根据权重和交易笔数

简介: 交易系统,接入多个通道。确保每个通道按权重每日达到相应的交易笔数。 通过实时交易笔数/权重。然后进行升序排序,得到选择通道的次序,进行选择通道。 1 //a=当前交易笔数/权重。 权重越大,如果交易笔数相等,a越小。

交易系统,接入多个通道。确保每个通道按权重每日达到相应的交易笔数。

通过实时交易笔数/权重。然后进行升序排序,得到选择通道的次序,进行选择通道。

 1 //a=当前交易笔数/权重。  权重越大,如果交易笔数相等,a越小。权重不变,交易笔数变。a的值大小也在变。
 2 //相对公平的流量分配。
 3 public static void main(String[] args) {
 4     //定义三个通道的权重,按随机数选拔使用哪个通道。
 5     //模拟三个通道的权重A 10  B 70  C 30
 6     //模拟当前交易笔数 A:10  B:50 C:20
 7     //从数据库查询出list集合
 8     ChannelD A=new ChannelD("A",10,10);
 9     ChannelD B=new ChannelD("B",70,50);
10     ChannelD C=new ChannelD("C",30,20);
11     List<ChannelD> channels=new ArrayList<ChannelD>();
12     channels.add(A);
13     channels.add(B);
14     channels.add(C);
15     
16     Map<Double,String> map=new HashMap<Double, String>();
17     Double trade=0.0;
18     //遍历list集合,将交易笔数/权重的值作为key,通道对象为value 存储到map中
19     for (ChannelD channel : channels) {
20         trade=(double) (channel.getCount()/channel.getWeight());
21         map.put(trade,channel.getName());
22     }
23     
24     //将交易笔数/权重的值转化成数据,进行排序。
25     Set<Double> set=map.keySet();
26     Double[] d=set.toArray(new Double[set.size()]);
27     
28     //将数据中的值由小到大进行排序
29     boolean flag=true;
30     for(int i=0;i<d.length-1;i++){
31         flag=true;
32         for(int j=0;j<d.length-1-i;j++){
33             if(d[j]>d[j+1]){
34                 double temp=d[j];
35                 d[j]=d[j+1];
36                 d[j+1]=temp;
37                 flag=false;
38             }
39         }
40         if(flag){
41             break;
42         }
43     }
44     
45     //将排好序的通道名字由小到大的顺序,加入到链表集合中
46     LinkedList<String> chan=new LinkedList<String>();
47     for(int i=0;i<d.length;i++){
48         chan.add(map.get(d[i]));
49     }
50     Iterator<String> it=chan.iterator();
51     while (it.hasNext()) {
52         //最优到最次的通道选择
53         String channelName=it.next();
54         System.out.println("OrderChannelServiceImpl.main()"+channelName);
55         
56     }
57 }
58 
59 class ChannelD{
60     private String name;//通道名字
61     private Integer weight;//权重
62     private Integer count;//当前交易笔数
63     
64     public ChannelD(String name,Integer weight,Integer count){
65         this.name=name;
66         this.weight=weight;
67         this.count=count;
68     }
69 
70     public String getName() {
71         return name;
72     }
73 
74     public void setName(String name) {
75         this.name = name;
76     }
77 
78     public Integer getWeight() {
79         return weight;
80     }
81 
82     public void setWeight(Integer weight) {
83         this.weight = weight;
84     }
85 
86     public Integer getCount() {
87         return count;
88     }
89 
90     public void setCount(Integer count) {
91         this.count = count;
92     }
93     
94     
95     
96 }
View Code

 

相关文章
|
2月前
|
缓存 算法 Java
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
这篇文章详细介绍了Java虚拟机(JVM)中的垃圾回收机制,包括垃圾的定义、垃圾回收算法、堆内存的逻辑分区、对象的内存分配和回收过程,以及不同垃圾回收器的工作原理和参数设置。
76 4
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
|
1月前
|
存储 缓存 算法
优化轮询算法以提高资源分配的效率
【10月更文挑战第13天】通过以上这些优化措施,可以在一定程度上提高轮询算法的资源分配效率,使其更好地适应不同的应用场景和需求。但需要注意的是,优化策略的选择和实施需要根据具体情况进行详细的分析和评估,以确保优化效果的最大化。
|
2月前
|
人工智能 算法 前端开发
无界批发零售定义及无界AI算法,打破传统壁垒,累积数据流量
“无界批发与零售”是一种结合了批发与零售的商业模式,通过后端逻辑、数据库设计和前端用户界面实现。该模式支持用户注册、登录、商品管理、订单处理、批发与零售功能,并根据用户行为计算信用等级,确保交易安全与高效。
|
4月前
|
负载均衡 监控 算法
揭秘负载均衡的五大算法秘籍:让你的服务器轻松应对亿万流量,不再崩溃!
【8月更文挑战第31天】在互联网快速发展的今天,高可用性和可扩展性成为企业关注的重点。负载均衡作为关键技术,通过高效分配网络流量提升系统处理能力。本文介绍了轮询、加权轮询、最少连接及IP哈希等常见负载均衡算法及其应用场景,并提供Nginx配置示例。此外,还探讨了如何根据业务需求选择合适算法、配置服务器权重、实现高可用方案、监控性能及定期维护等最佳实践,助力系统优化与用户体验提升。
82 2
|
6月前
|
机器学习/深度学习 算法
**反向传播算法**在多层神经网络训练中至关重要,它包括**前向传播**、**计算损失**、**反向传播误差**和**权重更新**。
【6月更文挑战第28天】**反向传播算法**在多层神经网络训练中至关重要,它包括**前向传播**、**计算损失**、**反向传播误差**和**权重更新**。数据从输入层流经隐藏层到输出层,计算预测值。接着,比较预测与真实值计算损失。然后,从输出层开始,利用链式法则反向计算误差和梯度,更新权重以减小损失。此过程迭代进行,直到损失收敛或达到训练次数,优化模型性能。反向传播实现了自动微分,使模型能适应训练数据并泛化到新数据。
75 2
|
6月前
|
机器学习/深度学习 算法 数据采集
构建一个基于机器学习的交易算法
【6月更文挑战第2天】本文探讨了如何构建基于机器学习的交易算法,关键步骤包括数据收集与预处理、特征选择、模型选择与训练、评估与优化,以及回测与实盘交易。挑战涉及数据质量、过拟合与欠拟合、市场变化与模型适应性。通过结合金融知识与机器学习技术,可创建智能交易系统,但需不断更新优化以应对市场动态。
|
5月前
|
算法 搜索推荐
推荐系统,推荐算法01,是首页频道推荐,一个是文章相似结果推荐,用户物品画像构建就是用户喜欢看什么样的文章,打标签,文章画像就是有那些重要的词,用权重和向量表示,推荐架构和业务流
推荐系统,推荐算法01,是首页频道推荐,一个是文章相似结果推荐,用户物品画像构建就是用户喜欢看什么样的文章,打标签,文章画像就是有那些重要的词,用权重和向量表示,推荐架构和业务流
|
7月前
|
传感器 机器学习/深度学习 存储
Python 机器学习算法交易实用指南(一)(4)
Python 机器学习算法交易实用指南(一)
327 4
|
7月前
|
机器学习/深度学习 Web App开发 算法
Python 机器学习算法交易实用指南(一)(5)
Python 机器学习算法交易实用指南(一)
320 2
|
6月前
|
负载均衡 算法 Nacos
SpringCloud之LoadBalancer自定义负载均衡算法,基于nacos权重
ReactorLoadBalancer接口,实现自定义负载算法需要实现该接口,并实现choose逻辑,选取对应的节点。
502 0