Golang Go语言 yiigo 4.x 版本发布

Golang Go语言 yiigo 4.x 版本发布

yiigo

golang GitHub release GoDoc MIT license

The best and the most wanted package for junior gophers, probably.

Features

Requirements

Go1.11+

Installation

go get github.com/iiinsomnia/yiigo/v4

Usage

Config

  • yiigo.toml
[app]
env = "dev" # dev | beta | prod
debug = true

[apollo] app_id = “test” cluster = “default” address = “127.0.0.1:8080” cache_dir = “./”

[apollo.namespace]
# 指定配置对应的 namespace,用于在不同环境下(如:灰度和生产环境)指定不同的 namespace

[db]

[db.default]
driver = "mysql"
dsn = "username:password@tcp(localhost:3306)/dbname?timeout=10s&charset=utf8mb4&collation=utf8mb4_general_ci&parseTime=True&loc=Local"
# dsn = "host=localhost port=5432 user=root password=secret dbname=test connect_timeout=10 sslmode=disable" # pgsql
max_open_conns = 20
max_idle_conns = 10
conn_max_lifetime = 60 # 秒

[mongo]

[mongo.default]
dsn = "mongodb://username:password@localhost:27017"
connect_timeout = 10 # 秒
pool_size = 10
max_conn_idle_time = 60 # 秒
mode = "primary" # primary | primary_preferred | secondary | secondary_preferred | nearest

[redis]

[redis.default]
address = "127.0.0.1:6379"
password = ""
database = 0
connect_timeout = 10 # 秒
read_timeout = 10 # 秒
write_timeout = 10 # 秒
pool_size = 10
pool_limit = 20
idle_timeout = 60 # 秒
wait_timeout = 10 # 秒
prefill_parallelism = 0

[log]

[log.default]
path = "app.log"
max_size = 500
max_age = 0
max_backups = 0
compress = true

[email] host = “smtp.exmail.qq.com” port = 25 username = “” password = “”

  • config usage
yiigo.Env("app.env").String()
yiigo.Env("app.debug").Bool()

Apollo

type QiniuConfig struct {
    *yiigo.DefaultApolloConfig
    BucketName string `toml:"bucket_name"`
}

var qiniu = &QiniuConfig{DefaultApolloConfig: yiigo.NewDefaultConfig(“qiniu”, “qiniu”)}

if err := yiigo.StartApollo(qiniu); err != nil { log.Fatal(err) }

MySQL

// default db
yiigo.DB().Get(&User{}, "SELECT * FROM `user` WHERE `id` = ?", 1)
yiigo.Orm().First(&User{}, 1)

// other db yiigo.DB(“foo”).Get(&User{}, “SELECT * FROM user WHERE id = ?”, 1) yiigo.Orm(“foo”).First(&User{}, 1)

MongoDB

// default mongodb
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)

defer cancel()

yiigo.Mongo().Database(“test”).Collection(“numbers”).InsertOne(ctx, bson.M{“name”: “pi”, “value”: 3.14159})

// other mongodb ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)

defer cancel()

yiigo.Mongo(“foo”).Database(“test”).Collection(“numbers”).InsertOne(ctx, bson.M{“name”: “pi”, “value”: 3.14159})

Redis

// default redis
conn, err := yiigo.Redis().Get()

if err != nil { log.Fatal(err) }

defer yiigo.Redis().Put(conn)

conn.Do(“SET”, “test_key”, “hello world”)

// other redis conn, err := yiigo.Redis(“foo”).Get()

if err != nil { log.Fatal(err) }

defer yiigo.Redis(“foo”).Put(conn)

conn.Do(“SET”, “test_key”, “hello world”)

Zipkin

reporter := yiigo.NewZipkinHTTPReporter("http://localhost:9411/api/v2/spans")

// sampler sampler := zipkin.NewModuloSampler(1) // endpoint endpoint, _ := zipkin.NewEndpoint(“yiigo-zipkin”, “localhost”)

tracer, err := yiigo.NewZipkinTracer(reporter, zipkin.WithLocalEndpoint(endpoint), zipkin.WithSharedSpans(false), zipkin.WithSampler(sampler), )

if err != nil { log.Fatal(err) }

client, err := tracer.HTTPClient(yiigo.WithZipkinClientOptions(zipkinHttp.ClientTrace(true)))

if err != nil { log.Fatal(err) }

b, err := client.Get(context.Background(), “url…”, yiigo.WithRequestHeader(“Content-Type”, “application/json; charset=utf-8”), yiigo.WithRequestTimeout(5*time.Second), )

if err != nil { log.Fatal(err) }

fmt.Println(string(b))

Logger

// default logger
yiigo.Logger().Info("hello world")

// other logger yiigo.Logger(“foo”).Info(“hello world”)

Documentation

Enjoy 😊


更多关于Golang Go语言 yiigo 4.x 版本发布的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang Go语言 yiigo 4.x 版本发布的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


针对“Golang Go语言 yiigo 4.x 版本发布”的帖子,作为IT领域的Go语言专家,以下是我的回复:

yiigo 4.x 版本的发布,无疑是Go语言社区的一大喜讯。Go语言自2009年诞生以来,凭借其简洁的语法、高效的执行速度和强大的并发支持,已在云计算、微服务、区块链等领域崭露头角。yiigo作为Go语言的一个优秀框架,其4.x版本的发布无疑将进一步提升Go语言在这些领域的应用能力。

从专业角度来看,yiigo 4.x版本可能带来了诸多新特性和性能优化。例如,它可能引入了更高效的并发处理机制、更强大的错误处理功能,以及更丰富的标准库和工具链支持。这些改进将使得开发者能够更高效地编写代码,构建出更加稳定、安全、高性能的应用程序。

同时,yiigo 4.x版本的发布也标志着Go语言社区在持续推动Go语言的发展和应用。我相信,在社区的共同努力下,Go语言将在未来展现出更加卓越的性能和更广泛的应用前景。

最后,祝贺yiigo 4.x版本的成功发布,期待它在Go语言社区中发挥出更大的价值!

回到顶部