go中基于redis实现的分布式锁

我们在实际开发中,经常会遇到对共享变量进行多线程同步访问的情况,为了保证数据、业务的一致性,我们需要用到分布式锁进行处理。import ( "context" "errors" "fmt" "github.com/go-redis/redis/v8" "sync&quo

- 阅读全文 -

go中实现http请求代理转发

背景:web开发中,经常采用的是前后端分离,在后端服务采用分布式架构的情况下,请求通常都是只发到一个统一的前置服务/api网关中,然后将根据实际的请求,将调用其他服务进行实际的处理。(如下图)前置网关通常会有一些校验的中间件,进行安全校验,比如登录验证,鉴权等,而实际的业务服务通常处于内网内,用户无法直接访问,所以不需要再次做安全校验,直接处理业务逻辑。内网服务实际的业务处理完成后将结果返回到网关

- 阅读全文 -

golang调试

引言:和PHP一样,虽然通过print的方式可以解决调试一部分代码,解决一些问题,但是总体效率并不高,而且有时候光看输入输出没办法排除一些代码逻辑问题,所以和所有强类型语言类型一样,所以通过断点,逐步调试还是很有必要的。在golang中调试需要借助调试组件delve1、安装delvego get -u github.com/derekparker/delve/cmd/dlv2、使用dlv命令调试g

- 阅读全文 -

GO module下载慢解决方案

go 11后包管理支持module模式,首先开启go module模式,linux和mac终端下运行export GO111MODULE=on或者写进环境变量 ~/.zshrc 或 ~/.bashrc然后下载相应包go get github.com/xxx/xx但是国内由于一些原因,下载官方的源很慢,手动去github下载相应源的方式有很慢,而且如果下载的不是官方的源,可能代理一定的风险。下面推荐

- 阅读全文 -