上海网站制作怎么选怎么做学校官方网站

news/2025/9/23 21:14:55/文章来源:
上海网站制作怎么选,怎么做学校官方网站,域名注册后 免费自建网站,企业培训机构哪家最好雪花算法学习笔记 来源 https://pdai.tech/md/algorithm/alg-domain-id-snowflake.html概述 雪花算法是推特开源的分布式ID生成算法#xff0c;以划分命名空间的方式将64位分割成多个部分#xff0c;每一个部分代表不同的含义#xff0c;这种就是将64位划分成不同的段以划分命名空间的方式将64位分割成多个部分每一个部分代表不同的含义这种就是将64位划分成不同的段每一个段代表不同的涵义时间戳 机器ID 序列数 结构 第一位占用一个bit 值始终为0可以看作符号位不可使用第二位开始的41位是时间戳41bit可以表示2^41个数字每一个数字代表s,那么雪花算法表示的时间年限是69年时间中间的10bit将其中5bit分给IDC(互联网数据中心)5bit给工作机器这样就可以表示32个IDC然后每一个IDC有32台机器最后12bit是自增序列可以表示2^124096 这样划分相当于在一毫秒的一个数据中心的一台机器上可以产生4096个有序的不重复的ID package SnowFlake;/*** Twitter_Snowflakebr* SnowFlake的结构如下(每部分用-分开):br* 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 br* 1位标识由于long基本类型在Java中是带符号的最高位是符号位正数是0负数是1所以id一般是正数最高位是0br* 41位时间截(毫秒级)注意41位时间截不是存储当前时间的时间截而是存储时间截的差值当前时间截 - 开始时间截)* 得到的值这里的的开始时间截一般是我们的id生成器开始使用的时间由我们程序来指定的如下下面程序IdWorker类的startTime属性。41位的时间截可以使用69年年T (1L 41) / (1000L * 60 * 60 * 24 * 365) 69br* 10位的数据机器位可以部署在1024个节点包括5位datacenterId和5位workerIdbr* 12位序列毫秒内的计数12位的计数顺序号支持每个节点每毫秒(同一机器同一时间截)产生4096个ID序号br* 加起来刚好64位为一个Long型。br* SnowFlake的优点是整体上按照时间自增排序并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID作区分)并且效率较高经测试SnowFlake每秒能够产生26万ID左右。*/ public class SnowflakeDistributeId {// Fields/*** 开始时间截 (2015-01-01)*/private final long twepoch 1420041600000L;/*** 机器id所占的位数*/private final long workerIdBits 5L;/*** 数据标识id所占的位数*/private final long datacenterIdBits 5L;/*** 支持的最大机器id结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数)*/private final long maxWorkerId -1L ^ (-1L workerIdBits);/*** 支持的最大数据标识id结果是31*/private final long maxDatacenterId -1L ^ (-1L datacenterIdBits);/*** 序列在id中占的位数*/private final long sequenceBits 12L;/*** 机器ID向左移12位*/private final long workerIdShift sequenceBits;/*** 数据标识id向左移17位(125)*/private final long datacenterIdShift sequenceBits workerIdBits;/*** 时间截向左移22位(5512)*/private final long timestampLeftShift sequenceBits workerIdBits datacenterIdBits;/*** 生成序列的掩码这里为4095 (0b1111111111110xfff4095)*/private final long sequenceMask -1L ^ (-1L sequenceBits);/*** 工作机器ID(0~31)*/private long workerId;/*** 数据中心ID(0~31)*/private long datacenterId;/*** 毫秒内序列(0~4095)*/private long sequence 0L;/*** 上次生成ID的时间截*/private long lastTimestamp -1L;//Constructors/*** 构造函数** param workerId 工作ID (0~31)* param datacenterId 数据中心ID (0~31)*/public SnowflakeDistributeId(long workerId, long datacenterId) {if (workerId maxWorkerId || workerId 0) {throw new IllegalArgumentException(String.format(worker Id cant be greater than %d or less than 0, maxWorkerId));}if (datacenterId maxDatacenterId || datacenterId 0) {throw new IllegalArgumentException(String.format(datacenter Id cant be greater than %d or less than 0, maxDatacenterId));}this.workerId workerId;this.datacenterId datacenterId;}// Methods/*** 获得下一个ID (该方法是线程安全的)** return SnowflakeId*/public synchronized long nextId() {long timestamp timeGen();//如果当前时间小于上一次ID生成的时间戳说明系统时钟回退过这个时候应当抛出异常if (timestamp lastTimestamp) {throw new RuntimeException(String.format(Clock moved backwards. Refusing to generate id for %d milliseconds, lastTimestamp - timestamp));}//如果是同一时间生成的则进行毫秒内序列if (lastTimestamp timestamp) {sequence (sequence 1) sequenceMask;//毫秒内序列溢出if (sequence 0) {//阻塞到下一个毫秒,获得新的时间戳timestamp tilNextMillis(lastTimestamp);}}//时间戳改变毫秒内序列重置else {sequence 0L;}//上次生成ID的时间截lastTimestamp timestamp;//移位并通过或运算拼到一起组成64位的IDreturn ((timestamp - twepoch) timestampLeftShift) //| (datacenterId datacenterIdShift) //| (workerId workerIdShift) //| sequence;}/*** 阻塞到下一个毫秒直到获得新的时间戳** param lastTimestamp 上次生成ID的时间截* return 当前时间戳*/protected long tilNextMillis(long lastTimestamp) {long timestamp timeGen();while (timestamp lastTimestamp) {timestamp timeGen();}return timestamp;}/*** 返回以毫秒为单位的当前时间** return 当前时间(毫秒)*/protected long timeGen() {return System.currentTimeMillis();} }总结 雪花算法生成的ID是趋势递增不依赖数据库等第三方系统依赖机器始终如果机器时钟回拨会导致发号重复或者服务处于不可用状态如果恰巧回退前生成过一些ID,但是时间回退之后生成的ID就有可能重复

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

建设租房子的网站住房和城乡建设部资质延期

声明 该图并非原创,原文出处不可考,因此在这里附加说明。 示意图

网站栏目规划叫什么软件论坛网站有哪些

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 数据库管理系统(英语:database management system,缩写:DBMS) 是一种针对对…

房地产公司的网站建设方案佛山做公司网站

目录 前言趣闻轶事65则参考文献 前言 有人的地方就有江湖,有江湖的地方就有故事。数学本身就是一个江湖,这个江湖也充满着血雨腥风和侠骨柔情,至今流传着各种各样的传说,其中不乏”马踏江湖潇潇事“,也有"何当共…

打一局吗(60pts 解法)

打一局吗 题目描述 Diaoyeye 作为健美先生,自然会受到很多人的挑战,nyx 便是他们中的一位。 nyx 具有自知之明,他知道 Diaoyeye 比他健美的多,和他刚正面显然不行,于是 要求 Diaoyeye 和他打牌。 nyx 制定的游戏…

软工9.23

今天学习了原码反码补码,原码将除符号位的其他位变成相反的数,再加一就成了补吗,创建补码的原因是统一零的唯一性,零由于符号位的存在,是不统一的,统一加法运算,如果去判断符号位来进行加减的话,运算量会变大。…

本地部署qwen-0.6b

导入需要的库 打开pycharm的终端(是终端不是python程序),下载下面的库pip install torch transformers datasets peft accelerate sentencepiece modelscope pip install modelscope pip3 install torch torchvisi…

门户网站建设方高校网站站群

在动态变化的IT环境中,故障预防与快速响应成为了运维管理的关键。监控易作为一体化运维监控平台,凭借其智能告警和精准定位的特性,为运维团队提供了强有力的支持,确保了IT系统的稳定运行。本文将深入探讨监控易在故障预警和快速定…

设计企业门户网站做网站有什么建议

题图来自溪源2017年拍摄的照片。弃码而去1那是2015年的一天。下午5点40,我收拾完手头上的工作,准备关机回家时,qq上突然弹出的窗口吸引了我的注意。“源哥,我能跟你聊一下么?”我点开一看,发现给我发消息的…

手机网站技术方案西安制作手机网站

Google Colab(Colaboratory) 是一个免费的云端环境,旨在帮助开发者和研究人员轻松进行机器学习和数据科学工作。它提供了许多优势,使得编写、执行和共享代码变得更加简单和高效。Colab 在云端提供了预配置的环境,可以直接开始编写代码&#x…

wordpress yeti 主题谷歌sem和seo区别

购买阿里云服务器 到[阿里云官网],选择轻量应用服务器, 步骤如图所示: 地域随便选择哪一个,镜像的话,对比了CentOS,Debian,Ubuntu,我最终选择了CentOS,因为流行嘛&…

卖房子上哪个网站最好卖湖南网络营销

今日在地铁上浏览今日头条的时候看到这么个小题目,说是输出一长串字符串,输出字母串类别并且统计其出现次数,然后按照顺序将其输出来。例如输入aaaabbbcccccc,输出a4b3c6。 最近也一直在学习,所以就想着就Matlab来试了…

成都网站制作公司保险网站程序源码

一、前言 本系列如无特殊说明使用的虚幻版本都是5.2.1,VS为2022版本。在Unity中通常创建的脚本都默认继承了MonoBehavior,都是不能再用代码New而实例化的,虚幻也是一样不能直接New来实例化。在Unity中是通过Instantiate方法来实例化一个游戏对…

网站的导航栏淄博网站建设招聘

(7)积木画 题目: 小明最近迷上了积木画, 有这么两种类型的积木, 分别为 �I 型(大小为 2 个单位面积) 和 �L 型 (大小为 3 个单位面积): 同时, 小明有一块面积大小为 2�2N 的画布, 画布由 2&am…

明星静态网站建立属于自己的网站

在本文章之前,应该了解的概念: 连接的一些概念、NLJ、BNL、HashJoin算法。 目录关于join连接probe行保存概念Hashjoin执行流程(十分重要)HashJoinIterator成员函数讲解1、BuildHashTable2、ReadNextHashJoinChunk3、ReadRowFromPr…

用啥网站做首页qq企业邮箱登录

使用OpenSSL生成自签名SSL/TLS证书和私钥 前提: 系统安装了OpenSSL; 系统:windows、linux都可; 1 生成私钥 创建一个名为 server.key 的私钥文件,并使用 RSA 算法生成一个 2048 位的密钥。 openssl genrsa -out s…

做app的模板下载网站有哪些内容百度指数有什么作用

1.Linux目录结构 Linux与Windows不同,Linux没有盘符这个概念, 只有一个根目录 /, 所有文件都在它下面 2.Linux路径的描述方式 在Linux系统中,路径之间的层级关系,使用:/ 来表示 在Windows系统中,路径之间的层级关系…

华亭网站建设网站建设经费

数字化转型已成为当下企业发展的必经之路,而生成式AI作为这场变革的强力引擎,正逐渐展现出其无与伦比的价值。今天,我们将深入探讨生成式AI在日志整理、数据清晰、产品设计等方面的应用,揭示它如何为数字化转型注入强大动力&#…

重庆网站自己推广外包网站该怎么做帐

这里是Z哥的个人公众号每周五11:45 按时送达当然了,也会时不时加个餐~我的第「154」篇原创敬上大家好,我是Z哥。在工作中,你会发现有的小伙伴每天看上去很忙,但是好像产出的成果比旁边看上去工作轻松甚至有…

装修公司做自己网站wordpress仿站实战

模板的: 关键思想是: 当pattern遇到*时,需要考虑两种情况: str的当前字符和pattern的*前的字符相同,例如str“ab”,pattern“abb*”,“b”和“b*”相同,有两种情况可以选择&#xf…