成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

筆記|緩存

elliott_hu / 2253人閱讀

摘要:緩存算法我是,我會統(tǒng)計每一個緩存數(shù)據(jù)的使用頻率,我會把使用最少的緩存替換出緩存區(qū)。瀏覽器就是使用了我作為緩存算法。在緩存系統(tǒng)中找出最少最近的對象是需要較高的時空成本。再來一次機會的緩存算法,是對的優(yōu)化。直到新的緩存對象被放入。

緩存 什么是緩存?

存貯數(shù)據(jù)(使用頻繁的數(shù)據(jù))的臨時地方,因為取原始數(shù)據(jù)的代價太大了,所以我可以取得快一些。

Cache hit & Cache miss 的定義理解

Cache miss之后怎么辦?

如果緩存區(qū)還有空間,可以把該次請求的數(shù)據(jù)存到緩存區(qū)

如果緩存慢了,又沒有命中緩存,那么建立替換算法,將緩存區(qū)中的outdated的數(shù)據(jù)替換掉

存儲成本

當緩存沒有數(shù)據(jù),我們從數(shù)據(jù)庫中取得數(shù)據(jù),存到緩存的時空成本。

索引成本

為緩存構(gòu)建索引的時空成本。

緩存算法 Least Frequently Used (LFU)

我是LFU,我會統(tǒng)計每一個緩存數(shù)據(jù)的使用頻率,我會把使用最少的緩存替換出緩存區(qū)。

Least Recently Used (LRU)

我會把最近最少使用的緩存數(shù)據(jù)踢走。

瀏覽器就是使用了我(LRU)作為緩存算法。新的對象會被放在緩存的頂部,當緩存達到了容量極限,我會把底部的對象踢走,而技巧就是:我會把最新被訪問的緩存對象,放到緩存池的頂部。

所以,經(jīng)常被讀取的緩存對象就會一直呆在緩存池中。有兩種方法可以實現(xiàn)我,array 或者是 linked list。

LRU22Q是我的兄弟,他們是為了完善我而存在的。

Least Recently Used 2

我會把訪問過兩次的對象放進緩存區(qū)。

因為需要跟蹤訪問對象2次,所以隨著數(shù)據(jù)量增多,訪問負載和存儲成本都會變多。

2 Queues (2Q)

我會把訪問到的對象存到LRU中,如果這個對象被再次訪問,那么把他放到第二個,更大的LRU中。

我踢走緩存對象是保持第一個緩存池是第二個緩存池的1/3.

當緩存的訪問負載是固定的時候,把LRU換成LRU2,會比增加LRU的容量更好。

我的性能比前兩者更出色,并且我是adoptive to access模式。

Adaptive Replacement Cache

我由兩個LRU組成。

第一個L1, 包含的是最近只被使用過一次的。

第二個L2, 包含的是使用過兩次的對象。

我能夠自調(diào),并且是低負載的。我也保存著歷史對象,這樣,我就可以記住那些被移除的對象,同時,也讓我可以看到被移除的對象是否可以留下,取而代之的是踢走別的對象。

Most Recently Used (MRU)

MRU是和LRU相對立的,MRU會移除最近最多使用的對象。why?

在緩存系統(tǒng)中找出最少最近的對象是需要較高的時空成本。

MRU是:每當有一次請求,就會把這個訪問的對象放到棧頂,當棧滿了,我就會用新請求的對象來替換棧頂?shù)膶ο蟆?/p> FIFO

低負載,低效管理的方法。

Second Chance

再來一次機會的緩存算法,是對FIFO的優(yōu)化。

SC跟FIFO一樣,在隊首觀察元素,進行踢出。

不同的是,SC對每一個對象都多了一個標志位,每次新加入隊列的對象,標志位都為1。如果在隊首要踢出該元素,則把他的標志位置0,重新加入隊列,相當于給他第二次機會。如果該踢出元素的標志位是0,則直接將他踢出。

CLock

CLock是一個更好的環(huán)形FIFO。

Clock的頭部指針指向隊列中最老的對象。當緩存miss發(fā)生,同時沒有存儲空間時,我會首先檢查指針指向的對象的標志位的狀態(tài),再決定操作,如果標志是0,我會直接用新數(shù)據(jù)替換這個老對象;如果標志是1,則會指針向前走一步,同時重復上一個步驟。直到新的緩存對象被放入。

Simple time-based

我會對新增的對象加以保存周期,同時去掉周期失效的對象。

參考

http://www.kuqin.com/shuoit/20160201/350...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/61780.html

相關(guān)文章

  • Web前端中的靜態(tài)資源緩存筆記

    摘要:根據(jù)資源的分類的資源分類主要分為兩大類主資源和派生資源。此時的數(shù)據(jù)時緩存到內(nèi)存中的,當進程后,也就是瀏覽器關(guān)閉以后,數(shù)據(jù)將不存在。信息最大作用就是用于判斷服務器上該的內(nèi)容是否被修改。附上我的學習筆記。 根據(jù)webkit資源的分類 webkit的資源分類主要分為兩大類:主資源和派生資源。 主資源:比如HTML頁面,或者下載項,對應代碼中的類是MainResourceLoader。 派生...

    JowayYoung 評論0 收藏0
  • output_buffering 學習筆記(一)

    摘要:輸出緩存,在請求一個的過程中,實際上經(jīng)過三個緩存程序緩存緩存瀏覽器緩存緩存的幾個重要規(guī)則在服務中,如果我們開啟了緩存,則數(shù)據(jù)首先放入到中如何開啟有兩個方法在配置這里去掉號即可在頁面中使用通過打開的,則作用于所有的頁面,使用打開則只作用于 output_buffering(ob,輸出緩存), 在請求一個PHP的過程中,實際上經(jīng)過三個緩存:1. 程序緩存2 ob緩存 3. 瀏覽器緩存. ...

    G9YH 評論0 收藏0
  • 【Java并發(fā)編程的藝術(shù)】第二章讀書筆記之原子操作

    摘要:前言今天的筆記來了解一下原子操作以及中如何實現(xiàn)原子操作。概念原子本意是不能被進一步分割的最小粒子,而原子操作意為不可被中斷的一個或一系列操作。處理器實現(xiàn)原子操作處理器會保證基本內(nèi)存操作的原子性。 showImg(https://segmentfault.com/img/bVVIRA?w=1242&h=536); 前言 今天的筆記來了解一下原子操作以及Java中如何實現(xiàn)原子操作。 概念 ...

    olle 評論0 收藏0
  • 刷前端面經(jīng)筆記(一)

    摘要:協(xié)商緩存從緩存數(shù)據(jù)庫中取出緩存的標識,然后向瀏覽器發(fā)送請求驗證請求的數(shù)據(jù)是否已經(jīng)更新,如果已更新則返回新的數(shù)據(jù),若未更新則使用緩存數(shù)據(jù)庫中的緩存數(shù)據(jù)。 1.CSS的盒子模型 包含元素內(nèi)容content、內(nèi)邊距padding、邊框border、外邊距marginbox-sizing:border-box;content-box;inherit;1) content-box:總寬度=mar...

    劉德剛 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<