首页 > 编程语言 >go 基于推特雪花算法生成定长id

go 基于推特雪花算法生成定长id

时间:2024-10-17 09:24:06浏览次数:7  
标签:node 推特 fmt 定长 go Bit id

基于推特雪花算法生成定长id,属于int64类型。

1 Bit Unused | 41 Bit Timestamp | 10 Bit NodeID | 12 Bit Sequence ID
1 bit
未使用,默认是0。
41bit
存储毫秒级时间戳,当前时间与Nov 04 2010 01:42:54 UTC的时间差。
10bit
存储节点的id,最多支持1024个。
12bit
自增id,同1个节点在1秒内最多生成id数量是4096。
同1个节点,1秒内最多生成4096*1000个id即400多万个。

package main

import (
	"fmt"
	"strconv"

	"github.com/bwmarrin/snowflake"
)

func main() {
    // 指定node id是1
    node, err := snowflake.NewNode(1)
    if err != nil {
        fmt.Println(err)
        return
    }

    id := node.Generate()
	fmt.Println(id)
	// 36是strconv.FormatInt支持的最大进制数
	fmt.Println(strconv.FormatInt(int64(id), 36))
}

标签:node,推特,fmt,定长,go,Bit,id
From: https://www.cnblogs.com/WJQ2017/p/18471383

相关文章

  • GOT-OCR2.0:本地部署基于QWen0.5B大模型的强大OCR服务
        这两天大佬团队开源了基于千问大模型OCR项目的视频多次被刷到,各博主对其识别能力也是给予充分的肯定, 作为CV工程师的小编平时工作中OCR的需求也是络绎不绝,如果真如各博主所说是跨时代的产品,那必须也要盘它一盘;github:GitHub-Ucas-HaoranWei/GOT-OCR2.0:Offici......
  • django中间件
    什么是中间件是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。因为改变的是全局,所以需要谨慎实用,用不好会影响到性能MiddlewareisaframeworkofhooksintoDjango’srequest/responseprocessing.It’salight,lo......
  • SpringSecurity + Spnego + Kerberos 实现AD域单点登录
    SpringSecurity+Spnego+Kerberos实现AD域单点登录文章目录SpringSecurity+Spnego+Kerberos实现AD域单点登录前言一、域是什么?二、单点登录是什么?三、如何实现四、Kerberos五、Spnego介绍六、spring-ldap连接域实现域用户管理七、单点登录案例前言本文......
  • github pages + hugo 搭建静态博客网站
    体验地址1.起因,目的:其实6年前,我就写过这个。项目代码博客地址最近想改写一下。github推荐的主题是Jekyll,我当时用的就是这个,感觉很麻烦。尤其是文章命名。新的主题hugo用起来还行。2.过程:过程记录,需要详细!因为问题非常多!3.参考教程:视频教程:ht......
  • mysql的时间在vue中显示相差8个小时 (Vue+Django+MySQL 时区 自动转换时间)
    mysql的时间在vue中显示相差8个小时 Vue     10:00:00Django (USE_TZ=True,Django会自动根据所设的时区对时间进行转换;改为False即可)MySQL  2:00:00 =========================原因:中间某个环节的时区不对. 我这里是mysql的时区不对.解决办法:......
  • Django学习-ORM_常用字段及字段选项
      字段选项: 注意:当我们新增数据的时候,如果没有新增设置了default的字段,此时会使用default设置的默认值填充到新增的数据中 ......
  • [数据集成/数据同步] 基于数据库增量日志的数据同步方案 : Flink CDC/Debezium/DataX/
    1概述简述:CDC/增量数据同步CDC的全称是ChangeDataCapture(增量数据捕获)在广义的概念上,只要能捕获数据变更的技术,我们都可以称为CDC。我们目前通常描述的CDC技术主要面向数据库的变更,是一种用于捕获数据库中数据变更的技术。CDC的技术实现方案基于查询......
  • Golang笔记_day08
    Go面试题(一)1、空切片和nil切片区别空切片:   空切片是指长度和容量都为0的切片。它不包含任何元素,但仍然具有切片的容量属性。在Go语言中,可以使用内置的make函数创建一个空切片,例如:emptySlice:=make([]int)   这个语句创建了一个长度为0、容量为0的空切片......
  • go htmx stream
    原始地址:https://github.com/alarbada/htmx-streamwindow.htmx.defineExtension("stream",{onEvent:(name,evt)=>{if(name==="htmx:beforeRequest"){letelement=evt.detail.elt;if(evt.detail.requestConfig.target)......
  • 【Golang】Go 语言中的 time 包详解:全面掌握时间处理与应用
    在Go语言中,time包提供了强大的时间处理功能,适用于各种场景:获取当前时间、格式化和解析时间、计算时间间隔、设置定时器、处理超时等。在开发过程中,熟练掌握time包能够帮助我们轻松处理时间相关的操作,尤其是定时任务、超时控制等非常常见的功能。文章目录一、`time.......