关于全局ID,雪花(snowflake)算法的说明

上次简单的说一下:http://www.cnblogs.com/dunitian/p/6041745.html#uid

C#版本的国外朋友已经封装了,大家可以去看看:https://github.com/ccollie/snowflake-net

强大的网友出来个简化版本:http://blog.csdn.net/***/article/details/*** (地址我就不贴了,对前辈需要最起码的尊敬)

一开始我用的是这个简化版本,后来发现有重复项。。。(demo:https://github.com/dunitian/TempCode/tree/master/2016-11-16/Twitter_Snowflake

全局ID的激烈讨论:https://q.cnblogs.com/q/53552/

之后在外国大牛的基础上重写修改了部分内容https://github.com/ccollie/snowflake-net,添加了一些注解等【支持Core】。现在是可以去Nuget直接下载使用的:Snowflake.Net

源码地址:https://github.com/dunitian/snowflake-net

测试用例:

测试代码:

可能有些人只关心以后怎么用?==》

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)

原文发布于微信公众号 - 我为Net狂(dotNetCrazy)

原文发表时间:2016-12-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏网站漏洞修补

DedeCMS V5.7sp2网站漏洞如何修复

织梦dedecms,在整个互联网中许多企业网站,个人网站,优化网站都在使用dede作为整个网站的开发架构,dedecms采用php+mysql数据库的架构来承载...

2701
来自专栏数据和云

Linux 内存中的Cache,真的能被回收么?

编辑手记:很多人都认为,Linux中buffers和cached所占用的内存空间是可以在内存压力较大的时候被释放当做空闲空间用的。但真的是这样么?今天我们重新来...

50211
来自专栏阿凯的Excel

Python读书笔记(Python软件的安装)

小编最近一直在思考如何解决Excel的大数据分析的问题,为了解决该问题,小编决定开始学习Python!会在每周看心情分享自己的所学~ 是学习笔记哦!不是教学文...

3834
来自专栏腾讯DevOps

Git远程库操作2

如git clone git@git.code.tencent.com:XXX/XXX.git

2493
来自专栏公有云大数据平台弹性 MapReduce

浅谈Hadoop Distcp工具的InputFormat

从Hadoop的出现到现在已经超过十年了,它在大数据领域扮演着一个重要的角色,相信在Hadoop的使用过程中,或多或少的都会用到自带的一个常用工具,就是Hado...

2423
来自专栏农夫安全

浅说驱动程序的加载过程

在开始之前,首先简要介绍一下本文的主题,这篇文章是关于将内核模块加载到操作系统内核的方法的介绍。所谓“内核模块”,指的便是通常所说的驱动程序。不过因为加载到内核...

3669
来自专栏枕边书

代码迁移之旅(二)- 渐进式迁移方案

说在前面 这是代码迁移的第二篇文章,也是最后一篇了,由于个人原因,原来的迁移我无法继续参与了,但完整的方案我已经准备好了,在测试环境也已经可以正常进行了。 上篇...

2449
来自专栏影子

一张图解析 编译器编译流程

39915
来自专栏木东居士的专栏

从0写一个爬虫,爬取500w好友关系数据

6936
来自专栏技术翻译

Kafka和Redis的系统设计

我最近致力于基于Apache Kafka的水平可扩展和高性能数据摄取系统。目标是在文件到达的几分钟内读取,转换,加载,验证,丰富和存储风险源。系统收到银行上游风...

6260

扫码关注云+社区

领取腾讯云代金券