基于mongodb的临时手机池生成方案(后面补充方案图)

print('=========WECOME==========');
//方法
function getMobileV3() {
var getNum = function(start, end) {
var number = (Math.random() * (end - start + 1) + start);
return parseInt(number);
};
var telFirst = "133,153,177,180,181,189,134,135,136,137,138,139,150,151,152,157,158,159,178,182,183,184,187,188,147,130,131,132,155,156,176,185,186,145,170,171"
.split(",");
var index = getNum(0, telFirst.length - 1);
var first = telFirst[index];
var second = (getNum(1, 888) + 10000).toString().substr(1);
var thrid = (getNum(1, 9100) + 10000).toString().substr(1);
return first + second + thrid;
}

function getMobile() {
var getNum = function(start, end) {
var number = (Math.random() * (end - start + 1) + start);
return parseInt(number);
};

var telFirst = "133,153,177,180,181,189,134,135,136,137,138,139,150,151,152,157,158,159,178,182,183,184,187,188,147,130,131,132,155,156,176,185,186,145,170,171"
        .split(",");
var mobile_testNum = "mobile_testNum3";
var mobile = "";
var index = getNum(0, telFirst.length - 1);
var first = telFirst[index];

var mobieend = 0;
var currentNum = 0;
var timestamp =0;
while (true) {
 // var value = Integer.valueOf(ucRedisDao.get(mobile_testNum));
  var partitionNum = db.config.findOne({name:"partitionNum"}).value;
  timestamp = ((new Date()).valueOf()).toString(); 
  var partionIndex = (timestamp%100024);
  var redisKeyMax = "mobile_test3_max:" + (partionIndex).toString();
  var start = db.config.findOne({name:redisKeyMax}).value;
 
  if (start == 0) {
    currentNum = parseInt((100000000 / 100024) * (partionIndex - 1));
    if(partionIndex==0){
        currentNum = 5421;
    }
  } else {
    currentNum = parseInt(start);
  }
  if (currentNum >= ((100000000 / 100024) * partionIndex) || currentNum >= 99999999) {
    db.config.update( {name:"partitionNum" } , { $set : { value : (partitionNum-1)} } );
    print('=========partitionNum=========='+(partitionNum-1));
    continue;
  }

  ++currentNum;
  mobieend = currentNum;
  db.config.update( {name:redisKeyMax } , { $set : { value :currentNum} } );
  mobile = first + (parseInt(mobieend) + 100000000).toString().substr(1);;
  break;
}
print('=========mobile=========='+mobile+'++++++++++++++++++++partionIndex:'+partionIndex+'_____________start:'+start+'   timestamp:'+timestamp);

return mobile;

}

//调用
var index =0;
var startStamp =((new Date()).valueOf());
while(true){
var mobile = getMobile();
var count = db.prdmobile.count({"mobile":parseInt(mobile)});
if(count==0){
db.prdavailablemobile.insert({"mobile":mobile});
++index;
if(index>=20000000){
break;
}else{
print('mobile:'+mobile);
}
}
}

var endStamp =((new Date()).valueOf());
print('=========end=========='+(endStamp-startStamp));

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,008评论 0 38
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,256评论 0 13
  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 3,190评论 0 7
  • 关山飞雪。边地霜风烈。春信难凭浑似铁。已过新春佳节。 疆国尚未安宁。沉浮岂为功名?泪别家亲老小,北上再踏征程。 按...
    大漠征鸿阅读 95评论 2 4
  • Deep Residual Learning for Image Recognition 1. 思想 作者根据输入...
    AlanMa阅读 103,200评论 12 56