Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wushizhenking
CS-Notes
提交
c5794c99
C
CS-Notes
项目概览
wushizhenking
/
CS-Notes
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
CS-Notes
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
c5794c99
编写于
5月 19, 2019
作者:
I
imhuster
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
解决冲突
上级
901d62e0
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
15 addition
and
6 deletion
+15
-6
docs/notes/缓存.md
docs/notes/缓存.md
+15
-6
未找到文件。
docs/notes/缓存.md
浏览文件 @
c5794c99
*
[
点击阅读面试进阶指南
](
https://github.com/CyC2018/Backend-Interview-Guide
)
<!-- GFM-TOC -->
<!-- GFM-TOC -->
*
[
一、缓存特征
](
#一缓存特征
)
*
[
二、LRU
](
#二lru
)
*
[
三、缓存位置
](
#三缓存位置
)
...
...
@@ -8,7 +7,7 @@
*
[
六、数据分布
](
#六数据分布
)
*
[
七、一致性哈希
](
#七一致性哈希
)
*
[
参考资料
](
#参考资料
)
<!-- GFM-TOC -->
<!-- GFM-TOC -->
# 一、缓存特征
...
...
@@ -31,6 +30,8 @@
-
LRU(Least Recently Used):最近最久未使用策略,优先淘汰最久未使用的数据,也就是上次被访问时间距离现在最久的数据。该策略可以保证内存中的数据都是热点数据,也就是经常被访问的数据,从而保证缓存命中率。
-
LFU(Least Frequently Used):最不经常使用策略,优先淘汰一段时间内使用次数最少的数据。
# 二、LRU
以下是基于 双向链表 + HashMap 的 LRU 算法实现,对算法的解释如下:
...
...
@@ -211,7 +212,7 @@ CDN 主要有以下优点:
-
通过部署多台服务器,从而提高系统整体的带宽性能;
-
多台服务器可以看成是一种冗余机制,从而具有高可用性。
<div
align=
"center"
>
<img
src=
"
pics
/15313ed8-a520-4799-a300-2b6b36be314f.jpg"
/>
</div><br>
<div
align=
"center"
>
<img
src=
"
https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com
/15313ed8-a520-4799-a300-2b6b36be314f.jpg"
/>
</div><br>
# 五、缓存问题
...
...
@@ -260,6 +261,8 @@ CDN 主要有以下优点:
-
减少网络通信次数;
-
降低接入成本,使用长连/连接池,NIO 等。
# 六、数据分布
## 哈希分布
...
...
@@ -285,11 +288,11 @@ Distributed Hash Table(DHT) 是一种哈希分布方式,其目的是为了
将哈希空间 [0, 2
<sup>
n
</sup>
-1] 看成一个哈希环,每个服务器节点都配置到哈希环上。每个数据对象通过哈希取模得到哈希值之后,存放到哈希环中顺时针方向第一个大于等于该哈希值的节点上。
<div
align=
"center"
>
<img
src=
"
pics
/68b110b9-76c6-4ee2-b541-4145e65adb3e.jpg"
/>
</div><br>
<div
align=
"center"
>
<img
src=
"
https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com
/68b110b9-76c6-4ee2-b541-4145e65adb3e.jpg"
/>
</div><br>
一致性哈希在增加或者删除节点时只会影响到哈希环中相邻的节点,例如下图中新增节点 X,只需要将它前一个节点 C 上的数据重新进行分布即可,对于节点 A、B、D 都没有影响。
<div
align=
"center"
>
<img
src=
"
pics
/66402828-fb2b-418f-83f6-82153491bcfe.jpg"
/>
</div><br>
<div
align=
"center"
>
<img
src=
"
https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com
/66402828-fb2b-418f-83f6-82153491bcfe.jpg"
/>
</div><br>
## 虚拟节点
...
...
@@ -306,3 +309,9 @@ Distributed Hash Table(DHT) 是一种哈希分布方式,其目的是为了
-
[
一致性哈希算法
](
https://my.oschina.net/jayhu/blog/732849
)
-
[
内容分发网络
](
https://zh.wikipedia.org/wiki/%E5%85%A7%E5%AE%B9%E5%82%B3%E9%81%9E%E7%B6%B2%E8%B7%AF
)
-
[
How Aspiration CDN helps to improve your website loading speed?
](
https://www.aspirationhosting.com/aspiration-cdn/
)
</br><div
align=
"center"
>
💡
</br></br>
更多精彩内容将发布在公众号
**CyC2018**
,公众号提供了该项目的离线阅读版本,后台回复"下载" 即可领取。也提供了一份技术面试复习思维导图,不仅系统整理了面试知识点,而且标注了各个知识点的重要程度,从而帮你理清多而杂的面试知识点,后台回复"资料" 即可领取。我基本是按照这个思维导图来进行复习的,对我拿到了 BAT 头条等 Offer 起到很大的帮助。你们完全可以和我一样根据思维导图上列的知识点来进行复习,就不用看很多不重要的内容,也可以知道哪些内容很重要从而多安排一些复习时间。
</div></br>
<div
align=
"center"
><img
width=
"180px"
src=
"https://cyc-1256109796.cos.ap-guangzhou.myqcloud.com/%E5%85%AC%E4%BC%97%E5%8F%B7.jpg"
></img></div>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录