中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

日本人做爰過程網(wǎng)站南寧網(wǎng)站seo排名優(yōu)化

日本人做爰過程網(wǎng)站,南寧網(wǎng)站seo排名優(yōu)化,畢業(yè)設(shè)計和論文網(wǎng)站,邢臺經(jīng)濟開發(fā)區(qū)網(wǎng)站文章目錄 1. 概述2. 結(jié)構(gòu)3. 代碼3.1 IdWorker.cs3.2 IdWorkerTest.cs (測試) 1. 概述 分布式系統(tǒng)中,有一些需要使用全局唯一ID的場景,這種時候為了防止ID沖突可以使用36位的UUID,但是UUID有一些缺點,首先他相對比較長&#xff0c…

文章目錄

  • 1. 概述
  • 2. 結(jié)構(gòu)
  • 3. 代碼
    • 3.1 IdWorker.cs
    • 3.2 IdWorkerTest.cs (測試)

1. 概述

分布式系統(tǒng)中,有一些需要使用全局唯一ID的場景,這種時候為了防止ID沖突可以使用36位的UUID,但是UUID有一些缺點,首先他相對比較長,另外UUID一般是無序的。有些時候我們希望能使用一種簡單一些的ID,并且希望ID能夠按照時間有序生成。而Twittersnowflake解決了這種需求,最初Twitter把存儲系統(tǒng)從MySQL遷移到Cassandra,因為Cassandra沒有順序ID生成機制,所以開發(fā)了這樣一套全局唯一ID生成服務(wù)。

該項目地址為:https://github.com/twitter/snowflake 是用 Scala實現(xiàn)的

參考:

  • C# 分布式自增ID算法snowflake(雪花算法) - 五維思考 - 博客園 (cnblogs.com)

  • C#雪花Id_c# 雪花id-CSDN博客

2. 結(jié)構(gòu)

第1位第2位第3位第4位第5位
位數(shù)時間戳(ms)數(shù)據(jù)中心ID(DatacenterId )工作節(jié)點ID (MachineId )自增序列號
0000000000000000000000000000000000000000000
  • 第1位:未使用
  • 第2位:接下來的41位為毫秒級時間(41位的長度可以使用69年),用毫秒級的時間戳來表示自1970年1月1日 00:00:00 GMT以來的時間。
  • 第3-4位:用來區(qū)分不同的數(shù)據(jù)中心 datacenterIdmachineId,可根據(jù)實際情況分配,最多可容納1024個數(shù)據(jù)中心(2^10=10位的長度最多支持部署1024個節(jié)點),也可以設(shè)置成5位,最大節(jié)點是32個。
  • 最后12位是毫秒內(nèi)的計數(shù)(12位的計數(shù)順序號支持每個節(jié)點每毫秒產(chǎn)生4096個ID序號)

一共加起來剛好64位,為一個Long型。(轉(zhuǎn)換成字符串長度為18)

snowflake生成的ID整體上按照時間自增排序,并且 整個分布式 系統(tǒng)內(nèi)不會產(chǎn)生ID碰撞(由datacentermachineId作區(qū)分),并且效率較高。據(jù)說:snowflake每秒能夠產(chǎn)生26萬個ID。

注意:

  • 在實際使用中,需要根據(jù)不同的分布式環(huán)境配置合適的數(shù)據(jù)中心ID和工作節(jié)點ID,以保證生成的雪花Id的唯一性和順序性。
  • 其中 dataCenterIdworkerId 分別是數(shù)據(jù)中心和工作節(jié)點的標識,該生成器依賴于數(shù)據(jù)中心ID和工作節(jié)點ID兩個參數(shù)進行初始化。具體的生成過程是根據(jù)當前時間戳、數(shù)據(jù)中心ID、工作節(jié)點ID和自增序列號,通過位運算組合生成一個64位的唯一標識。

3. 代碼

3.1 IdWorker.cs

using System;
/// <summary>
/// Twitter的分布式自增ID雪花算法
/// </summary>
public class IdWorker
{//起始的時間戳private static long START_STMP = 1480166465631L;//每一部分占用的位數(shù)private static int SEQUENCE_BIT = 12; //序列號占用的位數(shù)private static int MACHINE_BIT = 5;   //機器標識占用的位數(shù)private static int DATACENTER_BIT = 5;//數(shù)據(jù)中心占用的位數(shù)//每一部分的最大值private static long MAX_DATACENTER_NUM = -1L ^ (-1L << DATACENTER_BIT);private static long MAX_MACHINE_NUM = -1L ^ (-1L << MACHINE_BIT);private static long MAX_SEQUENCE = -1L ^ (-1L << SEQUENCE_BIT);//每一部分向左的位移private static int MACHINE_LEFT = SEQUENCE_BIT;private static int DATACENTER_LEFT = SEQUENCE_BIT + MACHINE_BIT;private static int TIMESTMP_LEFT = DATACENTER_LEFT + DATACENTER_BIT;private long datacenterId = 1;  //數(shù)據(jù)中心private long machineId = 1;     //機器標識private long sequence = 0L; //序列號private long lastStmp = -1L;//上一次時間戳#region 單例:完全懶漢private static readonly Lazy<IdWorker> lazy = new Lazy<IdWorker>(() => new IdWorker());public static IdWorker Singleton { get { return lazy.Value; } }private IdWorker() { }#endregionpublic IdWorker(long cid, long mid){if (cid > MAX_DATACENTER_NUM || cid < 0) throw new Exception($"中心Id應在(0,{MAX_DATACENTER_NUM})之間");if (mid > MAX_MACHINE_NUM || mid < 0) throw new Exception($"機器Id應在(0,{MAX_MACHINE_NUM})之間");datacenterId = cid;machineId = mid;}/// <summary>/// 產(chǎn)生下一個ID/// </summary>/// <returns></returns>public long nextId(){long currStmp = getNewstmp();if (currStmp < lastStmp) throw new Exception("時鐘倒退,Id生成失敗!");if (currStmp == lastStmp){//相同毫秒內(nèi),序列號自增sequence = (sequence + 1) & MAX_SEQUENCE;//同一毫秒的序列數(shù)已經(jīng)達到最大if (sequence == 0L) currStmp = getNextMill();}else{//不同毫秒內(nèi),序列號置為0sequence = 0L;}lastStmp = currStmp;return (currStmp - START_STMP) << TIMESTMP_LEFT       //時間戳部分| datacenterId << DATACENTER_LEFT       //數(shù)據(jù)中心部分| machineId << MACHINE_LEFT             //機器標識部分| sequence;                             //序列號部分}private long getNextMill(){long mill = getNewstmp();while (mill <= lastStmp){mill = getNewstmp();}return mill;}private long getNewstmp(){return (long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;}
}

3.2 IdWorkerTest.cs (測試)

使用

IdWorker idworker = IdWorker.Singleton;
Console.WriteLine(idworker.nextId());

測試

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;namespace Test.Simple
{public static class IdWorkerTest{public static void Test(){/**** *  兩種測試方法,均為500并發(fā),生成5000個Id:*  Machine1() 模擬1臺主機,單例模式獲取實例*  Machine5() 模擬5臺主機,創(chuàng)建5個實例*/Machine1();Machine2();Machine5();}public static void Machine1(){int cid = 1;int mid = 15;Console.WriteLine("雪花ID -- IdWorkerTest -- 模擬1臺主機( 數(shù)據(jù)中心{0} - 機器節(jié)點{1}): ", cid, mid);IdWorker idworker = new IdWorker(cid, mid);Console.WriteLine(idworker.nextId());cid = 2;mid = 10;Console.WriteLine("雪花ID -- IdWorkerTest -- 模擬1臺主機( 數(shù)據(jù)中心{0} - 機器節(jié)點{1}): ", cid, mid);idworker = new IdWorker(cid, mid);Console.WriteLine(idworker.nextId());}public static void Machine2(){Console.WriteLine("雪花ID -- IdWorkerTest -- 模擬1臺主機 : ");for (int j = 0; j < 500; j++){Task.Run(() =>{IdWorker idworker = IdWorker.Singleton;for (int i = 0; i < 10; i++){Console.WriteLine(idworker.nextId());}});}}public static void Machine5(){Console.WriteLine("雪花ID -- IdWorkerTest -- 模擬5臺主機 : ");List<IdWorker> workers = new List<IdWorker>();Random random = new Random();for (int i = 0; i < 5; i++){workers.Add(new IdWorker(1, i + 1));}for (int j = 0; j < 500; j++){Task.Run(() =>{for (int i = 0; i < 10; i++){int mid = random.Next(0, 5);Console.WriteLine(workers[mid].nextId());}});}}}
}

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
結(jié)束

http://www.risenshineclean.com/news/22420.html

相關(guān)文章:

  • 揚州學做網(wǎng)站培訓多少錢軟件開發(fā)公司推薦
  • 民治營銷型網(wǎng)站費用公眾號怎么做文章推廣
  • 關(guān)于建立網(wǎng)站的計劃寧波seo優(yōu)化流程
  • 建立一個網(wǎng)站的步驟廣州seo外包公司
  • 第三方b2c平臺有哪些aso如何優(yōu)化
  • 佛山網(wǎng)站建設(shè)哪個好點seo關(guān)鍵詞優(yōu)化提高網(wǎng)站排名
  • 服務(wù)器租用多少錢一個月南京關(guān)鍵詞seo公司
  • 哪些網(wǎng)站做的好處和壞處知道百度
  • 做手機網(wǎng)站的好處東莞優(yōu)化排名推廣
  • 順企網(wǎng)是什么網(wǎng)站百度免費安裝下載
  • 東莞網(wǎng)站建設(shè)是什么意思網(wǎng)站seo診斷技巧
  • 滄州網(wǎng)站建設(shè)icp備win7優(yōu)化大師官方網(wǎng)站
  • 怎么做百度網(wǎng)站驗證公司排名seo
  • 網(wǎng)站建設(shè)需要什么樣的內(nèi)容輸入關(guān)鍵詞自動生成標題
  • 南京房地產(chǎn)網(wǎng)站建設(shè)成都關(guān)鍵詞優(yōu)化平臺
  • 萊蕪做網(wǎng)站建設(shè)的公司自己如何優(yōu)化網(wǎng)站排名
  • 網(wǎng)站建設(shè)的主要功能有哪些圖片優(yōu)化
  • 個人網(wǎng)站的名稱廊坊網(wǎng)站建設(shè)公司
  • 網(wǎng)站搭建教程導航類網(wǎng)站怎樣關(guān)鍵詞排名優(yōu)化
  • 常州外貿(mào)網(wǎng)站建設(shè)開發(fā)網(wǎng)站的流程
  • 公司建站網(wǎng)站口碑營銷怎么做
  • 網(wǎng)站如何做微信登錄情感鏈接
  • 寧波seo排名方案seo關(guān)鍵詞優(yōu)化怎么做
  • 怎樣用dw做 網(wǎng)站首頁整合營銷的特點有哪些
  • 競價可以做兩個網(wǎng)站嗎平臺推廣精準客源
  • office網(wǎng)站開發(fā)杭州seo托管公司推薦
  • 鎮(zhèn)江服務(wù)器托管seo網(wǎng)站營銷推廣公司
  • 山東網(wǎng)站建設(shè)網(wǎng)絡(luò)公司首頁排名關(guān)鍵詞優(yōu)化
  • 美妝網(wǎng)站開發(fā)規(guī)劃書今日國際新聞最新消息大事
  • mac服務(wù)器 做網(wǎng)站免費google賬號注冊入口