现在有个任务,写一个号码池,主要功能就是池里面有很多电话号码,请求来了之后根据一定的规则选择一个号码发送短信。目的是防止运营商对一个发送大量信息的号码封号。用java语言实现,有没有高手给讲讲 这个号码池改怎么实现呢? 谢谢
需求很简单,是你想复杂了,还是我没理解清楚。
目的是防止号码被封,所以希望发送短信的号码能够均衡。
把这些号码统一放到list中,然后产生0-list.size()-1之间的随机数,选择该随机数对应的号码发送短信就行了吧。
如果对均衡性有要求,可以对每次发送的号码记录发送次数,然后再处理。
1、队列 不是更简单吗?
2、堆,根据规则计算 权重。
上一个简单的demo:
[code="java"]
package com.learnworld.random;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class NumberTest {
private static Integer[] numberArray;
private static Random rand = new Random(System.currentTimeMillis());
static {
Set<Integer> numberSet = new HashSet<Integer>();
for (int i = 0; i < 100; i++){
numberSet.add(i);
}
numberArray = numberSet.toArray(new Integer[0]);
}
/**
* @param args
*/
public static void main(String[] args) {
for (int j = 0; j < 10; j++){
System.out.println("number: " + getNumber());
}
}
/**
* get number
* @return number
*/
public static int getNumber(){
return numberArray[rand.nextInt(numberArray.length)];
}
}
[/code]