1. java概念問題 請問「位元組的緩沖區」和「位元組緩沖流」的區別
緩沖區是一個內存區域的概念,類似於池子
流就像一根專管道,因為使用了一個池子(緩沖屬區)作為中間過渡,所以稱為緩沖流
使用緩沖流的目的是為了減少直接與硬碟交互傳輸的次數,增加每次傳送的數據量,藉以提高傳輸效率,保護硬體
2. java怎麼實現map 緩存技術
/**
*緩存池
*@authorxiaoquan
*@create2015年3月13日上午10:32:13
*@see
*/
publicclassCachePool{
;//緩存池唯一實例
privatestaticMap<String,Object>cacheItems;//緩存Map
privateCachePool(){
cacheItems=newHashMap<String,Object>();
}
/**
*得到唯一實例
*@return
*/
(){
if(instance==null){
instance=newCachePool();
}
returninstance;
}
/**
*清除所有緩存
*/
(){
cacheItems.clear();
}
/**
*獲取緩存實體
*@paramname
*@return
*/
(Stringname){
if(!cacheItems.containsKey(name)){
returnnull;
}
CacheItemcacheItem=(CacheItem)cacheItems.get(name);
if(cacheItem.isExpired()){
returnnull;
}
returncacheItem.getEntity();
}
/**
*存放緩存信息
*@paramname
*@paramobj
*@paramexpires
*/
(Stringname,Objectobj,longexpires){
if(!cacheItems.containsKey(name)){
cacheItems.put(name,newCacheItem(obj,expires));
}
CacheItemcacheItem=(CacheItem)cacheItems.get(name);
cacheItem.setCreateTime(newDate());
cacheItem.setEntity(obj);
cacheItem.setExpireTime(expires);
}
(Stringname,Objectobj){
putCacheItem(name,obj,-1);
}
/**
*移除緩存數據
*@paramname
*/
(Stringname){
if(!cacheItems.containsKey(name)){
return;
}
cacheItems.remove(name);
}
/**
*獲取緩存數據的數量
*@return
*/
publicintgetSize(){
returncacheItems.size();
}
}
publicclassCacheItem{
privateDatecreateTime=newDate();//創建緩存的時間
privatelongexpireTime=1;//緩存期滿的時間
privateObjectentity;//緩存的實體
publicCacheItem(Objectobj,longexpires){
this.entity=obj;
this.expireTime=expires;
}
publicbooleanisExpired(){
return(expireTime!=-1&&newDate().getTime()-createTime.getTime()>expireTime);
}
/**
*省略getter、setter方法
*/
}
3. java,保存文件時緩沖區大小,有什麼作用嗎
就是這么說吧,我打個比方
一個人要把水龍頭流出來的水弄到水缸裡面去,要是專沒有緩沖池,屬每流出一滴水,你都要跑兩趟水龍頭與缸之間的距離(這個在傳文件的時候就是磁碟讀寫的時間),而當你有一個緩沖池(比如盆),你可以等盆滿了再把水弄過去(這之間你可以做其他的事,在JAVA中,你就是CPU)……
所以有緩沖區的話,你可以節省CPU的大量時間,而且可以對緩沖區中的數據進行集中讀寫,這樣不必每來一個數據你去到磁軌上搜索地址,然後再回來接受數據,再去搜索地址存取數據,再回來接受數據。
緩沖區的大小根據你的用戶的上傳文件的大小設置,一般取平均值,這個要經驗的。注意:緩沖區大小不是上傳文件的平均值大小……累死了,打這么多字,睡覺咯