golang
文章平均质量分 63
你大晨哥
别把时间浪费在工作上
展开
-
大白话之 从netty的到gent
什么是event loop呢,中文翻译为事件循环,怎么讲呢,你雇了一个看门大爷,让他一直在门口巡逻,有事情就通知你来处理,这就是event loop,我理解把这种不断监听事件、有事件就通知别人处理(自己不处理)的工作模式就叫做event loop,比如多路复用的select,他就需要不断监听accept、read、write事件的到来,来了再通知别人处理,这种工作模式就是event loop,简单点你就理解就是一个看门大爷。另一个是 workerGroup, 用于处理与各个客户端连接的 IO 操作。原创 2022-10-12 16:52:49 · 1401 阅读 · 0 评论 -
大白话之golang context
还是一个请求过来,调用了服务A,服务A又调用了服务B,B又调用了C…,如果当请求调用到A、B、C还没有得到结果时就关闭了请求,那么再调用A、B、C就是没有任何意义的,那么就可以利用ctx, cancel := context.WithCancel(context.Background()),让服务A、B、C都。比如一个请求过来后,调用了服务A,服务A又调用了服务B,B又调用了C…监听ctx.done(), 当在请求调用cancel()时,A、B、C服务看到请求取消了调用,就不在继续执行,省的浪费资源。...原创 2022-08-11 18:29:51 · 455 阅读 · 0 评论 -
golang channel到底好在哪?
背景我们公司总是在推golang,最扯淡的一个同事回答说因为公司都在用所以用,你可以用,但我觉得语言是最没有价值的,最重要的是你要知道他解决了什么事。并发编程1并发编程的痛点问:并发会引发什么?答:并发会引发线程安全。问:为什么会引发线程安全?答:原子性,可见性,有序性。问:具体说说,原子性,可见性,有序性?答:原子性是因为线程切换导致,可见性是共享变量,有序性是因为指令重排序。问:再具体点?答:cnm。。。大白话翻译一下:说白了就是一夫多妻制引发的惨案,一夫是要共享给多个妻的,所原创 2022-03-10 12:26:01 · 251 阅读 · 0 评论 -
golang rpc protobuf protorpc
原生rpc参考:https://geektutu.com/post/quick-go-rpc.htmlserver.go// server/main.gopackage mainimport ( "log" "net/http" "net/rpc")type Result struct { Num, Ans int}type Cal intfunc (cal *Cal) Square(num int, result *Result) error { result.Nu原创 2021-08-04 20:59:59 · 474 阅读 · 0 评论 -
golang实现时间轮
什么是时间轮看一下 https://zhuanlan.zhihu.com/p/121483218写的非常清楚。延迟队列DelayQueue如果看完上面,会发现博主在最后提到了延迟队列DelayQueue,DelayQueue使用最小堆实现,把队列里的元素按照过期时间排序。然后开一个协程死循环与队列第一个元素比较。golang实现DelayQueue实现延迟队列DelayQueue要先实现一个优先队列PriorityQueue,PriorityQueue的作用是使用最小堆来找到过期时间最近的元素。原创 2021-07-15 12:26:47 · 2229 阅读 · 0 评论 -
如何写一个开源的golang项目并使用
自己写了一个golang web、rpc框架,未来想做成一个微服务,公司内部使用,地址https://github.com/yanchendage/ty。把代码提交到github打taggit tag v0.0.2push taggit push origin v0.0.2go get 代码地址go get github.com/yanchendage/ty如果你更新了代码库需要重复2、3并且在go get时加入 -u参数go get -u github.com/yanchendage/原创 2021-07-06 18:08:53 · 197 阅读 · 0 评论 -
golang arr slice map
数组:1. 声明 var arr [5]int 2. 字面量 arr := [5]int{1,2,3,4,5}slice1. 声明 var slice []int 这是一个空切片 nil2.字面量(常用) silce :=[]int{1,2,3,4,5}3.make(常用) slice := make([]int,len,cap) slice := make([]int,5) slice := make([]int,3,5)map1. 声明 var m map[int]原创 2021-06-10 11:46:35 · 143 阅读 · 0 评论 -
大白话golang context
什么是context知乎了一下https://www.zhihu.com/question/26387327找到两个比较通俗易懂的答案一般来说是想要有个object来保存状态,想不出好的名字然后就叫context了说白了,把一堆有用的状态信息放一起这两个大佬看样子想表达的意思是一样的,context等于保存状态的object举个例子,小明和小张去面试,面试官拿着他们的简历,先面试小明面试官就拿出来小明的简历,简历上写着小明的各种信息这就是小明的上下文,该面试小张了,面试官拿出来小张的简历,原创 2021-04-19 16:20:37 · 119 阅读 · 0 评论 -
大白话GMP
大白话GMPG:我P:接待M:修理员话说我女朋友今天iwatch坏了,让我带她去中关村修,我们来到了xxx店的门口。这家店很大,有10个修理员M1-M10,5个接待P1-P5。我(G)看到一个接待(P1)小姐姐很漂亮就走了过去,接待(P1)说:“帅哥,您稍等,师傅M1正在忙”,这时候我就(G)就进入了接待(P1)的等待区(本地队列)。我坐在vip专座上耐心的等待着。场景1 work stealing这时候我听见门口一位大妈和接待员P2吵了起来,大妈说:“就没人接待我么?我都等多半天了”,P2原创 2021-04-13 16:28:01 · 127 阅读 · 2 评论