当前位置:首页 » 硬盘大全 » 怎么把数据加载到jvm缓存
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

怎么把数据加载到jvm缓存

发布时间: 2022-06-30 00:50:00

A. java怎么将数据放入缓存

java放入session缓存中
方法如下:

session.setAttribute("Name",Value);
Name 随便取,value就是要放的数据
获取的时候session.getAttribute("Name);
就可以了

B. java web 项目启动时加载数据库的数据到缓存中,如何实现

servlet有个init方法,在Servlet实例化之后自动执行,你可以在这个里面取数据。
init怎么写就问度娘吧,一搜索一大堆。

C. java web 项目启动时加载数据库的数据到缓存中,如何实现求思路和实例。谢谢高峰相送

可以使用servlet的init方法访问数据库加载数据到java集合中,java集合相当于一块缓存,适用于一般的数据。

D. java怎样将数据保存到缓存中,之后再保存

Java中可以使用队列来保存数据,当使用的时候,加上锁,防止其他进程访问,当不用的时候保存到数据库里面,示例如下:

packagecom.henry;
importjava.util.HashMap;
importjava.util.Map;
importjava.util.Random;
importjava.util.concurrent.locks.ReadWriteLock;
importjava.util.concurrent.locks.ReentrantReadWriteLock;

publicclassCacheDataTest{
staticMap<Integer,Object>dataMap=newHashMap<Integer,Object>();
staticReadWriteLocklock=newReentrantReadWriteLock();//创建读写锁的实例
staticObjectgetData(Integerkey){
lock.readLock().lock();//读取前先上锁
Objectval=null;
try{
val=dataMap.get(key);
if(val==null){
//
lock.readLock().unlock();
lock.writeLock().lock();
try{
//可能已经由其他线程写入数据
if(val==null){
//dataMap.put(key,"");//queryfromdb
val=queryDataFromDB(key);
}
}finally{
//
lock.readLock().lock();
//Unlockwrite,stillholdread
lock.writeLock().unlock();
}
}
}finally{
lock.readLock().unlock();//最后一定不要忘记释放锁
}
System.out.println("getdatakey="+key+">val="+val);
returnval;
}

staticObjectqueryDataFromDB(Integerkey){
Objectval=newRandom().nextInt(1000);
dataMap.put(key,val);
System.out.println("writeintodatakey="+key+">val="+val);
returnval;
}

publicstaticvoidmain(String[]args){
for(inti=0;i<10;i++){
newThread(newRunnable(){publicvoidrun(){
getData(newRandom().nextInt(5));
}}).start();
}
}
}

E. 怎么把对象动态加载到jvm里里

对象的创建过程:
1. 所有的类都是在第一次被使用时,动态加载到JVM中。当首次创建类型为Dog的对象时,或者Dog类的静态方法首次被调用时,或者静态属性域首次被访问时,java解释器查找classPath,定位到Dog.class文件。

2. 载入Dog.class文件,生成一个Class类型对象,所有有关的静态初始化动作都会执行:如静态代码块,静态成员属性。 并且这种初始化动作只在Class对象首次加载时候进行一次。

3. 当用new Dog()创建对象时,首先JVM在堆heap上为Dog对象分配足够的存储空间。

4. 存储空间清空,自动将Dog对象中的所有基本类型数据都设置成了默认值,对象引用被设置为null。

5. 执行所有在字段定义处的一些初始化操作。

6. 调用构造器方法。(没有继承)

如此一来,便创建了这个对象。

F. java如何将从数据库取出的数据预先存入到内存

你要实现的这个可能跟SpringMvc的关系不是很大。
你要达到的目的其实就是在jvm启动的时候把数据库数据加载一份到内存,一个静态变量和一个静态初始化块就可以搞定你的问题,这两者都是在类加载的时候初始化一次,像前面回答的一样,你可以用一个HashMap搞定。稍微具体来说,一个静态变量
public static final Map<key,value> cache=new HashMap<key,value>()
static {
cache=请求数据库操作
}

key你自己加,String还是int都行,value是你数据库的结构,可以写个实体。获取的时候直接cache.get(key)就可以了。

G. java怎么将数据库的数据做缓存,方便查找。

你的数据非常大,那你写入内存会不会比较占资源,为什么不用异步刷新,让它显示不部分再慢慢加载

H. 如何在服务器宕机后重新把数据添加到缓存里

如果进程和缓存是分离的,那么要区分宕机部分是缓存引起的,还是逻辑引起的。比如采用memcached,如果是逻辑服务器宕机,重启就好了。如果是memcached宕机,可有两种方法选择,一个是根据日志恢复,一个是重新从数据库加载必要的数据进入到缓存。
如果进程和缓存是管理的,当宕机事件发生,一般缓存也被破坏,这种情况下,建议从数据库中加载最常用的或者按照时间排序修改最频繁的数据。

I. 请教java中怎么缓存大量的数据,比如100w条记录

小子,解决问题的思路首先就不对,什么叫JAVA中……JVM虚拟内存一般只有几百M,为何别人那么多大型系统都能跑起来?
第一,大量的数据是不会考虑放在JVM内存中;
第二,如果需要缓存大量的dto,动态数据(又称过程数据)一般用的是redis;如果是静态,系统启动时就加载的大量配置,一般考虑放ehcache。
第三,由于redis用的是物理内存,不是JVM内存,一般情况下往redis里丢千万级别的记录数基本不影响性能,小小100w条算什么呢。