Go语言技术文章
-
GoLLRB 的遍历方法不是简单地把升序改成降序:AscendGreaterOrEqual 包含 pivot,AscendLessThan 排除 pivot,AscendRange 使用大于等于下界且小于上界的闭开区间,DescendLessOrEqual 则按降序包含 pivot。本文用一组可复用的判断表说明边界和回调停止语义。383 收藏 -
Go llrb 的 ReplaceOrInsert 依据 Item.Less 的排序等价判断是否替换,不比较结构体整体值或指针地址。本文用业务键示例说明返回值、Less 契约与可变字段边界。412 收藏 -
GoLLRB 的 DeleteMin 会删除并返回有序树中的最小元素,空树返回 nil。本文对比 Min 与 DeleteMin,演示 llrb.Int、类型断言和连续消费时的停止条件。483 收藏 -
GoLLRB 的自定义对象只需实现 llrb.Item 的 Less 方法,但比较规则必须稳定且可区分。本文用优先级加 ID 的复合键说明插入、等价更新、查询和范围遍历的写法与边界。289 收藏 -
GoLLRB 使用 AscendRange 按左闭右开区间遍历有序元素。本文说明 Item 比较规则、边界参数、提前停止和空结果处理,并给出适合分页与时间窗口查询的调用方式。166 收藏 -
Go rtreego 的空间维数不是可忽略的元数据:构造 Rect 时维数不一致会返回 DimError,距离查询遇到不一致维数可能触发 panic。本文按 API 边界说明如何统一检查 Rtree、Spatial、Point 与 Rect 的维度。424 收藏 -
rtreego 的 SearchIntersect 比较的是 Spatial 返回的包围矩形,不是真实圆形或多边形。本文用圆形示例说明候选召回与精确几何过滤的职责边界,以及边界接触和对象更新的处理方式。274 收藏 -
说明 Go bloom/v3 的 Merge 为什么要求两个 Bloom 过滤器使用相同的 m 和 k,并给出分片创建、错误处理、容量规划与并发边界示例。252 收藏 -
本文以对象移动为例,说明 Go rtreego 为什么不能直接修改 Bounds,并给出 Delete、更新边界、Insert 的维护顺序,以及没有原对象指针时使用 DeleteWithComparator 的方法。476 收藏 -
本文用 Go rtreego 实现二维矩形范围检索,说明 Spatial、Rect、SearchIntersect、LimitFilter 的用法,并整理空结果和对象更新时的排查清单。247 收藏 -
本文用二维服务点示例说明 Go rtreego 的最近邻查询:让对象实现 Spatial.Bounds,创建二维 R-tree 后用 NearestNeighbor 查找单个最近对象,用 NearestNeighbors 获取前 k 个候选,并处理空树、维度一致性和对象移动后的重插入边界。246 收藏 -
Go bloom 的容量参数对应预期插入量,不是可以无限增长的硬盘空间。本文解释容量不足后误判率为什么升高,如何理解 m、k、n 的关系,并给出容量预留、分段过滤器、重建与回源降级的工程取舍。109 收藏 -
解释Go Bloom过滤器命中只表示可能存在的原因,提供命中后查询精确map的示例,并说明否定结果的同步前提、容量取舍与误判指标的解释边界。386 收藏 -
Go bloom 的持久化重点不是重新添加原始数据,而是保存 BloomFilter 的位图与参数。本文用 WriteTo 和 ReadFrom 说明怎样写入文件、进程重启后恢复查询,以及损坏文件、原子替换和并发访问的边界。172 收藏 -
Go bloom/v3 用 AddString 加入字符串、用 TestString 查询成员。本文从字节切片写法迁移到字符串方法,说明容量、误判率、精确回退和并发访问边界。303 收藏