hid

package
v1.3.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 12, 2022 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Epoch              = 1288834974657                                  // 毫秒,Thu, 04 Nov 2010 01:42:54 GMT
	DataCenterIdBits   = 5                                              // 数据标识id占位
	WorkerIdBits       = 5                                              // 机器id占位
	MaxDataCenterId    = -1 ^ (-1 << DataCenterIdBits)                  // 最大数据标识id
	MaxWorkerId        = -1 ^ (-1 << WorkerIdBits)                      // 最大机器id
	SequenceBits       = 12                                             // 序列占位
	TimestampLeftShift = SequenceBits + WorkerIdBits + DataCenterIdBits // 毫秒,左移22位
	DataCenterIdShift  = SequenceBits + WorkerIdBits                    // 数据标识id,左移17位
	WorkerIdShift      = SequenceBits                                   // 机器id,左移12位
	SequenceMask       = -1 ^ (-1 << SequenceBits)                      // 序列掩码
)
View Source
const (
	BitLenTime      = 39                               // 时间位长
	BitLenSequence  = 8                                // 序列号的位长
	BitLenMachineID = 63 - BitLenTime - BitLenSequence // 机器ID的位长
)

这些常数是SonyFlake ID部分的位长度。

Variables

This section is empty.

Functions

func Decompose

func Decompose(id uint64) map[string]uint64

Decompose 返回一组SonyFlake ID部分。

func GetIdGenTime

func GetIdGenTime(id uint64) string

GetIdGenTime 获取Id生成时间

@id SnowFlake生成的唯一Id

Types

type Settings

type Settings struct {
	StartTime      time.Time
	MachineID      func() (uint16, error)
	CheckMachineID func(uint16) bool
}

Settings 配置SonyFlake:

StartTime 是将SonyFlake时间定义为经过时间的时间。
如果StartTime为0,则将SonyFlake的开始时间设置为"2014-09-01 00:00:00 +0000 UTC"。
如果StartTime早于当前时间,则不会创建SonyFlake。

MachineID 返回SonyFlake实例的唯一ID。
如果MachineID返回错误,则不会创建SonyFlake。
如果MachineID为nil,则使用默认的MachineID。
默认的MachineID返回私有IP地址的低16位。

CheckMachineID 验证机器ID的唯一性。
如果CheckMachineID返回false,说明SonyFlake未创建。
如果CheckMachineID为nil,则不进行验证。

type SnowFlake added in v1.3.5

type SnowFlake struct {
	// contains filtered or unexported fields
}

SnowFlake 共64位 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 正号|1位 - 毫秒|41位 - 数据标识id|5位 - 机器id|5位 - 序列|12位

func GetSnowWorker added in v1.3.5

func GetSnowWorker() *SnowFlake

GetSnowWorker 获取雪花算法实例,警告:golang版本的雪花算法生成的ID有序递增

func NewSnowFlake added in v1.3.5

func NewSnowFlake(dataCenterId int64, workerId int64) (*SnowFlake, error)

func (*SnowFlake) IdToTimestamp added in v1.3.5

func (x *SnowFlake) IdToTimestamp(snowflakeId int64) int64

IdToTimestamp 雪花算法ID转时间戳,毫秒

func (*SnowFlake) NextId added in v1.3.5

func (x *SnowFlake) NextId() (int64, error)

func (*SnowFlake) NextIdInt64 added in v1.3.5

func (x *SnowFlake) NextIdInt64() int64

NextIdInt64 获取雪花算法ID,int64

func (*SnowFlake) NextIdStr added in v1.3.5

func (x *SnowFlake) NextIdStr() string

NextIdStr 获取雪花算法ID,字符串

func (*SnowFlake) TilNextMillis added in v1.3.5

func (x *SnowFlake) TilNextMillis(lastTimestamp int64) int64

func (*SnowFlake) TimeGen added in v1.3.5

func (x *SnowFlake) TimeGen() int64

type SonyFlake

type SonyFlake struct {
	// contains filtered or unexported fields
}

SonyFlake 是一个分布式唯一ID生成器。

var IdBean *SonyFlake

IdBean 全局分布式唯一id实例,IdBean.NextID()获取唯一id。

func NewSonyFlake

func NewSonyFlake(st Settings) *SonyFlake

NewSonyFlake 返回用给定设置配置的新SonyFlake。

NewSonyFlake 在以下情况下返回nil:
- Settings.StartTime 在当前时间之前。
- Settings.MachineID 返回一个错误。
- Settings.CheckMachineID 返回false。

func (*SonyFlake) NextID

func (sf *SonyFlake) NextID() (uint64, error)

NextID 生成下一个唯一ID。

SonyFlake时间溢出后,NextID返回一个错误。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL