Go问答技术文章
-
GoLLRB 的遍历方法不是简单地把升序改成降序:AscendGreaterOrEqual 包含 pivot,AscendLessThan 排除 pivot,AscendRange 使用大于等于下界且小于上界的闭开区间,DescendLessOrEqual 则按降序包含 pivot。本文用一组可复用的判断表说明边界和回调停止语义。383 收藏 -
Go llrb 的 ReplaceOrInsert 依据 Item.Less 的排序等价判断是否替换,不比较结构体整体值或指针地址。本文用业务键示例说明返回值、Less 契约与可变字段边界。412 收藏 -
Go rtreego 的空间维数不是可忽略的元数据:构造 Rect 时维数不一致会返回 DimError,距离查询遇到不一致维数可能触发 panic。本文按 API 边界说明如何统一检查 Rtree、Spatial、Point 与 Rect 的维度。424 收藏 -
rtreego 的 SearchIntersect 比较的是 Spatial 返回的包围矩形,不是真实圆形或多边形。本文用圆形示例说明候选召回与精确几何过滤的职责边界,以及边界接触和对象更新的处理方式。274 收藏 -
说明 Go bloom/v3 的 Merge 为什么要求两个 Bloom 过滤器使用相同的 m 和 k,并给出分片创建、错误处理、容量规划与并发边界示例。252 收藏 -
Go bloom 的容量参数对应预期插入量,不是可以无限增长的硬盘空间。本文解释容量不足后误判率为什么升高,如何理解 m、k、n 的关系,并给出容量预留、分段过滤器、重建与回源降级的工程取舍。109 收藏 -
解释Go Bloom过滤器命中只表示可能存在的原因,提供命中后查询精确map的示例,并说明否定结果的同步前提、容量取舍与误判指标的解释边界。386 收藏 -
Go bitset 的 Complement 计算的是当前 BitSet 长度以内的局部补集,不是无限整数域的补集。本文用 New、Set、Len 和 Count 说明如何明确边界并避免误读结果。169 收藏 -
Go bitset 的 NextSet 返回索引和布尔值两个结果。本文说明 found 的真实含义、正确遍历写法、空集边界,以及 Count 与 Len 的区别。355 收藏 -
说明Go bitset中Length概念对应Len方法,比较逻辑位长度与Count置位数量,通过小集合状态推导解释扩展、清位、空集合及性能指标的差别。384 收藏 -
Go roaring 默认使用无符号32位整数,roaring64 提供64位扩展。本文从编号范围、跨语言格式、序列化和接口边界比较两者,给出实际选型规则。200 收藏 -
Go roaring 的 Rank 用于统计小于等于目标值的元素数量,Select 用于按 0 起始序号取出有序集合中的元素。本文用 Go 示例说明两者的下标约定、分页用途和空集合、越界、并发访问边界。337 收藏 -
Go roaring 的 Bitmap.And/Or 会把结果写回当前对象,而 roaring.And/Or 返回新的位图。本文用集合示例、共享指针风险和回归清单说明如何选择,避免重构时误改输入集合。317 收藏 -
解释Go snowflake修改Epoch后旧编号时间偏移的原因,区分Node生成状态与全局解码配置,并给出显式历史格式解码器和保留纪元、分版本迁移的方案。135 收藏 -
Go snowflake 的 NodeBits 与 StepBits 共享 22 位预算。本文用节点数量和单节点毫秒级突发量拆解容量分配,并说明自定义位数的初始化顺序、节点编号和时钟注意事项。172 收藏