首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

简易版id生成器

由于需要一个全局id生成器,要求稳定性,趋势递增,又不想用网上那些复杂的方案,单机解决,并发不是非常高

故写了个简易版,基本满足目前的需求

id构成:约40位微秒时间+约23位随机二级制

(现在时间20180320,微秒长度40位,100年之后大约53位)

public classIDGenerator {

privateRandomrandom=newRandom();

/**

* 19位Long数字

*@return

*/

public longgenerate() {

//时间因子,时间单位:微秒,现在40位,100年之后最大53位(纳秒现在50位,100年之后需要62位)

String tsBits = Long.toUnsignedString(System.nanoTime()/1000,2);

//随机补全63位低位

inttsBitsPreLen =63-tsBits.length();

StringBuilder stringBuilder =newStringBuilder("");

for(inti=;i

stringBuilder.append(random.nextInt(2));

}

String afterTsBits = stringBuilder.toString();

returnLong.parseUnsignedLong(String.format("%s%s", tsBits,afterTsBits),2);

}

}

问题:

由于时间长度会增加,故碰撞的概率会越来越大,在短暂几年内还行;

依赖服务器时钟同步;

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180323G10Q6300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券