Documentation
¶
Index ¶
- func IdBinaryToId(bin []byte) (string, error)
- func IdToIdBinary(id string) ([]byte, error)
- func IsValidId(id string) bool
- func IsValidSecureId(id string) bool
- func MinIdAtTime(t time.Time) string
- func MinSecureIdAtTime(t time.Time) string
- func NewId() string
- func NewIdBinary(dst []byte) []byte
- func NewSecureId() string
- func ParseTimeFromId(id string) time.Time
- func ParseTimeFromSecureId(id string) time.Time
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IdBinaryToId ¶
把18字节二进制id转换为29字符的base32字符串id,和NewId()的输出格式一致.
func IsValidSecureId ¶
IsValidSecureId 判断一个字符串是否为合法的高安全 id(base32编码,长度42)
func MinIdAtTime ¶
生成指定毫秒时刻对应的最小普通数据库 id,适合做数据库时间范围扫描下界。 最小 id 即: 6 字节时间 + 后续递增和随机段全 0, 再 base32 编码.
func MinSecureIdAtTime ¶
生成指定毫秒时刻对应的最小高安全 id,适合做数据库时间范围扫描下界。 最小 id 即: 6 字节时间 + 后续递增和随机段全 0, 再 base32 编码.
func NewId ¶
func NewId() string
输出结果例子 17fatw9hnw1y8ge6emw3et3fmtu9d 字符串固定长度 29 普通 id ========== * 适合一般数据库对象的id生成.在没有人故意ddos 的情况下很难碰撞上. * 固定 18个字节二进制. * 6个字节 时间到毫秒. ( 大约 8925 年) * 1-4个字节 递增变长编码 当前进程挂锁顺序增加id (时间变了之后,从0 开始递增) (2位表示后面有几个字节,6-30位表示后面的id 最大 2^30-1 = 1073741823) * 8-11个字节 随机二进制数据.(来自强随机api) * 然后base32 编码 使用不易混淆的 字符,使用按ascii码递增排列的字符串
func NewIdBinary ¶
生成18字节固定长度的二进制id,方案和NewId()完全一致,只是跳过了base32编码步骤. 传入dst用于复用内存分配,结果append到dst后面返回.
func NewSecureId ¶
func NewSecureId() string
输出结果例子 17fatweptd1swfgg11ekgtx5j459wnf112v7jp81wn 字符串固定长度 42 高安全 id ========== * 适合高安全性要求的id生成. 比如 sessionId 和 acceessToken 有人故意ddos碰撞也很难碰撞上. * 固定 26个字节二进制. * 6个字节 时间到毫秒. ( 大约 8925 年) * 1-4个字节 递增变长编码 当前进程挂锁顺序增加id (时间变了之后,从0 开始递增) (2位表示后面有几个字节,6-30位表示后面的id 最大 2^30-1 = 1073741823) * 16-19个字节 随机二进制数据.(来自强随机api) * 然后base32 编码 使用不易混淆的 字符,使用按ascii码递增排列的字符串
func ParseTimeFromSecureId ¶
解析高安全 id 里的毫秒时间,失败时返回零值时间。
Types ¶
This section is empty.