keyspace

package
v2.0.14 Latest Latest
Warning

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

Go to latest
Published: Jan 11, 2025 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var XORKeySpace = &xorKeySpace{}

XORKeySpace 是一个基于异或操作的键空间实现。 它使用 SHA-256 哈希对标识符进行规范化,并使用异或(XOR)操作计算键之间的距离。

Functions

func XOR

func XOR(a, b []byte) []byte

XOR 对两个字节切片执行异或运算,返回结果切片。 参数:

  • a: 第一个字节切片
  • b: 第二个字节切片

返回值:

  • []byte: 异或运算后的结果切片

func ZeroPrefixLen

func ZeroPrefixLen(id []byte) int

ZeroPrefixLen 计算字节切片中开头连续零位的数量。

参数:

  • id: 要计算的字节切片

返回值:

  • int: 开头连续零位的数量

Types

type Key

type Key struct {
	// Space 是与此 Key 相关联的 KeySpace。
	Space KeySpace

	// Original 是标识符的原始值。
	Original []byte

	// Bytes 是标识符在 KeySpace 中的新值。
	Bytes []byte
}

Key 表示 KeySpace 中的标识符。它持有与之关联的 KeySpace 的引用,以及原始标识符和新的 KeySpace 字节。

func SortByDistance

func SortByDistance(sp KeySpace, center Key, toSort []Key) []Key

SortByDistance 按照与中心 Key 的距离对 Key 列表进行排序。

参数:

  • sp: KeySpace 实例
  • center: 作为距离计算参考点的中心 Key
  • toSort: 要排序的 Key 列表

返回值:

  • []Key: 按距离排序后的 Key 列表

func (Key) Distance

func (k1 Key) Distance(k2 Key) *big.Int

Distance 计算此 Key 到另一个 Key 的距离。

参数:

  • k2: 要计算距离的目标 Key

返回值:

  • *big.Int: 表示两个 Key 之间距离的大整数

如果两个 Key 不在同一个 KeySpace 中,会触发 panic

func (Key) Equal

func (k1 Key) Equal(k2 Key) bool

Equal 判断此 Key 是否与另一个 Key 相等。

参数:

  • k2: 要比较的另一个 Key

返回值:

  • bool: 如果两个 Key 相等则返回 true,否则返回 false

如果两个 Key 不在同一个 KeySpace 中,会触发 panic

func (Key) Less

func (k1 Key) Less(k2 Key) bool

Less 判断此 Key 是否在另一个 Key 之前。

参数:

  • k2: 要比较的另一个 Key

返回值:

  • bool: 如果此 Key 在 k2 之前则返回 true,否则返回 false

如果两个 Key 不在同一个 KeySpace 中,会触发 panic

type KeySpace

type KeySpace interface {
	// Key 将标识符转换为此空间中的 Key。
	//
	// 参数:
	//   - []byte: 要转换的标识符字节切片
	//
	// 返回值:
	//   - Key: 转换后的 Key 对象
	Key([]byte) Key

	// Equal 判断在此 KeySpace 中两个 Key 是否相等。
	//
	// 参数:
	//   - Key: 第一个 Key
	//   - Key: 第二个 Key
	//
	// 返回值:
	//   - bool: 如果两个 Key 相等则返回 true,否则返回 false
	Equal(Key, Key) bool

	// Distance 计算在此 KeySpace 中两个 Key 之间的距离。
	//
	// 参数:
	//   - Key: 第一个 Key
	//   - Key: 第二个 Key
	//
	// 返回值:
	//   - *big.Int: 表示两个 Key 之间距离的大整数
	Distance(Key, Key) *big.Int

	// Less 判断第一个 Key 是否小于第二个 Key。
	//
	// 参数:
	//   - Key: 第一个 Key
	//   - Key: 第二个 Key
	//
	// 返回值:
	//   - bool: 如果第一个 Key 小于第二个 Key 则返回 true,否则返回 false
	Less(Key, Key) bool
}

KeySpace 是用于在标识符上执行数学运算的接口。每个 KeySpace 都有自己的属性和规则。参见 XorKeySpace。

Jump to

Keyboard shortcuts

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