- 浏览: 72344 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
comsci:
大家加油,把中国自定义工作流的技术水平推行新的高峰。。。。。。 ...
JAVASCRIPT 画工作流 -
dqqmq:
我也刚做了个网页式的画工作流页面,因要配置流程节点界面等原因, ...
JAVASCRIPT 画工作流 -
sxpyrgz:
braveone 写道servlet也是使用单例模式,那么当多 ...
为什么要使用单例 -
braveone:
servlet也是使用单例模式,那么当多个用户请求时,是不是要 ...
为什么要使用单例 -
大海lb:
sxpyrgz 写道songbin0201 写道如果是我,一定 ...
如果你是学生,你还没毕业,一定要好好的学一下大学课程,必须的
稍为讲一下三种缓存(memcached,ehcache,oscache)的区别:
1、memcached 是老外用C写的一个开源内存缓存,支持跨平台,支持分布式(多台机器同时安装memcached,并开辟用户指定的内存空间,比如,我们在a机器开辟一个512M的内存空间,在B机器开辟一个512M的内存空间.....,那么MEMCACHED为我们提供的内存空间就是它们的总和,如果有10台电脑安装,它会有5G的内存空间为我们提供KEY/VALUE存储使用,当然现在流行的语言基本都提供了API接口,它没有硬盘缓存,所以一旦机器关机,内存中的东西就会清空。它就像一个服务器一样,它会独立的运行,独立的开辟空间)。
它存储的原理是LRU算法进行缓存对象(可以是页面,对象,集合,文件等),所以在缓存在没有空间时,它会将最久未使用的内存给清空,来存放新的内容。
2、oscached 是JAVA开发的一个支持集群的开源缓存软件,它集群的思路主要是通过JGROUPS进行集群,支持硬盘缓存,它可以在JAVA中使用进行缓存,单台机器使用缓存时,性能可能比MEMCACHED快,因为它由JAVA开发,直接与JAVA通信,性能可能会优于MEMCACHED,但是多台机器时,性能是不如MEMCACHED。
3、EHCACHED和OSCACHED基本相同,支持硬盘缓存,内存缓存,单台机器使用缓存时,性能可能比MEMCACHED快,因为它由JAVA开发,直接与JAVA通信,性能可能会优于MEMCACHED.
应用场合:MEMCACHED 一般性的大型网站都在使,EHCACHED与OSCACHED经常与HIBERNATE进行整合,做二级缓存
memcached示例
import java.net.InetSocketAddress; import java.util.concurrent.Future; import net.spy.memcached.AddrUtil; import net.spy.memcached.MemcachedClient; public class MClient { public static void main(String[] args){ try{ //AddrUtil.getAddresses("192.168.0.2:11211")
//以下是使用了多台电脑进行缓存设置 MemcachedClient mc = new MemcachedClient(new InetSocketAddress("192.168.0.2", 11211),new InetSocketAddress("192.168.0.4", 11211)); Future<Boolean> b = null; for(int i = 0 ;i<100000;i++){ b = mc.set("neea:testDaF:ksIdno"+i, 100, "someObject"+i);
//主要是用与等待将值设置到内存,如果返回TRUE表示已经存到内存 if(b.get().booleanValue()==true){ } } if(b.get().booleanValue()==true){ mc.shutdown(); } } catch(Exception ex){ ex.printStackTrace(); } try{ MemcachedClient mc = new MemcachedClient( new InetSocketAddress("192.168.0.2", 11211),new InetSocketAddress("192.168.0.4", 11211)); for(int i = 0 ;i<100000;i++){ Object b = mc.get("neea:testDaF:ksIdno"+i); System.out.println(b +""+mc.getState()); } mc.shutdown(); } catch(Exception ex){ ex.printStackTrace(); } } }
oscached缓存的内容主要为下import java.io.File; import java.util.Date; import java.util.Enumeration; import java.util.Hashtable; import java.util.Properties; import com.opensymphony.oscache.base.NeedsRefreshException; import com.opensymphony.oscache.general.GeneralCacheAdministrator; public class BaseCache extends GeneralCacheAdministrator { private int refreshPeriod; private String keyPrefix; private static final long serialVersionUID = -4397192926052141162L; public BaseCache(int refreshPeriod,String keyPrefix) { super(); this.keyPrefix = keyPrefix; this.refreshPeriod = refreshPeriod;//CacheEntry.INDEFINITE_EXPIRY } public void put(String key, Object value) { this.putInCache(this.keyPrefix + "_" + key, value); } public void remove(String key) { this.flushEntry(this.keyPrefix + "_" + key); } public void removeAll(Date date) { this.flushAll(date); } public void removeAll() { this.flushAll(); } public Object get(String key) throws Exception { try { return this.getFromCache(this.keyPrefix + "_" + key, this.refreshPeriod); } catch (NeedsRefreshException e) { this.cancelUpdate(this.keyPrefix + "_" + key); throw e; } } public static void main(String[] args) { try { BaseCache cache = new BaseCache(100000000,"myCache"); Date date = new Date(); ReadProperties pu = new ReadProperties("my.properties"); System.out.println(pu.getP().size()); Hashtable ht=(Hashtable) pu.getP().clone(); System.out.println(ht.toString()); System.out.println(ht.get("age")); Enumeration e=pu.getP().propertyNames(); while(e.hasMoreElements()){ String name=(String) e.nextElement(); System.out.print(name); System.out.println(ht.get(name)); cache.put(name, ht.get(name)); //System.out.print(pu.getValue((String)e.nextElement())); } Person person = new Person(); person.setName("rgz"); cache.put("person", person); //cache.removeAll(); System.out.println(cache.get("person")); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
发表评论
-
SQL优化,间隙锁
2020-08-20 16:58 0间隙锁1: https://blog.csdn.net/wei ... -
爬数据
2020-05-30 18:43 0package com.jframe.market.util; ... -
java print
2018-11-07 09:20 0使用WORD编辑PDF,再使用 pdf adobe acrob ... -
安全知识
2018-03-27 08:45 0互联网安全需要注意问题: 1、CSRF安全 2、XSSF问题 ... -
Atomic LOCK synchronized性能测试
2016-06-26 19:36 587今天测试了多线程并发计数的性能:结果测试性能为: 计 ... -
VELOCITY三种属性加载方式
2012-06-27 21:01 2286一、velocity默认的加载方式(文件加载方式) pac ... -
JHOTDRAW一个相当不错的JAVA绘制软件
2011-12-15 18:45 2271JHOTDRAW 是运用SWING与AWT开发的一款JAVA绘 ... -
如果你是学生,你还没毕业,一定要好好的学一下大学课程,必须的
2011-11-27 17:38 18422007年从学校步入 ... -
贴个SWING画的CUBE
2011-10-22 11:47 1061看了大牛儿们的SWING博客,画一个SWING界面玩儿玩儿,附 ... -
JHOTDRAW
2011-10-13 18:16 1198Jhotdraw是一个很不错 ... -
从原理上理解服务器
2011-08-29 22:47 0服务器,顾名思义:就是提供服务的机器。例:邮件服务器,文件服务 ... -
对图形平台的一些概念的东西
2011-08-29 21:30 0开发与图形相关的系统,已经两年了,现从宏观与微观简单介绍一下 ... -
FUTURE及FutureTask理解
2011-06-30 14:49 0import java.util.concurrent.Cal ... -
GridBagConstraints 学习
2011-06-29 16:56 0package com.az.test; import ... -
JVM最大线程数计算方法
2011-06-11 13:22 1648最近在应用服务器跑压力测试过程当中,出现无法创建线程的错误。在 ... -
.XML字符串和XML DOCUMENT的相互转换
2011-06-09 22:48 1568一、使用最原始的javax.xml.parsers,标准的jd ... -
Java性能的十一个用法
2011-05-30 16:30 0private static Credit BaseCred ... -
java clone
2011-05-30 16:12 0☆什么是Clone ☆实现Shallow clone ... -
JAVA 位移
2011-05-30 14:03 0“<<”, “>>”, “>&g ... -
EventListenerList 实例
2011-05-22 22:31 1328package com.hexun.sample; impo ...
相关推荐
浏览器缓存机制介绍与缓存策略剖析 浏览器缓存机制是指浏览器在请求资源时,对已经请求过的资源进行缓存,以便下次请求时可以直接从缓存中获取,从而提高页面加载速度和减少服务器的压力。本文将详细介绍浏览器缓存...
本地缓存与分布式缓存优缺点、使用场景 缓存是计算机系统中的一种优化技术,通过将频繁访问的数据存储在内存中,以减少对外部存储设备的访问次数,提高系统的响应速度和性能。本文将详细介绍本地缓存与分布式缓存的...
"深入理解MyBatis中的一级缓存与二级缓存" MyBatis是一种流行的持久层框架,它提供了缓存机制来提高应用程序的性能。在MyBatis中,有两种类型的缓存:一级缓存和二级缓存。下面我们将深入了解MyBatis中的一级缓存和...
缓存更新涉及到如何保持缓存与数据库数据的一致性。常见的策略包括: - **失效更新**:当数据库中的数据发生变化时,让缓存失效,下次请求时自动重新加载。 - **主动更新**:在更新数据库的同时,同步更新缓存。 ...
"使用内存缓存与硬盘缓存异步下载图片"这一主题涉及到的关键技术主要包括内存缓存、硬盘缓存、AsyncTask以及GridView。下面将详细阐述这些知识点。 1. **内存缓存**: 内存缓存是一种快速的数据存储机制,它将经常...
使用 Redis 实现页面缓存 本文档主要介绍了使用 Redis 实现页面缓存的方法,包括缓存 key 的设计、缓存实现的思路和代码实现。 页面缓存的目的:页面缓存的主要目的是为了提高网站的访问速度和用户体验。通过将...
在“redis本地缓存与redis缓存”的主题中,我们将深入探讨这两种缓存方式及其各自的特点。 首先,我们要理解什么是本地缓存。本地缓存指的是将数据存储在应用程序的内存中,通常是Java的HashMap、Guava Cache或C#的...
四、缓存策略与优化 1. 时间过期:设置缓存的生命周期,到达预设时间后自动移除。 2. 固定容量:限制缓存大小,当达到上限时,根据LRU(Least Recently Used)或LFU(Least Frequently Used)策略淘汰旧数据。 3. ...
- `@CachePut`:与`@Cacheable`类似,但它总是会执行方法并更新缓存,即使缓存中已经有对应的结果。 4. **缓存配置**: 缓存的配置可以很灵活,可以定义多个缓存,每个缓存有自己的策略,比如过期时间、最大元素...
7. **缓存击穿与缓存雪崩**:处理大量并发请求同时导致缓存失效(击穿)或整个缓存服务崩溃(雪崩)的问题,可以通过加锁、使用分布式锁、预热缓存等方式解决。 8. **监控与统计**:为了优化缓存性能,需要收集和...
1. **Ehcache**:一个广泛使用的开源缓存解决方案,支持本地缓存和分布式缓存,提供了丰富的API和配置选项。 2. **Redis**:一个内存数据结构存储系统,可用作数据库、缓存和消息中间件,具有高性能和丰富的数据结构...
一级缓存是 Hibernate 内置的,默认开启,与 Session 对象关联。它是一个事务范围的缓存,也就是说,每个 Hibernate Session 对应一个一级缓存,仅在当前事务中有效。一级缓存主要存储了 Session 在当前事务中加载和...
1. 数据一致性:缓存中的数据可能与数据库中的数据不同步,需要有合适的策略来处理这种情况,例如设置缓存过期时间或使用缓存 invalidation机制。 2. 内存管理:大量缓存可能导致内存占用过高,影响其他应用程序的...
命中率是指访问缓存时成功获取数据的次数与总访问次数的比例。命中率越高,说明缓存效果越好,能够有效减少对后端数据存储系统的访问压力。而缓存未命中(Cache Miss)则是指访问缓存时未能找到所需数据,需要从原始...
在这个“SSH使用缓存例子”中,我们将探讨SSH框架如何利用Hibernate的二级缓存来提升应用性能。 SSH框架中的Hibernate是负责数据库操作的部分,而Hibernate的二级缓存是一种跨会话的缓存机制,它可以存储在多个会话...
Geoserver GWC 缓存的生成与失效 Geoserver 是一个基于开源的 GIS 服务器,可以提供强大的地图服务功能。其中,GWC(GeoWebCache)是 Geoserver 中的一个重要组件,负责生成和管理地图缓存。缓存的生成和失效是 GWC...
CheckBox+ListView混合使用,并缓存CheckBox+ListView混合使用,并缓存CheckBox+ListView混合使用,并缓存CheckBox+ListView混合使用,并缓存CheckBox+ListView混合使用,并缓存CheckBox+ListView混合使用,并缓存...
**Memcached缓存系统详解与应用实践** Memcached是一款高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载,提高数据访问速度。它通过将数据存储在内存中,使得数据的读取速度大大提高,...
例如,可以使用`refreshAfterWrite`方法设置每隔一定时间自动刷新缓存: ```java graphs.refreshAfterWrite(5, TimeUnit.MINUTES); // 每5分钟刷新一次 ``` 4. **缓存监听** 通过`RemovalListener`接口,可以监听...
`RuntimeMessage.java`可能是一个包含运行时消息处理的类,与Ehcache缓存的具体实现关系不大,但可能在实际应用中与缓存配合使用,例如处理缓存未命中时的异常情况。 至于`ehcache.jar`,它是Ehcache的库文件,包含...