Files
zogo/README.md
T
4566704 40c9f62c9f docs: 顶层 README 更新——包清单按类归组 + go-hua 迁移对照表
- 新增 28 个迁入包的分类清单(基础工具/网络协议/系统与硬件)
- go-hua→zogo 包名替换对照表(含不迁入项: log 弃用/qps 空壳/remote 归 remote-core)
- examples 例程约定写入开发约定
2026-09-20 12:42:42 +08:00

97 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`。