- 博客(5)
- 收藏
- 关注
原创 go-gRPC 初体验
微服务想必大家都不陌生了。刚接触到golang,那么在golang中怎么使用微服务呢。这里使用gRRC框架写了一个简单的例子。环境要求go>=1.13; set GO111MODULE=on安装 protoc安装 Protoc plugin-go示例代码 iris-grpc-example项目结构iris-grpc-example│ .gitignore│ ...
2020-02-10 22:35:22
440
原创 无处不在的幂等f(f(x)) = f(x)
幂等的基本概念可能我们经常在看网上文章的时候会看到幂等这个概念,那么幂等到底是什么呢?幂等:在编码中谈的幂等一般对应数学概念中的一元幂等:某一元运算为幂等的时,其作用在任一元素两次后会和其作用一次的结果相同f(f(x)) = f(x)。既对于同一个输入不管进行多少次函数运算都应该都应该得到相同的结果。不堪回首的往事在一次偶然的bug的发现了幂等这个概念的重要性。实际业务是这样的。...
2020-02-03 21:27:05
1360
原创 go学习笔记-init函数执行顺序分析
golang中有个神奇的函数init,该函数会在所有程序执行开始前被调用,每个包可以包含多个init函数,所有被编辑器识别到的init函数都会在main函数执行前被调用。通常被用来注册一个程序需要使用的依赖,如mysql注册,配置文件加载等。在main包的使用package mainimport "fmt"func main() { fmt.Println("这里是mian")...
2020-01-14 22:41:25
902
原创 go学习笔记-goroutine的好兄弟channel
上一篇介绍了atomic包以及互斥锁 mutex来解决并发竞争状态的问题。这一篇主要来介绍go中与goroutine经常搭档的好兄弟channelchannel不仅可以可以来用消除竞争状态,还可以用于不同的goroutine中进行通信,发送与接受数据。chaanel的定义有两种,分为有缓存与无缓冲创建channelchan1 := make(chan int) // 创建一个无缓冲...
2020-01-11 12:45:25
369
原创 go学习笔记-goroutine竞争状态
如果两个或者多个goroutine在没有相互同步状态的情况下同时访问某个资源,并且同时对这个资源进行读写的时候,对于这个资源就处于相互竞争状态(race candition)。下面来看一个相互竞争的例子。var number intvar wait sync.WaitGroupfunc main() { wait.Add(2) go updateNumber(200...
2020-01-07 22:19:08
1254
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人