github.com/go-board/x-go@v0.1.2-0.20220610024734-db1323f6cb15/xhash/README.md (about) 1 # XHash 2 3 提供了默认的`Hash32`, `Hash64`, `Hash128`的实现, 以及一致性哈希,以及进程内的`string`和`[]byte`的`hash`。 4 5 ## Hash32(CRC) 6 ```go 7 package xhash 8 9 func Sum32(data []byte) uint32 10 11 func Sum32String(str string) uint32 12 ``` 13 14 ## Hash64(CRC64) 15 ```go 16 package xhash 17 18 func Sum64(data []byte) uint64 19 20 func Sum64String(str string) uint64 21 ``` 22 23 ## Hash128(MURMUR3) 24 ```go 25 package xhash 26 27 func Sum128(data []byte) (uint64, uint64) 28 29 func Sum128String(str string) (uint64, uint64) 30 ``` 31 32 ## 一致性哈希 33 ```go 34 package ring 35 36 type Hash func(data []byte) uint32 37 38 type Map struct { 39 hash Hash 40 replicas int 41 keys []int // Sorted 42 hashMap map[int]string 43 } 44 45 func New(replicas int, fn Hash) *Map 46 47 func (*Map) IsEmpty() bool // 判断hash环是否为空 48 func (*Map) Add(nodes ...string) // 加入节点 49 func (*Map) Remove(nodes ...string) // 删除节点 50 func (*Map) Get(key string) string // 根据key进行hash选取节点 51 ``` 52 ## Runtime Hash (标准库在1.14中会实现) 53 ```go 54 package runtime 55 56 func String(str string) uint64 57 58 func Bytes(data []byte) uint64 59 ```