中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁 > 技術(shù)文檔 > 網(wǎng)絡(luò)編程 > 無縫的緩存讀取:雙存儲緩存策略
Chrome源碼剖析 回到列表 學(xué)習(xí)一種新編程語言要做的15個練習(xí)
 無縫的緩存讀取:雙存儲緩存策略

作者:重典 時間: 2009-04-02 文檔類型:轉(zhuǎn)載 來自:重典的博客

第 1 頁 無縫的緩存讀取:雙存儲緩存策略 [1]
第 2 頁 無縫的緩存讀取:雙存儲緩存策略 [2]

我讀取緩存單元的邏輯是這樣的:

從2個不同緩存讀取當(dāng)然是很容易了,但是比較復(fù)雜的就是向緩存寫入的過程:

這里讀取數(shù)據(jù)以及寫入緩存時我使用了一個委托,在其它線程中僅在需要執(zhí)行時才會執(zhí)行。

這里除了首次寫入緩存占用主線程時間(讀取要等待)以外,其它時間都可以無延時的讀取,實(shí)現(xiàn)了無縫的緩存。

但我們在委托中要操作緩存的元素Medium,所以要傳遞參數(shù)進(jìn)其它線程,所以我這里使用了一個輔助類來傳遞參數(shù)進(jìn)入其它線程:

using System;
namespace CHCache {
    /// <summary>
    /// 一個線程Helper,用于幫助多拋出線程時傳遞參數(shù)
    /// </summary>
    public class ThreadHelper {
        Func<object> Fun { get; set; }
        Medium Medium { get; set; }
        /// <summary>
        /// 通過構(gòu)造函數(shù)來傳遞參數(shù)
        /// </summary>
        /// <param name="m">緩存單元</param>
        /// <param name="fun">讀取數(shù)據(jù)的委托</param>
        public ThreadHelper(Medium m,Func<object> fun) {
            Medium = m;
            Fun = fun;
        }
        /// <summary>
        /// 線程入口,ThreadStart委托所對應(yīng)的方法
        /// </summary>
        public void Doit()
        {
            Medium.IsUpdating = true;
            if (Medium.IsPrimary) {
                Console.WriteLine("Begin write to 2.");
                var ret = Fun.Invoke();
                Medium.Secondary = ret;
                Console.WriteLine("End write to 2.");
            }
            else {
                Console.WriteLine("Begin write to 1.");
                var ret = Fun.Invoke();
                Medium.Primary = ret;
                Console.WriteLine("End write to 1.");
            }
            Medium.IsUpdated = true;
            Medium.IsUpdating = false;
        }
    }
}

這樣我們就實(shí)現(xiàn)了在另個線程讀取數(shù)據(jù)的過程,這樣就在任何時候讀取數(shù)據(jù)時都會無延時直接讀取了。

結(jié)

最后我們寫一個主函數(shù)來測試一下效果

/*
 * http://www.cnblogs.com/chsword/
 * chsword
 * Date: 2009-3-31
 * Time: 16:53
 */
using System;
using System.Threading;
namespace CHCache
{
    class Program
    {
        public static void Main(string[] args)
        {
            var cache = new DictionaryCache();
            Console.WriteLine("Init...4s,you can press the CTRL+C to close the console window.");
            while (true)
            {
                cache.Add("1", GetValue);
                Thread.Sleep(1000);
                Console.WriteLine(cache["1"]);
            }
        }
        /// <summary>
        /// 獲取數(shù)據(jù)的方法,假設(shè)是從數(shù)據(jù)庫讀取的,費(fèi)時約4秒
        /// </summary>
        /// <returns></returns>
        static object GetValue()
        {
            Thread.Sleep(4000);
            return DateTime.Now;
        }
    }
}

得到如下數(shù)據(jù):

這樣就實(shí)現(xiàn)了平滑的讀取緩存數(shù)據(jù)而沒有任何等待時間

當(dāng)然這里還有些問題,比如說傳遞不同參數(shù)時的解決方法,但是由于我僅是在一個統(tǒng)計(jì)時需要這種緩存提高性能,所以暫沒有考慮通用的傳參方式。

如果大家對這個話題感興趣,歡迎討論。

示例下載:CHCache.rar(點(diǎn)擊下載)

本文鏈接:http://www.95time.cn/tech/program/2009/6569.asp 

出處:重典的博客
責(zé)任編輯:bluehearts

上一頁 無縫的緩存讀取:雙存儲緩存策略 [1] 下一頁

◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論

相關(guān)文章 更多相關(guān)鏈接
WEB前端優(yōu)化的體會
JavaScript優(yōu)化細(xì)節(jié)
jQuery性能優(yōu)化指南
整理及優(yōu)化CSS代碼的七個原則
影響reflow的因素及其優(yōu)化
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計(jì)比賽 網(wǎng)頁制作 web標(biāo)準(zhǔn) 用戶體驗(yàn) UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點(diǎn)最新 站點(diǎn)最新列表
周大!熬•自然”設(shè)計(jì)大賽開啟
國際體驗(yàn)設(shè)計(jì)大會7月將在京舉行
中國國防科技信息中心標(biāo)志征集
云計(jì)算如何讓安全問題可控
云計(jì)算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅(jiān)的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計(jì)大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺歷
Ps簡單繪制一個可愛的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡單的作品展示頁面
CSS定位機(jī)制之一:普通流
25個最佳最閃亮的Eclipse開發(fā)項(xiàng)目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁 首頁 前頁 后頁 尾頁 頁次:2/21個記錄/頁 轉(zhuǎn)到 頁 共2個記錄

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計(jì)作品,如需使用,請與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請與我們聯(lián)系,我們將立即刪除修改。

您的評論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評論。如果您不是本站會員,你可以注冊 為本站會員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯誤,請用報告錯誤,以利文檔及時修改。
不評分 1 2 3 4 5
注意:請不要在評論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請您注意:
·不良評論請用報告管理員,以利管理員及時刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國的各項(xiàng)有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評論管理人員有權(quán)保留或刪除其管轄評論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評論文檔 | 報告錯誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計(jì)之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計(jì)》
犀利開發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2