Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
yitter
雪花ID全家桶(SnowFlake IdGenerator)
提交
1d043bf0
雪
雪花ID全家桶(SnowFlake IdGenerator)
项目概览
yitter
/
雪花ID全家桶(SnowFlake IdGenerator)
11 个月 前同步成功
通知
201
Star
3
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
雪
雪花ID全家桶(SnowFlake IdGenerator)
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1d043bf0
编写于
12月 08, 2021
作者:
yitter
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
auto commit
上级
a434e07c
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
84 addition
and
0 deletion
+84
-0
Python/soure/DefaultIdGenerator.py
Python/soure/DefaultIdGenerator.py
+31
-0
Python/soure/IdGeneratorOptions.py
Python/soure/IdGeneratorOptions.py
+30
-0
Python/soure/SnowFlake.py
Python/soure/SnowFlake.py
+11
-0
Python/soure/SnowFlakeM1.py
Python/soure/SnowFlakeM1.py
+12
-0
未找到文件。
Python/soure/DefaultIdGenerator.py
0 → 100644
浏览文件 @
1d043bf0
import
time
import
traceback
from
IdGeneratorOptions
import
IdGeneratorOptions
from
SnowFlake
import
SnowFlake
from
SnowFlakeM1
import
SnowFlakeM1
class
DefaultIdGenerator
(
object
):
def
SetIdGernerator
(
self
,
options
)
:
if
options
.
BaseTime
<
100000
:
raise
ValueError
(
"BaseTime error."
)
self
.
SnowFlake
=
SnowFlakeM1
(
options
)
def
NextId
(
self
):
return
self
.
SnowFlake
.
NextId
()
if
__name__
==
'__main__'
:
try
:
options
=
IdGeneratorOptions
(
23
)
options
.
BaseTime
=
1231111111
idgen
=
DefaultIdGenerator
()
idgen
.
SetIdGernerator
(
options
)
print
(
idgen
.
NextId
())
print
(
options
.
__dict__
)
except
ValueError
as
e
:
print
(
e
)
Python/soure/IdGeneratorOptions.py
0 → 100644
浏览文件 @
1d043bf0
import
time
class
IdGeneratorOptions
(
object
):
def
__init__
(
self
,
workerId
=
0
,
workerIdBitLength
=
6
,
seqBitLength
=
6
):
# 雪花计算方法,(1-漂移算法|2-传统算法),默认1。目前只实现了1。
self
.
Method
=
1
# 基础时间(ms单位),不能超过当前系统时间
self
.
BaseTime
=
1288834974657
# 机器码,必须由外部设定,最大值 2^WorkerIdBitLength-1
self
.
WorkerId
=
workerId
# 机器码位长,默认值6,取值范围 [1, 15](要求:序列数位长+机器码位长不超过22)
self
.
WorkerIdBitLength
=
workerIdBitLength
# 序列数位长,默认值6,取值范围 [3, 21](要求:序列数位长+机器码位长不超过22)
self
.
SeqBitLength
=
seqBitLength
# 最大序列数(含),设置范围 [MinSeqNumber, 2^SeqBitLength-1],默认值0,表示最大序列数取最大值(2^SeqBitLength-1])
self
.
MaxSeqNumber
=
0
# 最小序列数(含),默认值5,取值范围 [5, MaxSeqNumber],每毫秒的前5个序列数对应编号0-4是保留位,其中1-4是时间回拨相应预留位,0是手工新值预留位
self
.
MinSeqNumber
=
5
# 最大漂移次数(含),默认2000,推荐范围500-10000(与计算能力有关)
self
.
TopOverCostCount
=
2000
Python/soure/SnowFlake.py
0 → 100644
浏览文件 @
1d043bf0
#!/usr/bin/python
# coding=UTF-8
# 组件编号生成器
class
SnowFlake
(
object
):
def
__init__
(
self
,
options
):
self
.
Options
=
options
def
NextId
(
self
):
return
0
Python/soure/SnowFlakeM1.py
0 → 100644
浏览文件 @
1d043bf0
#!/usr/bin/python
# coding=UTF-8
from
SnowFlake
import
SnowFlake
# 组件编号生成器
class
SnowFlakeM1
(
SnowFlake
):
def
__init__
(
self
,
options
):
self
.
Options
=
options
def
NextId
(
self
):
return
self
.
Options
.
WorkerId
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录