刚从.net转java三个月,这里记录一下在java项目中使用缓存的学习。
因为项目之前的开发人员离职了,在之前的项目上进行维护,对应从来没有接触过java的小白,只能自己多看多理解多动手了。
这个项目原来是没有用java真正意义上的缓存,而是用的静态的HashMap,但是在性能测试的过程中出现了死锁的过程,因为hashmap是不安全的线程,建议使用ConcurrentHashMap这个和.net的Dictonary很像。因为性能测试不通过,所以后来加了redis,其实java的一级缓存ehcache也是很好的,因为项目到了后期阶段,项目时间紧就没改ehcahe(这个.net的asp.net cache一样)。
言归正传:
hashmap的使用方法:
首先定义一个InitCacheData类,里面填充各种属性和方法。
建议用这种
public classInitCacheData {private staticInitCacheData instance;privateInitCacheData() {
}/**
* description 单例模式
* @param @return
* @return InitCacheData*/
public staticInitCacheData getInstance() {
synchronized (InitCacheData.class) {if (instance == null) {
instance= newInitCacheData();
}returninstance;
}
}/**
* 初始化数据的缓存,key:数据类型,value:数据(key:实体类主键的值,value对应的实体类)*/
private Map> cacheData = new HashMap>();private Map>> cacheTreeData = new HashMap>>();private Map> cacheItemMappingData = new HashMap>();private Map> cacheAnswerData = new ConcurrentHashMap>();private Map> projectItemData = new HashMap>();/**
* @description 初始化数据的类型*/
public enumCacheType {
CLASS, MAJOR, COLLEGE, COURSE,USER_INFO,KNOW_POINT,STUDENT,TEACHER,ITEMMAPPING,PARAMETER_TYPE,TRDCO,ANSWER,PROJECTITEM,BASEITEMS
};public MapgetCacheDa