91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 1.11MB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2023-08-27
  • 語言: C/C++
  • 標簽: c++??

資源簡介

Storage and Buffer Manager C++ code.在別人的基礎上做的,應該說除了lru都是重做的.模擬數據庫文件的實現.

資源截圖

代碼片段和文件信息

#include?“StdAfx.h“
#include?“BMgr.h“
#include?“DSMgr.h“
//Implementation?of?BMgr
DSMgr?dss;
//LRU?Element?List
struct?LRUEle?*?lru;
struct?LRUEle?*?mru;
//
LRUEle::LRUEle()
{
frameid?=?-1;
time?=?0.0;
less?=?nullptr;
more?=?nullptr;
}

BCB::BCB()
{
next?=?NULL;
latch?=?-1;
count?=?-1;
page_id?=?-1;
frame_id?=?-1;
stime?=-1;
ftime=-1;
dirty=-1;

}
//

BMgr::BMgr(void)
{
int?i?=?0;
for(i?=?0;?i? {
//
ptof[i]?=?nullptr;
ftop[i]?=?-1;
}
dss.OpenFile(“data.dbf“);
}


BMgr::~BMgr(void)
{
}
//If?the?page?is?not?resident?in?the?buffer?yet?it?selects?a?victim?page
int?BMgr::FixPage(int?page_id?int?prot)
{
//prot?means?protection
int?fid?=?-1;
int?num=Hash(page_id);
BCB?*?bcb?=ptof[num];

while(bcb!=nullptr)
{
if(bcb->page_id?==?page_id)
{
break;
}
bcb?=?bcb->next;
}
if(bcb?!=?nullptr)
{
if(bcb->stime?!=?-1)
{
bcb->ftime=bcb->stime;
}
DoLRUList(bcb?bcb->frame_id);
return?bcb->frame_id;
}
else
{
bcb?=?ptof[num];
fid?=?SelectVictim();
buf[fid]?=?dss.ReadPage(page_id);
ftop[fid]?=?page_id;
if(bcb?!=?nullptr)
{
while(bcb->next?!=?nullptr)
{
bcb?=?bcb->next;
}
bcb->next?=?new?BCB();
bcb?=?bcb->next;
}
else
{
bcb?=?new?BCB();
ptof[num]?=?bcb;?
}
//重新設置bcb//
bcb->next?=?nullptr;
bcb->page_id?=?page_id;
bcb->frame_id?=?fid;
bcb->latch?=?0;
bcb->count?=?0;
bcb->ftime?=?static_cast(time(0));
//cout<ftime< bcb->stime?=?-1;
DoLRUList(bcb?fid);
}
return?fid;
}
NewPage?BMgr::FixNewPage()
{
//find?a?newpage;
int?offset=0;
int?i=0;
while(i {
dss.Seek(offsetSEEK_SET);
if(dss.GetUse(i)!=0)break;
i++;
offset+=frameSIZE;
}
if(i==MAXPAGES){
printf(“\t$>?error:disk?is?fullpress?enter?to?exit“);
getchar();
exit(0);
}

NewPage?np;
np.page_id=i;
//
np.frame_id=FixPage(i0);
return?np;
}
int?BMgr::UnfixPage(int?page_id)
{
int?num=Hash(page_id);
if(ptof[num]->count>0)
ptof[num]->count--;
if(ptof[num]->count==0)
ptof[num]->latch=0;
return?ptof[num]->frame_id;
}
int?BMgr::NumFreeframes()
{
//return?the?num?of?free?frame
int?i?=?0j?=?0num?=?0Free?=?0;
BCB?*?bcb?=?nullptr;
for(i?=?0;?i? {

j?=?ftop[i];
if(j?==?-1)
{
Free++;
}
else
{
num?=?Hash(j);
int?frame_id?=?num;
bcb?=?ptof[num];
while(bcb?!=?nullptr?&&?bcb->frame_id?!=?j)
{
bcb?=?bcb->next;
}
if(bcb?!=?nullptr?&&?bcb->frame_id?==?j)
{
if(bcb->count?==?0?&&?bcb->latch?==?0)
{
Free++;
}
}
}
}
return?Free;
}
int?BMgr::SelectVictim()
{
int?vframe?=?0pid?=?0fid=0;
BCB?*?bcb?=?nullptr;
bool?found?=?false;
LRUEle?*?temp?=?lru;
if(temp?==?nullptr)
{
return?0;
}
for(int?i?=?0;?i? {
if(ftop[i]?==?-1)
{
return?i;
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????7681??2013-11-23?22:30??dbprj\BMgr.cpp

?????文件???????1291??2013-11-23?19:28??dbprj\BMgr.h

?????文件????3690270??2013-11-23?20:59??dbprj\data-5w-50w-zipf.txt

?????文件???????3194??2014-03-23?13:31??dbprj\dbprj.cpp

?????文件???????4512??2013-10-31?19:37??dbprj\dbprj.vcxproj

?????文件???????1659??2013-10-31?19:37??dbprj\dbprj.vcxproj.filters

?????文件????????143??2013-10-27?22:23??dbprj\dbprj.vcxproj.user

?????文件???????2045??2013-11-23?19:25??dbprj\DSMgr.cpp

?????文件???????1159??2013-11-23?19:25??dbprj\DSMgr.h

?????文件???????1354??2013-11-23?22:10??dbprj\ReadMe.txt

?????文件????????245??2013-11-23?22:18??dbprj\stdafx.cpp

?????文件????????927??2013-11-23?21:45??dbprj\stdafx.h

?????文件????????234??2013-10-27?22:25??dbprj\targetver.h

?????目錄??????????0??2014-03-23?13:31??dbprj

-----------?---------??----------?-----??----

??????????????3714714????????????????????14


評論

共有 條評論