﻿<?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-走自己的路</title><link>http://www.blogjava.net/ldd600/</link><description>路漫漫其修远兮，吾将上下而求索</description><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 10:47:58 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 10:47:58 GMT</pubDate><ttl>60</ttl><item><title>网站数据统计服务（一），架构</title><link>http://www.blogjava.net/ldd600/archive/2011/04/12/348138.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Tue, 12 Apr 2011 05:33:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2011/04/12/348138.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/348138.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2011/04/12/348138.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/348138.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/348138.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 基于MongoDB开发的统计服务对业务数据进行迁移，分析。&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2011/04/12/348138.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/348138.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2011-04-12 13:33 <a href="http://www.blogjava.net/ldd600/archive/2011/04/12/348138.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>海量数据的删除策略</title><link>http://www.blogjava.net/ldd600/archive/2011/02/24/345035.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Thu, 24 Feb 2011 01:30:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2011/02/24/345035.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/345035.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2011/02/24/345035.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/345035.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/345035.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 当系统有海量数据需要级联删除时，我们需要小心，如果同步删除用户体验会很差，他会等相当长的时间，直到系统超时，另外还会给系统突发地增加很大的负载，&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2011/02/24/345035.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/345035.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2011-02-24 09:30 <a href="http://www.blogjava.net/ldd600/archive/2011/02/24/345035.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mysql水平分表</title><link>http://www.blogjava.net/ldd600/archive/2011/02/22/344801.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Tue, 22 Feb 2011 02:06:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2011/02/22/344801.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/344801.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2011/02/22/344801.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/344801.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/344801.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Mysql在数据量大的情况下，会遇到水平分表的情况。将实际开发中遇到的分表解决方案总结了一下。&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2011/02/22/344801.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/344801.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2011-02-22 10:06 <a href="http://www.blogjava.net/ldd600/archive/2011/02/22/344801.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Redis List</title><link>http://www.blogjava.net/ldd600/archive/2010/12/30/342016.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Thu, 30 Dec 2010 10:06:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2010/12/30/342016.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/342016.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2010/12/30/342016.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/342016.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/342016.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 存放几百万条数据的Redis List的性能描述，使用小结，并附上一个巧妙的使用例子。&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2010/12/30/342016.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/342016.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2010-12-30 18:06 <a href="http://www.blogjava.net/ldd600/archive/2010/12/30/342016.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>抛弃TT/TC，拥抱Redis</title><link>http://www.blogjava.net/ldd600/archive/2010/11/05/337354.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Fri, 05 Nov 2010 08:14:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2010/11/05/337354.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/337354.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2010/11/05/337354.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/337354.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/337354.html</trackback:ping><description><![CDATA[<p class="MsoNormal"><span lang="EN-US">1.</span><span style="font-family:宋体;
mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:
宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin">我们需要复杂和灵活的数据结构如</span><span lang="EN-US">List</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">，</span><span lang="EN-US">Set</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">，而</span><span lang="EN-US">TT/TC table</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">支持的是类似于简单的单表结构。我们先前是用</span><span lang="EN-US">TC Hash</span><span style="font-family:宋体;mso-ascii-font-family:
Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">模拟出来的</span><span lang="EN-US">List</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">，但在删除，分页，清理上都存在难度。维护起来也不方便。功能上</span><span lang="EN-US">Redis</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">更适合我们的需求。</span></p>
<p class="MsoNormal"><span lang="EN-US">2.TT/TC java</span><span style="font-family:
宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:
宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin">客户端比较弱，目前只能用</span><span lang="EN-US">memcached
java client</span></p>
<p class="MsoNormal"><span lang="EN-US">3.Redis</span><span style="font-family:
宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:
宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin">对并发操作提供了很多方便的</span><span lang="EN-US">API</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">调用</span></p>
<p class="MsoNormal"><span lang="EN-US">4.Redis</span><span style="font-family:
宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:
宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin">性能上比</span><span lang="EN-US">TC table</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:
Calibri;mso-hansi-theme-font:minor-latin">要好些，跟</span><span lang="EN-US">TC B+
tree</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">差不多</span></p>
<p class="MsoNormal"><span lang="EN-US">5.Redis</span><span style="font-family:
宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:
宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin">并发处理能力要好些</span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-family:宋体;mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">我们现在使用的模式是，对于直接的</span><span lang="EN-US">key value</span><span style="font-family:宋体;mso-ascii-font-family:
Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">对需缓存的直接用</span><span lang="EN-US">memcached</span><span style="font-family:宋体;mso-ascii-font-family:
Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">。对于</span><span lang="EN-US">collection</span><span style="font-family:宋体;mso-ascii-font-family:
Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">类型就使用</span><span lang="EN-US">Redis</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">。对于大数据量的内容性的东西，我们打算尝试用</span><span lang="EN-US">mongoDB</span><span style="font-family:宋体;mso-ascii-font-family:
Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">。也正在学习</span><span lang="EN-US">neo4j</span><span style="font-family:宋体;mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:
minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin">，来应对深度搜索，推荐功能。</span></p>
<img src ="http://www.blogjava.net/ldd600/aggbug/337354.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2010-11-05 16:14 <a href="http://www.blogjava.net/ldd600/archive/2010/11/05/337354.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>蛋疼的PooledConnectionFactory(activemq-pool)</title><link>http://www.blogjava.net/ldd600/archive/2010/11/02/336755.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Tue, 02 Nov 2010 00:55:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2010/11/02/336755.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/336755.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2010/11/02/336755.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/336755.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/336755.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Activemq-pool的PooledConnectionFactory解密，使用时需要注意。&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2010/11/02/336755.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/336755.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2010-11-02 08:55 <a href="http://www.blogjava.net/ldd600/archive/2010/11/02/336755.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>不用keytool，tomcat打开https</title><link>http://www.blogjava.net/ldd600/archive/2010/08/14/328817.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Fri, 13 Aug 2010 17:06:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2010/08/14/328817.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/328817.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2010/08/14/328817.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/328817.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/328817.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 网上大多数文章都是用keytool生成自签名根证书，将根证书配置在tomcat的server.xml中。我不太喜欢用keytool，原因：<br>1.我们可能换provider，不同的provider会有不同的算法实现，算法的安全性和性能也可能不同，通过代码生成比较方便一些，不同算法的实现要放在classpath上。<br>2.通过代码生成还有一个好处，会对整个流程理解的比较清楚，实现的原理到底是怎样的。&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2010/08/14/328817.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/328817.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2010-08-14 01:06 <a href="http://www.blogjava.net/ldd600/archive/2010/08/14/328817.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RDBMS的lucene爬虫</title><link>http://www.blogjava.net/ldd600/archive/2010/05/07/320250.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Thu, 06 May 2010 23:12:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2010/05/07/320250.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/320250.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2010/05/07/320250.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/320250.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/320250.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Lucene如何和数据库集成，如何从数据库中实时地将数据爬出，在Lucene中建索引。本文没有使用AOP和ORM FRM的Listener方式，而是采用的主动轮询的方式从DB将确实存在在DB中的指定数据爬出，建全文索引。可以让用户实时地搜出结果。需要考虑的问题很多，我只是把我能想到的给出来。如果大家有什么好的想法和建议，欢迎提出来。&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2010/05/07/320250.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/320250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2010-05-07 07:12 <a href="http://www.blogjava.net/ldd600/archive/2010/05/07/320250.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>提高遗留代码的测试覆盖率</title><link>http://www.blogjava.net/ldd600/archive/2010/03/10/315073.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Wed, 10 Mar 2010 09:23:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2010/03/10/315073.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/315073.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2010/03/10/315073.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/315073.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/315073.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: A项目一开始code的时候，没有加任何test。现在需要重构了，我们根据use case设计了一些automation的high level 的接近integration test的functional tests. 但跑下来发现code coverage不高。于是老大让我看看想些方法提高一下code coverage。总结一下。&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2010/03/10/315073.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/315073.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2010-03-10 17:23 <a href="http://www.blogjava.net/ldd600/archive/2010/03/10/315073.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在JavaMail的基础上构建自己的Email Channel(2):封装Javamail的原因</title><link>http://www.blogjava.net/ldd600/archive/2010/02/04/311869.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Wed, 03 Feb 2010 23:25:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2010/02/04/311869.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/311869.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2010/02/04/311869.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/311869.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/311869.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: javamail已经设计的很好了，精巧强悍，为什么还需要封装它呢？&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2010/02/04/311869.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/311869.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2010-02-04 07:25 <a href="http://www.blogjava.net/ldd600/archive/2010/02/04/311869.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在JavaMail的基础上构建自己的Email Channel(1):基础知识</title><link>http://www.blogjava.net/ldd600/archive/2010/01/16/309768.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Sat, 16 Jan 2010 04:33:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2010/01/16/309768.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/309768.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2010/01/16/309768.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/309768.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/309768.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近在javamail的基础上，写了一个Email channel，把相关知识总结一下。&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2010/01/16/309768.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/309768.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2010-01-16 12:33 <a href="http://www.blogjava.net/ldd600/archive/2010/01/16/309768.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OC4J升级Oracle JDBC driver版本</title><link>http://www.blogjava.net/ldd600/archive/2010/01/15/309679.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Fri, 15 Jan 2010 05:17:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2010/01/15/309679.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/309679.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2010/01/15/309679.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/309679.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/309679.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: OC4J1033升级Oracle JDBC driver到11.1.0.7.0版本&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2010/01/15/309679.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/309679.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2010-01-15 13:17 <a href="http://www.blogjava.net/ldd600/archive/2010/01/15/309679.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2009年工作总结</title><link>http://www.blogjava.net/ldd600/archive/2010/01/06/308440.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Wed, 06 Jan 2010 06:40:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2010/01/06/308440.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/308440.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2010/01/06/308440.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/308440.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/308440.html</trackback:ping><description><![CDATA[&nbsp;
<p><strong>CUSTOMER FOCUS</strong></p>
<p>Be patient to listen to application users to speak out their requirements. Try best to satisfy all the reasonable requirements put forward by them. Suppose and analyze their potential requirements and guide them, differentiate urgent and uncritical requirements. Put customer requirements at the first place.</p>
<p><span style="font-family: 宋体">耐心的倾听客户阐述他们的需求，尽量满足用户提出的所有需求，猜想并分析用户可能需要的潜在需求，引导他们。区别紧急和不重要的需求。将用户的需求放在第一位。</span></p>
<p><strong>RESULT ORIENTATION</strong></p>
<p>Strive to be complete tasks on time or ahead of its mandate, and deliver mature products</p>
<p><span style="font-family: 宋体">力争提前完成自己的任务，交付成熟的产品</span></p>
<p><strong>ACHIEVEMENT DRIVE</strong></p>
<p>If our outputted software solves customers&#8217; problems, it is a sense of accomplishments to us. Software with clear architecture, good scalability, high readability and maintainability always make me feel comfortable.</p>
<p><span style="font-family: 宋体">写出的软件解决了客户的问题本身就是一种成就感。写出的软件架构清晰，可读性强，可维护性高也会使人开心。</span></p>
<p><strong>TEAMWORK</strong></p>
<p>Usually discussing and solving problems with team members, studying new techs and sharing with partners, Learning from each other and making progress, developing projects with my team members.</p>
<p><span style="font-family: 宋体">和小组成员一起讨论，研究和解决各种问题，合作开发项目，事半功倍，互相学习，不断进步。</span></p>
<p><strong>COMMUNICATION</strong></p>
<p>Firstly, I learn to be a pro-listener to understand each other&#8217;s intensions. Then, I organize my own thoughts, and speak out swimmingly in a way accepted by the other ones.</p>
<p><span style="font-family: 宋体">学做亲听者</span>,<span style="font-family: 宋体">了解对方的意图</span>,<span style="font-family: 宋体">换位思考</span>, <span style="font-family: 宋体">组织好自己的想法</span>,<span style="font-family: 宋体">用对方能接受的方式畅快的表达出来</span>.</p>
<p><strong>INNOVATION</strong></p>
<p>Technical innovation always happens, only through continuous research and creations, individuals are able to achieve greater efficiency to the company. </p>
<p><span style="font-family: 宋体">技术是不断革新的，只有通过个人的不断学习和创新才能为公司取得更大的效益。</span></p>
<p><strong>LEADERSHIP</strong></p>
<p>In the passed half year, I have pursued the implementation of rules of baselines.</p>
<p><span style="font-family: 宋体">在过去的半年内，曾在小组内部推行</span>baseline<span style="font-family: 宋体">的规则</span></p>
<p><strong>PROBLEM SOLVING &amp; DECISION MAKING</strong></p>
<p>A major duty of framework developer is when there is some difficult technical problem coming out with frameworks or products, I need to respond to application user and solve the problem ASAP. Sometimes, framework developer needs to make decision on used technologies, even the whole architecture.</p>
<p>Framework<span style="font-family: 宋体">开发者重要职责就是对用户出现技术难题的时候能够快速响应并解决。平时需要有能力对采用的技术和架构作出决定</span></p>
<p><strong>MNAGING RELATIONSHIP</strong></p>
<p>Application user is our nice customers, it is important to make a solid relationship with them. I often help my team members to solve difficult technical problems, cooperate with them to complete projects.</p>
<p>Application team<span style="font-family: 宋体">是我们的客户，需要和他们打好关系。经常帮助小组成员解决一些技术问题，共同合作完成项目的开发。</span></p>
<img src ="http://www.blogjava.net/ldd600/aggbug/308440.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2010-01-06 14:40 <a href="http://www.blogjava.net/ldd600/archive/2010/01/06/308440.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对Log4j封装的一些想法</title><link>http://www.blogjava.net/ldd600/archive/2009/12/25/307266.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Fri, 25 Dec 2009 07:09:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2009/12/25/307266.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/307266.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2009/12/25/307266.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/307266.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/307266.html</trackback:ping><description><![CDATA[&nbsp;
<ol type="1">
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 14pt; font-family: 宋体">Log4j debug log api</span></strong><strong><span style="font-size: 14pt; font-family: 宋体">不够丰富</span></strong></li>
</ol>
<p style="text-indent: 18pt; text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">在进入，退出方法时针对方法的输入参数和返回值进行log，log中含有方法信息</span></p>
<p style="margin-left: 27pt; text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">logDebugOnMethodEntry, logDebugOnMethodExit</span></p>
<ol type="1" start="2">
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 14pt; font-family: 宋体">log</span></strong><strong><span style="font-size: 14pt; font-family: 宋体">级别问题</span></strong></li>
</ol>
<p style="margin: 0cm 0cm 12pt 18pt; text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">如果log级别设置的是info，会把warning，error，fatal都打出来，各个级别不能单独控制。增加各级别分开控制开关。</span></p>
<ol type="1" start="3">
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 14pt; font-family: 宋体">log</span></strong><strong><span style="font-size: 14pt; font-family: 宋体">格式的定制</span></strong></li>
</ol>
<p style="margin-left: 18pt; text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">可以定制log信息的pattern，这样会看起来很统一，log分析起来也容易logDebug(String pattern, Object... paramValues); </span></p>
<p style="margin: 0cm 0cm 12pt 18pt; text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">还有一个好处，不需要预先把相关String都append起来，提高performance</span></p>
<ol type="1" start="4">
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 14pt; font-family: 宋体">log.isDebugEnabled();</span></strong></li>
</ol>
<p style="margin-left: 18pt; text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">参考第三点，这样就避免了Object的toString和String的concat操作。</span></p>
<ol type="1" start="5">
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 12pt; font-family: 宋体">EmptyLogger</span></strong></li>
</ol>
<p style="margin-left: 18pt; text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">每次记log时，log4j都需要判断这个级别是否可以打log。如果logger的每个级别都有对应的logger实例，如果debug level被关了，debug级别对应的实例就是EmptyLogger，EmptyLogger里面所有方法的实现都是空的，就不需要这额外的判断了。</span></p>
<span style="font-family: 宋体">
<p style="margin-left: 0.25in"><br />
</span></p>
<img height="302" alt="" src="http://www.blogjava.net/images/blogjava_net/ldd600/log.JPG" width="550" border="0" /> 
<img src ="http://www.blogjava.net/ldd600/aggbug/307266.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2009-12-25 15:09 <a href="http://www.blogjava.net/ldd600/archive/2009/12/25/307266.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>侦听和处理用户对业务对象改动的简易框架</title><link>http://www.blogjava.net/ldd600/archive/2009/11/29/304100.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Sun, 29 Nov 2009 05:37:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2009/11/29/304100.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/304100.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2009/11/29/304100.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/304100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/304100.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;在用户修改了领域对象的值后，我们有时需要记录下用户的改动。比如对一些关键业务对象的改动有时往往需要发邮件通知客户。有时用户可能想查阅所有历史的改动，甚至有可能会改回原先的值。领域逻辑关系往往比较复杂，这时我们会使用到ORM Framework。本文以toplink为例，讲述如何利用toplink编写一个完成此功能的简易Framework，我们暂且把它称为ActionMemed。...&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2009/11/29/304100.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/304100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2009-11-29 13:37 <a href="http://www.blogjava.net/ldd600/archive/2009/11/29/304100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>剥下“java.lang.OutOfMemoryError: unable to create new native thread”的外衣</title><link>http://www.blogjava.net/ldd600/archive/2009/09/25/296397.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Fri, 25 Sep 2009 02:55:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2009/09/25/296397.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/296397.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2009/09/25/296397.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/296397.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/296397.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在一个月黑风高的晚上，产品环境上所有application都OOM了，令人心惊胆寒，打开log文件，上下打谅着他，他就是传说中的“java.lang.OutOfMemoryError: unable to create new native thread‘，到底谁创造出了这个魔鬼，原来一个application在疯狂创建线程池，不过用TDA(Thread dump analyzer)看到也就只创建了400×2（2JVMs）个线程，但这并不算多，应该还可以更多。奇怪！让我们来剥下“java.lang.OutOfMemoryError: unable to create new native thread‘的外衣，看看谁是幕后黑手。。。。。&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2009/09/25/296397.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/296397.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2009-09-25 10:55 <a href="http://www.blogjava.net/ldd600/archive/2009/09/25/296397.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java Jingle</title><link>http://www.blogjava.net/ldd600/archive/2009/09/11/294665.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Thu, 10 Sep 2009 23:25:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2009/09/11/294665.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/294665.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2009/09/11/294665.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/294665.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/294665.html</trackback:ping><description><![CDATA[Java Posse上总是听到这首歌，昨天把它download下来，确实还有点意思。呵呵。歌词挺搞笑的，sounds funny<br />
<a href="http://blogs.sun.com/dcb/resource/Java.mp3">http://blogs.sun.com/dcb/resource/Java.mp3<br />
</a><br />
<strong>歌词大意：</strong><br />
<br />
<h1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Java by "Loose Bruce" Kerr </h1>
<p align="center">Java, Java, Java Java jing-jing-jing<br />
Java, Java, Java Java jing-jing-jing<br />
<br />
It's not a cup of coffee but it's hot as can be<br />
Came pourin' through the Gates on a "Big Mac" Nealy<br />
Singin', Java, Java, Java Java jing-jing-jing </p>
<p align="center">Microsoft thought Java really could be a threat<br />
Java through the Windows maybe put them in debt<br />
Gates, he took a license but he altered the feel<br />
Java members all said, "Bill, you're outa the deal!"<br />
<br />
Singin', Java, Java, Java Java jing-jing-jing<br />
Java, Java, Java Java jing-jing-jing<br />
<br />
It's like a cup of coffee 'cause it's tasty and fresh<br />
But it's not really Java if the flavors don't mesh<br />
Pure Java, Java, Java Java jing-jing-jing<br />
<br />
Microsoft released a browser, Java was there<br />
The Sun, it rose and lit up what was really a dare<br />
The RMI, the JNI were missing and lost<br />
Scott said, "Bill, you broke your promise, Now pay the cost!"<br />
<br />
Bill said, "Hey, my recipe is richer than yours"<br />
Scott said, "I own the coffee shop, sit down and I'll pour"<br />
<br />
Pour Java, Java, Java Java jing-jing-jing<br />
Java, Java, Java Java jing-jing-jing<br />
Nobody can tell yet what the future may bring<br />
All we know is Java goes jing-jing-jing<br />
<br />
It goes Java, Java, Java Java jing-jing-jing<br />
(Scott really means it)<br />
Java, Java, Java Java jing-jing-jing<br />
(Bill you better believe it)<br />
Java, Java Java jing-jing-jing</p>
 <img src ="http://www.blogjava.net/ldd600/aggbug/294665.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2009-09-11 07:25 <a href="http://www.blogjava.net/ldd600/archive/2009/09/11/294665.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Unit test学习总结</title><link>http://www.blogjava.net/ldd600/archive/2009/09/04/293894.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Fri, 04 Sep 2009 08:01:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2009/09/04/293894.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/293894.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2009/09/04/293894.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/293894.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/293894.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近又把压在箱底的几本单元测试相关的书翻了翻，既然翻了，顺便拿了个笔头记了记，好记性不如烂笔头呀。内容不算太多，平时写Unit test时要follow，要深入理解，不然就不能学以致用。以后相关的内容，就往这个坑里填了。&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2009/09/04/293894.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/293894.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2009-09-04 16:01 <a href="http://www.blogjava.net/ldd600/archive/2009/09/04/293894.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java端RESTful web services的几种实现方式</title><link>http://www.blogjava.net/ldd600/archive/2009/08/13/291018.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Thu, 13 Aug 2009 07:27:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2009/08/13/291018.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/291018.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2009/08/13/291018.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/291018.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/291018.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: java端RESTful web services的几种实现方式&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2009/08/13/291018.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/291018.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2009-08-13 15:27 <a href="http://www.blogjava.net/ldd600/archive/2009/08/13/291018.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>是用ServletContextListenser还是Servlet初始化资源</title><link>http://www.blogjava.net/ldd600/archive/2009/08/05/289929.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Wed, 05 Aug 2009 04:52:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2009/08/05/289929.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/289929.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2009/08/05/289929.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/289929.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/289929.html</trackback:ping><description><![CDATA[<p>现在我们项目几乎都是在servlet的init方法中初始化资源，在destroy方法里释放资源。servlet的load on startup是有先后顺序，但是没有依赖关系，如果某个servlet初始化出现异常，不会终止剩下的servlet的初始化，这样有时会使得web application正常启动，但是却部分可用，整个系统处于不稳定状态。这应该是一种不推荐的做法。<br />
而servlet context listener是在所有servlet初始化之前被调用，同样在所有servlet destroy之前被调用。更关键的是，如果在<font style="background-color: #d8ffd5">contextInitialized</font>抛出runtime异常，剩余的listener和所有servlet都不会初始化，解决了web application非正常启动的问题。<br />
<br />
以下情况可以使用servlet来初始化资源：</p>
&nbsp;&nbsp;&nbsp;&nbsp; 整个系统只有一个servlet会在系统启动时初始化资源<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Servlet初始化的资源是独立的，不会影响整个系统的正常运行<br />
&nbsp;&nbsp;&nbsp;&nbsp; Servlet初始化失败后，整个系统处于不可被访问状态<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Container的版本比较旧，不支持servlet2.3或者更新的版本 
<img src ="http://www.blogjava.net/ldd600/aggbug/289929.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2009-08-05 12:52 <a href="http://www.blogjava.net/ldd600/archive/2009/08/05/289929.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>