1. 程式人生 > >關於全域性ID,雪花(snowflake)演算法的說明

關於全域性ID,雪花(snowflake)演算法的說明

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Snowflake.Net;

namespace Snowflake.ZConsole
{
    class Program
    {
        private static int N = 2000000;
        private static HashSet<long> set = new HashSet<long>();
        private static IdWorker worker = new IdWorker(1, 1);
        private static int taskCount = 0;

        static void Main(string[] args)
        {
            Task.Run(() => GetID());
            Task.Run(() => GetID());
            Task.Run(() => GetID());

            Task.Run(() => Printf());
            Console.ReadKey();
        }

        private static void Printf()
        {
            while (taskCount != 3)
            {
                Console.WriteLine("...");
                Thread.Sleep(1000);
            }
            Console.WriteLine(set.Count == N * taskCount);
        }

        private static object o = new object();
        private static void GetID()
        {
            for (var i = 0; i < N; i++)
            {
                var id = worker.NextId();

                lock (o)
                {
                    if (set.Contains(id))
                    {
                        Console.WriteLine("發現重複項 : {0}", id);
                    }
                    else
                    {
                        set.Add(id);
                    }
                }

            }
            Console.WriteLine($"任務{++taskCount}完成");
        }
    }
}

相關推薦

關於全域性ID雪花snowflake演算法的說明

using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Snowflake.Net; namespace Snowflake.ZCo

分散式ID生成系統 UUID與雪花snowflake演算法

Leaf——美團點評分散式ID生成系統 -https://tech.meituan.com/MT_Leaf.html 網遊伺服器中的GUID(唯一標識碼)實現-基於snowflake演算法-雲棲社群-阿里雲https://yq.aliyun.com/articles/229420 UUID_STRING

Twitter的雪花演算法snowflake分散式全域性ID

package com.pk.utils; /** * Twitter_Snowflake<br> * SnowFlake的結構如下(每部分用-分開):<br> * 0 - 0000000000 0000000000 0000000000 0000000000 0

Twitter的雪花演算法snowflake自增ID

前言   這個問題源自於,我想找一個分散式下的ID生成器。   這個最簡單的方案是,資料庫自增ID。為啥不用咧?有這麼幾點原因,一是,會依賴於資料庫的具體實現,比如,mysql有自增,oracle沒有,得用序列,mongo似乎也沒有他自己有個什麼ID,sql

eCGI是PLMN+ECI ECI (28 Bits) = eNB ID(20 Bits) + Cell ID(8 Bits)邏輯小區id範圍0~255

https://www.cnblogs.com/sddai/p/6244538.html LTE中的各種ID含義 原文連結:http://www.hropt.com/ask/?q-7128.html   ECI (28 Bits) = eNB ID(20 Bits) + C

全域性ID雪花演算法

/** * Twitter_Snowflake<br> * SnowFlake的結構如下(每部分用-分開):<br> * 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - * 000

2.常用演算法推導 演算法分類演算法原理演算法設計推導---SVMDTree樸素貝葉斯線性迴歸等;

演算法: 以wx+b=0為基礎的演算法: 感知機->誤分點(xi,yi | i->m)到wx+b的距離和最小,求最優解; 支援向量機->最大間隔; 邏輯迴歸->將wx+b的值作為邏輯函式輸入,進行分類; 線性迴歸->勾畫線性曲線,對

eCGI是PLMN+eCIeCI=eNodeBid*256+Localcellid邏輯小區id範圍0~255

eCGI是什麼, 首先PLMN編碼,我相信大家都知道MCC+MNC。那LTE的CI是什麼呢,很多人都有誤解,這裡我來跟大家說說。 在eCGI序列中,實際上是由PLMN+eCI兩個編碼組成,PLMN這裡不解釋了。 eCI在3GPP協議中規定為7個16進位制的編碼。其中,前面的5

jq中id選擇器的id中有. 這個符號要進行轉義才可以

 jQuery選擇id屬性帶有點符號元素的方法 $("#address\\.street") <div id="address.street">    如果id對應的是定義的一個變數,要對變數進行動態轉義  

ViewPager中動態新增XML佈局檔案並獲取XML檔案中控制元件ID的操作inflate

Step 1: 佈局檔案中新增viewpager和切換頁面button <spanstyle="font-size:18px;"><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/a

MATLAB R2018a 全域性優化工具箱學習遺傳演算法

Global Optimization Toolbox   在MATLAB R2018a 中發現了全域性優化的工具箱以及增加的資料和機器學習工具箱,對於求解全域性最優值很是方便。 MATLAB Global Optimization Toolbox 學習: 全域性

MATLAB R2018a 全域性優化工具箱學習粒子群演算法

MATLAB R2018a全域性優化工具箱學習(三)粒子群演算法   粒子群演算法是無導數的一種演算法.PSO從這種模型中得到啟示並用於解決優化問題。在粒子群演算法中,每個優化問題的潛在解都是搜尋空間中的一隻鳥,稱之為粒子。所有的粒子都有一個由被優化的函式決定的適值(適應值),每個粒子

對KLT主成分分析PCA演算法的理解

1 #include "pcaface.h" 2 #include "ui_pcaface.h" 3 #include <QString> 4 #include <iostream> 5 #include <stdio.h> 6 7 usi

FMFactorization Machine因子分解機演算法個人理解

1. FM是什麼 因子分解機(Factorization Machine, FM)是由Steffen Rendle提出的一種基於矩陣分解的機器學習演算法。 1.1 背景 常見的線性模型,比如線性迴歸、邏輯迴歸等,它只考慮了每個特徵對結果的單獨影響,而沒有考慮特徵間的組合

靜態static全域性變數與全域性變數靜態區域性變數與區域性變數內部static函式與普通函式

(1)static全域性變數和普通全域性變數的區別 主要是作用域和使用範圍的區別 static/靜態全域性變數作用域有限,侷限在一個原始檔內(定義它的原始檔),不能被同一源程式的其他原始檔使用,避免引起錯誤。(因而同名靜態全域性變數可以被定義在

雪花演算法02演算法中的位運算

前面介紹了雪花演算法的理論基礎,可以對大概的演算法有個瞭解,但是細節上可能還是模糊,下面來說一下雪花演算法中用到的位運算。這裡先介

C++繼承:公有私有保護

情況 pre mes 派生類 它的 保持 ++ col ble 公有繼承(public)、私有繼承(private)、保護繼承(protected)是常用的三種繼承方式。 1. 公有繼承(public) 公有繼承的特點是基類的公有成員和保護成員作為派生類的成員時,它們都保持

解釋說明Explain

pla explain earch clas search ref java elastics xpl Explain   為每次命中關於它們得分如何計算的說明。 GET /_search { "explain": true, "query" : {

算法取反向整數LeetCode7

code 方式 解法 解決問題 取反 余數 數學 編程 反轉 最近在別人的推薦下剛開始接觸LeetCode,一個非常不錯的在線編程刷題網站,java小白目前還在刷簡單的算法題,不過挺有意思的。昨天碰到一個反向整數算法題,想了好久沒寫出答案,在網上搜了答案,貼在這裏,我是覺得

G. isset$aunset$aempty$a的區別

技術 spa 區別 地址 內存 isset src log image unset($a)語義:使變量$a不再指向任何內存地址,所以變量會被垃圾自動回收機制清除isset($a)和 unset($a) G. isset($a),unset($a),empty($a)的區別