﻿<?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-走自己的路-随笔分类-Design and Analysis Pattern </title><link>http://www.blogjava.net/ldd600/category/32132.html</link><description>路漫漫其修远兮，吾将上下而求索</description><language>zh-cn</language><lastBuildDate>Thu, 04 Feb 2010 07:38:15 GMT</lastBuildDate><pubDate>Thu, 04 Feb 2010 07:38:15 GMT</pubDate><ttl>60</ttl><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>对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>让已有的系统开放RMI服务</title><link>http://www.blogjava.net/ldd600/archive/2008/10/26/236738.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Sun, 26 Oct 2008 10:46:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2008/10/26/236738.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/236738.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2008/10/26/236738.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/236738.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/236738.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原有的应用没有开放RMI服务，由于将schedule模块移到了standalone的JVM上，需要在远程通过RPC Call回来，于是在已有的系统中增加了RMI服务，关键是如何方便而有效地加入这个RMI服务，和原有的系统解耦，还要方便以后的升级。这篇随便记录了在已有系统中加入RMI服务模块的一些心得。&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2008/10/26/236738.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/236738.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2008-10-26 18:46 <a href="http://www.blogjava.net/ldd600/archive/2008/10/26/236738.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>类似状态模式的"状态模式"</title><link>http://www.blogjava.net/ldd600/archive/2008/08/22/223782.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Fri, 22 Aug 2008 12:55:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2008/08/22/223782.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/223782.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2008/08/22/223782.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/223782.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/223782.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近要写message在传送过程中状态改变的流程，并根据不同的状态作不同的处理，同时记录当前的状态。于是，看了一下状态模式，发现还是不太好用，比如状态对象创建的太多了，稍加修改了一下，大概是就是文章中的这个模样了：把它分为了“状态持有者”， “状态对象“， ”状态管理者”， “状态机”等。&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2008/08/22/223782.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/223782.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2008-08-22 20:55 <a href="http://www.blogjava.net/ldd600/archive/2008/08/22/223782.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《Head First Design Pattern 单例模式》中double check有问题吗？</title><link>http://www.blogjava.net/ldd600/archive/2008/07/23/217008.html</link><dc:creator>叱咤红人</dc:creator><author>叱咤红人</author><pubDate>Wed, 23 Jul 2008 11:51:00 GMT</pubDate><guid>http://www.blogjava.net/ldd600/archive/2008/07/23/217008.html</guid><wfw:comment>http://www.blogjava.net/ldd600/comments/217008.html</wfw:comment><comments>http://www.blogjava.net/ldd600/archive/2008/07/23/217008.html#Feedback</comments><slash:comments>22</slash:comments><wfw:commentRss>http://www.blogjava.net/ldd600/comments/commentRss/217008.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ldd600/services/trackbacks/217008.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 《Head First Design Pattern》一书在讲单例模式时举了一个double check的例子，觉得它的代码写的有问题，修改了一下它的代码，不知道正确与否，大家讨论。讨论的结果两种写法在旧的JMM上都是错的，在新的JMM上都是正确的，文中添加了一些个人的理解。&nbsp;&nbsp;<a href='http://www.blogjava.net/ldd600/archive/2008/07/23/217008.html'>阅读全文</a><img src ="http://www.blogjava.net/ldd600/aggbug/217008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ldd600/" target="_blank">叱咤红人</a> 2008-07-23 19:51 <a href="http://www.blogjava.net/ldd600/archive/2008/07/23/217008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>