当前位置:首页 » 文件管理 » java本地缓存

java本地缓存

发布时间: 2022-01-29 14:34:12

java几种缓存技术介绍说明

1、TreeCache / JBossCache

JBossCache是一个复制的事务处理缓存,它允许你缓存企业级应用数据来更好的改善性能。缓存数据被自动复制,让你轻松进行JBoss服务器之间 的集群工作。JBossCache能够通过JBoss应用服务或其他J2EE容器来运行一个MBean服务,当然,它也能独立运行。

2、WhirlyCache

Whirlycache是一个快速的、可配置的、存在于内存中的对象的缓存。它能够通过缓存对象来加快网站或应用程序的速度,否则就必须通过查询数据库或其他代价较高的处理程序来建立。

3、SwarmCache

SwarmCache是一个简单且有效的分布式缓存,它使用IP multicast与同一个局域网的其他主机进行通讯,是特别为集群和数据驱动web应用程序而设计的。SwarmCache能够让典型的读操作大大超过写操作的这类应用提供更好的性能支持。

4、JCache

JCache是个开源程序,正在努力成为JSR-107开源规范,JSR-107规范已经很多年没改变了。这个版本仍然是构建在最初的功能定义上。

5、ShiftOne

ShiftOne Java Object Cache是一个执行一系列严格的对象缓存策略的Java lib,就像一个轻量级的配置缓存工作状态的框架。

㈡ 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();
}
}
}

㈢ java中如何将file缓存化,然后写入本地

File file = new File("F:\\私人地带\\宽带账号.txt");
try {
FileInputStream fs = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(fs,"GBK"));
String subStr = "";

File toFile = new File("F:\\dd.txt");
if(toFile.exists()) toFile.delete();
toFile.createNewFile();

BufferedWriter bw = new BufferedWriter(new FileWriter(toFile));
while(null != (subStr = br.readLine())){
System.out.println(subStr);
bw.write(subStr);
}
bw.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

㈣ java缓存是什么意思 文件放在哪

Java的缓存机制是通过JVM(Java虚拟机)提供的运行时缓存来实现的,由于JVM是不跨平台的(Java的跨平台正是通过JVM的不跨平台来实现的),所以JVM的缓存机制没有实现本地临时存储,因此你找不到所谓Java的缓存文件夹。这些问题你不用这么纠结,实在不清楚的话打电话问一下官方人员就清楚了。

㈤ 转载 如何安全的更新java本地缓存

但使用缓存,不可避免的就需要对缓存进行更新。最近在做一个项目的时候,发现多个老系统里采用了一种不安全的更新方案,该方案的主要思路如下:Java代码 /** 本地缓存 */ private List configs = null; /** 本地缓存的上次更新时间 */ private long lastUpdateTime = 0; public List queryInterfaceList() { long currentTime = System.currentTimeMillis(); //判断本次缓存是否过期,过期则重新调用webservice查询数据,并更新缓存 if (currentTime - lastUpdateTime > 60000) { InterfaceManageResult result = interfaceManageFacade.queryAllInterfaceList(); if (null != result && result.isSuccess()) { configs = result.getInterfaceConfigList(); } lastUpdateTime = currentTime; } if (!CollectionUtils.isEmpty(configs)) { return configs; } //本地缓存为空,则重新调用webservice查询数据,并更新缓存 InterfaceManageResult result = interfaceManageFacade.queryAllInterfaceList(); if (null == result || !result.isSuccess()) { return null; } configs = result.getInterfaceConfigList(); return configs; } 当外部请求访问缓存数据时:如果缓存已经过期(当前时间-缓存的上次更新时间超过缓存的有效期),则重新调用webservice访问服务端查询数据,然后更新缓存。如果缓存未过期,但缓存为空,则重新调用webservice访问服务端查询数据,然后更新缓存。仔细分析一下,该方案存在以下几处安全隐患:如果某一时刻缓存过期,此时刚好有大量的请求并发访问缓存数据,则会给服务端造成很大的压力,有多少个并发请求,就会并发向服务端发起多少次webservice请求缓存第一次初始化前,如果有大量的请求并发访问缓存数据,同样会给服务端早晨很大的压力。 即在某些时间点,会给服务端带来峰值抖动,其实,造成该隐患的根本原因在于:缓存的更新时机是由外部请求直接触发的。

㈥ Java本地缓存有哪些

下面给你介绍几个常见的java缓存框架:
1、OSCache
OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。
OSCache有以下特点:
缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。
拥有全面的API--OSCache API给你全面的程序来控制所有的OSCache特性。
永久缓存--缓存能随意的写入硬盘,因此允许昂贵的创建(expensive-to-create)数据来保持缓存,甚至能让应用重启。
支持集群--集群缓存数据能被单个的进行参数配置,不需要修改代码。
缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。
2、Java Caching System
JSC(Java Caching System)是一个用分布式的缓存系统,是基于服务器的java应用程序。它是通过提供管理各种动态缓存数据来加速动态web应用。
JCS和其他缓存系统一样,也是一个用于高速读取,低速写入的应用程序。
动态内容和报表系统能够获得更好的性能。
如果一个网站,有重复的网站结构,使用间歇性更新方式的数据库(而不是连续不断的更新数据库),被重复搜索出相同结果的,就能够通过执行缓存方式改进其性能和伸缩性。
3、EHCache
EHCache 是一个纯java的在进程中的缓存,它具有以下特性:快速,简单,为Hibernate2.1充当可插入的缓存,最小的依赖性,全面的文档和测试。
4、JCache
JCache是个开源程序,正在努力成为JSR-107开源规范,JSR-107规范已经很多年没改变了。这个版本仍然是构建在最初的功能定义上。
5、ShiftOne
ShiftOne Java Object Cache是一个执行一系列严格的对象缓存策略的Java lib,就像一个轻量级的配置缓存工作状态的框架。

6、SwarmCache
SwarmCache是一个简单且有效的分布式缓存,它使用IP multicast与同一个局域网的其他主机进行通讯,是特别为集群和数据驱动web应用程序而设计的。SwarmCache能够让典型的读操作大大超过写操作的这类应用提供更好的性能支持。
SwarmCache使用JavaGroups来管理从属关系和分布式缓存的通讯。

㈦ 如何安全的更新java本地缓存

java安全的更新本地缓存的方式如下:当外部请求访问缓存数据时:如果缓存已经过期(当前时间-缓存的上次更新时间超过缓存的有效期),则重新调用webservice访问服务端查询数据,然后更新缓存。如果缓存未过期,但缓存为空,则重新调用webservice访问服务端查询数据,然后更新缓存。<pre t="code" l="java">/** 本地缓存 */
private List<InterfaceConfig> configs = null;
/** 本地缓存的上次更新时间 */
private long lastUpdateTime = 0;
public List<InterfaceConfig> queryInterfaceList() {
long currentTime = System.currentTimeMillis();
//判断本次缓存是否过期,过期则重新调用webservice查询数据,并更新缓存
if (currentTime - lastUpdateTime > 60000) {

InterfaceManageResult result = interfaceManageFacade.queryAllInterfaceList();
if (null != result result.isSuccess()) {
configs = result.getInterfaceConfigList();
}
lastUpdateTime = currentTime;
}
if (!CollectionUtils.isEmpty(configs)) {
return configs;
}

//本地缓存为空,则重新调用webservice查询数据,并更新缓存
InterfaceManageResult result = interfaceManageFacade.queryAllInterfaceList();
if (null == result || !result.isSuccess()) {
return null;
}
configs = result.getInterfaceConfigList();
return configs;
}

㈧ 如何清除JAVA缓存

java清除缓存办法:
1.禁止客户端缓存要在<head>中加入类似如下内容:

<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">

或 <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">

2.在服务器的动态网页中禁止缓存,要加入类似如下脚本

response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);

㈨ java 线程什么时候会从主内存刷新本地缓存

你的4个变量一旦声明会自动在内存中创建。
jvm也没有你说的缓存,高速缓存这些东西,全部放在堆内存中。

堆内存中的东西在GC的时候会移动

热点内容
光遇为什么显示登入服务器错误 发布:2024-10-20 03:18:02 浏览:968
pythonbase模块 发布:2024-10-20 03:11:40 浏览:65
编辑c文件编译连接运行 发布:2024-10-20 03:02:58 浏览:225
网络编程的工作 发布:2024-10-20 03:02:53 浏览:191
android手机uuid 发布:2024-10-20 03:02:16 浏览:951
图解linux安装 发布:2024-10-20 03:01:25 浏览:288
androidview动态添加 发布:2024-10-20 03:00:39 浏览:406
python数字转字符 发布:2024-10-20 03:00:02 浏览:270
墨香数据库 发布:2024-10-20 02:39:33 浏览:103
传祺gs7选哪个配置 发布:2024-10-20 02:37:22 浏览:646