【JAVA】系统中关于自定义比例选择的功能实现
来源:互联网 发布:nosql数据库入门 编辑:程序博客网 时间:2024/05/22 15:35
这里以我做的系统案例来说,这是一套短信系统,客户端就扔一个号码和短信内容过来,服务端需要首先根据配置判断是否区分运营商,然后根据号段走不同的运营商网关去提交短信
sourceId表示接入系统的唯一标识ID,如果不区分的,走下面紫色的三条线,服务端为该接入方配置了三个三网(不区分运营商)网关,并且配置了不同的比例,意思就是60%请求走gw1出去,20%走gw2出去,那么gw3虽然配置了,但是给的比例是0,那么剩下的20%就是丢弃了;同样区分的话,走上面的情况,首先根据号段数据找到对应的运营商,去该运营商配置的网关,按照比例下发;
List<GwRouterInfo> gwChoose = new ArrayList<GwRouterInfo>(Collections.nCopies(100,gwNull));首先初始化一个长度100的list,里面的元素都是空元素,gwNull是GwRouterInfo对象,里面的属性设置空
GwRouterInfo gwNull = new GwRouterInfo();gwNull.setGwId(0L);
int index = 0;for (int i = 0; i < size; i++) {GwRouterInfo gri = griList.get(i);for (int j = index; j < index + gri.getRatio(); j++) {gwChoose.add(j, gri);}index = gri.getRatio();}这里size就是每组的大小,比如上面不区分运营商的是gw1,gw2,gw3,那么这个size就是3
这里的循环就将gwChoose的list给设置好了,按照预定的比例,在list的各个位置设置好值,20%的那么list里必然有20个位置的值是该网关对象,其它类似;
int gwIndex = Utils.random(100);GwRouterInfo gw = gwChoose.get(gwIndex);if (gw.getGwId() == 0L) {return null;}return gw;
后面就是产生一个0-100的随机数了,根据该随机下标去取list中对应的元素,就得到了该网关,当然这种场景,数据量越大,比例越准确。
以上这种方法实现该功能是最常用简单的;
核心就是各项比例以及每种比例对应的值,通过一个数组或列表按照比例给各项赋值,最终产生一个随机下标拿到该对象即可。
1 0
- 【JAVA】系统中关于自定义比例选择的功能实现
- java中自定义锁实现synchronized功能
- java 中关于自定义信号在linux下的实现
- 用选择结构实现购物管理系统的部分功能
- 关于最多只能选择两个多选框的jQuery功能实现
- 关于android中使用weight属性实现多个layou比例布局的计算方法
- 选择屏幕中 如何自定义 功能按钮
- Android系统中分享功能的实现
- 关于shell中上传下载功能的实现
- 购物车中选择物品结算功能的实现
- 关于java中函数功能的封装
- Delphi中ListView中实现自定义删除功能的方法
- Java中选择排序的代码实现
- 常规功能和模块自定义系统 (cfcmms)—011选择菜单后的执行过程
- 常规功能和模块自定义系统 (cfcmms)—054 manyToOne的选择方式
- 关于Java中自定义包的创建
- 关于博客系统用户关注功能的实现
- java考试系统中自动组卷功能的核心逻辑实现
- IOS NSNotificationCenter
- linux下安装numpy
- LeetCode算法题目:Rotate List
- Nginx+upload+lua 简单的文件上传
- Spring Boot学习(一)
- 【JAVA】系统中关于自定义比例选择的功能实现
- Codeforces Gym 100623F Problem F. Fenwick Tree
- 微信小程序--Ble蓝牙
- iOS NSKeyedArchiver
- mysql大小写区分 lower_case_table_names与binary
- android_分享图片功能实现
- 汽车CAN总线关闭故障的诊断与恢复
- 学习C++的视频和书
- Freemarker模板应用