https://github.com/aberic/gnomon
一个为golang提供通用服务的工具库
https://github.com/aberic/gnomon
balance ca command crypto file go golang grpc http log
Last synced: 6 months ago
JSON representation
一个为golang提供通用服务的工具库
- Host: GitHub
- URL: https://github.com/aberic/gnomon
- Owner: aberic
- License: apache-2.0
- Created: 2019-09-03T15:17:23.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-03-07T03:13:51.000Z (over 2 years ago)
- Last Synced: 2025-04-12T09:19:10.763Z (6 months ago)
- Topics: balance, ca, command, crypto, file, go, golang, grpc, http, log
- Language: Go
- Homepage:
- Size: 1.51 MB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://github.com/aberic/gnomon/releases/latest)
[](https://godoc.org/github.com/aberic/gnomon)
[](https://goreportcard.com/report/github.com/aberic/gnomon)
[](https://golangci.com/r/github.com/aberic/gnomon)
[](https://www.codacy.com/manual/aberic/gnomon?utm_source=github.com&utm_medium=referral&utm_content=aberic/gnomon&utm_campaign=Badge_Grade)
[](https://www.travis-ci.org/aberic/gnomon)
[](https://coveralls.io/github/aberic/gnomon?branch=master)# Gnomon
通用编写go应用的公共库。## 开发环境
* Go 1.12+
* Darwin/amd64## 测试环境
* Go 1.11+
* Linux/x64### 安装
``go get github.com/aberic/gnomon``### 使用工具
```go
gnomon.Byte… // 字节
gnomon.Command… // 命令行
gnomon.Env… // 环境变量
gnomon.File… // 文件操作
gnomon.IP… // IP
gnomon.JWT… // JWT
gnomon.String… // 字符串
gnomon.Hash… // Hash/散列
gnomon.RSA… // RSA
gnomon.ECC… // ECC
gnomon.AES… // AES
gnomon.DES… // DES
gnomon.CA… // CA
gnomon.Scale… // 算数/转换
gnomon.Time… // 时间
gnomon.Pool… // conn池
gnomon.GRPC… // grpc请求
gnomon.HTTP… // http请求
```### 使用HTTP Server
```go
func main() {
httpServe := grope.NewHTTPServe(doFilter)
router(httpServe)
grope.ListenAndServe(":8888", httpServe)
}func doFilter(ctx *grope.Context) {
if ctx.HeaderGet("name") != "name" {
log.Info("doFilter1", log.Field("resp", ctx.ResponseText(http.StatusForbidden, "filter name")))
}
}func router(hs *grope.GHttpServe) {
// 仓库相关路由设置
route := hs.Group("/one/test")
route.Post("/test1", one1)
route.Put("/test1", one2)
route.Post("/test2/:a/:b", one2)
route.Post("/test3/:a/:b", one3)
route.Post("/test4/:a/:b", one4)
route.Post("/test5/:a/:b", one5)
route.Put("/test6/ok", one1)
route.Put("/test6/ok/no", one6)
route.Put("/test6/:a/:b", one6)
}func one1(ctx *grope.Context) {
ones := &TestOne{}
_ = ctx.ReceiveJSON(ones)
log.Info("one", log.Field("one", &ones),
log.Field("url", ctx.Request().URL.String()), log.Field("paramMap", ctx.Params()))
log.Info("one1", log.Field("resp", ctx.ResponseJSON(http.StatusOK, &TestTwo{
Two: "1",
Twos: false,
TwoGo: 1,
})))
}……
```
更多详情参考:https://github.com/aberic/gnomon/blob/master/example/grope/grope_example.go### 使用MySQL
```go
func SQL() {
sql = &db.MySQL{}
_ = sql.Connect(dbURL, dbUser, dbPass, dbName, false, 5, 20)
row := sql.DB.Raw("select * from table where id=?", id).Row()
}
```
更多详情参考:https://github.com/aberic/gnomon/blob/master/example/sql/init.go### 使用log
```go
func LogDebug() {
log.Set(log.DebugLevel(), "tmp/log", 1, 1, false, false)
log.Debug("test", log.Field("1", "2"), log.Field("2", 3), log.Field("3", true))
log.Debug("test", nil)
log.Info("test", log.Field("1", "2"), log.Field("2", 3), log.Field("3", true))
log.Warn("test", log.Field("1", "2"), log.Field("2", 3), log.Field("3", true))
log.Error("test", log.Field("1", "2"), log.Field("2", 3), log.Field("3", true), log.Err(errors.New("yes")))
}
```
更多详情参考:https://github.com/aberic/gnomon/blob/master/example/log/log_test.go### 使用Balance
```go
func TestNewBalanceWeightRandom(t *testing.T) {
b := NewBalance(Random)
b.Add(1)
b.Weight(1, 10)
b.Add(2)
b.Weight(2, 5)
b.Add(3)
b.Weight(3, 1)
for i := 0; i < 50; i++ {
t.Log(b.Acquire())
}
}
```
更多详情参考:https://github.com/aberic/gnomon/blob/master/balance/balance_test.go### 文档
参考 https://godoc.org/github.com/aberic/gnomon