- 浏览: 374362 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (225)
- java (76)
- English (2)
- office (2)
- 架构设计 (1)
- 人在职场 (3)
- database (21)
- C# (18)
- 向往的院校 (0)
- C++ (1)
- AJAX (1)
- 操作系统 (8)
- eclipse (1)
- Spring (0)
- Linux (1)
- Javascript (6)
- 离散 (0)
- 协议 (1)
- sql server (5)
- sql server (0)
- fdf (0)
- xml (1)
- sql语句里top和distinct一起用 (1)
- 正则表达式 (7)
- 表达 (1)
- ms server (1)
- SWFObject (0)
- 线程 (2)
- Java线程 (0)
- Android & SQLite (0)
- Android (0)
- window.XMLHttpRequest (0)
- DB pool (0)
- tomcat内存溢出设置JAVA_OPTS (1)
- java bcp (1)
- 文件系统转换 (1)
- Microsoft XMLDom (1)
- tree (0)
- C# installer (0)
- 对付http cc攻击 (0)
- Ckeditor (0)
- MyEclipse (0)
- PDM (0)
- PDM OOM (0)
- asp.net (0)
- tomcat (1)
- Tomcat session (1)
- jdk (0)
- Bootstrap (0)
最新评论
-
kenail:
格式太乱了。
转 使用WebService压缩传输的心得 -
存在即为合理:
写得好乱,但是还是谢谢你的驱动
JDBC连接SQL server 2005 驱动 -
guji528:
长见识了,谢谢分享!
TL1协议(正文信息收集整理来源Internet) -
王大人:
Js window confirm()方法及其使用 -
Eastman:
SqlServer附加数据库出错,错误代码5123
转自:http://developer.51cto.com 2009-09-17 10:59 yxq375 ITPUB
这里将介绍Java环境下Memcached应用,Memcached主要是集群环境下的缓存解决方案,希望本文对大家有所帮助。
本文将对在Java环境下Memcached应用进行详细介绍。Memcached主要是集群环境下的缓存解决方案,可以运行在Java或者.NET平台上,这里我们主要讲的是Windows下的Memcached应用。
这些天在设计SNA的架构,接触了一些远程缓存、集群、session复制等的东西,以前做企业应用的时候感觉作用不大,现在设计面对internet的系统架构时就非常有用了,而且在调试后看到压力测试的情况还是比较好的。
在缓存的选择上有过很多的思考,虽然说memcached结合java在序列化上性能不怎么样,不过也没有更好的集群环境下的缓存解决方案了,就选择了memcached。本来计划等公司买的服务器到位装个linux再来研究memcached,但这两天在找到了一个windows下的Memcached版本,就动手开始调整现有的框架了。
Windows下的Server端很简单,不用安装,双击运行后默认服务端口是11211,没有试着去更改端口,因为反正以后会用Unix版本,到时再记录安装步骤。下载客户端的JavaAPI包,接口非常简单,参考API手册上就有现成的例子。
目标,对旧框架缓存部分进行改造:
1、缓存工具类
2、hibernate的provider
3、用缓存实现session机制
今天先研究研究缓存工具类的改造,在旧框架中部分函数用了ehcache对执行结果进行了缓存处理,现在目标是提供一个缓存工具类,在配置文件中配置使用哪种缓存(memcached或ehcached),使其它程序对具体的缓存不依赖,同时使用AOP方式来对方法执行结果进行缓存。
首先是工具类的实现:
在Spring中配置
Java代码
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation"> <value>classpath:ehcache.xmlvalue> property> bean> <bean id="localCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean"> <property name="cacheManager" ref="cacheManager" /> <property name="cacheName" value="×××.cache.LOCAL_CACHE" /> bean> <bean id="cacheService" class="×××.core.cache.CacheService" init-method="init" destroy-method="destory"> <property name="cacheServerList" value="${cache.servers}"/> <property name="cacheServerWeights" value="${cache.cacheServerWeights}"/> <property name="cacheCluster" value="${cache.cluster}"/> <property name="localCache" ref="localCache"/> bean> <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation"> <value>classpath:ehcache.xmlvalue> property> bean> <bean id="localCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean"> <property name="cacheManager" ref="cacheManager" /> <property name="cacheName" value="×××.cache.LOCAL_CACHE" /> bean> <bean id="cacheService" class="×××.core.cache.CacheService" init-method="init" destroy-method="destory"> <property name="cacheServerList" value="${cache.servers}"/> <property name="cacheServerWeights" value="${cache.cacheServerWeights}"/> <property name="cacheCluster" value="${cache.cluster}"/> <property name="localCache" ref="localCache"/> bean> 在properties文件中配置${cache.servers} ${cache.cacheServerWeights} ${cache.cluster}
具体工具类的代码
Java代码
/** * @author Marc * */ public class CacheService { private Log logger = LogFactory.getLog(getClass()); private Cache localCache; String cacheServerList; String cacheServerWeights; boolean cacheCluster = false; int initialConnections = 10; int minSpareConnections = 5; int maxSpareConnections = 50; long maxIdleTime = 1000 * 60 * 30; // 30 minutes long maxBusyTime = 1000 * 60 * 5; // 5 minutes long maintThreadSleep = 1000 * 5; // 5 seconds int socketTimeOut = 1000 * 3; // 3 seconds to block on reads int socketConnectTO = 1000 * 3; // 3 seconds to block on initial // connections. If 0, then will use blocking // connect (default) boolean failover = false; // turn off auto-failover in event of server // down boolean nagleAlg = false; // turn off Nagle's algorithm on all sockets in // pool MemCachedClient mc; public CacheService(){ mc = new MemCachedClient(); mc.setCompressEnable(false); } /** * 放入 * */ public void put(String key, Object obj) { Assert.hasText(key); Assert.notNull(obj); Assert.notNull(localCache); if (this.cacheCluster) { mc.set(key, obj); } else { Element element = new Element(key, (Serializable) obj); localCache.put(element); } } /** * 删除 */ public void remove(String key){ Assert.hasText(key); Assert.notNull(localCache); if (this.cacheCluster) { mc.delete(key); }else{ localCache.remove(key); } } /** * 得到 */ public Object get(String key) { Assert.hasText(key); Assert.notNull(localCache); Object rt = null; if (this.cacheCluster) { rt = mc.get(key); } else { Element element = null; try { element = localCache.get(key); } catch (CacheException cacheException) { throw new DataRetrievalFailureException("Cache failure: " + cacheException.getMessage()); } if(element != null) rt = element.getValue(); } return rt; } /** * 判断是否存在 * */ public boolean exist(String key){ Assert.hasText(key); Assert.notNull(localCache); if (this.cacheCluster) { return mc.keyExists(key); }else{ return this.localCache.isKeyInCache(key); } } private void init() { if (this.cacheCluster) { String[] serverlist = cacheServerList.split(","); Integer[] weights = this.split(cacheServerWeights); // initialize the pool for memcache servers SockIOPool pool = SockIOPool.getInstance(); pool.setServers(serverlist); pool.setWeights(weights); pool.setInitConn(initialConnections); pool.setMinConn(minSpareConnections); pool.setMaxConn(maxSpareConnections); pool.setMaxIdle(maxIdleTime); pool.setMaxBusyTime(maxBusyTime); pool.setMaintSleep(maintThreadSleep); pool.setSocketTO(socketTimeOut); pool.setSocketConnectTO(socketConnectTO); pool.setNagle(nagleAlg); pool.setHashingAlg(SockIOPool.NEW_COMPAT_HASH); pool.initialize(); logger.info("初始化memcached pool!"); } } private void destory() { if (this.cacheCluster) { SockIOPool.getInstance().shutDown(); } } } /** * @author Marc * */ public class CacheService { private Log logger = LogFactory.getLog(getClass()); private Cache localCache; String cacheServerList; String cacheServerWeights; boolean cacheCluster = false; int initialConnections = 10; int minSpareConnections = 5; int maxSpareConnections = 50; long maxIdleTime = 1000 * 60 * 30; // 30 minutes long maxBusyTime = 1000 * 60 * 5; // 5 minutes long maintThreadSleep = 1000 * 5; // 5 seconds int socketTimeOut = 1000 * 3; // 3 seconds to block on reads int socketConnectTO = 1000 * 3; // 3 seconds to block on initial // connections. If 0, then will use blocking // connect (default) boolean failover = false; // turn off auto-failover in event of server // down boolean nagleAlg = false; // turn off Nagle's algorithm on all sockets in // pool MemCachedClient mc; public CacheService(){ mc = new MemCachedClient(); mc.setCompressEnable(false); } /** * 放入 * */ public void put(String key, Object obj) { Assert.hasText(key); Assert.notNull(obj); Assert.notNull(localCache); if (this.cacheCluster) { mc.set(key, obj); } else { Element element = new Element(key, (Serializable) obj); localCache.put(element); } } /** * 删除 */ public void remove(String key){ Assert.hasText(key); Assert.notNull(localCache); if (this.cacheCluster) { mc.delete(key); }else{ localCache.remove(key); } } /** * 得到 */ public Object get(String key) { Assert.hasText(key); Assert.notNull(localCache); Object rt = null; if (this.cacheCluster) { rt = mc.get(key); } else { Element element = null; try { element = localCache.get(key); } catch (CacheException cacheException) { throw new DataRetrievalFailureException("Cache failure: " + cacheException.getMessage()); } if(element != null) rt = element.getValue(); } return rt; } /** * 判断是否存在 * */ public boolean exist(String key){ Assert.hasText(key); Assert.notNull(localCache); if (this.cacheCluster) { return mc.keyExists(key); }else{ return this.localCache.isKeyInCache(key); } } private void init() { if (this.cacheCluster) { String[] serverlist = cacheServerList.split(","); Integer[] weights = this.split(cacheServerWeights); // initialize the pool for memcache servers SockIOPool pool = SockIOPool.getInstance(); pool.setServers(serverlist); pool.setWeights(weights); pool.setInitConn(initialConnections); pool.setMinConn(minSpareConnections); pool.setMaxConn(maxSpareConnections); pool.setMaxIdle(maxIdleTime); pool.setMaxBusyTime(maxBusyTime); pool.setMaintSleep(maintThreadSleep); pool.setSocketTO(socketTimeOut); pool.setSocketConnectTO(socketConnectTO); pool.setNagle(nagleAlg); pool.setHashingAlg(SockIOPool.NEW_COMPAT_HASH); pool.initialize(); logger.info("初始化memcachedpool!"); } } private void destory() { if (this.cacheCluster) { SockIOPool.getInstance().shutDown(); } } } 然后实现函数的AOP拦截类,用来在函数执行前返回缓存内容
Java代码
public class CachingInterceptor implements MethodInterceptor { private CacheService cacheService; private String cacheKey; public void setCacheKey(String cacheKey) { this.cacheKey = cacheKey; } public void setCacheService(CacheService cacheService) { this.cacheService = cacheService; } public Object invoke(MethodInvocation invocation) throws Throwable { Object result = cacheService.get(cacheKey); //如果函数返回结果不在Cache中,执行函数并将结果放入Cache if (result == null) { result = invocation.proceed(); cacheService.put(cacheKey,result); } return result; } } public class CachingInterceptor implements MethodInterceptor { private CacheService cacheService; private String cacheKey; public void setCacheKey(String cacheKey) { this.cacheKey = cacheKey; } public void setCacheService(CacheService cacheService) { this.cacheService = cacheService; } public Object invoke(MethodInvocation invocation) throws Throwable { Object result = cacheService.get(cacheKey); //如果函数返回结果不在Cache中,执行函数并将结果放入Cache if (result == null) { result = invocation.proceed(); cacheService.put(cacheKey,result); } return result; } } Spring的AOP配置如下:
Java代码
<aop:config proxy-target-class="true"> <aop:advisor pointcut="execution(* ×××.PoiService.getOne(..))" advice-ref="PoiServiceCachingAdvice" /> aop:config> <bean id="BasPoiServiceCachingAdvice" class="×××.core.cache.CachingInterceptor"> <property name="cacheKey" value="PoiService" /> <property name="cacheService" ref="cacheService" /> bean>
这里将介绍Java环境下Memcached应用,Memcached主要是集群环境下的缓存解决方案,希望本文对大家有所帮助。
本文将对在Java环境下Memcached应用进行详细介绍。Memcached主要是集群环境下的缓存解决方案,可以运行在Java或者.NET平台上,这里我们主要讲的是Windows下的Memcached应用。
这些天在设计SNA的架构,接触了一些远程缓存、集群、session复制等的东西,以前做企业应用的时候感觉作用不大,现在设计面对internet的系统架构时就非常有用了,而且在调试后看到压力测试的情况还是比较好的。
在缓存的选择上有过很多的思考,虽然说memcached结合java在序列化上性能不怎么样,不过也没有更好的集群环境下的缓存解决方案了,就选择了memcached。本来计划等公司买的服务器到位装个linux再来研究memcached,但这两天在找到了一个windows下的Memcached版本,就动手开始调整现有的框架了。
Windows下的Server端很简单,不用安装,双击运行后默认服务端口是11211,没有试着去更改端口,因为反正以后会用Unix版本,到时再记录安装步骤。下载客户端的JavaAPI包,接口非常简单,参考API手册上就有现成的例子。
目标,对旧框架缓存部分进行改造:
1、缓存工具类
2、hibernate的provider
3、用缓存实现session机制
今天先研究研究缓存工具类的改造,在旧框架中部分函数用了ehcache对执行结果进行了缓存处理,现在目标是提供一个缓存工具类,在配置文件中配置使用哪种缓存(memcached或ehcached),使其它程序对具体的缓存不依赖,同时使用AOP方式来对方法执行结果进行缓存。
首先是工具类的实现:
在Spring中配置
Java代码
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation"> <value>classpath:ehcache.xmlvalue> property> bean> <bean id="localCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean"> <property name="cacheManager" ref="cacheManager" /> <property name="cacheName" value="×××.cache.LOCAL_CACHE" /> bean> <bean id="cacheService" class="×××.core.cache.CacheService" init-method="init" destroy-method="destory"> <property name="cacheServerList" value="${cache.servers}"/> <property name="cacheServerWeights" value="${cache.cacheServerWeights}"/> <property name="cacheCluster" value="${cache.cluster}"/> <property name="localCache" ref="localCache"/> bean> <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation"> <value>classpath:ehcache.xmlvalue> property> bean> <bean id="localCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean"> <property name="cacheManager" ref="cacheManager" /> <property name="cacheName" value="×××.cache.LOCAL_CACHE" /> bean> <bean id="cacheService" class="×××.core.cache.CacheService" init-method="init" destroy-method="destory"> <property name="cacheServerList" value="${cache.servers}"/> <property name="cacheServerWeights" value="${cache.cacheServerWeights}"/> <property name="cacheCluster" value="${cache.cluster}"/> <property name="localCache" ref="localCache"/> bean> 在properties文件中配置${cache.servers} ${cache.cacheServerWeights} ${cache.cluster}
具体工具类的代码
Java代码
/** * @author Marc * */ public class CacheService { private Log logger = LogFactory.getLog(getClass()); private Cache localCache; String cacheServerList; String cacheServerWeights; boolean cacheCluster = false; int initialConnections = 10; int minSpareConnections = 5; int maxSpareConnections = 50; long maxIdleTime = 1000 * 60 * 30; // 30 minutes long maxBusyTime = 1000 * 60 * 5; // 5 minutes long maintThreadSleep = 1000 * 5; // 5 seconds int socketTimeOut = 1000 * 3; // 3 seconds to block on reads int socketConnectTO = 1000 * 3; // 3 seconds to block on initial // connections. If 0, then will use blocking // connect (default) boolean failover = false; // turn off auto-failover in event of server // down boolean nagleAlg = false; // turn off Nagle's algorithm on all sockets in // pool MemCachedClient mc; public CacheService(){ mc = new MemCachedClient(); mc.setCompressEnable(false); } /** * 放入 * */ public void put(String key, Object obj) { Assert.hasText(key); Assert.notNull(obj); Assert.notNull(localCache); if (this.cacheCluster) { mc.set(key, obj); } else { Element element = new Element(key, (Serializable) obj); localCache.put(element); } } /** * 删除 */ public void remove(String key){ Assert.hasText(key); Assert.notNull(localCache); if (this.cacheCluster) { mc.delete(key); }else{ localCache.remove(key); } } /** * 得到 */ public Object get(String key) { Assert.hasText(key); Assert.notNull(localCache); Object rt = null; if (this.cacheCluster) { rt = mc.get(key); } else { Element element = null; try { element = localCache.get(key); } catch (CacheException cacheException) { throw new DataRetrievalFailureException("Cache failure: " + cacheException.getMessage()); } if(element != null) rt = element.getValue(); } return rt; } /** * 判断是否存在 * */ public boolean exist(String key){ Assert.hasText(key); Assert.notNull(localCache); if (this.cacheCluster) { return mc.keyExists(key); }else{ return this.localCache.isKeyInCache(key); } } private void init() { if (this.cacheCluster) { String[] serverlist = cacheServerList.split(","); Integer[] weights = this.split(cacheServerWeights); // initialize the pool for memcache servers SockIOPool pool = SockIOPool.getInstance(); pool.setServers(serverlist); pool.setWeights(weights); pool.setInitConn(initialConnections); pool.setMinConn(minSpareConnections); pool.setMaxConn(maxSpareConnections); pool.setMaxIdle(maxIdleTime); pool.setMaxBusyTime(maxBusyTime); pool.setMaintSleep(maintThreadSleep); pool.setSocketTO(socketTimeOut); pool.setSocketConnectTO(socketConnectTO); pool.setNagle(nagleAlg); pool.setHashingAlg(SockIOPool.NEW_COMPAT_HASH); pool.initialize(); logger.info("初始化memcached pool!"); } } private void destory() { if (this.cacheCluster) { SockIOPool.getInstance().shutDown(); } } } /** * @author Marc * */ public class CacheService { private Log logger = LogFactory.getLog(getClass()); private Cache localCache; String cacheServerList; String cacheServerWeights; boolean cacheCluster = false; int initialConnections = 10; int minSpareConnections = 5; int maxSpareConnections = 50; long maxIdleTime = 1000 * 60 * 30; // 30 minutes long maxBusyTime = 1000 * 60 * 5; // 5 minutes long maintThreadSleep = 1000 * 5; // 5 seconds int socketTimeOut = 1000 * 3; // 3 seconds to block on reads int socketConnectTO = 1000 * 3; // 3 seconds to block on initial // connections. If 0, then will use blocking // connect (default) boolean failover = false; // turn off auto-failover in event of server // down boolean nagleAlg = false; // turn off Nagle's algorithm on all sockets in // pool MemCachedClient mc; public CacheService(){ mc = new MemCachedClient(); mc.setCompressEnable(false); } /** * 放入 * */ public void put(String key, Object obj) { Assert.hasText(key); Assert.notNull(obj); Assert.notNull(localCache); if (this.cacheCluster) { mc.set(key, obj); } else { Element element = new Element(key, (Serializable) obj); localCache.put(element); } } /** * 删除 */ public void remove(String key){ Assert.hasText(key); Assert.notNull(localCache); if (this.cacheCluster) { mc.delete(key); }else{ localCache.remove(key); } } /** * 得到 */ public Object get(String key) { Assert.hasText(key); Assert.notNull(localCache); Object rt = null; if (this.cacheCluster) { rt = mc.get(key); } else { Element element = null; try { element = localCache.get(key); } catch (CacheException cacheException) { throw new DataRetrievalFailureException("Cache failure: " + cacheException.getMessage()); } if(element != null) rt = element.getValue(); } return rt; } /** * 判断是否存在 * */ public boolean exist(String key){ Assert.hasText(key); Assert.notNull(localCache); if (this.cacheCluster) { return mc.keyExists(key); }else{ return this.localCache.isKeyInCache(key); } } private void init() { if (this.cacheCluster) { String[] serverlist = cacheServerList.split(","); Integer[] weights = this.split(cacheServerWeights); // initialize the pool for memcache servers SockIOPool pool = SockIOPool.getInstance(); pool.setServers(serverlist); pool.setWeights(weights); pool.setInitConn(initialConnections); pool.setMinConn(minSpareConnections); pool.setMaxConn(maxSpareConnections); pool.setMaxIdle(maxIdleTime); pool.setMaxBusyTime(maxBusyTime); pool.setMaintSleep(maintThreadSleep); pool.setSocketTO(socketTimeOut); pool.setSocketConnectTO(socketConnectTO); pool.setNagle(nagleAlg); pool.setHashingAlg(SockIOPool.NEW_COMPAT_HASH); pool.initialize(); logger.info("初始化memcachedpool!"); } } private void destory() { if (this.cacheCluster) { SockIOPool.getInstance().shutDown(); } } } 然后实现函数的AOP拦截类,用来在函数执行前返回缓存内容
Java代码
public class CachingInterceptor implements MethodInterceptor { private CacheService cacheService; private String cacheKey; public void setCacheKey(String cacheKey) { this.cacheKey = cacheKey; } public void setCacheService(CacheService cacheService) { this.cacheService = cacheService; } public Object invoke(MethodInvocation invocation) throws Throwable { Object result = cacheService.get(cacheKey); //如果函数返回结果不在Cache中,执行函数并将结果放入Cache if (result == null) { result = invocation.proceed(); cacheService.put(cacheKey,result); } return result; } } public class CachingInterceptor implements MethodInterceptor { private CacheService cacheService; private String cacheKey; public void setCacheKey(String cacheKey) { this.cacheKey = cacheKey; } public void setCacheService(CacheService cacheService) { this.cacheService = cacheService; } public Object invoke(MethodInvocation invocation) throws Throwable { Object result = cacheService.get(cacheKey); //如果函数返回结果不在Cache中,执行函数并将结果放入Cache if (result == null) { result = invocation.proceed(); cacheService.put(cacheKey,result); } return result; } } Spring的AOP配置如下:
Java代码
<aop:config proxy-target-class="true"> <aop:advisor pointcut="execution(* ×××.PoiService.getOne(..))" advice-ref="PoiServiceCachingAdvice" /> aop:config> <bean id="BasPoiServiceCachingAdvice" class="×××.core.cache.CachingInterceptor"> <property name="cacheKey" value="PoiService" /> <property name="cacheService" ref="cacheService" /> bean>
发表评论
-
tomcat安装不成功.提示是:failed to install tomcat6 service ,check your setting and permis
2018-03-08 14:55 434以管理员身份运行 命令提示符,弹出窗口 ,选择“是”,输入 ... -
把系统时间设置成跟数据库的一致
2016-08-22 16:41 0public String time(int x) { ... -
struts标签<logic:iterate>的用法
2016-01-08 16:17 0<logic:iterate>主要用来 ... -
WIN7环境下cmd javac不是内部或外部命令 .
2015-07-21 11:27 1220一般步骤如下: 网上摘抄部分: JAVA_HOME ... -
jdk环境变量配置
2014-08-25 11:01 0进行java开发,首先要安装jdk,安装了jdk后还要进行环境 ... -
[转]JDBC使用TNS连接多节点Oracle
2012-06-29 15:15 1207JDBC使用TNS连接多节点O ... -
一个简单的JDBC通用工具
2012-06-29 15:01 0一个简单的JDBC通用工具 支持多种数据库,统一方式产 ... -
Java调用BCP导入数据到数据库解决标识列ID问题
2012-06-29 14:53 1126面的一篇博文讲解了调用bcp批量导出数据,对于批量导入数据则写 ... -
java 可变参数方法Object... objs
2012-06-29 14:42 4209public abstract List find(Str ... -
java调用存储过程
2012-06-14 12:34 0在java可以使用java.sql.CallableState ... -
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接 错误解决办法
2012-06-13 12:56 3148用java连接sqlserver2005时总是出现下面这个错误 ... -
javac编译外部jar包
2012-06-12 14:23 3589这个有个很简单到解决 ... -
[转]Eclipse中将Java项目(引用了第三方包) 打包为jar
2012-06-12 14:13 1019如果自己的java project中需要引用额外的jar包作为 ... -
java 调用BCP导入文本数据到表
2012-06-04 15:53 0在dos下的导入语句bcp SMM_SQL_REPLICA.d ... -
[转]jdk和jre有什么区别?
2012-03-09 14:28 795来源 简单的说JDK是面 ... -
[转]Java线程:线程栈模型与线程的变量
2012-02-16 14:06 767Java线程:线程栈模型与线程的变量 SCJP5学 ... -
[转] Java线程:概念与原理
2012-02-16 13:29 811Java线程:概念与原理 ... -
Java线程:创建与启动
2012-02-16 13:26 529SCJP5学习笔记 一、定义线程 ... -
JSP页面用get传递参数乱码问题
2011-06-24 15:52 1262通过get 方式传递参数时,如果参数是中文 ,则会出现乱码现在 ... -
PO/VO/DAO/BO/POJO是什么(JAVA几种对象的解释)
2011-03-30 16:49 0/*PO:persistant object持久对 ...
相关推荐
【Java环境下Memcached应用详解】 Memcached是一款高性能的分布式内存对象缓存系统,常用于缓解数据库的压力,提高网站性能。在Java环境下,Memcached能够作为集群环境下的缓存解决方案,适用于处理大量数据并需要...
Java环境下Memcached应用详解 Memcached是一款高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载,提高数据访问速度。在Java环境下,我们可以利用各种客户端库来与Memcached服务器进行...
**Java实现Memcached小例子详解** Memcached是一种高性能的分布式内存对象缓存系统,它能够将数据存储在内存中,从而提高应用程序的响应速度。在Java中,我们可以使用各种库来与Memcached进行交互,例如...
这份"Java生产环境下性能监控与调优详解课程笔记(完整版)"涵盖了多个重要的知识点,旨在帮助开发者和运维人员提升Java应用的性能。 一、Java性能监控工具 1. JVisualVM:集成在JDK中的一个多用途工具,可以进行...
《Java与Memcached整合详解——基于Memcached-Java-Client 2.6.1》 在现代Web开发中,缓存技术是提升系统性能的重要手段之一。Memcached是一款高性能、分布式内存对象缓存系统,广泛应用于缓解数据库负载,提高响应...
**Memcached缓存系统详解与应用实践** Memcached是一款高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载,提高数据访问速度。它通过将数据存储在内存中,使得数据的读取速度大大提高,...
**Memcached Java客户端驱动包详解** Memcached是一种高性能的分布式内存对象缓存系统,用于减少数据库负载,提高网站性能。Java连接Memcached的驱动包使得Java开发者能够方便地与Memcached进行交互,实现数据的...
在Java开发环境中,Memcached被广泛用于存储临时数据,提升应用响应速度。本文将深入探讨Memcached的基本概念、安装过程以及如何在Java项目中使用它。 ### 1. Memcached基本概念 - **分布式存储**:Memcached通过...
**Memcached 完整项目详解** Memcached 是一个高性能、分布式的内存对象缓存系统,用于在应用服务器之间共享数据,减少数据库负载。这个项目包含了 Memcached 的服务端(适用于 Windows)以及 Java 客户端,是开发...
Memcached是一种高性能、分布式内存对象缓存系统,用于在分布式计算环境中缓解数据库负载,提高应用程序的性能。在Linux操作系统上安装Memcached涉及多个步骤,包括下载源码、编译、配置以及启动服务。以下是详细的...
**Memcached 安装与使用详解** Memcached 是一款高性能的分布式内存缓存系统,用于在Web应用中减轻数据库负载。它将数据存储在内存中,以键值对的形式提供快速访问,尤其适用于高并发场景。Memcached 使用简单,可...
**Memcached之Java客户端开发详解** Memcached是一种高性能、分布式内存对象缓存系统,用于减少数据库负载,提高网站性能。它通过将数据存储在内存中,以快速响应来自应用程序的请求,避免了反复读取数据库的开销。...
### Java MemCached Window 从安装到使用的详细指南 #### 一、MemCached简介 Memcached是一种高性能、分布式内存对象...通过这些指导,你可以轻松地将Memcached集成到Java应用中,从而提高数据访问速度和应用性能。
本文将深入探讨memcached与Java的结合使用,以及在Windows和Linux环境下的安装步骤。 **1. memcached的基本概念** - **分布式缓存**:memcached是一种分布式缓存解决方案,它可以将数据分散存储在多台服务器上,...
### Memcached网站应用实战知识点详解 #### 一、Memcached简介 Memcached是一个高性能的分布式内存对象缓存系统,主要用于缓解数据库压力,提高动态网页应用的响应速度。它通过在内存中维护一个巨大的hash表来存储...
【Memcached 缓存系统详解】 Memcached 是一个高性能、分布式的内存对象缓存系统,主要用于减少数据库的负载,提高应用程序的性能。它通过在内存中存储数据来提供快速访问,而不是每次请求时都去查询数据库。...
**Memcached版本包详解** Memcached是一款高性能、分布式内存对象缓存系统,它广泛应用于Web应用中,用于减轻数据库负载,提升数据访问速度...正确理解和使用Memcached,对于优化高并发环境下的应用程序具有重要意义。
- **事件驱动**:利用libevent库进行事件处理,支持多种事件模型如poll、select、epoll、kqueue等,能够在高并发环境下保持高效的响应速度。 - **内存存储**:所有数据都存储在内存中,不涉及磁盘操作,从而实现了...