﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-ruchal-随笔分类-技术点滴</title><link>http://www.blogjava.net/ruchal/category/39787.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 05 Jul 2009 08:46:29 GMT</lastBuildDate><pubDate>Sun, 05 Jul 2009 08:46:29 GMT</pubDate><ttl>60</ttl><item><title>在Radius服务中使用MS-CHAP-V1协议进行通讯</title><link>http://www.blogjava.net/ruchal/archive/2009/07/04/radius_MSCHAPV1.html</link><dc:creator>青果</dc:creator><author>青果</author><pubDate>Sat, 04 Jul 2009 03:42:00 GMT</pubDate><guid>http://www.blogjava.net/ruchal/archive/2009/07/04/radius_MSCHAPV1.html</guid><wfw:comment>http://www.blogjava.net/ruchal/comments/285445.html</wfw:comment><comments>http://www.blogjava.net/ruchal/archive/2009/07/04/radius_MSCHAPV1.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/ruchal/comments/commentRss/285445.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ruchal/services/trackbacks/285445.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近一个项目“无线网接入动态密码验证” ，使用思科的ACS作为Radius客户端，自己实现Radius服务端进行密码验证，步骤如下：（握手过程Radius已经封装，无须管它）<br>1，    客户端：发送报文，接受返回报文并解析，然后进行相应的处理（客户端由思科的ACS处理）；<br>2，    服务端：接受报文，解析报文并验证（密码之类），然后响应相应的结果（需要java实现）&nbsp;&nbsp;<a href='http://www.blogjava.net/ruchal/archive/2009/07/04/radius_MSCHAPV1.html'>阅读全文</a><img src ="http://www.blogjava.net/ruchal/aggbug/285445.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ruchal/" target="_blank">青果</a> 2009-07-04 11:42 <a href="http://www.blogjava.net/ruchal/archive/2009/07/04/radius_MSCHAPV1.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oscache 使用总结</title><link>http://www.blogjava.net/ruchal/archive/2009/05/22/oscache.html</link><dc:creator>青果</dc:creator><author>青果</author><pubDate>Fri, 22 May 2009 14:45:00 GMT</pubDate><guid>http://www.blogjava.net/ruchal/archive/2009/05/22/oscache.html</guid><wfw:comment>http://www.blogjava.net/ruchal/comments/277420.html</wfw:comment><comments>http://www.blogjava.net/ruchal/archive/2009/05/22/oscache.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/ruchal/comments/commentRss/277420.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ruchal/services/trackbacks/277420.html</trackback:ping><description><![CDATA[<br />
前阵子对公司网站进行了性能优化，其中，有一项就是使用OSCache添加页面的缓存，开始还不以为然，做完缓存后，发现服务器的负载大大减小了，看来还真不能小瞧OSCache。<br />
<br />
OSCache 主要用于页面缓存，当然它也可用于数据层缓存，但数据层缓存一般使用ehcache比较成熟。OSCache对于更新较慢的页面（比如一天或半天更新一次）缓存效果比较好，能大幅降低数据库和服务器的压力，而且OSCache简单易用，是一个非常不错的缓存框架。<br />
<br />
<strong>OSCache的配置和使用</strong><br />
<br />
<strong>一、oscache 环境搭建</strong><br />
<br />
&nbsp;&nbsp;&nbsp; 1， 从 https://oscache.dev.java.net/files/documents/629/61427/oscache-2.4.1-full.zip 下载&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oscache-2.4.1-full版本，并从压缩包中分别拷贝oscache-2.4.1.jar、oscache.properties、&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oscache.tld放入本地项目的应用目录，如下：<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $WEB-APP"WEB-INF"lib"oscache.jar<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $WEB-APP"WEB-INF"classes"oscache.properties<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $WEB-APP"WEB-INF"classes"oscache.tld<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 2， 在web.xml 中加入如下配置<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;taglib&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;taglib-uri&gt;oscache&lt;/taglib-uri&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;taglib-location&gt;/WEB-INF/classes/oscache.tld&lt;/taglib-location&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/taglib&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3， 如果需要日志输出，可在log4j.properties文件中加入如下配置<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log4j.appender.file=org.apache.log4j.RollingFileAppender<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log4j.appender.file.File=oscache.log<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log4j.appender.file.MaxFileSize=100KB<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log4j.appender.file.MaxBackupIndex=5<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log4j.appender.file.layout=org.apache.log4j.PatternLayout<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; log4j.appender.file.layout.ConversionPattern=[start]%d{yyyy/MM/dd/HH:mm:ss}<br />
<br />
<strong>二、oscache.properties</strong><br />
<br />
&nbsp;&nbsp;&nbsp; 主要配置<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 1,cache.memory = true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置是否使用内存缓存<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可设置为true 或者 false ，默认为true<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 2,cache.capacity =10000<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置缓存对象的最大数量值<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 默认是不限制，cache不会移走任何缓存内容，负数被当作不限制<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 3,cache.unlimited.disk<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定硬盘缓存是否要作限制，默认值为false<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; false的状况下，硬盘缓存容量将和cache.capacity的值相同<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 4，cache.path<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定硬盘缓存的路径，目录如果不存在将被建立，同时注意oscache应该要有权限写文件系统。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置如：cache.path=d:""myapp""cache<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 5，cache.persistence.overflow.only<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定是否只有在内存不足的情况下才使用硬盘缓存。默认值false，推荐使用true如果内存cache被允许的话<br />
<br />
<strong><br />
三、标签参数介绍</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 使用了oscache:cache 的属性：<br />
<br />
<strong>&nbsp;&nbsp;&nbsp;&nbsp; key</strong>&nbsp; 缓冲的key,可以是任何的字符串，也可以动态生成。在一个范围内必须唯一。默认使用请求的URI和请求的字符串(问号后面的部分) <br />
<br />
<strong>&nbsp;&nbsp;&nbsp;&nbsp; scope</strong>&nbsp; 范围，有application和session, 默认为 application <br />
<br />
<strong>&nbsp;&nbsp;&nbsp;&nbsp; time</strong>&nbsp; 缓冲内容的时间(秒)，默认为1小时，3600秒，如果为-1则内容永远不过期<br />
<br />
<strong>&nbsp;&nbsp;&nbsp;&nbsp; refresh</strong> 强制刷新缓存，false 或者true，可以使用此属性受动刷新需立即更新的数据 <br />
<strong><br />
&nbsp;&nbsp;&nbsp;&nbsp; groups</strong> 设置分组，可以同组的缓冲数据进行控制 <br />
<br />
<strong>&nbsp;&nbsp;&nbsp;&nbsp; language</strong>&nbsp; 语言，默认为当前页面的语言<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 还有许多其他的属性，在这里不一一列举<br />
<br />
<br />
<strong>四、oscache 基本用法</strong><br />
<br />
&nbsp;&nbsp;&nbsp; 1，设置缓存<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%@ taglib uri="/WEB-INF/tlds/oscache.tld" prefix="oscache" %&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;oscache:cache key=&#8221;cacheKey&#8221; time=&#8221;300&#8221; scope=&#8221;application&#8221;&gt;被缓存的列表&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/oscache:cache&gt;&nbsp; 其中，cacheKey和time可以自己动态构件，scope（缓存范围） 可以是ession、application <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 注意：cacheKey或者time如果是jsp表达式时，如：key=&#8221;&lt;%=&#8221;string&#8221;+variable%&gt;&#8221;而不是：key=&#8221;string&lt;%=variable%&gt;&#8221;，写法要注意，否则页面会报错<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 2，刷新缓存<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%@ taglib uri="/WEB-INF/tlds/oscache.tld" prefix="oscache" %&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;oscache:flush key=&#8221;cacheKey&#8221; scope=&#8221;application&#8221; /&gt;<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 3，分组缓存<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;cache:flush group='b' scope='application'/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;cache:cachekey='cacheKey_1' groups='a,b' duration='5s'&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里面的内容被缓存到键值为cacheKey_1，组名为a和b的缓存中，正常情况下，每隔5秒钟刷新一 次，但受上面标签&#8220;&lt;cache:flush group='b' scope='application'/&gt;&#8221;的影响，它将随每次页面的刷新而刷新<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/cache:cache&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;cache:cachekey='cacheKey_2' groups='a' duration='5s'&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里面的内容被缓存到键值为cacheKey_2，组名为a的缓存中，它将每隔5秒中刷新一次<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/cache:cache&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;cache:cachekey='cacheKey_3' duration='20s'&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里面的内容被缓存到cacheKey_3，组a，b中，组是通过标签&lt;cache: addgroup&gt;而添加的，它也会受本页开头标签&#8220;&lt;cache:flush group='b' scope='application'/&gt;&#8221;的影响而随页面刷新而刷新<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;cache:addgroup group='a'/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;cache:addgroup group='b'/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/cache:cache&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;cache:cachekey='cacheKey_4' duration='20s'&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里面的内容被缓存到cacheKey_4，组a，b中，组是通过标签&lt;cache: addgroups&gt;而添加的，它也会受本页开头标签&#8220;&lt;cache:flush group='b' scope='application'/&gt;&#8221;的影响而随页面刷新而刷新<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;cache:addgroups groups='a,b'/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/cache:cache&gt;<br />
<br />
<strong>五、参考资料</strong><br />
<br />
&nbsp;&nbsp;&nbsp; 1，oscache-2.4.1-full 中的demo，下在地址：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; https://oscache.dev.java.net/files/documents/629/61427/oscache-2.4.1-full.zip<br />
&nbsp;&nbsp;&nbsp; 2，oscache API：http://www.opensymphony.com/oscache/api/
<img src ="http://www.blogjava.net/ruchal/aggbug/277420.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ruchal/" target="_blank">青果</a> 2009-05-22 22:45 <a href="http://www.blogjava.net/ruchal/archive/2009/05/22/oscache.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>