⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cache.java

📁 java写的搜索引擎网络爬虫 java写的搜索引擎网络爬虫 java写的搜索引擎网络爬虫
💻 JAVA
字号:
/* 
 * FileName CacheImpl.java
 * Create Time 2005-8-1 17:00:23
 * Author shiwei
 * Descript implements Cache
 * Version 
 */
package com.snoics.reptile.cache;

import java.util.ArrayList;
import java.util.HashMap;


import com.snoics.base.util.file.*;
import com.snoics.reptile.system.common.*;
public class Cache implements ICache{
	
	private ICacheFile cacheFile=new CacheFile();
	private ArrayList reptilecache=new ArrayList();
	private SnoicsFile snoicsfile=new SnoicsFile();
	private CommonObject commonObject=new CommonObject();
	
	/**
	 * 设置缓存数据
	 * @param reptilecache
	 */
	public void setCache(ArrayList reptilecache){
		this.reptilecache=reptilecache;
	}
	
	/**
	 * 获取缓存数据
	 */
	public ArrayList getCache(){
		if(reptilecache==null){
			reptilecache=new ArrayList();
		}
		return reptilecache;
	}
	
	/**
	 * 从站点总缓存中取得一个单位的缓存
	 * @return HashMap
	 */
	public HashMap getCacheUnit(ArrayList reptilecache){
		HashMap cacheunit=null;
		if(reptilecache.isEmpty()){
			cacheunit=new HashMap();
			reptilecache.add(cacheunit);
		}else{
			int length=reptilecache.size();
			for(int i=0;i<length;i++){
				HashMap tempcacheunit=(HashMap)reptilecache.get(i);
				int tempcachesize=tempcacheunit.size();
				int cachesize=Integer.parseInt(commonObject.getConfigInfo(Common.CONFIGFILE_NODE_CACHEUNITSIZE));
				if(tempcachesize<cachesize){
					return tempcacheunit;
				}
			}
			cacheunit=new HashMap();
			reptilecache.add(cacheunit);
		}
		return cacheunit;
	}
	
	/**
	 * 获取当前缓存使用的大小
	 * @return int
	 */
	public int getAllCacheUnitSize(){
		int allcount=0;
		int length=reptilecache.size();
		for(int i=0;i<length;i++){
			HashMap unit=(HashMap)reptilecache.get(i);
			int unitsize=unit.size();
			allcount+=unitsize;
		}
		return allcount;
	}
	
	/**
	 * 将数据从缓存文件中读取到内存,
	 * 数据保存在ArrayList里面,ArrayList里的对象是HashMap,
	 * HashMap的个数由缓存中的数据量和配置文件中的cachesize决定
	 */
	
	public void read(){
		String cachefilename=cacheFile.getCacheFile();
		reptilecache=(ArrayList)snoicsfile.readObject(cachefilename);
	}
	
	/**
	 * 将数据从内存中保存到缓存文件,缓存文件中原有的数据被清空
	 */
	public void save(){
		String cachefilename=cacheFile.getCacheFile();
		snoicsfile.saveObject(reptilecache,cachefilename);
	}
	
	/**
	 * 重新读取缓存数据,内存中原有的数据被清空
	 *
	 */
	public void reRead(){
		clearCacheMemory();
		read();
	}
	
	/**
	 * 清空内存中的缓存数据
	 *
	 */
	public void clearCacheMemory(){
		reptilecache=null;
		commonObject.setReptileCache(null);
	}
	
	/**
	 * 缓存文件中所有的数据都被清空
	 *
	 */
	public void clearCacheFile(){
		cacheFile.deleteCacheFile();
		cacheFile.createCacheFile();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -