如何进行关于全局ID、snowflake算法的分析
发表于:2025-02-09 作者:千家信息网编辑
千家信息网最后更新 2025年02月09日,这篇文章将为大家详细讲解有关如何进行关于全局ID、snowflake算法的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一开始我用的是这个简化版本
千家信息网最后更新 2025年02月09日如何进行关于全局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安全错误
数据库的锁怎样保障安全
小说app软件开发
监控 app 软件开发
mcpvp服务器配置
广州市网络技术学校
网络安全法开始实行时间
互联网科技白皮书
orcale数据库建表代码
xss圣歌一直连接服务器
指定的服务器地址不安全
宝鸡市小桔网络技术有限公司
qq邮箱测速并更换服务器
2k17服务器错误代码
加强税务网络安全教育
服务器打开后不启动
中外合资互联网科技有限
w3c数据库
修改网赌数据库
专利数据库的公司有哪些
网络安全产业链研究
阿里巴巴网络技术有限公司上海
格尔网盾 证书服务器 6002
河东金蝶软件开发价格
数据库灾容方案
十堰网络安全管理
数据库封锁的类型
淘宝连接服务器错误怎么办
专用网络连接不上服务器
长沙闻博软件开发有限公司
期货app软件开发公司
珠海数据库培训学校