java變量放到緩存中的機(jī)制如下:
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站建設(shè)、文成網(wǎng)絡(luò)推廣、小程序定制開發(fā)、文成網(wǎng)絡(luò)營(yíng)銷、文成企業(yè)策劃、文成品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供文成建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:jinyejixie.com
Java中有中間緩存變量來儲(chǔ)存其單個(gè)表達(dá)式的值,而j的自增自減的結(jié)果依然保留在原來的變量?jī)?chǔ)存區(qū)。因?yàn)楸倔w是j的值,而單個(gè)表達(dá)式的值是中間產(chǎn)生的一個(gè)臨時(shí)變量值,是在整條計(jì)算表達(dá)式結(jié)束后就可以拋棄的值,所以用個(gè)臨時(shí)中間緩存變量在放就可以了。這就可以實(shí)現(xiàn)自增自減運(yùn)算在計(jì)算時(shí)值的加減1順序差異產(chǎn)生的表達(dá)式與本體值差異的兩個(gè)變量?jī)?chǔ)存。
如下代碼:
package?com.qiu.lin.he;
public?class?CeShi?{
public?static?void?main(String[]?args)?{
for?(int?i?=?0;?i??10;?i++)?{
for?(int?j?=?0;?j??10;?j++)?{
int?temp?=?i;//中間變量,進(jìn)行緩存
i?=?j;
j?=?temp;
System.out.println(i?+?"和j的值為"?+?j);
}
}
}
}
結(jié)果如下:
在jsp頁面里:
request.setAttribute("aaa",bbb);
request.getSession().setAttribute("ccc",ddd);
其中,bbb是一個(gè)文本里面的內(nèi)容,ddd是另一個(gè)文本框里的內(nèi)容。
這樣可以暫時(shí)保存下來,等再次返回這個(gè)頁面的時(shí)候,我們?cè)谟?/p>
得到bbb,request.getAttribute(''aaa''); 然后再把bbb設(shè)置在第一個(gè)文本框里面就好了,達(dá)到了緩存的效果。
如果你用struts框架,里面的html標(biāo)簽庫(kù)已經(jīng)為我們提供了這樣的效果。我們可以直接來用。
session最好少用,一般系統(tǒng)都用session來存儲(chǔ)用戶信息,session用多了對(duì)系統(tǒng)開銷不好,緩存也盡量少用,要用的話都用在基本不會(huì)改變的數(shù)據(jù)上,不然會(huì)影響系統(tǒng),如果經(jīng)常改變的量,用了緩存,如:一個(gè)程序在用緩存中的數(shù)據(jù),而另一個(gè)程序卻在修改緩存的數(shù)據(jù),那邊程序就會(huì)出現(xiàn)不符合的數(shù)據(jù)了,如果回答對(duì)你有幫助,請(qǐng)把分給我吧,謝謝
java有自己的緩存輸入輸出類,比如 InputStream,FileOutputStram等 具體可以查看API,
要想自己實(shí)現(xiàn)的話,很簡(jiǎn)單,設(shè)置一個(gè)足夠大的字節(jié)數(shù)組就可以了,把需要的東西放進(jìn)去,就是個(gè)緩存。
你這個(gè)分?jǐn)?shù)太少了吧,程序到是有,不過給你有點(diǎn)可惜
CacheMgr.java
import java.util.*;
import cn.javass.framework.cache.vo.CacheConfModel;
public class CacheMgr {
private static Map cacheMap = new HashMap();
private static Map cacheConfMap = new HashMap();
private CacheMgr(){
}
private static CacheMgr cm = null;
public static CacheMgr getInstance(){
if(cm==null){
cm = new CacheMgr();
Thread t = new ClearCache();
t.start();
}
return cm;
}
/**
* 增加緩存
* @param key
* @param value
* @param ccm 緩存對(duì)象
* @return
*/
public boolean addCache(Object key,Object value,CacheConfModel ccm){
boolean flag = false;
cacheMap.put(key, value);
cacheConfMap.put(key, ccm);
System.out.println("now addcache=="+cacheMap.size());
return true;
}
/**
* 刪除緩存
* @param key
* @return
*/
public boolean removeCache(Object key){
cacheMap.remove(key);
cacheConfMap.remove(key);
System.out.println("now removeCache=="+cacheMap.size());
return true;
}
/**
* 清除緩存的類
* @author wanglj
* 繼承Thread線程類
*/
private static class ClearCache extends Thread{
public void run(){
while(true){
Set tempSet = new HashSet();
Set set = cacheConfMap.keySet();
Iterator it = set.iterator();
while(it.hasNext()){
Object key = it.next();
CacheConfModel ccm = (CacheConfModel)cacheConfMap.get(key);
//比較是否需要清除
if(!ccm.isForever()){
if((new Date().getTime()-ccm.getBeginTime())= ccm.getDurableTime()*60*1000){
//可以清除,先記錄下來
tempSet.add(key);
}
}
}
//真正清除
Iterator tempIt = tempSet.iterator();
while(tempIt.hasNext()){
Object key = tempIt.next();
cacheMap.remove(key);
cacheConfMap.remove(key);
}
System.out.println("now thread================"+cacheMap.size());
//休息
try {
Thread.sleep(60*1000L);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
CacheConfModel.java
public class CacheConfModel implements java.io.Serializable{
private long beginTime;
private boolean isForever = false;
private int durableTime;
public long getBeginTime() {
return beginTime;
}
public void setBeginTime(long beginTime) {
this.beginTime = beginTime;
}
public boolean isForever() {
return isForever;
}
public void setForever(boolean isForever) {
this.isForever = isForever;
}
public int getDurableTime() {
return durableTime;
}
public void setDurableTime(int durableTime) {
this.durableTime = durableTime;
}
}
順便說一句,緩存的管理不是靠時(shí)間久來計(jì)算的,是靠最大不活動(dòng)間隔計(jì)算的,你的設(shè)計(jì)思想有問題
所謂緩存,就是將程序或系統(tǒng)經(jīng)常要調(diào)用的對(duì)象存在內(nèi)存中,一遍其使用時(shí)可以快速調(diào)用,不必再去創(chuàng)建新的重復(fù)的實(shí)例。這樣做可以減少系統(tǒng)開銷,提高系統(tǒng)效率。緩存機(jī)制的實(shí)現(xiàn)有很多中,這里講一種。
public class CacheImmutale{
//聲明要緩存的類名;
private final String className;
//聲明10個(gè)緩存池
private static CacheImmutale[] cache= new CachImmutale[10];
//記錄緩存的位置,最新位置為[pos-1]
private static int pos=0;
//構(gòu)造器
public CacheImmutale(String className){
this.className=className;
}
//返回方法
public String getName(){
return className;
}
//返回對(duì)象實(shí)例名,傳進(jìn)要使用的實(shí)例名,由該方法去判斷緩存池中是否存在
public static CacheImmutale valueOf(String className){
//遍歷緩存池,若存在,返回
for(int i=0;i
if(cache[i]!=nullcache[i].getName().equals(className)){
return cache[i];
}
}
//如果緩存池滿,則采取先進(jìn)先出
if(pos==10){
cache[0]=new CacheImmutale(className);
pos=1;
return cache[0];
}
else{
cache[pos++]=new CacheImmutale(className);
return cache[pos-1];
}
}
public boolean equals(Object obj){
if(obj instanceof CacheImmutale){
CacheImmutale c1=(CacheImmutale)obj;
if(className.equals(c1.getName())){
return true;
}
}
return false;
}
public int hashCode(){
return className.hashCode();
}
}
分享標(biāo)題:java代碼實(shí)現(xiàn)緩存,java緩存技術(shù)有哪些
網(wǎng)頁網(wǎng)址:http://jinyejixie.com/article0/hsipoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、響應(yīng)式網(wǎng)站、面包屑導(dǎo)航、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)