# 代码随想录go项目精讲
这次我们正式发布Go项目精讲!
关于go的学习路线以及go的学习资料可以看星球里这个帖子:https://t.zsxq.com/0fBUeHzhC
本篇项目文档,将包含两个Go项目,分别是: 仿极客兔兔分布式缓存、 kv存储 ,文档重点围绕如何吃透这个项目、深挖的点、面试常问问题和解答。
仿极客兔兔分布式缓存,项目原地址:https://geektutu.com/post/geecache.html
在其基础上,可以做一些拓展优化,如:
- 将单独
lru算法实现改成多种算法可选(容易实现且lru, lfu都是经典算法,方便顺便考察算法能力) - 将
http通信改为rpc通信提高网络通信效率(方便引出rpc相关问题) - 细化锁的粒度来提高并发性能
 - 实现热点互备来避免
hot key频繁请求网络影响性能(groupcache中提出的优化) - 加入
etcd进行分布式节点的监测实现节点的动态管理(能拓展出大量分布式问题,etcd作为常见组件在面试中也很能聊) - 加入缓存过期机制,自动清理超时缓存
 
kv存储,项目源地址:https://github.com/roseduan/rosedb
项目常见问题:
- 这个项目有什么优点?
 - 介绍一下bitcask模型
 - 了解LSM树么
 - 内存映射(mmap)是什么?
 - 做项目的过程中有没有什么自己的想法?
 - merge操作如何进行?还可以继续优化么?
 - 服务端客户端命令行如何实现的?
 - 项目中用到了跳表,为什么用,怎么实现的?
 - 跳表重点问题(从选择跳表到跳表实现中的细节,如果自己写跳表一定要搞懂):
 
「代码随想录项目精讲-go项目PDF」目录如下:
- 仿极客兔兔分布式缓存
- 前言
 - 相关的参考项目
 - 相关参考资料
 - 项目介绍
- Group模块
 - 缓存模块
 - byteview 模块
 - 分布式一致性模块
 - 读流程:
 
 
 - 项目面试相关问题
- 缓存相关
- 去设计一个分布式缓存系统要从哪些方面考虑?
 - 缓存雪崩,击穿,穿透分别是什么,如何应对?
 - 你的项目中如何应对缓存雪崩和缓存击穿问题?
 - 了解的缓存淘汰策略有哪些?
 
 - 一致性哈希相关问题
- 什么是一致性哈希?为什么在项目中要使用它?
 - 如何保证一致性哈希算法的有效性?
 - 一致性哈希算法中的虚拟节点是什么?它们的作用是什么?
 - 虚拟节点怎么实现的?查找目标 key 的过程是怎样的?
 
 - etcd 相关问题 (如果用到了 etcd 一定要准备相关问题)
- 为什么要使用 etcd,怎么用的?
 - Raft 算法
 - etcd 是如何保证强一致性的呢
 - etcd分布式锁实现的基础机制是怎样的
 - 能说一说用 etcd 时它处理请求的流程是怎样的吗
 
 
 - 缓存相关
 - kv存储
- 前言
 - 所需要的基础知识
 - 相关参考资料
 - 项目的简要介绍
 - 项目模块和结构组织分析
- mindb
 - storage
 - index
 - datastruct
 - cmd
 - bench
 
 - 项目面试相关问题
- 这个项目有什么优点?
 - 介绍一下bitcask模型
 - 了解LSM树么
 - 内存映射(mmap)是什么?
 - 做项目的过程中有没有什么自己的想法?
 - merge操作如何进行?还可以继续优化么?
 - 服务端客户端命令行如何实现的?
 - 项目中用到了跳表,为什么用,怎么实现的?
 - 跳表重点问题(从选择跳表到跳表实现中的细节,如果自己写跳表一定要搞懂):
- 刚刚说到了
redis,为什么redis的zset用跳表实现而不是红黑树? - 跳表索引的动态更新是怎样做的?
 - 跳表的高度控制策略是怎样的?
 - 既然跳表的平衡是随机算法控制的,那如何保证
O(logn)的复杂度? 
 - 刚刚说到了
 
 
 
来看看PDF的部分截图:







# 下载方式
本文档仅为星球内部专享,大家可以加入知识星球里获取,在星球置顶一:
加入星球后可以获取全部项目文档和八股资料!。


这里给出10元代金券,领代金券加入,代码随想录知识星球支持三天内(72h)可以全额退款。

加入知识星球后,记得加如下微信,发动付款截图,拉你到星球交流群:

@2021-2024 代码随想录 版权所有 粤ICP备19156078号