51
Dev开发社区
首页
文章
问答
工具
搜索
登录
注册
#GO
使用Golang的singleflight防止缓存击穿
背景singleflight介绍示例源码分析其他Top在使用缓存时,容易发生缓存击穿。缓存击穿:一个存在的key,在缓存过期的瞬间,同时有大量的请求过来,造成所有请求都去读dB,这些请求都会击穿到DB,造成瞬时DB请求量大、压力骤增。Topimport"golang.org/x/sync/singleflight"si...
代码星球
·
2020-10-02
使用
Golang
singleflight
防止
缓存
深度解密 Go 语言之 sync.Pool
最近在工作中碰到了GC的问题:项目中大量重复地创建许多对象,造成GC的工作量巨大,CPU频繁掉底。准备使用 sync.Pool 来缓存对象,减轻GC的消耗。为了用起来更顺畅,我特地研究了一番,形成此文。本文从使用到源码解析,循序渐进,一一道来。本文基于Go1.14 目录是什么有什么用怎么用...
代码星球
·
2020-10-02
深度
解密
Go
言之
sync.Pool
golang中字符串的查找方法小结
1)funcContains(s,substrstring)bool这个函数是查找某个字符是否在这个字符串中存在,存在返回true示例如下:import("fmt""strings")funcmain(){fmt.Println(strings.Contains("widuu","wi"))//truefmt.Prin...
代码星球
·
2020-10-02
golang
字符串
查找
方法
小结
goku-api-gateway
高可用的微服务解决方案通过EOLINKERAPI网关,帮助企业进行API服务治理与API性能维护,降低IT运维的成本,提高系统灵活性,安全可靠地将企业内部系统通过微服务架构互相连接,为企业数字化赋能。 ...
代码星球
·
2020-10-02
goku-api-gateway
Go语言开发的微服务框架
Go语言开发的微服务框架有什么? 1、项目名称:Istio 项目简介:Istio是由Google、IBM和Lyft开源的微服务管理、保护和监控框架。使用istio可以很简单的创建具有负载均衡、服务间认证、监控等功能的服务网络,而不需要对服务的代码进行任何修改。 2、项目名称:Go-kit 项目简介:Go-ki...
代码星球
·
2020-10-02
Go
语言
开发
服务
框架
go-kit 微服务 服务熔断(hystrix-go 实现)
对客户端请求login方法添加熔断在微服务架构中,每个服务都是相互关联的,比如我们下单服务和扣钱服务是分开的,现在扣钱服务出现的bug不能正常服务Hystrix可以让我们在在微服务架构中对服务间的调用进行控制,加入一些调用延迟或者服务降级的容错机制。对依赖服务调用时出现的调用延迟和调用失败进行控制和容错保护在复杂的分布...
代码星球
·
2020-10-02
服务
go-kit
熔断
hystrix-go
实现
雪崩利器 hystrix-go 源码分析
阅读源码的过程,就像是在像武侠小说里阅读武功秘籍一样,分析高手的一招一式,提炼出精髓,来增强自己的内力。之前的帖子说了一下微服务的雪崩效应和常见的解决方案,太水,没有上代码怎么叫解决方案。github上有很多开源的库来解决雪崩问题,比较出名的是Netflix的开源库hystrix。集流量控制、熔断、容错等于一身的jav...
代码星球
·
2020-10-02
雪崩
利器
hystrix-go
源码
分析
hystrix-go简介
hystrix是一个容错库,旨在隔离指向远程系统,服务和第三方库的请求,杜绝级联故障,并在复杂的分布式系统中实现弹性,毕竟在分布式系统中,故障是不可避免的。此项目脱胎于由Netflix开源的同名java项目。https://github.com/Netflix/Hystrix像Hystrix命令一样执行代码定义依赖于外...
代码星球
·
2020-10-02
hystrix-go
简介
golang 函数作为参数传递(回调)
和其他很多语言一样,golang中函数也可以作为其它函数的参数进行传递,然后在其它函数内调用执行,一般称之为回调。语法:以函数签名作为主调函数的形参的类型,即传递一个指向函数的指针funcmain(){sayhello("john",addperfix)}funcaddperfix(perfix,namestring)...
代码星球
·
2020-10-02
golang
函数
作为
参数
传递
go 单向通道
funcGetCha(cha<-chanint){//这里参数用了一个单向通道只允许接收for{ifv,ok:=<-cha;ok{fmt.Println(v)}}//cha<-2这里会发生编译错误}funcmain(){cha:=make(chanint,3)lock:=make(chanstruct...
代码星球
·
2020-10-02
go
单向
通道
go channel select如何屏蔽已关闭通道
gochannelselect如何屏蔽已关闭通道(如果不屏蔽的话,select一直会处于选择状态)funcmain(){channel:=make(chanint,20)selectChannel(channel)getChannel(channel)time.Sleep(time.Hour)}funcselectCh...
代码星球
·
2020-10-02
go
channel
select
如何
屏蔽
go err
golang自定义err方案很多//Errno代表某种错误的类型typeErrnointfunc(eErrno)Error()string{return"errno"+strconv.Itoa(int(e))}funcmain(){//示例3。const(ERR0=Errno(0)ERR1=Errno(1)ERR2=E...
代码星球
·
2020-10-02
go
err
golang 做了个mutex与atomic性能测试
funcBenchmarkMutex(b*testing.B){varnumberintlock:=sync.Mutex{}fori:=0;i<b.N;i++{gofunc(){deferlock.Unlock()lock.Lock()number++}()}}funcBenchmarkAtomic(b*test...
代码星球
·
2020-10-02
golang
做了
mutex
atomic
性能
Go语言中的条件变量
Go语言syncpackage提供了条件变量(conditionvariable)类型:typeCondstruct{//LisheldwhileobservingorchangingtheconditionLLocker//containsfilteredorunexportedfields}typeCondfunc...
代码星球
·
2020-10-02
Go
语言
中的
条件
变量
golang strings.NewReader
为什么说strings.Reader类型的值可以高效地读取字符串与strings.Builder类型恰恰相反,strings.Reader类型是为了高效读取字符串而存在的。后者的高效主要体现在它对字符串的读取机制上,它封装了很多用于在string值上读取内容的最佳实践。strings.Reader类型的值(以下简称Re...
代码星球
·
2020-10-02
golang
strings.NewReader
首页
上一页
...
54
55
56
57
58
...
下一页
尾页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他