# 代码随想录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的部分截图:
# 下载方式
本PDF文档仅为星球内部专享,大家可以加入知识星球 (opens new window)里获取PDF。
这里给出10元代金券,领代金券加入。
如果确实想白嫖文档,知识星球支持三天内全额退款,可以进去领完PDF再退款(大实话了),退款方式在知识星球APP右上角。(全程无套路)
已经有近2w录友加入了知识星球,方向比努力更重要,一群人可以走的更远!
@2021-2024 代码随想录 版权所有 粤ICP备19156078号