#GO

使用Golang的singleflight防止缓存击穿

背景singleflight介绍示例源码分析其他Top在使用缓存时,容易发生缓存击穿。缓存击穿:一个存在的key,在缓存过期的瞬间,同时有大量的请求过来,造成所有请求都去读dB,这些请求都会击穿到DB,造成瞬时DB请求量大、压力骤增。Topimport"golang.org/x/sync/singleflight"si...

深度解密 Go 语言之 sync.Pool

最近在工作中碰到了GC的问题:项目中大量重复地创建许多对象,造成GC的工作量巨大,CPU频繁掉底。准备使用 sync.Pool 来缓存对象,减轻GC的消耗。为了用起来更顺畅,我特地研究了一番,形成此文。本文从使用到源码解析,循序渐进,一一道来。本文基于Go1.14 目录是什么有什么用怎么用...

golang中字符串的查找方法小结

1)funcContains(s,substrstring)bool这个函数是查找某个字符是否在这个字符串中存在,存在返回true示例如下:import("fmt""strings")funcmain(){fmt.Println(strings.Contains("widuu","wi"))//truefmt.Prin...

goku-api-gateway

高可用的微服务解决方案通过EOLINKERAPI网关,帮助企业进行API服务治理与API性能维护,降低IT运维的成本,提高系统灵活性,安全可靠地将企业内部系统通过微服务架构互相连接,为企业数字化赋能。          ...
代码星球 ·2020-10-02

Go语言开发的微服务框架

 Go语言开发的微服务框架有什么?  1、项目名称:Istio  项目简介:Istio是由Google、IBM和Lyft开源的微服务管理、保护和监控框架。使用istio可以很简单的创建具有负载均衡、服务间认证、监控等功能的服务网络,而不需要对服务的代码进行任何修改。  2、项目名称:Go-kit  项目简介:Go-ki...

go-kit 微服务 服务熔断(hystrix-go 实现)

对客户端请求login方法添加熔断在微服务架构中,每个服务都是相互关联的,比如我们下单服务和扣钱服务是分开的,现在扣钱服务出现的bug不能正常服务Hystrix可以让我们在在微服务架构中对服务间的调用进行控制,加入一些调用延迟或者服务降级的容错机制。对依赖服务调用时出现的调用延迟和调用失败进行控制和容错保护在复杂的分布...

雪崩利器 hystrix-go 源码分析

阅读源码的过程,就像是在像武侠小说里阅读武功秘籍一样,分析高手的一招一式,提炼出精髓,来增强自己的内力。之前的帖子说了一下微服务的雪崩效应和常见的解决方案,太水,没有上代码怎么叫解决方案。github上有很多开源的库来解决雪崩问题,比较出名的是Netflix的开源库hystrix。集流量控制、熔断、容错等于一身的jav...

hystrix-go简介

hystrix是一个容错库,旨在隔离指向远程系统,服务和第三方库的请求,杜绝级联故障,并在复杂的分布式系统中实现弹性,毕竟在分布式系统中,故障是不可避免的。此项目脱胎于由Netflix开源的同名java项目。https://github.com/Netflix/Hystrix像Hystrix命令一样执行代码定义依赖于外...
代码星球 ·2020-10-02

golang 函数作为参数传递(回调)

和其他很多语言一样,golang中函数也可以作为其它函数的参数进行传递,然后在其它函数内调用执行,一般称之为回调。语法:以函数签名作为主调函数的形参的类型,即传递一个指向函数的指针funcmain(){sayhello("john",addperfix)}funcaddperfix(perfix,namestring)...

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 channel select如何屏蔽已关闭通道

gochannelselect如何屏蔽已关闭通道(如果不屏蔽的话,select一直会处于选择状态)funcmain(){channel:=make(chanint,20)selectChannel(channel)getChannel(channel)time.Sleep(time.Hour)}funcselectCh...

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

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...

Go语言中的条件变量

Go语言syncpackage提供了条件变量(conditionvariable)类型:typeCondstruct{//LisheldwhileobservingorchangingtheconditionLLocker//containsfilteredorunexportedfields}typeCondfunc...

golang strings.NewReader

为什么说strings.Reader类型的值可以高效地读取字符串与strings.Builder类型恰恰相反,strings.Reader类型是为了高效读取字符串而存在的。后者的高效主要体现在它对字符串的读取机制上,它封装了很多用于在string值上读取内容的最佳实践。strings.Reader类型的值(以下简称Re...
代码星球 ·2020-10-02
首页上一页...5455565758...下一页尾页