51
Dev开发社区
首页
文章
问答
工具
搜索
登录
注册
#GO
Go语言的那些坑
Golang是我最喜欢的一门语言,它简洁、高效、易学习、开发效率高、还可以编译成机器码…虽然它一出世,就饱受关注,而且现在在市面上逐渐流行开来,但是,它毕竟是一门新兴语言,还有很多让人不太习惯的地方(即坑,(^__^)),我作为新手,一边学习,一边踩坑,希望对其他人有借鉴作用。文件名字不要轻易以__tes...
代码星球
·
2020-10-02
Go
语言
那些
go语言标准库sync/atomic中的原子操作
原子操作吧其他同步技术更底层。他们没有锁,基本是在硬件层面实现的。事实上,他们经常被用来实现其他同步技术。请注意,下面的许多例子并发并发编程。他们仅用于来展示如何使用标准库中的sync/atomic包中的原子函数。标准库中的sync/atomic对整数类型T(包含int32,int64,uint32,uint64,ui...
代码星球
·
2020-10-02
go
语言
标准
sync
atomic
理解 Go 标准库中的 atomic.Value 类型
在Go语言标准库中,sync/atomic包将底层硬件提供的原子操作封装成了Go的函数。但这些操作只支持几种基本数据类型,因此为了扩大原子操作的适用范围,Go语言在1.4版本的时候向sync/atomic包中添加了一个新的类型Value。此类型的值相当于一个容器,可以被用来“原子地"存储(Store)和加载...
代码星球
·
2020-10-02
理解
Go
标准
中的
atomic.Value
go-redis 源码分析:连接池
笔者最近在项目中基于go-redis实现Redis缓存优化性能。go-redis是一个Go语言实现的Redis客户端,既然是网络服务的客户端,为了高效利用有限资源,避免重复创建和销毁网络连接,就必需对其进行管理。而资源管理又是编程领域中的一个重点难点,抱着对是否能利用Go语言语法简洁的特点来优雅实现连接池的好奇,笔者决...
代码星球
·
2020-10-02
go-redis
源码
分析
连接
golang 中 sync.Mutex 和 sync.RWMutex
golang中的sync包实现了两种锁:Mutex:互斥锁RWMutex:读写锁,RWMutex基于Mutex实现Mutex为互斥锁,Lock()加锁,Unlock()解锁在一个goroutine获得Mutex后,其他goroutine只能等到这个goroutine释放该Mutex使用Lock()加锁后,不能再继续对其...
代码星球
·
2020-10-02
golang
sync.Mutex
sync.RWMutex
Golang 调用 aws-sdk 操作 S3对象存储
因为业务问题,要写一个S3对象存储管理代码,由于一直写Go,所以这次采用了Go,Go嘛,快,自带多线程,这种好处就不用多说了吧。查看S3中包含的bucketbucket中的文件/文件夹bucket的删除bucket的创建bucket的文件上传bucket的文件下载bucket的文件删除玩Golang你还能不会那啥?对吧...
代码星球
·
2020-10-02
Golang
调用
aws-sdk
操作
S3
golang 之 context包
概述 context是Go中广泛使用的程序包,由Google官方开发,在1.7版本引入。它用来简化在多个goroutine传递上下文数据、(手动/超时)中止routine树等操作,比如,官方http包使用context传递请求的上下文数据,gRpc使用context来终止某个请求产生的routin...
代码星球
·
2020-10-02
golang
context
Golang gRPC中间件:拦截器链接,验证,日志记录,重试等
gRPCGo Middleware:interceptors,helpers,utilities.gRPCGo recentlyacquiredsupportforInterceptors,i.e. middleware thatisexecutedeitheronthegRPC...
代码星球
·
2020-10-02
Golang
gRPC
中间件
拦截
链接
golang grpc UnaryServerInterceptor用法
有的时候,当进行grpc调用的时候,并不希望客户端与服务端建立连接后直接就进入对应的方法体内。比如需要验证签名来确认客户端的身份,再执行相应的方法。这个时候就可以哟拿到Interceptor。 拦截器的分类在gRPC中有两种拦截器UnaryInterceptor和StreamInterceptor,其中Una...
代码星球
·
2020-10-02
golang
grpc
UnaryServerInterceptor
用法
Go微服务全链路跟踪详解
在微服务架构中,调用链是漫长而复杂的,要了解其中的每个环节及其性能,你需要全链路跟踪。它的原理很简单,你可以在每个请求开始时生成一个唯一的ID,并将其传递到整个调用链。该ID称为CorrelationID¹,你可以用它来跟踪整个请求并获得各个调用环节的性能指标。简单来说有两个问题需要解决。第一,如何在应用程序...
代码星球
·
2020-10-02
Go
服务
链路
跟踪
详解
Beego进程内监控
进程内监控默认监控是关闭的,你可以通过设置参数配置开启监控:EnableAdmin=true而且你还可以修改监听的地址和端口:AdminAddr="localhost"AdminPort=8088打开浏览器,输入URL:http://localhost:8088/,你会看到一句欢迎词:WelcometoAdminDas...
代码星球
·
2020-10-02
Beego
进程
监控
golang高性能日志库zap配置示例
zap是uber开源的Go高性能日志库,gitlab地址goget-ugo.uber.org/zap请注意,zap仅支持两个最新的Go版本。简单示例格式化输出packagemainimport("go.uber.org/zap""time")funcmain(){//zap.NewDevelopment格式化输出log...
代码星球
·
2020-10-02
golang
高性能
日志
zap
配置
golang日志框架之logrus
golang日志库golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数对于更精细的日志级别、日志文件分割以及日志分发等方面并没有提供支持。所以催生了很多第三方的日志库,但是在golang的世界里,没有一个日志库像slf4j那样在Java中具有绝对统治地位。golang中,流行的日志...
代码星球
·
2020-10-02
golang
日志
框架
logrus
Go协程、并发、信道
Go通过协程实现并发,协程之间靠信道通信并行其实很好理解,就是同时执行的意思,在某一时间点能够执行多个任务。想达到并行效果,最简单的方式就是借助多线程或多进程,这样才可在同一时刻执行多个任务。单线程是永远无法达到并行状态的。例,"合作并行开发某个项目"并发是在某一时间段内可以同时处理多个任务。我们通常会说程序是并发设计...
代码星球
·
2020-10-02
Go
协程
并发
信道
golang删除数组某个元素
golang中对一个slice进行“slice”可以取片段得到一个新的slice,那么如何用简洁的代码删除slice中的一个元素呢?a:=[]int{0,1,2,3,4}//删除第i个元素i:=2a=append(a[:i],a[i+1:]...)作者:krystollia链接:https://...
代码星球
·
2020-10-02
golang
删除
数组
某个
元素
首页
上一页
...
56
57
58
59
60
...
下一页
尾页
按字母分类:
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
其他