返回顶部
  • 发帖数42
  • 粉丝1

现就职于某世界500强区块链团队,从事区块链底层研究以及BAAS平台搭建。精通区块链底层存储、共识等技术,职业方向偏重联盟链体系

[开发语言] 使用唯一id,生成唯一字符串订单号,唯一邀请码等唯一字符...

[复制链接]
超级玛丽 显示全部楼层 发表于 2020-12-1 10:46:16 |阅读模式 打印 上一主题 下一主题
Hashids包用来把整数生成唯一字符串(比如:通过加密解密id来隐藏真实id)
generate short unique ids from integers
官方地址
  • 支持多种语言:
    JavaScript, Ruby, Python, Java, Scala, PHP, Perl, Perl 6, Swift, Clojure, Objective-C, C, C++11, D, F#, Go, Erlang, Lua, Haskell, OCaml, Elixir, Rust, Smalltalk, ColdFusion, Kotlin, Nim, VBA, Haxe, Crystal, Elm, ActionScript, Bash, R, TSQL, PostgreSQL, PLpgSQL, Dart, Io, Julia and for .NET
下面主要介绍golang的用法:
  • 第一步,下载包
go get github.com/speps/go-hashids
  • 上代码
  1. package main

  2. import "fmt"
  3. import "github.com/speps/go-hashids"

  4. func main() {
  5.     hd := hashids.NewData()
  6.     hd.Salt = "wozuishuai" // 盐值,可以根据不用的业务,使用不同的盐值
  7.     hd.MinLength = 8 // 生成唯一字符串的最小长度,注意:是最小,不是固定
  8.     h, _ := hashids.NewWithData(hd)
  9.     e, _ := h.Encode([]int{2, 45, 1, 44}) // 参数的都是slice,当我们
  10.     fmt.Println(e)
  11.     d, _ := h.DecodeWithError(e)
  12.     fmt.Println(d)
  13. }
复制代码

  1. 1.hd.Salt = "this is my salt"  盐值,可以根据不用的业务,使用不同的盐值
  2. 2.hd.MinLength = 30 生成唯一字符串的最小长度,注意:是最小,不是固定,生成的有可能比该值要长
  3. 3.h.Encode([]int{45, 434, 1313, 99}),接收参数是slice,我们大多数时候使用唯一id操作,所以只需要传[]int{1},一个元素即可
  4. 4.h.DecodeWithError(e),反序列化出你的原始id,也是slice类型
  5. 5.有兴趣的可以去看看源码包.很简单
复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

星点互联 成立于2014年8月,是目前国内优秀的开源技术社区,拥有超过300万会员,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作