2021年6月11日

Kafka auto.offset.reset值详解

摘要: 昨天在写一个java消费kafka数据的实例,明明设置auto.offset.reset为earliest,但还是不从头开始消费,官网给出的含义太抽象了。earliest: automatically reset the offset to the earliest offset,自动将偏移量置为最 阅读全文

posted @ 2021-06-11 17:34 ExplorerMan 阅读(192) 评论(0) 推荐(0) 编辑

最清晰易懂的 Go WaitGroup 源码剖析

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

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

这可能是最容易理解的 Go Mutex 源码剖析

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

posted @ 2021-06-11 10:36 ExplorerMan 阅读(97) 评论(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 阅读(84) 评论(0) 推荐(0) 编辑

Go sync.Pool 浅析

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

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

golang面向对象分析

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

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

一次错误使用 go-cache 导致出现的线上问题

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

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

Go timer 是如何被调度的?

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

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

导航