Zlog
Preview Image

Go常见设计模式

设计模式是为了语言擦屁股。不同语言由于自身优劣不同,常见的设计模式及其实现有些小差别。 Go的思想是“组合优于继承”,不依托于复杂的类层次来实现多态,推荐使用Interface、高阶函数(行为参数化)、Goroutine/Channel 来实现各类设计模式。 策略模式 与大多数oop语言相同,go策略模式也依托于接口来实现。 在实际工程中,我们经常会搭配策略模式和简单工厂模式。对于不...

分布式 ID 生成方案:原理、差异与落地经验

这篇文稿讲什么 读完之后,你能搞清楚五种主流 ID 方案的内部结构(精确到每一个 bit),理解它们为什么这样设计,知道每种方案的性能边界和踩坑点,并且能在面试中把任何一个方案讲到第三层追问。 背景问题 在单机单表时代,MySQL 的 AUTO_INCREMENT(自增)够用了——数据库帮你管顺序,你什么都不用操心。 但当你面对这些问题时,自增就不够了: 多个数据库实例同...

从零理解 IO 多路复用和 Epoll——结合 Redis 实战讲解

这篇文章讲什么 用一篇文章把三个东西串起来讲清楚:IO 多路复用是什么、Epoll 为什么比 select/poll 强、Redis 怎么用这些机制做到单线程扛住几万并发连接。 读完你能回答:为什么 Redis 单线程还这么快?Epoll 到底快在哪?”IO 多路复用”里的”复用”到底复用了什么? 先搞清楚问题:一个服务端怎么同时跟多个客户端聊天? 写个最简单的 Echo 服务—...