python自定义“雪花算法”ID工具类

发布时间:2026/9/29 6:04:18

python自定义“雪花算法”ID工具类 注意机器码参数配置# 虚拟环境py3_8_20_patent_env # 自定义雪花算法 import time import threading class SnowflakeGenerator: def __init__(self, machine_id: int): 初始化雪花ID生成器 :param machine_id: 机器ID (0~1023)需确保不同节点唯一 if machine_id 0 or machine_id 1024: raise ValueError(machine_id 必须在 0~1023 之间) self.machine_id machine_id # 10位机器ID self.sequence 0 # 12位序列号 self.last_timestamp -1 # 上次生成时间戳 self.lock threading.Lock() # 线程锁确保线程安全 # 自定义起始时间可调整为系统上线时间延长ID有效期 self.epoch 1609459200000 # 默认2021-01-01 00:00:00 def generate(self) - int: 生成唯一ID with self.lock: timestamp self._current_time() # 处理时间回拨 if timestamp self.last_timestamp: raise ValueError(f时间回拨当前时间 {timestamp} 上次时间 {self.last_timestamp}) # 同一毫秒内生成 if timestamp self.last_timestamp: self.sequence (self.sequence 1) 0xFFF # 12位序列号自增 if self.sequence 0: # 当前毫秒序列号用尽 timestamp self._wait_next_millis() else: self.sequence 0 self.last_timestamp timestamp # 组合各部分的二进制位 return ( ((timestamp - self.epoch) 22) | # 41位时间差 (self.machine_id 12) | # 10位机器ID self.sequence) # 12位序列号 def parse(self, snowflake_id: int) - dict: 解析雪花ID结构 :return: 包含时间戳、机器ID、序列号的字典 timestamp (snowflake_id 22) self.epoch machine_id (snowflake_id 12) 0x3FF # 0x3FF 二进制 1111111111 (10位) sequence snowflake_id 0xFFF # 0xFFF 二进制 111111111111 (12位) return { timestamp: timestamp, machine_id: machine_id, sequence: sequence, datetime: time.strftime(%Y-%m-%d %H:%M:%S, time.localtime(timestamp / 1000)) } def _current_time(self) - int: 获取当前时间戳毫秒 return int(time.time() * 1000) def _wait_next_millis(self) - int: 等待下一毫秒 timestamp self._current_time() while timestamp self.last_timestamp: time.sleep(0.001) timestamp self._current_time() return timestamp # 使用示例 if __name__ __main__: # 初始化生成器machine_id 需全局唯一 generator SnowflakeGenerator(machine_id1) # 生成ID snowflake_id generator.generate() print(f生成的ID: {snowflake_id}) # 输出如 1318958301703372800 # 解析ID print(解析结果:, generator.parse(snowflake_id)) # 输出: {timestamp: 1715586304000, machine_id: 1, sequence: 0, datetime: 2024-05-12 14:25:04}
延伸阅读

更多相关文章

2026/9/29 7:04:20

RSUITE Navbar 导航栏组件详解:从基础布局到响应式抽屉菜单

前端UI组件 【免费下载链接】rsuite 🧱 A suite of React components . 项目地址: https://gitcode.com/gh_mirrors/rs/rsuite 点击查看 免费下载 Navbar 是 rsuite 中对 Nav 组件的封装,专门用于页面顶部导航场景。本文围绕 Navbar 官方文…

2026/9/29 7:04:20

微信小程序自动化测试实战:Appium+Python完整指南

做了这么多年自动化测试,我一直觉得微信小程序是个“看着简单、做起来想摔手机”的活。页面逻辑不复杂,但一旦牵扯到底层是webview渲染、外层又是原生壳子这种混合结构,很多人用Selenium那套思路去搞,结果连元素都抓不到。Appium加…

2026/9/29 7:04:20

测试左移右移不是口号:质量保障的实战落地指南

1. 先搞清楚:为什么“测试左移右移”会烂大街这两年只要打开技术社区、刷招聘JD、参加测试分享会,满眼都是“测试左移”“测试右移”这两个词。简历上不写左移右移,感觉都不好意思说自己做测试;团队汇报里不提左移右移&#xff0c…

2026/9/29 6:59:20

AI编程Skills全解析:从安装到自定义技能包

最近不管打开哪个 AI 编程工具,都会撞见一个叫 skills 的概念。Claude Code 里有 skills,OpenCode 里挂着 skills,GitHub 上随手一搜都是各种 skills 仓库,连数学建模群里都开始有人讨论“codex skills”。说实话我第一次看到这个…

2026/9/28 3:03:23

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/28 6:05:15

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 7:00:49

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 0:04:04

AI Evals实战指南:从零搭建LLM应用评估体系与CI/CD集成

1. 为什么AI Evals值得你花时间搞明白做LLM应用的人,迟早会撞上同一堵墙:模型输出飘忽不定,今天答得好好的,明天换个问法就胡说八道。你改了一版提示词,感觉好像好了点,但到底好了多少?说不清。…

2026/9/29 0:04:04

Java采购管理系统实战:从数据库设计到事务一致性

简介:这是一套面向Java Web初学者与课程设计者的采购管理系统完整源码,采用JSP技术搭建,配合MySQL数据库,用于解决企业采购信息的管理问题,适合作为毕业设计、课程大作业或进销存类项目的参考模板。系统实现了用户登录…

2026/9/29 3:53:39

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/26 19:58:38

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/29 6:36:14

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑