志氣天涯 |
|
|||
大數(shù)據(jù)搜索,分布式服務(wù),模式設(shè)計,系統(tǒng)架構(gòu)設(shè)計 |
日歷
統(tǒng)計
導(dǎo)航常用鏈接留言簿隨筆檔案搜索最新評論
|
我們在程序開發(fā)中,也許經(jīng)常碰到這樣的情況,在一個業(yè)務(wù)流程中會調(diào)用很多不同的函數(shù)。
例如: //--------------------------------------- func1(param1); func2(param21,param22); func3(param31,param32,param33); //---------------------------------------- 而在上面三個函數(shù)中每個函數(shù)的內(nèi)部很可能都查詢訪問了同一個數(shù)據(jù),這樣就造成了資源的浪費, 有沒有解決辦法呢? 我想了一個解決方法,我命名為“數(shù)據(jù)商店”。“數(shù)據(jù)商店”:從名字即可看出思路,在整個業(yè)務(wù)流程中創(chuàng)建一個二重hash表,先按類型做外層hash表的key,而后按每個對象關(guān)鍵字來做內(nèi)層hash表的key。用這種結(jié)構(gòu)把數(shù)據(jù)暫存起來以便業(yè)務(wù)流程中每個函數(shù)訪問。那怎么在業(yè)務(wù)流程中的每個函數(shù)內(nèi)部訪問呢? 把存儲數(shù)據(jù)的二重hash表做為參數(shù)傳給每個函數(shù)。 下面是偽代碼: //----------------------------------------------------------------- #include <map> #include <string> using namespace std; typedef struct DataNode { string type; map<string,void*> goods; } Chest; map<string,Chest> shop; func1(param1,&shop); func2(param21,param22,&shop); func3(param31,param32,param33,&shop); //----------------------------------------------------------------- 在每個函數(shù)中在訪問請求數(shù)據(jù)前,都在shop中搜索要請求的數(shù)據(jù)在shop中是否存在,如果shop中存在就 直接取出,不必再訪問請求數(shù)據(jù)節(jié)省了資源和時間。 這個解決方法只在一個業(yè)務(wù)流程中使用,不作為類似緩存或持久層來使用。請大家給些意見,現(xiàn)在還沒有完善。
評論:
|
![]() |
|
Copyright © sapielion | Powered by: 博客園 模板提供:滬江博客 |