垃圾回收(Garbage Collection,简称GC)是编程语言中提供的自动的内存管理机制,自动释放不需要的对象,让出存储器资源,无需程序员手动执行。 Golang中的垃圾回收主要应用三色标记法,GC过程和其他用户goroutine可并发运行,但需要一定时间的STW(stop the wor…
讲真的,其实我挺讨厌条件编译这个东西的,也许是因为工作中很少用到的原因,但最主要的是我接手维护的项目代码中有一堆条件编译标签,导致我的 Idea 加载代码后不能通过鼠标很好的追踪代码。 讨厌归讨厌,但是我们还是得了解这个东西。 Go语言的条件编译是由go/build包支持的,通过条件编译我们可以实现…
一、什么是粘包 “粘包”这个说法已经被诟病很久了,既然坊间流传这个说法咱们就沿用吧,关于这个问题比较准确的解释可以参考下面几点: TCP是流传输协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议 TCP没有包的概念,它只负责传输字节序列,UDP是面向数据报的协议,所以不存在拆包粘包问题 应该…
在使用主从集群时,我曾遇到过这样一个问题:我们的主从集群有 1 个主库、5 个从库和 3 个哨兵实例,在使用的过程中,我们发现客户端发送的一些数据丢失了,这直接影响到了业务层的数据可靠性。 通过一系列的问题排查,我们才知道,这其实是主从集群中的脑裂问题导致的。 所谓的脑裂,就是指在主从集群中,同时有…
Redis 的主从同步机制不仅可以让从库服务更多的读请求,分担主库的压力,而且还能在主库发生故障时,进行主从库切换,提供高可靠服务。 不过,在实际使用主从机制的时候,我们很容易踩到一些坑。这节课,我就向你介绍 3 个坑,分别是主从数据不一致、读到过期数据,以及配置项设置得不合理从而导致服务挂掉。 一…