Documentation ¶
Index ¶
Constants ¶
const DefaultLevel = HighestLevel
默认级别设置没有提示时将选择搜索的级别
const EpochLength = 8
epoch length存储epoch的序列化二进制长度
const HighestLevel = 25 //默认值为25(~1年)
最高级别设置算法将以2的功率运行的最低频率。 25->2^25大约等于一年。
const LowestLevel uint8 = 0 //默认值为0(1秒)
LowestLevel将查找算法的频率分辨率设置为2的幂。
const MaxTime uint64 = (1 << 56) - 1
maxtime包含一个epoch可以处理的最大可能时间值
Variables ¶
var NoClue = Epoch{}
noclue是一个提示,当查找调用程序没有 最后一次更新可能在哪里的线索
Functions ¶
func FluzCapacitorAlgorithm ¶
FluzCapacitorAlgorithm的工作原理是,如果找到更新,则缩小epoch搜索区域。 及时往返 首先,如果提示是 最后一次更新。如果查找失败,则最后一次更新必须是提示本身 或者下面的时代。但是,如果查找成功,则更新必须是 或者在下面的时代里。 有关更图形化的表示,请参阅指南。
func GetNextLevel ¶
GetNextLevel返回下一次更新应处于的频率级别,前提是 上次更新是什么时间。 这是“last”和“now”的异或的第一个非零位,从最高有效位开始计数。 但仅限于不返回小于最后一个-1的级别
Types ¶
type Algorithm ¶
算法是查找算法的函数签名
var Lookup Algorithm = FluzCapacitorAlgorithm
查找查找具有小于或等于“now”的最高时间戳的更新 它接受了一个提示,应该是最后一次已知更新所在的时代。 如果您不知道最后一次更新发生在哪个时代,只需提交lookup.noclue 每次查找时都将调用read()。 仅当read()返回错误时才返回错误 如果未找到更新,则返回nil
type Epoch ¶
type Epoch struct { Time uint64 `json:"time"` //时间存储更新或查找发生的时间 Level uint8 `json:"level"` //级别表示频率级别,表示2次方的指数。 }
epoch表示特定频率级别的时隙
func GetNextEpoch ¶
getnextepoch返回下一个更新应位于的epoch 根据上次更新的位置 现在几点了。
func (*Epoch) MarshalBinary ¶
MarshalBinary实现Encoding.BinaryMarshaller接口
func (*Epoch) UnmarshalBinary ¶
UnmarshalBinary实现encoding.BinaryUnmarshaller接口