随笔分类 -  go

上一页 1 2 3 4 5 6 7 8 ··· 16 下一页

golang中使用kafka
摘要:golang中比较好用的kafka client有 sarama confluent-kafka-go go_kafka_client optiopay-kafka siesta 其中 sarama的使用者应该是最多的, 然后还有一个sarama的cluster版本sarama-cluster 本文 阅读全文

posted @ 2021-07-01 11:36 ExplorerMan 阅读(553) 评论(0) 推荐(0)

最清晰易懂的 Go WaitGroup 源码剖析
摘要:本篇主要介绍 WaitGroup 的一些特性,让我们从本质上去了解 WaitGroup。关于 WaitGroup 的基本用法这里就不做过多介绍了。相对于《这可能是最容易理解的 Go Mutex 源码剖析》来说,WaitGroup 就简单的太多了。 源码剖析 Add() Wait() type Wai 阅读全文

posted @ 2021-06-11 10:37 ExplorerMan 阅读(81) 评论(0) 推荐(0)

这可能是最容易理解的 Go Mutex 源码剖析
摘要:上一篇文章《一文完全掌握 Go math/rand》,我们知道 math/rand 的 global rand 有一个全局锁,我的文章里面有一句话:“修复方案: 就是把 rrRand 换成了 globalRand, 在线上高并发场景下, 发现全局锁影响并不大.”, 有同学私聊我“他们遇到线上服务的锁 阅读全文

posted @ 2021-06-11 10:36 ExplorerMan 阅读(106) 评论(0) 推荐(0)

当 Go struct 遇上 Mutex
摘要:struct 是我们写 Go 必然会用到的关键字, 不过当 struct 遇上一些比较特殊类型的时候, 你注意过你的程序是否正常吗 ? 一段代码 type URL struct { Ip string Port string mux sync.RWMutex params url.Values } 阅读全文

posted @ 2021-06-11 10:35 ExplorerMan 阅读(91) 评论(0) 推荐(0)

Go sync.Pool 浅析
摘要:sync.Pool 应该是 Go 里面明星级别的数据结构,有很多优秀的文章都在介绍这个结构,本篇文章简单剖析下 sync.Pool。不过说实话 sync.Pool 并不是我们日常开发中使用频率很高的的并发原语。 尽管用的频率很低,但是不可否认的是 sync.Pool 确实是 Go 的杀手锏,合理使用 阅读全文

posted @ 2021-06-11 10:34 ExplorerMan 阅读(109) 评论(0) 推荐(0)

golang面向对象分析
摘要:说道面向对象(OOP)编程, 就不得不提到下面几个概念: 抽象 封装 继承 多态 其实有个问题Is Go An Object Oriented Language?, 随便谷歌了一下, 你就发现讨论这个的文章有很多: reddit google group 那么问题来了 Golang是OOP吗? 使用 阅读全文

posted @ 2021-06-11 10:33 ExplorerMan 阅读(65) 评论(0) 推荐(0)

一次错误使用 go-cache 导致出现的线上问题
摘要:话说一个美滋滋的上午, 突然就出现大量报警, 接口大量请求都响应超时了. 排查过程 查看服务器的监控系统, CPU, 内存, 负载等指标正常 排查日志, 日志能够响应的结果也正常. request.log 中响应时长高达数秒 查看数据库, codis 监控, 各项指标正常 不得已, 只能打开线上 p 阅读全文

posted @ 2021-06-11 10:32 ExplorerMan 阅读(396) 评论(0) 推荐(0)

Go timer 是如何被调度的?
摘要:本篇文章剖析下 Go 定时器的相关内容。定时器不管是业务开发,还是基础架构开发,都是绕不过去的存在,由此可见定时器的重要程度。 我们不管用 NewTimer, timer.After,还是 timer.AfterFun 来初始化一个 timer, 这个 timer 最终都会加入到一个全局 timer 阅读全文

posted @ 2021-06-11 10:31 ExplorerMan 阅读(65) 评论(0) 推荐(0)

Golang服务器热重启、热升级、热更新(safe and graceful hot-restart/reload http server)详解
摘要:服务端代码经常需要升级,对于线上系统的升级常用的做法是,通过前端的负载均衡(如nginx)来保证升级时至少有一个服务可用,依次(灰度)升级。 而另一种更方便的方法是在应用上做热重启,直接更新源码、配置或升级应用而不停服务。 这个功能在重要业务上尤为重要,会影响服务可用性、用户体验。 原理 热重启的原 阅读全文

posted @ 2021-05-31 18:01 ExplorerMan 阅读(1902) 评论(0) 推荐(0)

最终,为什么选择go-kit
摘要:转载请附上原文地址:http://www.jianshu.com/p/0c34a75569b1,谢谢! 前言 工作这些年,先后经历过两家公司,有参与过php语言框架的开发和主导过go语言技术栈的落地工作,在此过程中有一些感悟和总结。我想以之前我主导的go语言技术栈为线索,来陈述当时遇到的一些问题,以 阅读全文

posted @ 2021-05-29 18:58 ExplorerMan 阅读(543) 评论(0) 推荐(0)

Gorilla
摘要:Gorilla 是 Go 语言的 Web 工具包,包含模块如下: gorilla/context 存储全局的请求变量 gorilla/mux 是一个强大的 URL 路由器和分发器 gorilla/reverse 产生可逆的正则表达式muxes regexp的基础。 gorilla/rpc 实现 RP 阅读全文

posted @ 2021-05-28 16:02 ExplorerMan 阅读(778) 评论(0) 推荐(0)

nginx反向代理GRPC
摘要:Nginx 1.13.10新增了对GRPC的原生支持。 安装Nginx Nginx版本要求:1.13.10+ gRPC必须使用HTTP/2传输数据,支持明文和TLS加密数据,支持流数据的交互。这是为了充分利用 HTTP/2 连接的多路复用和流式特性。所以在安装部署nginx时需要安装http/2。使 阅读全文

posted @ 2021-05-17 15:33 ExplorerMan 阅读(1130) 评论(0) 推荐(0)

一次 Go 程序 out of memory 排查及反思
摘要:前言# 最近在搞数据导出模块,在测试大文件下载的过程中,报了 Out of memory (OOM) 错误,因为之前没有遇到过这类问题,导致此次排查问题花费了大半天,也走了不少弯路,特此复盘记录。 现象描述# 和往常一样复制粘贴完最后一个下载接口,没什么问题的话,导出模块就可以收工了。 上服务器部署 阅读全文

posted @ 2021-05-13 15:07 ExplorerMan 阅读(435) 评论(0) 推荐(0)

【GoLang】golang context channel 详解
摘要:package main import ( "fmt" "time" "golang.org/x/net/context") func main() { // ctx, cancelFunc := context.WithDeadline(context.Background(), time.Now 阅读全文

posted @ 2021-04-26 11:44 ExplorerMan 阅读(234) 评论(0) 推荐(0)

用DD命令制作硬盘镜像
摘要:用DD命令制作硬盘镜像 本文参考http://serverfault.com/questions/4906/using-dd-for-disk-cloning写出,转载时请说明出处。 以下的说明都是针对备份整个硬盘,而不是备份某一个分区。 一、用DD命令制作硬盘镜像的特点 (1)在制作镜像时,不能对 阅读全文

posted @ 2021-04-23 15:30 ExplorerMan 阅读(5084) 评论(0) 推荐(0)

golang 中, os.exit() runtime.Goexit() return 有什么区别
摘要:return结束当前函数,并返回指定值runtime.Goexit结束当前goroutine,其他的goroutine不受影响,主程序也一样继续运行os.Exit会结束当前程序,不管你三七二十一 Gosched 暂停当前goroutine,使其他goroutine先行运算。只是暂停,不是挂起,当时间 阅读全文

posted @ 2021-04-23 15:04 ExplorerMan 阅读(1730) 评论(0) 推荐(0)

Golang 协程控制关闭
摘要:部分代码参考:https://zhuanlan.zhihu.com/p/26695984 这边文章的的 package main import ( "context" "fmt" "time") func main() { ctx := context.Background() ctx, cance 阅读全文

posted @ 2021-04-23 15:00 ExplorerMan 阅读(936) 评论(0) 推荐(0)

Redis主从集群切换数据丢失问题
摘要:一、数据丢失的情况 异步复制同步丢失集群产生脑裂数据丢失 1.异步复制丢失对于Redis主节点与从节点之间的数据复制,是异步复制的,当客户端发送写请求给master节点的时候,客户端会返回OK,然后同步到各个slave节点中。如果此时master还没来得及同步给slave节点时发生宕机,那么mast 阅读全文

posted @ 2021-04-23 11:07 ExplorerMan 阅读(658) 评论(0) 推荐(0)

Goroutine(协程)的理解
摘要:title: Goroutine(协程)的理解tags: Go,GoroutineAuthor: Clown95 并发概念 Go语言相对于其他语言的最大一个特色就是支持高并发编程模式。Goroutine(协程)是Go中最基本的执行单元。事实上每一个Go程序至少有一个Goroutine:主Gorout 阅读全文

posted @ 2021-04-21 10:26 ExplorerMan 阅读(372) 评论(0) 推荐(0)

堆和栈的概念和区别
摘要:在说堆和栈之前,我们先说一下JVM(虚拟机)内存的划分: Java程序在运行时都要开辟空间,任何软件在运行时都要在内存中开辟空间,Java虚拟机运行时也是要开辟空间的。JVM运行时在内存中开辟一片内存区域,启动时在自己的内存区域中进行更细致的划分,因为虚拟机中每一片内存处理的方式都不同,所以要单独进 阅读全文

posted @ 2021-04-21 10:24 ExplorerMan 阅读(441) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 ··· 16 下一页

导航