numbox

module
v0.4.2 Latest Latest
Warning

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

Go to latest
Published: Oct 18, 2026 License: MIT

README

numbox

Go CI Go Reference

NumberMan 的 Go 工具箱,包含错误码、集合、随机抽样、时间、环境变量和常用数据结构。 模块路径为 github.com/NumberMan1/numbox,按需导入各子包。

安装与环境

要求 Go 1.25.1 或以上版本。在使用方的 Go module 中执行:

go get github.com/NumberMan1/numbox@latest

可将 @latest 替换为 已有 tag 以固定版本。 项目仍处于 v0 阶段,升级前请阅读 变更记录 与版本之间的差异。

所有组件均可在 CGO_ENABLED=0 下构建,pkg/go-zset 已改为纯 Go,支持原生 Windows。 CI 配置覆盖 Ubuntu、macOS 和 Windows;竞态检测本身仍需要 Go 工具链的 CGo 支持。

快速开始

package main

import (
    "fmt"

    "github.com/NumberMan1/numbox/pkg/collection"
)

func main() {
    names := collection.NewSet("alice", "bob")
    names.Add("alice", "carol")
    names.Remove("bob")

    fmt.Println(names.Contains("alice")) // true
    fmt.Println(names.Contains("bob"))   // false
}

工具索引

导入路径(模块路径后的部分) 用途
errors 错误码、自定义错误与标准错误判断
utils/* 按职责拆分的转换、切片、Map、JSON、随机、时间解析等工具子包
pkg/bitmap 位图
pkg/collection 泛型集合
pkg/dag 有向无环图
pkg/encryp JWT token 工具
utils/env 环境变量读取
pkg/go-zset 纯 Go、并发安全的带排名有序集合
pkg/idcard 身份证校验与解析
pkg/lock 不自动过期的 token 锁与 context 协作取消任务
utils/percent 千分比工具
pkg/skiplist 以 big.Float 为 key 的跳表
pkg/time 毫秒时间戳
pkg/timewheel 时间轮调度
utils/uuid UUID 工具
pkg/weight 权重池、随机抽样与保底机制
pkg/matcher 字符串匹配
pkg/safego goroutine 启动与 panic 处理
pkg/stackerr 带堆栈的错误
pkg/version 版本解析与比较
pkg/event-bus 事件总线类型定义

工具按职责位于 utils/convutil、utils/sliceutil、utils/maputil、utils/jsonutil 等子包; 根 utils 没有可导入的 Go 包。有状态组件、数据结构和算法保留在 pkg/*。 原 pkg/utils 或根 utils 的使用方需按函数职责更新导入,详见 工具索引 和 迁移说明。 内嵌敏感词组件已移除,需要匹配时显式构造 pkg/matcher 并提供自己的词表。 锁不再自动过期,迁移规则见 lock 说明。

具体 API 见 Go 文档 和对应包源码。 不同工具的并发与生命周期约定各异,例如 bitmap.BitMap 不支持并发修改, 使用前应阅读对应接口说明。

开发与验证

在仓库根目录执行(竞态检测本身需要 CGo 工具链):

go mod download all
CGO_ENABLED=0 go build ./...
go test -race -count=1 ./...
go vet ./...
git diff --check

CI 配置见 .github/workflows/ci.yml。 贡献流程、依赖维护与验证要求见 CONTRIBUTING.md。

社区与许可

项目原创内容采用 MIT 许可证。第三方代码、依赖和数据的权利以其原始许可为准; 尚待确认的历史来源见第三方说明。

Directories

Path Synopsis
pkg
dag
event-bus
Package eventbus defines portable topic and event-merge contracts.
Package eventbus defines portable topic and event-merge contracts.
go-zset
Package zset provides a concurrent, ranked sorted set implemented in pure Go.
Package zset provides a concurrent, ranked sorted set implemented in pure Go.
lock
Package lock 提供不会自动过期的、带 token 的进程内互斥锁和读写锁。
Package lock 提供不会自动过期的、带 token 的进程内互斥锁和读写锁。
safego
Package safego starts fire-and-forget goroutines with panic reporting.
Package safego starts fire-and-forget goroutines with panic reporting.
version
Package version handles numeric major.minor.patch[.build][-suffix] versions.
Package version handles numeric major.minor.patch[.build][-suffix] versions.
utils
env

Jump to

Keyboard shortcuts

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