- 新增 28 个迁入包的分类清单(基础工具/网络协议/系统与硬件) - go-hua→zogo 包名替换对照表(含不迁入项: log 弃用/qps 空壳/remote 归 remote-core) - examples 例程约定写入开发约定
97 lines
7.0 KiB
Markdown
97 lines
7.0 KiB
Markdown
# zogo
|
||
|
||
zeroone Go 通用库(单仓多包,顶层即包)。被各后端服务以 Go module 依赖引用:
|
||
`go get git.zeroonesoft.cn/golib/zogo/xxx`
|
||
|
||
## 包清单
|
||
|
||
### 服务开发
|
||
|
||
| 包 | 用途 | 文档 |
|
||
|---|---|---|
|
||
| `httpx` | Gin 统一出入参:OkJson/ErrorJson(CodeMsg 错误码透传)、Handle/HandleResult、Parse(uri→query→header→json 顺序绑定 + binding 校验收口)、ParseXML | [httpx/README.md](httpx/README.md) |
|
||
| `logger` | logrus 日志初始化(控制台彩色 + 按天轮转文件 + 历史压缩) | [logger/README.md](logger/README.md) |
|
||
| `wsc` | WebSocket 服务端框架(会话/房间/路由)+ 配套客户端(自动重连),同一 Message 信封 | [wsc/README.md](wsc/README.md) |
|
||
| `jwtx` | 轻量 HMAC-SHA256 令牌签发与校验 | [jwtx/README.md](jwtx/README.md) |
|
||
| `snowid` | 雪花 ID 生成器(进程内单例)+ GORM 模型 ID 钩子模板 | [snowid/README.md](snowid/README.md) |
|
||
|
||
### 基础工具(自 go-hua 迁入)
|
||
|
||
| 包 | 用途 | 文档 |
|
||
|---|---|---|
|
||
| `stringx` | 字符串/切片工具:随机串、UUID、通配符匹配、校验规则、中文首字母 | [stringx/README.md](stringx/README.md) |
|
||
| `timex` | 时间日期:NT/UTC 时间戳互转、时间字符串转毫秒时间戳、月份天数 | [timex/README.md](timex/README.md) |
|
||
| `filex` | 文件目录:运行目录定位、路径存在性、进度下载、Zip 压缩解压(GBK 兼容) | [filex/README.md](filex/README.md) |
|
||
| `cryptox` | MD5 摘要:字符串/字节集/文件 | [cryptox/README.md](cryptox/README.md) |
|
||
| `netx` | 本机网络信息:IPv4 与 MAC 地址枚举 | [netx/README.md](netx/README.md) |
|
||
| `numx` | 数值工具:流量格式化、低位取整、多整数取最值 | [numx/README.md](numx/README.md) |
|
||
| `verx` | 版本号:点分版本解析/还原/比较 | [verx/README.md](verx/README.md) |
|
||
| `counter` | 线程安全 string→int64 键值计数器(原 go-hua/single 更名) | [counter/README.md](counter/README.md) |
|
||
| `queue` | 链式先进先出队列(哨兵头结点风格) | [queue/README.md](queue/README.md) |
|
||
|
||
### 网络协议(自 go-hua 迁入)
|
||
|
||
| 包 | 用途 | 文档 |
|
||
|---|---|---|
|
||
| `frame` | 应用层帧协议:8 字节头(版本+命令+长度+流 ID)+ 数据,Conn 读写封装 | [frame/README.md](frame/README.md) |
|
||
| `proto` | 长度前缀封包协议编解码(含 CRC32 校验版) | [proto/README.md](proto/README.md) |
|
||
| `bytepacket` | 二进制封包/解包(小端序,兼容易语言协议、GBK、易语言日期) | [bytepacket/README.md](bytepacket/README.md) |
|
||
| `conn` | net.Conn 装饰器:透明叠加带宽限速(rate)与流量统计(flow) | [conn/README.md](conn/README.md) |
|
||
| `listen` | net.Listener 简单封装(Close 解除 Accept 阻塞) | [listen/README.md](listen/README.md) |
|
||
| `flow` | 并发安全流量统计(收发字节累计/取走清零) | [flow/README.md](flow/README.md) |
|
||
| `rate` | 按秒配额的带宽限速器 | [rate/README.md](rate/README.md) |
|
||
| `httpprobe` | 按首部字节探测 HTTP/HTTPS 流量(原 go-hua/http 更名) | [httpprobe/README.md](httpprobe/README.md) |
|
||
| `httpc` | HTTP 客户端:GET/POST/PUT/DELETE/代理/Digest 认证(原 go-hua/httpurl 更名) | [httpc/README.md](httpc/README.md) |
|
||
| `nettest` | 网络连通性探测:TCP 端口 + 原始 ICMP Ping,统计成功率与延迟 | [nettest/README.md](nettest/README.md) |
|
||
| `spmux` | 单端口多路复用:按报文特征分发到 HTTP/HTTPS/TCP 三个 Listener | [spmux/README.md](spmux/README.md) |
|
||
| `ipratelimiter` | 按 IP 维度的令牌桶限流器 | [ipratelimiter/README.md](ipratelimiter/README.md) |
|
||
|
||
### 系统与硬件(自 go-hua 迁入)
|
||
|
||
| 包 | 用途 | 文档 |
|
||
|---|---|---|
|
||
| `arp` | 系统 ARP 表读取与 IP→MAC 查询(定时刷新缓存) | [arp/README.md](arp/README.md) |
|
||
| `dll` | Windows API 封装:互斥体防多开、ShellExecute、窗口操作 | [dll/README.md](dll/README.md) |
|
||
| `hardware` | 硬件信息采集(WMI)与硬件变更检测 | [hardware/README.md](hardware/README.md) |
|
||
| `monitor` | 系统资源监控:CPU/内存/磁盘/网络/进程/连接/主机,后台采集 | [monitor/README.md](monitor/README.md) |
|
||
| `dotnet` | .NET Framework 安装信息(Windows 注册表,原 go-hua/netFramework 更名) | [dotnet/README.md](dotnet/README.md) |
|
||
| `ipquery` | IP/域名归属地查询(ip2region xdb 全内存加载) | [ipquery/README.md](ipquery/README.md) |
|
||
| `mail` | SMTP 邮件发送(收/抄/密送、HTML 正文) | [mail/README.md](mail/README.md) |
|
||
| `certx` | x509 证书解析校验与自签生成(原 go-hua/ssl 更名) | [certx/README.md](certx/README.md) |
|
||
| `gormtypes` | GORM/JSON 双向转换类型:八种 Slice/Map 类型(原 go-hua/datatypes 更名) | [gormtypes/README.md](gormtypes/README.md) |
|
||
| `cafegame` | 网咖游戏识别与运行记录上报(网吧业务专用) | [cafegame/README.md](cafegame/README.md) |
|
||
|
||
> 历史说明:v0.1.0 曾存在独立包 `wscclient`,v0.2.0 起并入 `wsc`(`wsc.Client`)——
|
||
> 客户端与服务端共用信封定义,协议单一来源防两端漂移。
|
||
|
||
## go-hua 迁移对照
|
||
|
||
2026-09 自 `github.com/4566704/go-hua` 迁入并整理,消费方替换对照:
|
||
|
||
| go-hua 包 | zogo 去处 | 说明 |
|
||
|---|---|---|
|
||
| `common` | 拆分为 `stringx` / `timex` / `filex` / `cryptox` / `netx` / `numx` / `verx`;`frame.go` 独立为 `frame` | 拆大杂烩,按职责归位 |
|
||
| `http` | `httpprobe` | 实为协议探测,与 net/http 混淆故更名 |
|
||
| `httpurl` | `httpc` | 实为 HTTP 客户端 |
|
||
| `single` | `counter` | 实为键值计数器 |
|
||
| `netFramework` | `dotnet` | 实为 .NET Framework 信息查询 |
|
||
| `ssl` | `certx` | 实为 x509 证书操作 |
|
||
| `datatypes` | `gormtypes` | 避免与 gorm.io/datatypes 混淆 |
|
||
| `log` | **不迁入**(已弃用) | 消费方用 `logger`(logrus);spmux 已改为 `spmux.Logger` 接口 |
|
||
| `snowid` / `gormhook` | 已被 `snowid` 覆盖(v0.2.0 吸收),不再迁入 | |
|
||
| `httpx` | 已存在,仅并入 `ParseXML` 与全套单元测试 | |
|
||
| `remote` | 并入 [remote-core](../remote-core) 仓库(被控端远程能力归位) | |
|
||
| `qps` | 不迁入 | 空壳包(无代码) |
|
||
|
||
迁移中修复的缺陷见各包 README:`frame`(SetData 未返回错误、ReadFrame 短读/吞帧)、
|
||
`ipratelimiter`(包子句大写不规范)、`httpx`(README 笔误)等。
|
||
|
||
## 约定
|
||
|
||
- 通用性准入:被 ≥2 个服务复制使用过的包才进入本仓库;仅单服务使用的留在服务内。
|
||
- 改动流程:在本仓库修复/演进 → 打 tag(如 v0.2.0)→ 各服务 `go get git.zeroonesoft.cn/golib/zogo@v0.2.0`。
|
||
- 本地联动开发:在 `D:\zomaintain\backend\go.work` 中 `use D:/golib/zogo`(go.work 不提交)。
|
||
- go.mod 声明 go 版本不高于最低版本消费方,不要随意上调。
|
||
- 依赖版本声明「最低可用」而非 latest(如 gorm 锁消费方在用的版本),避免把消费方依赖图顶出新版本引发不兼容。
|
||
- 每个包自带 README.md(定位/用法/注意事项),改 API 先改文档;可运行例程统一放 `examples/<包名>/main.go`。
|