随笔分类 -  go

上一页 1 ··· 7 8 9 10 11 12 13 14 15 16 下一页

go语言标准库sync/atomic中的原子操作
摘要:原子操作吧其他同步技术更底层。他们没有锁,基本是在硬件层面实现的。事实上,他们经常被用来实现其他同步技术。 请注意,下面的许多例子并发并发编程。他们仅用于来展示如何使用标准库中的sync/atomic包中的原子函数。 go语言中的原子操作概览 标准库中的sync/atomic对整数类型T(包含int 阅读全文

posted @ 2020-03-02 18:19 ExplorerMan 阅读(485) 评论(0) 推荐(0) 编辑

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

posted @ 2020-03-02 17:56 ExplorerMan 阅读(979) 评论(0) 推荐(0) 编辑

go-redis 源码分析:连接池
摘要:笔者最近在项目中基于 go-redis 实现 Redis 缓存优化性能。go-redis 是一个 Go 语言实现的 Redis 客户端,既然是网络服务的客户端,为了高效利用有限资源,避免重复创建和销毁网络连接,就必需对其进行管理。而资源管理又是编程领域中的一个重点难点,抱着对是否能利用 Go 语言语 阅读全文

posted @ 2020-03-02 17:33 ExplorerMan 阅读(1696) 评论(0) 推荐(0) 编辑

golang 中 sync.Mutex 和 sync.RWMutex
摘要:介绍 golang 中的 sync 包实现了两种锁: Mutex:互斥锁 RWMutex:读写锁,RWMutex 基于 Mutex 实现 Mutex(互斥锁) Mutex 为互斥锁,Lock() 加锁,Unlock() 解锁 在一个 goroutine 获得 Mutex 后,其他 goroutine 阅读全文

posted @ 2020-03-02 17:24 ExplorerMan 阅读(432) 评论(0) 推荐(0) 编辑

Golang 调用 aws-sdk 操作 S3对象存储
摘要:前言 因为业务问题,要写一个S3对象存储管理代码,由于一直写Go,所以这次采用了Go,Go嘛,快,自带多线程,这种好处就不用多说了吧。 基础的功能 查看S3中包含的bucket bucket中的文件/文件夹 bucket的删除 bucket的创建 bucket的文件上传 bucket的文件下载 bu 阅读全文

posted @ 2020-02-18 18:38 ExplorerMan 阅读(4546) 评论(0) 推荐(0) 编辑

grpc proto字段对应
摘要:数据类型 这里直接引用官方文档的描述: .protoC++JavaPythonGoRubyC# double double double float float64 Float double float float float float float32 Float float int32 int3 阅读全文

posted @ 2020-02-12 21:14 ExplorerMan 阅读(1718) 评论(0) 推荐(0) 编辑

Go Context
摘要:1、什么是Context Context通常被译作上下文,它是一个比较抽象的概念。在公司技术讨论时也经常会提到上下文。一般理解为程序单元的一个运行状态、现场、快照,而翻译中上下又很好地诠释了其本质,上下上下则是存在上下层的传递,上会把内容传递给下。在Go语言中,程序单元也就指的是Goroutine。 阅读全文

posted @ 2020-02-07 14:36 ExplorerMan 阅读(260) 评论(0) 推荐(0) 编辑

golang 之 context包
摘要:概述 context是Go中广泛使用的程序包,由Google官方开发,在1.7版本引入。它用来简化在多个go routine传递上下文数据、(手动/超时)中止routine树等操作,比如,官方http包使用context传递请求的上下文数据,gRpc使用context来终止某个请求产生的routin 阅读全文

posted @ 2020-02-07 14:29 ExplorerMan 阅读(353) 评论(0) 推荐(0) 编辑

Golang gRPC中间件:拦截器链接,验证,日志记录,重试等
摘要:gRPC Go Middleware: interceptors, helpers, utilities. Middleware gRPC Go recently acquired support for Interceptors, i.e. middleware that is executed 阅读全文

posted @ 2020-02-06 18:41 ExplorerMan 阅读(2572) 评论(0) 推荐(0) 编辑

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

posted @ 2020-02-06 18:38 ExplorerMan 阅读(1555) 评论(0) 推荐(0) 编辑

Go微服务全链路跟踪详解
摘要:在微服务架构中,调用链是漫长而复杂的,要了解其中的每个环节及其性能,你需要全链路跟踪。 它的原理很简单,你可以在每个请求开始时生成一个唯一的ID,并将其传递到整个调用链。 该ID称为CorrelationID¹,你可以用它来跟踪整个请求并获得各个调用环节的性能指标。简单来说有两个问题需要解决。第一, 阅读全文

posted @ 2020-02-06 18:22 ExplorerMan 阅读(610) 评论(0) 推荐(0) 编辑

Beego进程内监控
摘要:进程内监控 默认监控是关闭的,你可以通过设置参数配置开启监控: EnableAdmin = true 而且你还可以修改监听的地址和端口: AdminAddr = "localhost" AdminPort = 8088 打开浏览器,输入 URL:http://localhost:8088/,你会看到 阅读全文

posted @ 2020-02-06 17:25 ExplorerMan 阅读(1036) 评论(0) 推荐(0) 编辑

zap+日志分级分文件+按时间切割日志整合demo
摘要:实现功能 info debug 级别的日志输出到 /path/log/demo.log warn error .... 级别的日志输出到 /path/log/demo_error.log 日志自动按小时分割 最多保留7天的日志 依赖的第三方包github地址 https://github.com/u 阅读全文

posted @ 2020-02-05 18:30 ExplorerMan 阅读(1319) 评论(0) 推荐(0) 编辑

golang高性能日志库zap配置示例
摘要:zap是uber开源的Go高性能日志库,gitlab地址 安装 go get -u go.uber.org/zap 请注意,zap仅支持两个最新的Go版本。 示例 简单示例 格式化输出 package main import ( "go.uber.org/zap" "time" ) func mai 阅读全文

posted @ 2020-02-05 17:42 ExplorerMan 阅读(2316) 评论(0) 推荐(0) 编辑

Gin 框架 - 使用 logrus 进行日志记录
摘要:目录 概述 日志格式 Logrus 使用 推荐阅读 概述 上篇文章分享了 Gin 框架的路由配置,这篇文章分享日志记录。 查了很多资料,Go 的日志记录用的最多的还是 github.com/sirupsen/logrus。 Logrus is a structured logger for Go ( 阅读全文

posted @ 2020-02-05 16:41 ExplorerMan 阅读(315) 评论(0) 推荐(0) 编辑

golang日志框架之logrus
摘要:golang日志库golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数对于更精细的日志级别、日志文件分割以及日志分发等方面并没有提供支持。所以催生了很多第三方的日志库,但是在golang的世界里,没有一个日志库像slf4j那样在Java中具有绝对统治地位。gol 阅读全文

posted @ 2020-02-05 16:38 ExplorerMan 阅读(1065) 评论(0) 推荐(0) 编辑

Go协程、并发、信道
摘要:Go 通过协程实现并发,协程之间靠信道通信 1.1 并发、并行是什么? 并行其实很好理解,就是同时执行的意思,在某一时间点能够执行多个任务。 想达到并行效果,最简单的方式就是借助多线程或多进程,这样才可在同一时刻执行多个任务。单线程是永远无法达到并行状态的。例,"合作并行开发某个项目" 并发是在某一 阅读全文

posted @ 2020-02-05 15:48 ExplorerMan 阅读(551) 评论(0) 推荐(0) 编辑

golang删除数组某个元素
摘要:golang中对一个slice进行“slice”可以取片段得到一个新的slice,那么如何用简洁的代码删除slice中的一个元素呢? a := []int{0, 1, 2, 3, 4} //删除第i个元素 i := 2 a = append(a[:i], a[i+1:]...) 作者:krystol 阅读全文

posted @ 2020-01-12 23:50 ExplorerMan 阅读(6254) 评论(0) 推荐(0) 编辑

golang用通道实现信号量,控制并发个数
摘要:func main() { var wg sync.WaitGroup sem := make(chan struct{}, 2) // 最多允许2个并发同时执行 taskNum := 10 for i := 0; i < taskNum; i++ { wg.Add(1) go func(id int) { ... 阅读全文

posted @ 2020-01-12 23:09 ExplorerMan 阅读(864) 评论(0) 推荐(0) 编辑

golang channel 用法
摘要:一、Golang并发基础理论 Golang在并发设计方面参考了C.A.R Hoare的CSP,即Communicating Sequential Processes并发模型理论。但就像John Graham-Cumming所说的那样,多数Golang程序员或爱好者仅仅停留在“知道”这一层次,理解CS 阅读全文

posted @ 2020-01-12 21:04 ExplorerMan 阅读(392) 评论(0) 推荐(0) 编辑

上一页 1 ··· 7 8 9 10 11 12 13 14 15 16 下一页

导航