当前位置: 首页 > news >正文

环保网站模版网站怎样添加百度地图

环保网站模版,网站怎样添加百度地图,科技部网站支持湖南建设创新型省份,中国建设网官方网站洞庭湖治理这里讲一个比较常用的分布式防重复的ID生成策略#xff0c;雪花算法 一个用户体量比较大的分布式系统必然伴随着分表分库#xff0c;分机房部署#xff0c;单体的部署方式肯定是承载不了这么大的体量。 雪花算法的结构说明 如下图所示: 雪花算法组成 从上图我们可以看…这里讲一个比较常用的分布式防重复的ID生成策略雪花算法 一个用户体量比较大的分布式系统必然伴随着分表分库分机房部署单体的部署方式肯定是承载不了这么大的体量。 雪花算法的结构说明 如下图所示: 雪花算法组成 从上图我们可以看出来雪花算法是64bit位的long类型的数值型的id。其中由4部分组成。 1bit为固定为0表明生成的id为正数。 41bit位毫秒级的时间戳(可保留69年的时间戳) 标识位为10位由5位的机器id和5位的服务id组成。5bit位能标识32个数值32*321024 共能表示1024个数值也就是说我们部署的服务可以水平扩展至1024个实例部署。在国内的应用中基本上是够用了。 12位的序列号位表示同一个实例在1毫秒内能生成4096个序列基本上也是够用了。 如果按照水平扩展应用还不能够承载我们的体量我们可以对上面的组成进行改造。比如我们一个应用实例不会在1毫秒生成4096个数值我们可以把时间戳的值改成35位把6个bit均分到机器id和服务id上也就是说我们可以部署256*25665536个实例。 雪花算法的具体实现代码如下: /*** 雪花算法工具类* 64位long类型的 第一位0表示为正数 1到41的时间戳 5位的数据中心id 5位的机器id 12位的序列号* author yusong* 20241111*/ public class SnowflakeIdWorkerUtil {//开始时间戳 2025-01-011735660800000Lprivate final long startTime 1731400000000L;//数据中心所占雪花算法数据的位数private final long datacenterIdBits 5L;//机器号所占雪花算法的位数private final long workerIdBits 5L; // //支持最大的数据中心 结果为31 // private final long maxDatacenterId -1L ^ (-1L datacenterIdBits); // //支持最大的机器编号 结果为31 // private final long maxWorkerId -1L ^ (-1L workerIdBits);//同一时间戳生成的序列号所占位数private final long sequenceBits 12L;//机器号左移位数序列号的位数 12private final long workerIdShift sequenceBits;//数据中心左移位数 序列号的位数 机器号的位数 17private final long datacenterIdShift sequenceBits workerIdBits;//时间戳左移位数 序列号的位数 机器号的位数 数据中心位数 22private final long timestampLeftShift sequenceBits workerIdBits datacenterIdBits;//生成序列号的最大数4095private final long sequenceMask -1L ^ (-1L sequenceBits);//数据中心编号private long datacenterId;//机器号private long workerId;//毫秒内序列从0开始private long sequence 0L;//上次生成ID的时间截private long lastTimestamp -1L;private static SnowflakeIdWorkerUtil sw null;/**** param datacenterId 数据中心编号id* param workerId 机器编号id* return*/public static synchronized SnowflakeIdWorkerUtil getSnowflakeId(long datacenterId,long workerId) {if(datacenterId31||datacenterId0) {throw new RuntimeException(datacenterId必须是0到31位的整数);}if(workerId31||workerId0) {throw new RuntimeException(workerId必须是0到31位的整数);}if(swnull) {sw new SnowflakeIdWorkerUtil();sw.datacenterId datacenterId;sw.workerId workerId;}return sw;}/*** 私有的构造函数 防止外部new*/private SnowflakeIdWorkerUtil() {}/*** 获取下一个id* return*/public synchronized long nextId() {long timestamp timeGen();//如果当前时间戳小于上次的时间戳 说明系统时钟回退过 应该抛出异常if(timestampthis.lastTimestamp) {throw new RuntimeException(系统时钟回退异常,请检查系统设置);}//如果是同一时间戳生成id则进行毫秒内序列if(this.lastTimestamptimestamp) {sequence (sequence 1) sequenceMask;//同一毫秒内序列溢出 则等待下一秒if(sequence0) {timestamp nextMillis(lastTimestamp);}}else {sequence 0L;}this.lastTimestamp timestamp;return ((timestamp - startTime)timestampLeftShift)|(datacenterIddatacenterIdShift)|(workerIdworkerIdShift)|sequence;}/*** 阻塞到下一毫秒直到获取到新的时间戳* param lastTimestamp* return*/private long nextMillis(long lastTimestamp) {long timestamp timeGen();while (timestamp lastTimestamp) {timestamp timeGen();}return timestamp;}/*** 获取当前的时间戳* return*/private long timeGen() {return System.currentTimeMillis();}public static void main(String[] args) {for(int i0;i100;i) {SnowflakeIdWorkerUtil swu SnowflakeIdWorkerUtil.getSnowflakeId(0, 0);long id swu.nextId();System.out.println(Long.toBinaryString(id));System.out.println(id);}}}雪花算法有个问题就是不能进行时钟回拨如果进行时钟回拨就会生成重复的id。如果我们考虑以上问题可以在我们的程序中保留最近一次的生成时间并拿来做校验就可解决这个问题。办法总比问题多。
http://www.hkea.cn/news/14437171/

相关文章:

  • 莆田制作公司网站域名做网站
  • 淄博网站建设hiddd广州住房与建设 网站
  • 做一个国外网站太原站建设有多长时间
  • 制作网站制作建设网站主要有哪些技术
  • asp网站优化注册网站代码
  • 网站建设报价套餐怎么在wordpress上添加饰品
  • 网站备案主体更换溧阳 招网站开发兼职
  • 网站 正在建设中idc数据中心排名
  • 网站开发的知识西安学校网站建设哪家专业
  • 什么软件做网站做好怎样下载上海发布
  • 哈尔滨市做网站公司wordpress加载js代码
  • 做网站好的书河北建筑工程网
  • 建设电影网站论文设计师培训多少钱
  • 网站内容规划流程德勤管理咨询
  • 手机软件开发和网站开发做购物网站之前做些什么
  • 定制网站开发哪家好网络游戏名字大全
  • 做动画 的 网站有哪些软件网页开发工具软件有哪些
  • 如何注册申请chn网站北京房产网最新楼盘
  • 简述电子商务网站建设的基本要求6深圳企业网站建设服务公司
  • 广州优秀网站设计怎么建设html网站
  • 描述网站建设的基本流程专业定制网站企业
  • 龙之向导外贸网站淘宝购物平台
  • 自建设网站公司网站建设专家
  • 表示商业网站的域名阿里云网站方案建设书
  • 上海做网站哪个好城乡建设部网站自助商品房
  • 新媒体做图网站用文本文档做网站
  • 绿色网站模板wordpress 邮件通知 密码
  • 通过ip直连打开网站要怎么做广州app制作公司
  • 电信专线可以做网站吗湖南3合1网站建设
  • 网站开发包括网站的等过程做网站建设网站制作