C++

理解 Go 标准库中的 atomic.Value 类型

在Go语言标准库中,sync/atomic包将底层硬件提供的原子操作封装成了Go的函数。但这些操作只支持几种基本数据类型,因此为了扩大原子操作的适用范围,Go语言在1.4版本的时候向sync/atomic包中添加了一个新的类型Value。此类型的值相当于一个容器,可以被用来“原子地"存储(Store)和加载...

go语言标准库sync/atomic中的原子操作

原子操作吧其他同步技术更底层。他们没有锁,基本是在硬件层面实现的。事实上,他们经常被用来实现其他同步技术。请注意,下面的许多例子并发并发编程。他们仅用于来展示如何使用标准库中的sync/atomic包中的原子函数。标准库中的sync/atomic对整数类型T(包含int32,int64,uint32,uint64,ui...

golang 中 sync.Mutex 和 sync.RWMutex

golang中的sync包实现了两种锁:Mutex:互斥锁RWMutex:读写锁,RWMutex基于Mutex实现Mutex为互斥锁,Lock()加锁,Unlock()解锁在一个goroutine获得Mutex后,其他goroutine只能等到这个goroutine释放该Mutex使用Lock()加锁后,不能再继续对其...
代码星球·2020-10-02

grpc proto字段对应

这里直接引用官方文档的描述:.protoC++JavaPythonGoRubyC#doubledoubledoublefloatfloat64Floatdoublefloatfloatfloatfloatfloat32Floatfloatint32int32intintint32FixnumorBignumintint...
代码星球·2020-10-02

Golang gRPC中间件:拦截器链接,验证,日志记录,重试等

gRPCGo Middleware:interceptors,helpers,utilities.gRPCGo recentlyacquiredsupportforInterceptors,i.e. middleware thatisexecutedeitheronthegRPC...

golang 之 context包

概述  context是Go中广泛使用的程序包,由Google官方开发,在1.7版本引入。它用来简化在多个goroutine传递上下文数据、(手动/超时)中止routine树等操作,比如,官方http包使用context传递请求的上下文数据,gRpc使用context来终止某个请求产生的routin...
代码星球·2020-10-02

golang grpc UnaryServerInterceptor用法

有的时候,当进行grpc调用的时候,并不希望客户端与服务端建立连接后直接就进入对应的方法体内。比如需要验证签名来确认客户端的身份,再执行相应的方法。这个时候就可以哟拿到Interceptor。 拦截器的分类在gRPC中有两种拦截器UnaryInterceptor和StreamInterceptor,其中Una...

golang channel 用法

一、Golang并发基础理论Golang在并发设计方面参考了C.A.RHoare的CSP,即CommunicatingSequentialProcesses并发模型理论。但就像JohnGraham-Cumming所说的那样,多数Golang程序员或爱好者仅仅停留在“知道”这一层次,理解CSP理论...
代码星球·2020-10-02

Go gRPC 调试工具

目录概述写一个gRPCAPIgrpcui使用go-gin-api系列文章最近这段时间工作挺忙的,发现已经3周没更文了...感谢你们还在,今天给大家分享一款gRPC的调试工具。进入正题。当我们在写HTTP接口的时候,使用的是Postman进行接口调试,那么在写gRPC接口的时候,有没有类似于Postman的调试工具呢?这...
代码星球·2020-10-02

使用go tool pprof分析内存泄漏、CPU消耗

go中提供了pprof包来做代码的性能监控,在两个地方有包:net/http/pprofruntime/pprof其实net/http/pprof中只是使用runtime/pprof包来进行封装了一下,并在http端口上暴露出来。如果你的go程序是用http包启动的web服务器,想要查看自己的web服务器的状态。这个时...

Golang gRPC实践 连载一 gRPC介绍与安装

Ahighperformance,opensource,generalRPCframeworkthatputsmobileandHTTP/2first.——gRPCWebsitegRPC 是一个高性能、开源、通用的RPC框架,由Google推出,基于HTTP/2协议标准设计开发,默认采...

Golang gRPC实践 连载三 Protobuf语法

gRPC推荐使用proto3,本节只介绍常用语法,更多高级使用姿势请参考官方文档一个message类型定义描述了一个请求或相应的消息格式,可以包含多种类型字段。例如定义一个搜索请求的消息格式,每个请求包含查询字符串、页码、每页数目。syntax="proto3";messageSearchRequest{stringq...

Golang gRPC实践 连载四 gRPC认证

gRPC默认提供了两种认证方式:基于SSL/TLS认证方式远程调用认证方式两种方式可以混合使用这里直接扩展hello项目,实现TLS认证机制首先需要准备证书,在hello目录新建keys目录用于存放证书文件。制作私钥(.key)#Keyconsiderationsforalgorithm"RSA"≥2048-bi...

Golang gRPC实践 连载七 HTTP协议转换

正当有这个需求的时候,就看到了这个实现姿势。源自coreos的一篇博客,转载到了grpc官方博客gRPCwithRESTandOpenAPIs。etcd3改用grpc后为了兼容原来的api,同时要提供http/json方式的API,为了满足这个需求,要么开发两套API,要么实现一种转换机制,他们选择了后者,而我们选择跟...

Golang gRPC实践 连载六 内置Trace

grpc默认提供了客户端和服务端的trace日志,可惜没有提供自定义接口,当前只能查看基本的事件日志和请求日志,对于基本的请求状态查看也是很有帮助的,客户端与服务端基本一致,这里已服务端开启trace为例,修改hello项目的server代码:server/main.gopackagemainimport("net""...