package
1.3.6
Repository: https://github.com/forrestsu/go_learn.git
Documentation: pkg.go.dev

# README

订单号-生成算法

基于 snowflake 算法,根据业务场景,做适应性调整:

block说明bits拟采用的实现方式
1 最高位1暂未使用(置0)
2 时间戳28采用unix 毫秒数 (millsOfDay) bin(24x60x60x1000) = '0b101-0010-0110-0101-1100-0000-0000' 需要27bit
3 机器ID8为支持分布式,加入机器ID。现阶段机器不会太多,可采用1个字节标识(如采用机器IP最后2字节,异或为1个字节)
4 管理员ID8取管理员ID低 8位
5 用户ID8取用户ID 低8位

最后,在订单编号上加上 8 个数字的日期前缀:YYYYMMDD

orderSN 总长度为27位数字(8+19),样例: 202105171838043898712414209 PS:int64 格式化为19位的10进制数,不足19位补充前缀0

# Functions

GetMachineByIP 获取机器ID (IP最后2字节异或).
GetMachineFromID 从ID中获取machineID.
GetSeqFromID 从ID中获取seq.
GetTimeFromID 从ID中获取time.
LSB last byte.
NewFastID new.

# Variables

StdFastID 默认的fastID.

# Structs

FastID 分布式唯一ID.