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  ```