﻿<?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-badqiu</title><link>http://www.blogjava.net/badqiu/</link><description>XPer</description><language>zh-cn</language><lastBuildDate>Thu, 30 Apr 2026 06:22:34 GMT</lastBuildDate><pubDate>Thu, 30 Apr 2026 06:22:34 GMT</pubDate><ttl>60</ttl><item><title>工作中为什么不想听分享及不想分享?</title><link>http://www.blogjava.net/badqiu/archive/2014/02/11/409732.html</link><dc:creator>badqiu</dc:creator><author>badqiu</author><pubDate>Tue, 11 Feb 2014 07:47:00 GMT</pubDate><guid>http://www.blogjava.net/badqiu/archive/2014/02/11/409732.html</guid><wfw:comment>http://www.blogjava.net/badqiu/comments/409732.html</wfw:comment><comments>http://www.blogjava.net/badqiu/archive/2014/02/11/409732.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/badqiu/comments/commentRss/409732.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badqiu/services/trackbacks/409732.html</trackback:ping><description><![CDATA[<p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;"><strong>一、为啥不去听别人分享？</strong></p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;">1、觉得对现有工作无关</p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;">2、工作任务重，没空</p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;">3、没目的，随大流</p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;">4、觉得别人一次讲太多，记不住</p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;">5、任务性分享，不感兴趣</p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;">&nbsp;</p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;"><strong>二、为啥自己不主动分享？</strong></p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;">1、觉得内容少，不想分享</p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;">2、无主题，主题窄</p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;">3、压力大，硬凑PPT&nbsp;&nbsp;&nbsp;&nbsp;</p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;">4、工作任务压着，没空想分享</p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;">5、目的性太强，没想其他东西</p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;">&nbsp;</p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;"><strong>三、主动分享或听分享的好处？</strong></p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;">1、扩大个人影响力</p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;">2、锻炼自己的总结能力</p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;">3、巩固自己对某一方面东西的认识</p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;">4、迫使自己学点东西</p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;">5、培养自己考虑问题的全面性</p><p style="margin: 0cm; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: #ffffff;">6、学习演讲技巧</p><img src ="http://www.blogjava.net/badqiu/aggbug/409732.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badqiu/" target="_blank">badqiu</a> 2014-02-11 15:47 <a href="http://www.blogjava.net/badqiu/archive/2014/02/11/409732.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql map_get function,用于解析map结构数据，根据key返回相对应value</title><link>http://www.blogjava.net/badqiu/archive/2012/12/14/mysql_map_get_function.html</link><dc:creator>badqiu</dc:creator><author>badqiu</author><pubDate>Fri, 14 Dec 2012 02:50:00 GMT</pubDate><guid>http://www.blogjava.net/badqiu/archive/2012/12/14/mysql_map_get_function.html</guid><wfw:comment>http://www.blogjava.net/badqiu/comments/392974.html</wfw:comment><comments>http://www.blogjava.net/badqiu/archive/2012/12/14/mysql_map_get_function.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badqiu/comments/commentRss/392974.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badqiu/services/trackbacks/392974.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.目的<br><br>mysql的列是固定的，不支持存储如Map 结构的数据，但现在我们的需求是希望有一个 ext Map的扩展列，可以存储Map结构的数据，并且可以在mysql里面进行运算.(即schema free)。所以解决方案是创建一个map_get()函数，可以根据key得到对应的value&nbsp;&nbsp;<a href='http://www.blogjava.net/badqiu/archive/2012/12/14/mysql_map_get_function.html'>阅读全文</a><img src ="http://www.blogjava.net/badqiu/aggbug/392974.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badqiu/" target="_blank">badqiu</a> 2012-12-14 10:50 <a href="http://www.blogjava.net/badqiu/archive/2012/12/14/mysql_map_get_function.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hadoop 集群升级失败记录</title><link>http://www.blogjava.net/badqiu/archive/2011/12/12/366176.html</link><dc:creator>badqiu</dc:creator><author>badqiu</author><pubDate>Mon, 12 Dec 2011 12:30:00 GMT</pubDate><guid>http://www.blogjava.net/badqiu/archive/2011/12/12/366176.html</guid><wfw:comment>http://www.blogjava.net/badqiu/comments/366176.html</wfw:comment><comments>http://www.blogjava.net/badqiu/archive/2011/12/12/366176.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/badqiu/comments/commentRss/366176.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badqiu/services/trackbacks/366176.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 因为需要使用hadoop与hbase结合使用，所以需要为hadoop hdfs升级使用append写模式。需要对现有的hadoop 0.20.1 升级至0.20.205.0; 升级过程简单的使用 hadoop namenode -upgrade 从 -18 version => -32version(这个是dfs/name/current/VERSION).但我们发现0.20.205跟hive不兼容，所以又安装facebook的hadoop版本(-30版本)。<br> <br>整个升级流程简单来说就是: dfs/name/current/VERSION -18 => -32 => -30. 升级再回滚的过程。<br> &nbsp;&nbsp;<a href='http://www.blogjava.net/badqiu/archive/2011/12/12/366176.html'>阅读全文</a><img src ="http://www.blogjava.net/badqiu/aggbug/366176.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badqiu/" target="_blank">badqiu</a> 2011-12-12 20:30 <a href="http://www.blogjava.net/badqiu/archive/2011/12/12/366176.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分布式应用上下文(Distributed ThreadLocal)</title><link>http://www.blogjava.net/badqiu/archive/2011/01/04/342300.html</link><dc:creator>badqiu</dc:creator><author>badqiu</author><pubDate>Tue, 04 Jan 2011 11:56:00 GMT</pubDate><guid>http://www.blogjava.net/badqiu/archive/2011/01/04/342300.html</guid><wfw:comment>http://www.blogjava.net/badqiu/comments/342300.html</wfw:comment><comments>http://www.blogjava.net/badqiu/archive/2011/01/04/342300.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/badqiu/comments/commentRss/342300.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badqiu/services/trackbacks/342300.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 单机应用内，在进程内部，我们可以使用ThreadLocal传递应用上下文的方式. 当前的 Spring Secrucity , Spring TransactionManager, Log4J MDC, Struts2 ActionContext等等应用场景随处可见.<br>但在是分布式系统下,由于不是在同一个进程内，所以无法使用ThreadLocal. 那么什么是分布式ThreadLocal呢？就是将一个系统中的ThreadLocal信息可以传递至下一个系统，将两者的调用可以关联起来。如对应用有一个调用，我们生成一个请求ID (traceId),在后面所有分布式系统调用中，可以通过这个traceId将所有调用关联起来，这样查找调用日志都将十分方便.&nbsp;&nbsp;<a href='http://www.blogjava.net/badqiu/archive/2011/01/04/342300.html'>阅读全文</a><img src ="http://www.blogjava.net/badqiu/aggbug/342300.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badqiu/" target="_blank">badqiu</a> 2011-01-04 19:56 <a href="http://www.blogjava.net/badqiu/archive/2011/01/04/342300.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>接口滥用问题</title><link>http://www.blogjava.net/badqiu/archive/2010/10/11/334458.html</link><dc:creator>badqiu</dc:creator><author>badqiu</author><pubDate>Mon, 11 Oct 2010 09:33:00 GMT</pubDate><guid>http://www.blogjava.net/badqiu/archive/2010/10/11/334458.html</guid><wfw:comment>http://www.blogjava.net/badqiu/comments/334458.html</wfw:comment><comments>http://www.blogjava.net/badqiu/archive/2010/10/11/334458.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/badqiu/comments/commentRss/334458.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badqiu/services/trackbacks/334458.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 我们知道，大家提倡面向接口编程，但凡事都有个度，当滥用，那么面向接口完全流于形式。&nbsp;&nbsp;<a href='http://www.blogjava.net/badqiu/archive/2010/10/11/334458.html'>阅读全文</a><img src ="http://www.blogjava.net/badqiu/aggbug/334458.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badqiu/" target="_blank">badqiu</a> 2010-10-11 17:33 <a href="http://www.blogjava.net/badqiu/archive/2010/10/11/334458.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>log4jdbc日志框架介绍</title><link>http://www.blogjava.net/badqiu/archive/2010/08/20/329464.html</link><dc:creator>badqiu</dc:creator><author>badqiu</author><pubDate>Fri, 20 Aug 2010 06:07:00 GMT</pubDate><guid>http://www.blogjava.net/badqiu/archive/2010/08/20/329464.html</guid><wfw:comment>http://www.blogjava.net/badqiu/comments/329464.html</wfw:comment><comments>http://www.blogjava.net/badqiu/archive/2010/08/20/329464.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/badqiu/comments/commentRss/329464.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badqiu/services/trackbacks/329464.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 现大家使用的ibatis,hibernate,spring jdbc的sql日志信息，有一点个缺点是占位符与参数是分开打印的,如果想要拷贝sql至PLSQL Developer客户端直接执行，需要自己拼凑sql。而log4jdbc是在jdbc层的一个日志框架，可以将占位符与参数全部合并在一起显示，方便直接拷贝sql在PLSQL Developer等客户端直接执行，加快调试速度。&nbsp;&nbsp;<a href='http://www.blogjava.net/badqiu/archive/2010/08/20/329464.html'>阅读全文</a><img src ="http://www.blogjava.net/badqiu/aggbug/329464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badqiu/" target="_blank">badqiu</a> 2010-08-20 14:07 <a href="http://www.blogjava.net/badqiu/archive/2010/08/20/329464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>rapid-framework v3.9新版本发布</title><link>http://www.blogjava.net/badqiu/archive/2010/07/21/326790.html</link><dc:creator>badqiu</dc:creator><author>badqiu</author><pubDate>Wed, 21 Jul 2010 14:41:00 GMT</pubDate><guid>http://www.blogjava.net/badqiu/archive/2010/07/21/326790.html</guid><wfw:comment>http://www.blogjava.net/badqiu/comments/326790.html</wfw:comment><comments>http://www.blogjava.net/badqiu/archive/2010/07/21/326790.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/badqiu/comments/commentRss/326790.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badqiu/services/trackbacks/326790.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本次新版本发布最主要的更新内容是生成器的加强,并且之前已经发布了rapid-generator独立版.<br>此次升级保证模板的兼容性.后续rapid-framework的发行版将不直接提供rapid-generator的源码在项目中,以便以后大家编写的模板都可以在一个生成器引擎中运行. &nbsp;&nbsp;<a href='http://www.blogjava.net/badqiu/archive/2010/07/21/326790.html'>阅读全文</a><img src ="http://www.blogjava.net/badqiu/aggbug/326790.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badqiu/" target="_blank">badqiu</a> 2010-07-21 22:41 <a href="http://www.blogjava.net/badqiu/archive/2010/07/21/326790.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Holder模式</title><link>http://www.blogjava.net/badqiu/archive/2010/06/22/324213.html</link><dc:creator>badqiu</dc:creator><author>badqiu</author><pubDate>Tue, 22 Jun 2010 14:01:00 GMT</pubDate><guid>http://www.blogjava.net/badqiu/archive/2010/06/22/324213.html</guid><wfw:comment>http://www.blogjava.net/badqiu/comments/324213.html</wfw:comment><comments>http://www.blogjava.net/badqiu/archive/2010/06/22/324213.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/badqiu/comments/commentRss/324213.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badqiu/services/trackbacks/324213.html</trackback:ping><description><![CDATA[<p style="max-width: 65em; font-family: arial, sans-serif; font-size: 13px; ">(本方法属于作者经验总结出该模式)</p>
<p style="max-width: 65em; font-family: arial, sans-serif; font-size: 13px; ">Holder模式的主要功能是将一些Bean可以转为静态方法调用.方便使用.</p>
<p style="max-width: 65em; font-family: arial, sans-serif; font-size: 13px; ">适用于一些系统只存在单例(singleton)并且&nbsp;<strong>十分常用</strong>&nbsp;的基础服务对象.这些基础服务如果每次使用spring注入,只会增加无谓的代码及一些不确定性.</p>
<p style="max-width: 65em; font-family: arial, sans-serif; font-size: 13px; "><strong>示例如下:</strong></p>
<span style="font-family: arial, sans-serif; font-size: 13px; ">
<pre class="prettyprint" style="font-size: 12px; margin-left: 2em; padding-top: 0.5em; padding-right: 0.5em; padding-bottom: 0.5em; padding-left: 0.5em; border-left-width: 3px; border-left-style: solid; border-left-color: #cccccc; "><span class="typ" style="color: #660066; ">BeanValidatorHolder</span><span class="pun" style="color: #666600; ">.</span><span class="pln" style="color: #000000; ">validate</span><span class="pun" style="color: #666600; ">(</span><span class="pln" style="color: #000000; ">bean</span><span class="pun" style="color: #666600; ">)</span><span class="pln" style="color: #000000; "> </span><span class="com" style="color: #880000; ">// HibernateValidator一般系统只有一个</span><span class="pln" style="color: #000000; ">
</span><span class="typ" style="color: #660066; ">CacheHolder</span><span class="pun" style="color: #666600; ">.</span><span class="kwd" style="color: #000088; ">get</span><span class="pun" style="color: #666600; ">(</span><span class="str" style="color: #008800; ">"key"</span><span class="pun" style="color: #666600; ">)</span><span class="pln" style="color: #000000; "> </span><span class="com" style="color: #880000; ">//如Memcached,应用系统也只有一个对象</span><span class="pln" style="color: #000000; ">
</span><span class="typ" style="color: #660066; ">ApplicationContextHolder</span><span class="pun" style="color: #666600; ">.</span><span class="pln" style="color: #000000; ">getBean</span><span class="pun" style="color: #666600; ">(</span><span class="str" style="color: #008800; ">"userInfoService"</span><span class="pun" style="color: #666600; ">);</span></pre>
</span>
<p style="max-width: 65em; font-family: arial, sans-serif; font-size: 13px; "><strong>与singleton相比特点</strong></p>
<ul style="max-width: 65em; padding-left: 40px; font-family: arial, sans-serif; font-size: 13px; ">
    <li>一个Holder只能持有一个对象</li>
    <li>Holder一般是持有接口,所以你可以方便的改变实现</li>
    <li>配合spring完成Holder初始化</li>
</ul>
<p style="max-width: 65em; font-family: arial, sans-serif; font-size: 13px; "></p>
<h2 style="font-size: large; font-family: arial, sans-serif; "><a name="示例1.">示例1.CacheHolder</a><a href="http://code.google.com/p/rapid-framework/w/edit/CacheHolder" style="color: #0000cc; ">?</a></h2>
<p style="max-width: 65em; font-family: arial, sans-serif; font-size: 13px; ">用于持有Cache对象</p>
<p style="max-width: 65em; font-family: arial, sans-serif; font-size: 13px; "><strong>1.1在spring中初始化</strong></p>
<span style="font-family: arial, sans-serif; font-size: 13px; ">
<pre class="prettyprint" style="font-size: 12px; margin-left: 2em; padding-top: 0.5em; padding-right: 0.5em; padding-bottom: 0.5em; padding-left: 0.5em; border-left-width: 3px; border-left-style: solid; border-left-color: #cccccc; "><span class="tag" style="color: #000088; ">&lt;bean</span><span class="pln" style="color: #000000; "> </span><span class="atn" style="color: #660066; ">class</span><span class="pun" style="color: #666600; ">=</span><span class="atv" style="color: #008800; ">"cn.org.rapid_framework.util.holder.CacheHolder"</span><span class="tag" style="color: #000088; ">&gt;</span><span class="pln" style="color: #000000; ">
&nbsp; &nbsp; </span><span class="tag" style="color: #000088; ">&lt;property</span><span class="pln" style="color: #000000; "> </span><span class="atn" style="color: #660066; ">name</span><span class="pun" style="color: #666600; ">=</span><span class="atv" style="color: #008800; ">"cache"</span><span class="pln" style="color: #000000; "> </span><span class="atn" style="color: #660066; ">ref</span><span class="pun" style="color: #666600; ">=</span><span class="atv" style="color: #008800; ">"memcacheCacheImpl"</span><span class="tag" style="color: #000088; ">/&gt;</span><span class="pln" style="color: #000000; ">
</span><span class="tag" style="color: #000088; ">&lt;/bean&gt;</span></pre>
</span>
<p style="max-width: 65em; font-family: arial, sans-serif; font-size: 13px; "><strong>1.2使用</strong>&nbsp;CacheHolder<a href="http://code.google.com/p/rapid-framework/w/edit/CacheHolder" style="color: #0000cc; ">?</a>使用</p>
<span style="font-family: arial, sans-serif; font-size: 13px; ">
<pre class="prettyprint" style="font-size: 12px; margin-left: 2em; padding-top: 0.5em; padding-right: 0.5em; padding-bottom: 0.5em; padding-left: 0.5em; border-left-width: 3px; border-left-style: solid; border-left-color: #cccccc; "><span class="typ" style="color: #660066; ">CacheHolder</span><span class="pun" style="color: #666600; ">.</span><span class="pln" style="color: #000000; ">add</span><span class="pun" style="color: #666600; ">(</span><span class="str" style="color: #008800; ">"key"</span><span class="pun" style="color: #666600; ">,</span><span class="str" style="color: #008800; ">"cache_value"</span><span class="pun" style="color: #666600; ">,</span><span class="str" style="color: #008800; ">"1h"</span><span class="pun" style="color: #666600; ">);</span><span class="pln" style="color: #000000; ">
</span><span class="com" style="color: #880000; ">//do something</span></pre>
</span>
<p style="max-width: 65em; font-family: arial, sans-serif; font-size: 13px; "><strong>1.3实现</strong></p>
<span style="font-family: arial, sans-serif; font-size: 13px; ">
<pre class="prettyprint" style="font-size: 12px; margin-left: 2em; padding-top: 0.5em; padding-right: 0.5em; padding-bottom: 0.5em; padding-left: 0.5em; border-left-width: 3px; border-left-style: solid; border-left-color: #cccccc; "><span class="kwd" style="color: #000088; ">public</span><span class="pln" style="color: #000000; "> </span><span class="kwd" style="color: #000088; ">class</span><span class="pln" style="color: #000000; "> </span><span class="typ" style="color: #660066; ">CacheHolder</span><span class="pln" style="color: #000000; "> </span><span class="kwd" style="color: #000088; ">implements</span><span class="pln" style="color: #000000; "> </span><span class="typ" style="color: #660066; ">InitializingBean</span><span class="pun" style="color: #666600; ">{</span><span class="pln" style="color: #000000; ">
&nbsp; &nbsp; </span><span class="kwd" style="color: #000088; ">private</span><span class="pln" style="color: #000000; "> </span><span class="kwd" style="color: #000088; ">static</span><span class="pln" style="color: #000000; "> </span><span class="typ" style="color: #660066; ">Cache</span><span class="pln" style="color: #000000; "> cache</span><span class="pun" style="color: #666600; ">;</span><span class="pln" style="color: #000000; "><br />
&nbsp; &nbsp; </span><span class="kwd" style="color: #000088; ">public</span><span class="pln" style="color: #000000; "> </span><span class="kwd" style="color: #000088; ">void</span><span class="pln" style="color: #000000; "> afterPropertiesSet</span><span class="pun" style="color: #666600; ">()</span><span class="pln" style="color: #000000; "> </span><span class="kwd" style="color: #000088; ">throws</span><span class="pln" style="color: #000000; "> </span><span class="typ" style="color: #660066; ">Exception</span><span class="pln" style="color: #000000; "> </span><span class="pun" style="color: #666600; ">{</span><span class="pln" style="color: #000000; ">
&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="kwd" style="color: #000088; ">if</span><span class="pun" style="color: #666600; ">(</span><span class="pln" style="color: #000000; ">cache </span><span class="pun" style="color: #666600; ">==</span><span class="pln" style="color: #000000; "> </span><span class="kwd" style="color: #000088; ">null</span><span class="pun" style="color: #666600; ">)</span><span class="pln" style="color: #000000; "> </span><span class="kwd" style="color: #000088; ">throw</span><span class="pln" style="color: #000000; "> </span><span class="kwd" style="color: #000088; ">new</span><span class="pln" style="color: #000000; "> <span style="color: #660066; ">IllegalStateException</span><span class="pun" style="color: #666600; ">(</span><span class="str" style="color: #008800; ">"not found 'cache' for CacheHolder "</span><span class="pun" style="color: #666600; ">);</span>
</span><span class="pln" style="color: #000000; ">&nbsp; &nbsp; </span><span class="pun" style="color: #666600; ">}</span><span class="pln" style="color: #000000; ">
&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </span><span class="kwd" style="color: #000088; ">public</span><span class="pln" style="color: #000000; "> </span><span class="kwd" style="color: #000088; ">void</span><span class="pln" style="color: #000000; "> setCache</span><span class="pun" style="color: #666600; ">(</span><span class="typ" style="color: #660066; ">Cache</span><span class="pln" style="color: #000000; "> c</span><span class="pun" style="color: #666600; ">)</span><span class="pln" style="color: #000000; "> </span><span class="pun" style="color: #666600; ">{</span><span class="pln" style="color: #000000; ">
&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="kwd" style="color: #000088; ">if</span><span class="pun" style="color: #666600; ">(</span><span class="pln" style="color: #000000; ">cache </span><span class="pun" style="color: #666600; ">!=</span><span class="pln" style="color: #000000; "> </span><span class="kwd" style="color: #000088; ">null</span><span class="pun" style="color: #666600; ">)</span><span class="pln" style="color: #000000; "> </span><span class="kwd" style="color: #000088; ">throw</span><span class="pln" style="color: #000000; "> </span><span class="kwd" style="color: #000088; ">new</span><span class="pln" style="color: #000000; "> </span><span class="typ" style="color: #660066; ">IllegalStateException</span><span class="pun" style="color: #666600; ">(</span><span class="str" style="color: #008800; ">"CacheHolder already holded 'cache'"</span><span class="pun" style="color: #666600; ">);</span><span class="pln" style="color: #000000; ">
&nbsp; &nbsp; &nbsp; &nbsp; cache </span><span class="pun" style="color: #666600; ">=</span><span class="pln" style="color: #000000; "> c</span><span class="pun" style="color: #666600; ">;</span><span class="pln" style="color: #000000; ">
&nbsp; &nbsp; </span><span class="pun" style="color: #666600; ">}</span><span class="pln" style="color: #000000; "><br />
&nbsp; &nbsp; </span><span class="kwd" style="color: #000088; ">public</span><span class="pln" style="color: #000000; "> </span><span class="kwd" style="color: #000088; ">static</span><span class="pln" style="color: #000000; "> </span><span class="typ" style="color: #660066; ">Cache</span><span class="pln" style="color: #000000; "> getCache</span><span class="pun" style="color: #666600; ">(){</span><span class="pln" style="color: #000000; ">
&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="kwd" style="color: #000088; ">return</span><span class="pln" style="color: #000000; "> cache</span><span class="pun" style="color: #666600; ">;</span><span class="pln" style="color: #000000; ">
&nbsp; &nbsp; </span><span class="pun" style="color: #666600; ">}</span><span class="pln" style="color: #000000; "><br />
//省略了其它N多cache静态方法
&nbsp; &nbsp; </span><span class="kwd" style="color: #000088; ">public</span><span class="pln" style="color: #000000; "> </span><span class="kwd" style="color: #000088; ">static</span><span class="pln" style="color: #000000; "> </span><span class="kwd" style="color: #000088; ">void</span><span class="pln" style="color: #000000; "> add</span><span class="pun" style="color: #666600; ">(</span><span class="typ" style="color: #660066; ">String</span><span class="pln" style="color: #000000; "> key</span><span class="pun" style="color: #666600; ">,</span><span class="pln" style="color: #000000; "> </span><span class="typ" style="color: #660066; ">Object</span><span class="pln" style="color: #000000; "> value</span><span class="pun" style="color: #666600; ">,</span><span class="pln" style="color: #000000; "> </span><span class="typ" style="color: #660066; ">String</span><span class="pln" style="color: #000000; "> expiration</span><span class="pun" style="color: #666600; ">)</span><span class="pln" style="color: #000000; "> </span><span class="pun" style="color: #666600; ">{</span><span class="pln" style="color: #000000; ">
&nbsp; &nbsp; &nbsp; &nbsp; cache</span><span class="pun" style="color: #666600; ">.</span><span class="pln" style="color: #000000; ">add</span><span class="pun" style="color: #666600; ">(</span><span class="pln" style="color: #000000; ">key</span><span class="pun" style="color: #666600; ">,</span><span class="pln" style="color: #000000; "> value</span><span class="pun" style="color: #666600; ">,</span><span class="pln" style="color: #000000; "> parseDuration</span><span class="pun" style="color: #666600; ">(</span><span class="pln" style="color: #000000; ">expiration</span><span class="pun" style="color: #666600; ">));</span><span class="pln" style="color: #000000; ">
&nbsp; &nbsp; </span><span class="pun" style="color: #666600; ">}</span><span class="pln" style="color: #000000; "><br />
&nbsp; &nbsp; </span><span class="kwd" style="color: #000088; ">public</span><span class="pln" style="color: #000000; "> </span><span class="kwd" style="color: #000088; ">static</span><span class="pln" style="color: #000000; "> </span><span class="kwd" style="color: #000088; ">void</span><span class="pln" style="color: #000000; "> cleanHolder</span><span class="pun" style="color: #666600; ">()</span><span class="pln" style="color: #000000; "> </span><span class="pun" style="color: #666600; ">{</span><span class="pln" style="color: #000000; ">
&nbsp; &nbsp; &nbsp; &nbsp; cache </span><span class="pun" style="color: #666600; ">=</span><span class="pln" style="color: #000000; "> </span><span class="kwd" style="color: #000088; ">null</span><span class="pun" style="color: #666600; ">;</span><span class="pln" style="color: #000000; ">
&nbsp; &nbsp; </span><span class="pun" style="color: #666600; ">}</span><span class="pln" style="color: #000000; ">&nbsp; &nbsp; &nbsp; &nbsp;
</span><span class="pun" style="color: #666600; ">}</span></pre>
</span>
<h2 style="font-size: large; font-family: arial, sans-serif; "><a name="其它可以存在的Holder">其它可以存在的Holder</a></h2>
<p style="max-width: 65em; font-family: arial, sans-serif; font-size: 13px; "></p>
<table style="border-collapse: separate; font-family: arial, sans-serif; font-size: 13px; ">
    <tbody>
        <tr>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "><strong>holder</strong></td>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "><strong>功能</strong></td>
        </tr>
        <tr>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "><strong>BeanValidatorHolder</strong></td>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; ">用于持有Hibernate Validator</td>
        </tr>
        <tr>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "><strong>SpringValidatorHolder</strong></td>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; ">用于持有Spring Validator</td>
        </tr>
        <tr>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "><strong>ApplicationContextHolder</strong></td>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; ">用于持有Spring ApplicationContext<a href="http://code.google.com/p/rapid-framework/w/edit/ApplicationContext" style="color: #0000cc; ">?</a></td>
        </tr>
        <tr>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "><strong>CacheHolder</strong></td>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; ">用于持有Cache</td>
        </tr>
        <tr>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "><strong>MessagePublisherHodler</strong></td>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; ">用于持有类似JMS消息中心的消息发送</td>
        </tr>
        <tr>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "><strong>MessageSourceHolder</strong></td>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; ">持用MessageSource<a href="http://code.google.com/p/rapid-framework/w/edit/MessageSource" style="color: #0000cc; ">?</a>,用于国际化</td>
        </tr>
        <tr>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "><strong>MailerHolder</strong></td>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; ">用于邮件发送的Mailer</td>
        </tr>
        <tr>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "><strong>ConfigHolder</strong></td>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; ">用于持有配置,需要动态刷新的参数使用,请查看文章<a href="http://www.blogjava.net/badqiu/archive/2010/05/25/321776.html">保持类的无状态</a></td>
        </tr>
        <tr>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "><strong>SecurityManagerHolder</strong></td>
            <td style="font-size: 13px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; ">用于权限控制的SecurityManager</td>
        </tr>
    </tbody>
</table><img src ="http://www.blogjava.net/badqiu/aggbug/324213.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badqiu/" target="_blank">badqiu</a> 2010-06-22 22:01 <a href="http://www.blogjava.net/badqiu/archive/2010/06/22/324213.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为velocity,freemarker提供jsp:include功能</title><link>http://www.blogjava.net/badqiu/archive/2010/06/13/323540.html</link><dc:creator>badqiu</dc:creator><author>badqiu</author><pubDate>Sun, 13 Jun 2010 11:41:00 GMT</pubDate><guid>http://www.blogjava.net/badqiu/archive/2010/06/13/323540.html</guid><wfw:comment>http://www.blogjava.net/badqiu/comments/323540.html</wfw:comment><comments>http://www.blogjava.net/badqiu/archive/2010/06/13/323540.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/badqiu/comments/commentRss/323540.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badqiu/services/trackbacks/323540.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 使用JSP的都知道jsp:include指令，可以include其它jsp页面或者servlet。<br><br>而如果你不是使用JSP，而是使用模板引擎如Freemarker,Velocity。有该功能也将十分方便。&nbsp;&nbsp;<a href='http://www.blogjava.net/badqiu/archive/2010/06/13/323540.html'>阅读全文</a><img src ="http://www.blogjava.net/badqiu/aggbug/323540.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badqiu/" target="_blank">badqiu</a> 2010-06-13 19:41 <a href="http://www.blogjava.net/badqiu/archive/2010/06/13/323540.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>系统参数的动态刷新,只需一个原则:保持类的无状态</title><link>http://www.blogjava.net/badqiu/archive/2010/05/25/321776.html</link><dc:creator>badqiu</dc:creator><author>badqiu</author><pubDate>Mon, 24 May 2010 16:43:00 GMT</pubDate><guid>http://www.blogjava.net/badqiu/archive/2010/05/25/321776.html</guid><wfw:comment>http://www.blogjava.net/badqiu/comments/321776.html</wfw:comment><comments>http://www.blogjava.net/badqiu/archive/2010/05/25/321776.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/badqiu/comments/commentRss/321776.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badqiu/services/trackbacks/321776.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 既然可以用如此简单的方法达到我们的目的,为何要搞出那么复杂的方案. (简单就是美)&nbsp;&nbsp;<a href='http://www.blogjava.net/badqiu/archive/2010/05/25/321776.html'>阅读全文</a><img src ="http://www.blogjava.net/badqiu/aggbug/321776.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badqiu/" target="_blank">badqiu</a> 2010-05-25 00:43 <a href="http://www.blogjava.net/badqiu/archive/2010/05/25/321776.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>