修改理由:

优化数字上标显示

此投稿已在 3年前 合并。

内容修改:

红色背景 为原始内容

绿色背景 为新增或者修改的内容

OldNewDifferences
77-  `1位`,不用。二进制中最高位为1的都是负数,但是我们生成的id一般都使用整数,所以这个最高位固定是0
88-  `41位`,用来记录时间戳(毫秒)。
99
10 > 41位可以表示241−1个数字,
11 >
12 > -  如果只用来表示正整数(计算机中正数包含0),可以表示的数值范围是:0 至 241−1,减1是因为可表示的数值范围是从0开始算的,而不是1。\
13 >    也就是说41位可以表示241−1个毫秒的值,转化成单位年则是(241−1)/(1000∗60∗60∗24∗365)=69年
 10> 41位可以表示$$2^{41}$$−1个数字,
 11> 如果只用来表示正整数(计算机中正数包含0),可以表示的数值范围是:0 至 $$2^{41}$$−1,减1是因为可表示的数值范围是从0开始算的,而不是1。
 12> 也就是说41位可以表示241−1个毫秒的值,转化成单位年则是($$2^{41}$$−1)/(1000∗60∗60∗24∗365)=69年
1413
1514`10位`,用来记录工作机器id。
1615
17 > 可以部署在210=1024个节点,包括5位datacenterId和5位workerId\
18 > 5位(bit)可以表示的最大正整数是25−1=31,即可以用0、1、2、3、....31这32个数字,来表示不同的datecenterId或workerId
 16> 可以部署在$$2^{10}$$=1024个节点,包括5位datacenterId和5位workerId\
 17> 5位(bit)可以表示的最大正整数是$$2^5$$−1=31,即可以用0、1、2、3、....31这32个数字,来表示不同的datecenterId或workerId
1918
2019`12位`,序列号,用来记录同毫秒内产生的不同id。
2120
22 > 12位(bit)可以表示的最大正整数是212−1=4095,即可以用0、1、2、3、....4094这4095个数字,来表示同一机器同一时间截(毫秒)内产生的4095个ID序号
 21> 12位(bit)可以表示的最大正整数是 $$2^{12}$$−1=4095,即可以用0、1、2、3、....4094这4095个数字,来表示同一机器同一时间截(毫秒)内产生的4095个ID序号
2322
2423```
2524// Fetch prints the content found at a URL.
 
4847)
4948
5049type worker struct {
51    mu       sync.Mutex
52    laststamp int64
53    workerid int64
 50   mu         sync.Mutex
 51   laststamp   int64
 52   workerid    int64
5453   datacenterid int64
55    sequence int64
 54   sequence    int64
5655}
5756
5857func(w *worker) getCurrentTime() int64 {