写出一个缓存系统的伪代码001

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写出一个缓存系统的伪代码001相关的知识,希望对你有一定的参考价值。

/**
 * 写出一个缓存系统的伪代码*/
public class CacheDemo {

    private Map<String, Object> map = new HashMap<String, Object>();
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    }    
    public synchronized Object getData(String key){ 
        Object value = map.get(key);
        if (value == null){
            return "aaa";//实现QueryDB()
        }
        return value;
    }
}
// 参考来源:黑马程序员-张孝祥

2017.3.4 再分析
上面代码是从同步的角度思考的,如果回答面试题估计没问题(我查网上别人也这么写)
但是,仔细思考后觉得把map定义为static更好
 static Map<String, Object> map = new HashMap<String, Object>();
这样的话,即使new了一个新对象,map里数据还是保存的。
终于明白static的意义了。
静态变量是在类被加载时赋值一次,以后再new时,不会重新赋值。
独立于该类的任何对象,不依赖于特定的实例,被类的所有实例所共享。
再想想 -- 类名.static名--,就豁然开朗了。

也明白栈和堆的区别了。
栈是用完就没了,堆是赋值为null/结束是才会被jvm回收。


public class CacheDemo {

static  Map<String, User> cacheMap = new HashMap<String, User>();
public User getUser(String id){
User user;

if((user = cacheMap.get(id)) != null){
return user;
}

user = QueryDB();

cacheMap.put(id, user);

return user;
}

public void setUser(String id){

User user = new User();
user.setName("name1");
cacheMap.put(id, user);
}
}

 

以上是关于写出一个缓存系统的伪代码001的主要内容,如果未能解决你的问题,请参考以下文章

列举你所知道的排序方法,请写出快速排序的伪代码

如何在LaTeX里打出这样的伪代码呢,主要是 这样的行号显示 以及 4,5两行的换行缩进 怎么实现

Android获取各个应用程序的缓存文件代码小片段(使用AIDL)

数据结构中,怎么写二叉树查找双亲的伪代码?急!

c语言,链表的反转,请写出代码,并讲解下,谢了!!!!!

001.web标准