如何进行关于全局ID、snowflake算法的分析
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章将为大家详细讲解有关如何进行关于全局ID、snowflake算法的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一开始我用的是这个简化版本
千家信息网最后更新 2026年11月04日如何进行关于全局ID、snowflake算法的分析
这篇文章将为大家详细讲解有关如何进行关于全局ID、snowflake算法的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
一开始我用的是这个简化版本,后来发现有重复项。。。(demo:https://github.com/dunitian/TempCode/tree/master/2016-11-16/Twitter_Snowflake)
之后在外国大牛的基础上重写修改了部分内容(https://github.com/ccollie/snowflake-net),添加了一些注解等【支持Core】。现在是可以去Nuget直接下载使用的:Snowflake.Net
测试用例:
测试代码:
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}完成" ); } } } |
可能有些人只关心以后怎么用?==》
IdWorker worker = new IdWorker(1, 1); //大并发的情况下,减少new的次数可以有效避免重复的可能
var id = worker.NextId();
有可能上面的减少new有些同志不太懂,(⊙o⊙)…,举个例子:
测试代码不变的情况下,改这么一句:
完整调用demo:(https://github.com/dunitian/snowflake-net/tree/master/Demo)
core:(https://github.com/dunitian/snowflake-net/tree/master/Demo.Core)
关于如何进行关于全局ID、snowflake算法的分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
内容
测试
全局
算法
分析
代码
情况
文章
更多
知识
篇文章
不错
有效
任务
例子
同志
基础
外国
次数
注解
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技工作委员会副主任毛军
互联网科技工作委员会毛军
互联网科技深圳
互联网品科技
金融科技创新监管互联网金融
互联网科技logo
甘肃拓世互联网科技有限公司
深圳卡尔迅互联网科技有限公司怎么样
互联网科技公司的市场部门
贵州叶脉互联网科技有限公司所属行业
昊天互联网科技有限公司
赶超互联网科技 微信多开
湖南一路畅行互联网科技
崇明区互联网教育科技售后服务
互联网数据科技专业
广州百诚互联网科技有限公司官网
互联网领先科技宣传片
江苏互联网智能科技软件
卡尔迅互联网科技有限公司
恒生科技互联网指数十大成分股
手冲咖啡和咖啡机区别
上海睿民互联网科技有限公司
互联网科技开发公司
蓝色互联网科技
开启互联网科技时代小说
互联网科技有哪些公司
世界互联网科技公司市值排名
玉溪互联网科技怎么选
注册互联网科技公司经营范围大全
科技互联网专业务虚会材料