JS 分片代码,用于计算某个主键的所在分片区域,后续有时间上mongo 数据验证的脚本代码,今天先写一部分
/**
* 得到分片号
* @param strKey
* @return intValue
*/
function getShard(strKey){
var shardNum=8;
var index=hashCode(strKey)%shardNum;
if(index<0)
index+=shardNum;
return index;
}
/**
* java String hashCode 的实现
* @param strKey
* @return intValue
*/
function hashCode(strKey)
{
var hash = 0;
if(!isNull(strKey))
{
for (var i = 0; i < strKey.length; i++)
{
hash = hash * 31 + strKey.charCodeAt(i);
hash = intValue(hash);
}
}
return hash;
}
/**
* 将js页面的number类型转换为java的int类型
* @param num
* @return intValue
*/
function intValue(num)
{
var MAX_VALUE = 0x7fffffff;
var MIN_VALUE = -0x80000000;
if(num > MAX_VALUE || num < MIN_VALUE)
{
return num &= 0xFFFFFFFF;
}
return num;
}
function isNull(str){
return str == null || str.value == "";
}