go module go.mod 示例: module api.local go 1.17 require ( go.uber.org/zap v1.21.0 gopkg.in/natefinch/lumberjack.v2 v2.0.0 gopkg.in/yaml.v2 v2.4.0 ) require ( go.uber.org/atomic v1.9.0 // indirect go.uber. 2022-09-24 Golang #golang
sqlx sqlx 完全兼容 sql 增/删/改ExecMustExec查GetSelect事务开启BeginxMustBegin提交tx.Commit回退tx预处理 2022-09-24 Golang > 第三方库 #golang
systemd管理进程自动重启 可以使用 systemd 管理 go 进程 systemd 实践: 依据情况自动重启服务,参考:https://mp.weixin.qq.com/s/W6_Z1zPn3MeDgfGDP263vg systemd 服务异常自动重启很好用,但有的时候希望某些服务只在特定情况下进行重启,其他时候不要自动重启(比如 OOM,需要人工介入)。 本文抛砖引玉,旨在能够让读者对 systemd 的重启机制有一 2022-09-24 Golang > 搭建gin脚手架 #golang
日志zap zap日志级别zap日志级别,一共7级: const ( // DebugLevel logs are typically voluminous, and are usually disabled in production. DebugLevel Level = iota - 1 // InfoLevel is the default logging priority. InfoLeve 2022-09-24 Golang > 搭建gin脚手架 > 中间件 #golang
context Context 包定义了上下文类型,该上下文类型跨越 API 边界和进程之间传递截止期限,取消信号和其他请求范围值。 对服务器的传入请求应创建一个 Context,对服务器的传出调用应接受 Context。它们之间的函数调用链必须传播 Context,可以用使用 WithCancel,WithDeadline,WithTimeout 或 WithValue 创建的派生上下文替换。当 Context 2022-09-24 Golang > 标准库 #golang
sync 读锁:读读不互斥。加了读锁,其他协程仍然可以读,但是不能写写锁:独占。加了写锁,其他协程无论读写,都不被允许 sync包我们一般不用,推荐使用channel,但是我们也要熟悉。 互斥锁和自旋锁互斥锁 共享资源的使用是互斥的,即一个线程获得资源的使用权后就会将该资源加锁,使用完后会将其解锁,如果在使用过程中有其他线程想要获取该资源的锁,那么它就会被阻塞陷入睡眠状态,直到该资源被解锁才会被唤醒,如果被 2022-09-24 Golang > 标准库 > sync #golang