Skip to content

zhangjun1998/caffeine

This branch is 8 commits ahead of, 853 commits behind ben-manes/caffeine:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
zhangjun
Jun 10, 2022
853eea0 · Jun 10, 2022
May 22, 2022
May 27, 2022
Jun 10, 2022
May 7, 2022
May 15, 2022
May 26, 2022
May 14, 2022
May 15, 2022
May 16, 2022
Jan 10, 2022
May 26, 2022
May 7, 2022
Aug 4, 2019
May 1, 2022
Feb 16, 2021
Apr 2, 2022
Oct 11, 2020
Apr 8, 2015
Jun 10, 2022
May 26, 2022
May 23, 2022
Dec 6, 2021
Dec 6, 2021
Nov 21, 2021
May 23, 2022

Repository files navigation

简介

这里是 『香蕉大魔王』 的 Caffeine 源码解析,原始项目地址 在这。 技术暂时还比较拙劣,可能有很多理解不到位或有出入的地方,所以源码注释仅供参考哈,如有错误还请指正,错误很多的话就别说了,请把一些优秀的博客地址贴给我,我爱学习。

已看和待看的代码如下:

  • Caffeine 缓存构造器
  • Cache 缓存顶级接口
  • LoadingCache 自动加载式缓存接口
  • LocalManualCache 手动加载式缓存接口
  • LocalLoadingCache 继承了 LocalManualCache + LoadingCache 接口,
  • LocalCache
  • BoundedLocalCache 有界缓存,里面有内部类 BoundedLocalManualCache、BoundedLocalLoadingCache、BoundedLocalAsyncCache、BoundedLocalAsyncLoadingCache 实现了各种缓存
  • Buffer 读缓冲区接口
  • StripedBuffer 带状缓冲区实现类
  • BoundedBuffer 有界缓冲区,继承自 StripedBuffer,里面有内部类 RingBuffer,最终实现了带状环形缓冲区
  • MpscGrowableArrayQueue 写缓冲区实现类
  • FrequencySketch 对 Count-Min Sketch 算法的实现
  • AbstractLinkedDeque 顺序队列的抽象类,给顺序访问队列和顺序写队列提供骨架
  • AccessOrderDeque 顺序访问队列,LRU,用做 window、main 区域的三个访问队列,方便实现按照 W-TinyLFU 进行缓存驱逐 和 expireAfterAccess() 过期
  • WriteOrderDeque 顺序写队列,用于实现 expireAfterWrite 的过期策略
  • TimerWheel 时间轮,用于实现 expireAfterWriter() 的自定义过期策略
  • Ticker 时间源,用在自定义过期策略中,方便时间轮定位
  • ...

联系方式:

如要联系我请备注来意,不知道怎么备注的我提供个模板:「oh,你的 Caffeine 源码解析的太好了,加个好友瞧一瞧」。好,祝大家技术进步,生活快乐。

About

Caffeine 源码解析

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 99.8%
  • Shell 0.2%