精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一篇讓你學(xué)會雪花算法

開發(fā) 前端 算法
以前用rand和srand生成過偽隨機(jī)數(shù),偽隨機(jī)數(shù)的序列是固定的,今天學(xué)習(xí)生成真正的隨機(jī)數(shù)的生成。

 [[419666]]

前言

大家好,我是盼盼!

以前用rand和srand生成過偽隨機(jī)數(shù),偽隨機(jī)數(shù)的序列是固定的,今天學(xué)習(xí)生成真正的隨機(jī)數(shù)的生成。

熵池

利用/dev/urandom可以生成隨機(jī)數(shù)的值,/dev/urandomLinux下的熵池,所謂熵池就是當(dāng)前系統(tǒng)下的環(huán)境噪音,描述了一個系統(tǒng)的混亂程度,環(huán)境噪音由這幾個方面組成,如內(nèi)存的使用,文件的使用量,不同類型的進(jìn)程數(shù)量等等。

利用/dev/urandom可以生成隨機(jī)數(shù)的值,/dev/urandomLinux下的熵池,所謂熵池就是當(dāng)前系統(tǒng)下的環(huán)境噪音,描述了一個系統(tǒng)的混亂程度,環(huán)境噪音由這幾個方面組成,如內(nèi)存的使用,文件的使用量,不同類型的進(jìn)程數(shù)量等等。

  1. #include <stdio.h> 
  2. #include <fcntl.h> 
  3.  
  4. int main() 
  5.         int randNum = 0; 
  6.         int fd = 0; 
  7.  
  8.     for(int i=0;i<5;i++) 
  9.     {       
  10.       fd = open("/dev/urandom", O_RDONLY);   
  11.       read(fd, (char *)&randNum, sizeof(int)); 
  12.       close(fd);  
  13.       printf("randNum is %d\n", randNum); 
  14.     } 
  15.  
  16.         return 0; 

運行結(jié)果:

  1. mapan@mapan-virtual-machine:~/c++$ ./a.out  
  2. randNum is 94961710 
  3. randNum is -523780773 
  4. randNum is 1542169420 
  5. randNum is -1632410867 

每次打印的5個隨機(jī)數(shù)都不一樣,其實它的隨機(jī)性也不太好。雪花算法生成的數(shù)的隨機(jī)性很好,通常在分布式系統(tǒng)中生成唯一ID。

雪花算法

SnowFlake算法產(chǎn)生的ID是一個64位的整型,結(jié)構(gòu)如下(每一部分用“-”符號分隔):

0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 00000000000

1位標(biāo)識部分,在java中由于long的最高位是符號位,正數(shù)是0,負(fù)數(shù)是1,一般生成的ID為正數(shù),所以為0;

41位時間戳部分,這個是毫秒級的時間,一般實現(xiàn)上不會存儲當(dāng)前的時間戳,而是時間戳的差值(當(dāng)前時間-固定的開始時間),這樣可以使產(chǎn)生的ID從更小值開始;41位的時間戳可以使用69年,(1L << 41) / (1000L 60 60 24 365) = 69年;

10位節(jié)點部分,Twitter實現(xiàn)中使用前5位作為數(shù)據(jù)中心標(biāo)識,后5位作為機(jī)器標(biāo)識,可以部署1024個節(jié)點;

12位序列號部分,支持同一毫秒內(nèi)同一個節(jié)點可以生成4096個ID;

  1. /*  
  2.     snowflake  
  3.  
  4.     ID 生成策略  
  5.     毫秒級時間41位+機(jī)器ID 10位+毫秒內(nèi)序列12位。 
  6.     0 41 51 64 +-----------+------+------+ |time |pc |inc | +-----------+------+------+  
  7.     前41bits是以微秒為單位的timestamp。 
  8.     接著10bits是事先配置好的機(jī)器ID。 
  9.     最后12bits是累加計數(shù)器。 
  10.     macheine id(10bits)標(biāo)明最多只能有1024臺機(jī)器同時產(chǎn)生ID,sequence number(12bits)也標(biāo)明1臺機(jī)器1ms中最多產(chǎn)生4096個ID, *  
  11.       注意點,因為使用到位移運算,所以需要64位操作系統(tǒng),不然生成的ID會有可能不正確  
  12. */   
  13.  
  14. #include <stdio.h>   
  15. #include <pthread.h>   
  16. #include <unistd.h>   
  17. #include <stdlib.h>   
  18. #include <sched.h>   
  19. #include <linux/unistd.h>   
  20. #include <sys/syscall.h>   
  21. #include <errno.h>   
  22. #include<linux/types.h>   
  23. #include<time.h>   
  24. #include <stdint.h>   
  25. #include <sys/time.h>   
  26.  
  27. struct  globle   
  28. {   
  29.     int global_int:12;   
  30.     uint64_t last_stamp;   
  31.     int workid;   
  32.     int seqid;   
  33. };   
  34.  
  35. void set_workid(int workid);   
  36. pid_t gettid( void );   
  37. uint64_t get_curr_ms();   
  38. uint64_t wait_next_ms(uint64_t lastStamp);   
  39. int atomic_incr(int id);   
  40. uint64_t get_unique_id(); 
  1. #include "snowflake.h" 
  2.  
  3. struct globle g_info; 
  4.  
  5. #define   sequenceMask  (-1L ^ (-1L << 12L))  //L表示long型     4095 
  6.  
  7. void set_workid(int workid) 
  8.  g_info.workid = workid; 
  9.  
  10. pid_t gettid( void )//獲取線程ID 
  11.   return syscall( __NR_gettid ); 
  12.  
  13. uint64_t get_curr_ms()  //獲取毫秒 
  14.   struct timeval time_now; 
  15.   gettimeofday(&time_now,NULL); 
  16.   uint64_t ms_time =time_now.tv_sec*1000+time_now.tv_usec/1000; 
  17.   return ms_time; 
  18.  
  19. uint64_t wait_next_ms(uint64_t lastStamp) 
  20.   uint64_t cur = 0; 
  21.   do { 
  22.     cur = get_curr_ms(); 
  23.   } while (cur <= lastStamp); 
  24.   return cur; 
  25.  
  26. int atomic_incr(int id)//累加 
  27.   __sync_add_and_fetch(&id, 1); 
  28.   return id; 
  29.  
  30. uint64_t get_unique_id() 
  31.   uint64_t  uniqueId=0; 
  32.   uint64_t nowtime = get_curr_ms();//獲取當(dāng)前毫秒數(shù) 
  33.  
  34.   uniqueId = nowtime << 22;   //填補時間戳部分 
  35.  
  36.   //0x3ff 1023,二進(jìn)制對應(yīng)11 1111 1111  
  37.   //100的二進(jìn)制0000 0000 0000 0000 0000 0000 0110 0100 
  38.   //先執(zhí)行移位 
  39.   uniqueId |= (g_info.workid & 0x3ff) << 12;   //填補節(jié)點部分 
  40.  
  41.   if (nowtime < g_info.last_stamp) 
  42.   { 
  43.     perror("error"); 
  44.     exit(-1); 
  45.   } 
  46.  
  47.   if (nowtime == g_info.last_stamp) 
  48.   { 
  49.     //4095的二進(jìn)制0000 1111 1111 1111      [long型] 
  50.     g_info.seqid = atomic_incr(g_info.seqid) & sequenceMask; 
  51.     if (g_info.seqid == 0)  //seqid=0防止沖突,修改時間 
  52.     { 
  53.       nowtime = wait_next_ms(g_info.last_stamp);//獲取大于當(dāng)前時間的time 
  54.     } 
  55.   } 
  56.   else 
  57.   { 
  58.     g_info.seqid  = 0; 
  59.   } 
  60.   g_info.last_stamp = nowtime; 
  61.  
  62.   uniqueId |= g_info.seqid;//填補序列號部分 
  63.   return uniqueId; 
  64.  
  65. int main() 
  66.   set_workid(100); 
  67.   int i; 
  68.   for(i=0;i<10;i++) 
  69.   { 
  70.     uint64_t unquie = get_unique_id(); 
  71.     printf("pthread_id:%u, id [%llu]\n",gettid(),unquie); 
  72.   } 
  73.  
  74.   return;   

運行結(jié)果:

  1. mapan@mapan-virtual-machine:~/c++$ ./a.out  
  2. pthread_id:4970, id [6595660141600063488] 
  3. pthread_id:4970, id [6595660141600063489] 
  4. pthread_id:4970, id [6595660141600063490] 
  5. pthread_id:4970, id [6595660141600063491] 
  6. pthread_id:4970, id [6595660141600063492] 

結(jié)尾

雪花算法很多大廠都在使用,隨機(jī)性比熵池要好。雪花算法的思想在平時工作中也有用到,將多個數(shù)據(jù)拼到一個值里面是常用套路,要掌握。

責(zé)任編輯:武曉燕 來源: 盼盼編程
相關(guān)推薦

2021-09-14 07:26:26

組合問題循環(huán)

2022-08-29 08:00:11

哈希表數(shù)組存儲桶

2022-02-11 08:45:28

通信協(xié)議CAN

2022-03-04 21:06:46

spring事務(wù)失效

2022-03-04 08:17:53

PageRank網(wǎng)絡(luò)等級

2022-01-02 08:43:46

Python

2022-02-07 11:01:23

ZooKeeper

2024-04-12 09:01:08

2022-06-04 07:46:41

HeapJVM

2021-07-06 08:59:18

抽象工廠模式

2023-11-28 08:29:31

Rust內(nèi)存布局

2023-01-03 08:31:54

Spring讀取器配置

2021-07-02 09:45:29

MySQL InnoDB數(shù)據(jù)

2022-08-23 08:00:59

磁盤性能網(wǎng)絡(luò)

2021-05-11 08:54:59

建造者模式設(shè)計

2022-08-26 09:29:01

Kubernetes策略Master

2021-07-05 22:11:38

MySQL體系架構(gòu)

2022-04-12 08:30:52

回調(diào)函數(shù)代碼調(diào)試

2021-07-16 22:43:10

Go并發(fā)Golang

2021-07-02 08:51:29

源碼參數(shù)Thread
點贊
收藏

51CTO技術(shù)棧公眾號

欧美在线视频免费| 日韩精品亚洲视频| youjizz.com在线观看| 精品人妻少妇AV无码专区| 欧美黄色免费| 亚洲精品国产福利| 欧美日韩中文不卡| 男女羞羞视频在线观看| 91在线观看污| 国产综合在线观看视频| 国产精品18p| 精品国产乱码| 精品成a人在线观看| 熟妇人妻无乱码中文字幕真矢织江| 久久bbxx| 久久蜜桃一区二区| 亚洲综合中文字幕在线| 91丝袜一区二区三区| 天天综合一区| 亚洲免费高清视频| 日本成人在线免费| 91精品影视| 婷婷综合久久一区二区三区| 一级特黄录像免费播放全99| 亚洲av成人精品一区二区三区在线播放 | 日韩特黄一级片| 国产精品福利在线观看播放| 亚洲黄页视频免费观看| 欧美日韩第二页| 超碰在线最新网址| 亚洲欧美日韩中文播放| 视频二区一区| 天堂a√中文在线| 成人免费高清视频在线观看| 成人羞羞国产免费| 欧美成人精品网站| 噜噜噜在线观看免费视频日韩| 欧美成人剧情片在线观看| 亚洲精品国产一区黑色丝袜| 久久精品凹凸全集| 欧美v国产在线一区二区三区| 亚洲一级免费在线观看| 无人区在线高清完整免费版 一区二| 亚洲福利国产精品| 日本五级黄色片| 色呦呦视频在线观看| 国产精品毛片a∨一区二区三区| 久久久精彩视频| 日本韩国免费观看| caoporn国产精品| 不卡的av一区| 午夜精品无码一区二区三区| 国产一区二区三区免费观看| 成人精品网站在线观看| 国产精品系列视频| 国产做a爰片久久毛片| 成人午夜在线观看| 99精品视频在线播放免费| 国内成人免费视频| 91情侣在线视频| 不卡av中文字幕| 成人免费黄色大片| 精品欧美一区二区三区久久久 | 成人在线观看www| 黄色网在线免费观看| 亚洲色图欧美激情| 国产在线xxxx| 日韩伦理在线一区| 色域天天综合网| 看欧美ab黄色大片视频免费| 日韩av电影资源网| 欧美精品电影在线播放| 日本泡妞xxxx免费视频软件| 理论片一区二区在线| 日韩精品极品在线观看| 国产成人无码精品久久二区三| 欧美日韩性在线观看| 日韩天堂在线视频| 欧美亚洲日本在线| 国产精品99免费看| 午夜精品久久17c| 日韩免费av网站| 精品一区二区免费在线观看| 亚洲综合第一页| 人妻妺妺窝人体色www聚色窝 | 日韩1区2区日韩1区2区| 国产欧美一区二区三区视频 | 123成人网| 欧美一卡在线观看| 欧美 日本 国产| 日韩精品水蜜桃| 久久久久久久久久久亚洲| 久热这里只有精品6| 免费成人美女在线观看.| 亚洲一区二区免费在线| 天堂成人在线| 亚洲欧美日韩一区| 免费无码av片在线观看| 精品久久亚洲| 国产丝袜视频一区| 欧洲第一无人区观看| 国产精品豆花视频| 国产精品va在线播放| 精品国产乱码久久久久久蜜臀网站| 99视频一区二区三区| 致1999电视剧免费观看策驰影院| 1区2区3区在线| 欧美久久久影院| theav精尽人亡av| 欧美一区二区三区久久精品| 欧美综合在线观看| 精品黑人一区二区三区国语馆| 99精品热视频| 日韩精品久久一区二区| 日韩中文在线播放| 亚洲成人精品视频在线观看| 51精品免费网站| 天堂蜜桃一区二区三区| 豆国产97在线| 精品视频在线一区二区| 日本久久精品电影| 老熟妇精品一区二区三区| 亚洲天堂一区二区三区四区| 奇门遁甲1982国语版免费观看高清| 国产人妖一区二区| 国产精品免费视频观看| 女性隐私黄www网站视频| 国产精品对白| 欧美激情亚洲另类| 国产模特av私拍大尺度| 欧美极品少妇xxxxⅹ高跟鞋 | 亚洲人一区二区| 日韩影片中文字幕| 日韩电影中文 亚洲精品乱码| avove在线播放| 国产在线一区观看| 一区二区三区在线视频111| 精品肉辣文txt下载| 国产三级精品三级在线专区| 好看的日韩精品| 日本大片在线播放| 91福利在线观看| 欧美成人三级伦在线观看| 欧美三区在线| 亚洲最大成人网色| 在线午夜影院| 欧美一区二区三区免费大片| 国精产品久拍自产在线网站| 久久精品999| 亚洲一二区在线| 精品久久在线| www.99久久热国产日韩欧美.com| 日本黄色一级视频| 国产视频一区二区三区在线观看| 久久人妻精品白浆国产 | 日韩精品亚洲精品| 天天操夜夜操视频| 久久蜜臀精品av| 最近中文字幕一区二区| 欧美第一精品| 亚洲一区二区三区久久| 污网站在线免费看| 亚洲电影免费观看高清| 国产又黄又粗又爽| 久久久精品一品道一区| 在线免费视频一区| 天天影视综合| 国产欧美日韩伦理| 天堂а√在线最新版中文在线| 亚洲毛茸茸少妇高潮呻吟| 久久黄色精品视频| 日本一区免费视频| 一级黄色大片儿| 好吊一区二区三区| 欧美成人第一区| 精品免费av一区二区三区| 日韩中文字幕视频在线观看| av小说天堂网| 精品国产精品三级精品av网址| 美女脱光内衣内裤| 国内精品写真在线观看| 国产九九九九九| 精品一区二区三| 亚洲自拍av在线| 免费在线小视频| 在线日韩精品视频| 性欧美18一19性猛交| 福利一区福利二区微拍刺激| 性爱在线免费视频| 成人免费视频视频在线观看免费 | japanese23hdxxxx日韩 | 高潮在线视频| 中文字幕亚洲色图| 亚洲乱熟女一区二区| 一本色道综合亚洲| 青青草手机视频在线观看| 99国产精品一区| 肉色超薄丝袜脚交| 老牛嫩草一区二区三区日本| 欧美一级中文字幕| 欧美精品一二| 精品国产福利| 国产精品视频一区视频二区| 欧美综合第一页| 色yeye免费人成网站在线观看| 亚洲图片在区色| 国产 欧美 精品| 欧美日韩欧美一区二区| 日韩精品在线不卡| 亚洲天堂久久久久久久| 自拍偷拍亚洲天堂| 99久久综合狠狠综合久久| 中文字幕在线视频精品| 久久午夜视频| 黄页网站大全在线观看| 亚洲成人最新网站| 亚洲精品国产一区| 九九在线高清精品视频| 91在线免费网站| 久久av影院| 日韩免费在线播放| h片在线观看下载| 欧美成人精品不卡视频在线观看| 97电影在线看视频| 亚洲视屏在线播放| 亚洲色大成网站www| 精品久久久网站| 99久久久久久久| 在线成人午夜影院| 欧美日韩在线视频播放| 欧美性猛交xxxx| 国产香蕉视频在线| 亚洲一区二区在线免费观看视频| 成人一级黄色大片| 国产精品久久毛片av大全日韩| 国产全是老熟女太爽了| 99久久精品免费看国产免费软件| 男人操女人下面视频| 久久精品二区亚洲w码| 国产wwwxx| 免费成人在线影院| 高潮一区二区三区| 久久9热精品视频| av中文字幕网址| 麻豆久久久久久| 色一情一区二区| 国产一区二区精品久久| 香蕉视频xxx| 国产馆精品极品| 美女被爆操网站| 成人av网站免费| 午夜男人的天堂| 91视视频在线观看入口直接观看www | 久久久久久久久久看片| 久久亚洲AV无码专区成人国产| 久久久亚洲精品石原莉奈| 大又大又粗又硬又爽少妇毛片| 91亚洲精品乱码久久久久久蜜桃| theav精尽人亡av| 欧美激情一二三区| 亚洲怡红院在线观看| 亚洲视频中文字幕| 国产亚洲精品久久久久久无几年桃 | 不卡欧美aaaaa| 欧美 日本 国产| 欧美国产综合色视频| 懂色av粉嫩av蜜臀av一区二区三区| 亚洲麻豆国产自偷在线| 久草精品视频在线观看| 一本到三区不卡视频| 在线观看国产精品视频| 日韩一区二区影院| 色欲久久久天天天综合网| 亚洲三级av在线| 欧美成人xxx| 欧美—级a级欧美特级ar全黄 | 国产精品极品美女在线观看免费 | 四季久久免费一区二区三区四区| 久久久久中文字幕| 日韩和的一区二在线| 成人有码在线播放| 久久亚洲道色| 亚洲高清在线观看一区| 欧美一区二区三区久久精品茉莉花 | 91麻豆精品国产91久久久久久| 亚洲精品无遮挡| 亚洲图片在区色| 在线xxxx| 国产精品wwwwww| 亚洲专区**| 欧美三级电影在线播放| 亚洲精品国产成人影院| 免费观看日韩毛片| 激情欧美一区二区三区在线观看| 亚州av综合色区无码一区| 国产欧美日韩三级| 免费中文字幕在线观看| 在线观看日韩毛片| 亚洲第一第二区| 最好看的2019年中文视频| 91九色在线看| 国产在线视频一区| 久久国产精品免费精品3p| 在线日韩av永久免费观看| 国产精品尤物| 男生和女生一起差差差视频| 久久久精品日韩欧美| 妺妺窝人体色www聚色窝仙踪| 欧美性色黄大片| 水莓100国产免费av在线播放| 俺也去精品视频在线观看| 中文字幕在线直播| av噜噜色噜噜久久| 日韩一级毛片| 日韩在线xxx| 成人福利视频网站| 日本a级片视频| 欧美丰满一区二区免费视频| 国产在线一在线二| 91成人在线播放| 91蝌蚪精品视频| 久久人妻无码一区二区| 久久99久国产精品黄毛片色诱| 女尊高h男高潮呻吟| 亚洲一二三四久久| av中文字幕免费| 久久精品美女视频网站| 日本午夜免费一区二区| 欧美日韩综合精品| 免费欧美在线| a级在线观看视频| 亚洲v精品v日韩v欧美v专区 | 日韩精品在线影院| а√在线天堂官网| 国产99午夜精品一区二区三区| 91精品国产91久久久久久密臀 | 久久精品一级爱片| 日韩黄色在线播放| 亚洲精品白浆高清久久久久久| 男女视频在线| 国产日韩久久| 亚洲精选一区| 朝桐光av一区二区三区| 午夜精品成人在线视频| 天天摸夜夜添狠狠添婷婷| 性视频1819p久久| 啪啪激情综合网| 欧美aⅴ在线观看| 国产性色一区二区| 中文字幕一二三四| 日韩在线不卡视频| 国产精品一区二区三区www| 2021狠狠干| 成人免费视频视频| 秋霞精品一区二区三区| 国产一区二区黑人欧美xxxx| 欧美成人黄色| 成人在线观看www| 成人午夜在线播放| 欧美三级午夜理伦| 中文字幕v亚洲ⅴv天堂| 国产精久久久| 人妻av中文系列| 久久久精品国产免大香伊| 亚洲av人人澡人人爽人人夜夜| 久久久蜜桃精品| 一区二区三区日| 在线播放91灌醉迷j高跟美女| 色视频在线看| 国产精品欧美激情在线播放| 91精品国产自产拍在线观看蜜| 日批视频在线看| 精品日韩视频在线观看| 成年人在线观看视频| 亚洲va欧美va国产综合剧情| 亚洲性图久久| www..com.cn蕾丝视频在线观看免费版| 欧美日韩视频在线第一区| 丝袜在线观看| 欧美一区二区三区在线免费观看 | 色呦呦一区二区| 欧美日韩免费一区二区三区 | 精品久久久久久久久久| 国产福利电影在线| 91手机在线视频| 久久精品日韩欧美| www.xxxx日本| 日韩国产激情在线| 四虎精品在线观看| 免费看又黄又无码的网站| 国产精品欧美久久久久无广告| a级片免费视频| 国产精品视频一| 亚洲麻豆av| 婷婷社区五月天| 亚洲欧美日韩精品久久奇米色影视| 国产高清日韩| 免费涩涩18网站入口| 亚洲va韩国va欧美va精品| 2019中文字幕在线视频|