📄 replacecomputingfifo.java
字号:
//Source file: E:/工作和学习/工作/硕士论文工作/程序/数据库缓存管理/20040304/src/MemCachePak/ReplaceComputingFIFO.java
package MemCachePak;
public class ReplaceComputingFIFO implements ReplaceComInterface
{
public MemCacheInterface theCache;
public ReplaceComputingFIFO()
{
}
/**
@roseuid 41C63F60032C
*/
public ReplaceComputingFIFO(MemCacheInterface Cache)
{
theCache = Cache;
}
/**
@roseuid 41C63FBB0157
*/
public boolean InsertNewObj(String[] RefArray, int ObjSize, int TimeCost)
{
WebObj obj = new WebObj();
obj.SetSourceFileName(RefArray[0]);
obj.SetCachedFileName(RefArray[1]);
obj.SetObjRef(RefArray);
obj.SetCost(TimeCost);
obj.SetFileSize(ObjSize);
obj.SetEnterTime();
theCache.InsertNewObj(obj);
theCache.InsertNewVector(TimeCost,RefArray[0],RefArray[1],RefArray[0]);
return true;
}
/**
@roseuid 41C63FBB01B5
*/
public boolean InsertNewObj(String[] RefArray, int ObjSize, int TimeCost, String BeginPoint, boolean SourceOrMedia)
{
WebObj obj = new WebObj();
obj.SetSourceFileName(RefArray[0]);
obj.SetCachedFileName(RefArray[1]);
obj.SetObjRef(RefArray);
obj.SetCost(TimeCost);
obj.SetFileSize(ObjSize);
obj.SetEnterTime();
theCache.InsertNewObj(obj);
if(SourceOrMedia)
{
theCache.InsertNewVector(TimeCost,RefArray[0],RefArray[1],RefArray[0]);
}
else
{
WebObj MediaObj = theCache.GetCachedObj(RefArray[0],BeginPoint);
if(MediaObj!=null)
{
MediaObj.AddMediaUsedCount();
MediaObj.SetLastMediaUsedTime();
}
theCache.InsertNewVector(TimeCost,BeginPoint,RefArray[1],RefArray[0]);
}
return true;
}
/**
@roseuid 41C63FBB0242
*/
public boolean ReplaceCache()
{
//FIFO算法的具体策略在这里实现
//首先判断缓存大小是否超过了门限
//如果超过了门限,则执行替换算法,返回true
if(theCache.GetCacheSize()>=Configuration.MAX_SIZE)
{
System.out.println("缓存进行了一次替换FIFO");
//theCache.Print();
WebObj headObj,NowObj,FIFOObj;
FIFOObj = null;
headObj = theCache.GetTheFirstObj();
long TimeNow=System.currentTimeMillis();
long FET = TimeNow;
while(headObj!=null)
{
NowObj = headObj;
while(NowObj!=null)
{
long FirstEnterTime = 0;
FirstEnterTime=NowObj.GetEnterTime();
//判断
if(FirstEnterTime<FET)
{
FET = FirstEnterTime;
FIFOObj = NowObj;
}
//转到下一个版本对象
NowObj = NowObj.NextObjEdition;
}
//转到下一个版本对象群
headObj = headObj.NextObj;
}
if(FIFOObj!=null)
{
//theCache.Print();
theCache.DeleteObj(FIFOObj);
//同步删除文件
}
//theCache.Print();
return true;
}
else
{
//如果没有超过门限,则不执行替换算法,返回false
return false;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -