分类: 代码实战

4 篇文章

Bitmap的设计实现及实战应用
大家估计都知道今天的主角Bitmap(位图)这个东西,也都知道它是一种非常有趣且鹅妹子嘤带点儿“黑科技”的数据结构,它能够用非常非常低的存储成本存储数据的状态,在这篇文章中,我将从0到1实现一个Bitmap,并基于Redis的Bitmap在实际应用场景中发挥Bitmap的优点。 实现一个Bitmap 原理与实现思路 我们首先来简单的再过一遍位图的原理,Bitmap是一种将每一个字节用到极致的数据结…
Window-TinyLFU缓存实现
在我的一个基于LSM-Tree结构的存储引擎项目中,由于LSM-Tree结构的查询操作高度依赖缓存,所以我需要一个高性能的本地缓存模块来提高查询效率,抱着学习的目的,我们来 重复造轮子 亲自实现一个拥有良好性能的缓存模块。 所谓缓存,本质上就是 映射+淘汰策略 ,如何在有限的空间存储最”有用“的数据,也就是如何设定淘汰策略往往是我们所需要关注的,在Redis中,我们很多时候都是用的TTL(Time…
Golang实现支持中间件的简易TCP框架
在golang的标准库中没有为tcp直接提供像http那样简单易用的服务框架,我们不妨自己手动实现一个 主体思路 我们的实现的主题思路分为以下四个内容 监听服务 获取构建新连接对象并设置超时时间及keepalive 设置方法退出时连接关闭 调用回调接口 TcpHandler 主要结构体和接口 首先是TCPServer的结构体,我们希望用户可以自由构建TcpServer并设置超时时间等自定义选项 t…
Golang实现四种负载均衡算法
负载均衡算法实现 在这篇文章中,我将实现最常见的四种负载均衡算法,即随机负载、轮询负载、加权负载和一致性hash负载 随机负载 随机挑选目标服务器ip type RandomBalance struct { curIndex int rss []string } // 添加新的服务ip func (r *RandomBalance) Add(params ...string) error { if…