﻿<?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-pengpenglin-随笔分类-J2SE</title><link>http://www.blogjava.net/pengpenglin/category/28487.html</link><description>成熟 稳重 乐观 自信 进取 责任 梦想 坚持</description><language>zh-cn</language><lastBuildDate>Fri, 02 Apr 2010 09:42:45 GMT</lastBuildDate><pubDate>Fri, 02 Apr 2010 09:42:45 GMT</pubDate><ttl>60</ttl><item><title>【Java基础专题】IO与文件读写---优化搜索程序(01)</title><link>http://www.blogjava.net/pengpenglin/archive/2010/04/02/317304.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Fri, 02 Apr 2010 06:20:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/04/02/317304.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/317304.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/04/02/317304.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/317304.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/317304.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Apache commons CLI是一个开源的，用于处理命令行的工具包。这个包目前的稳定版本是1.2，他非常简单只有20个左右的class，但提供了几乎所以可以用到的命令行功能。它的主页在这里：Apache commons CLI<br><br>根据CLI的逻辑，每一个命令行的处理都可以分为3个步骤：定义、解析、交互<br>①定义：定义命令行的各种选项属性(包括缩写、全写、是否必须、是否带参数、参数个数限制)<br>②解析：使用解析器对命令行选项列表进行解析<br>③交互：从解析好的命令行查询用户输入的参数值并进行处理&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/04/02/317304.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/317304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-04-02 14:20 <a href="http://www.blogjava.net/pengpenglin/archive/2010/04/02/317304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】IO与文件读写---DirectoryWalker和FileFilter的复杂条件使用</title><link>http://www.blogjava.net/pengpenglin/archive/2010/04/01/317208.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Thu, 01 Apr 2010 09:52:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/04/01/317208.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/317208.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/04/01/317208.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/317208.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/317208.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.基本功能过滤器<br>=============================================<br>①类型：DirectoryFileFilter、FileFileFilter<br>②大小：EmptyFileFilter、SizeFileFilter<br>③时间：AgeFileFilter<br>④名称：NameFileFilter、PrefixFileFilter、SuffixFileFilter、RegexFileFilter、WildcardFileFilter<br>⑤读写属性：CanReadFileFilter、CanWriteFileFilter<br>⑥隐藏属性：HiddenFileFilter<br><br>2.逻辑关系过滤器<br>=============================================<br>①逻辑与：AndFileFilter<br>②逻辑或：OrFileFilter<br>③逻辑非：NotFileFilter<br>④永真/假：TrueFileFilter、FalseFil&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/04/01/317208.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/317208.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-04-01 17:52 <a href="http://www.blogjava.net/pengpenglin/archive/2010/04/01/317208.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】IO与文件读写---使用DirectoryWalker和FileFilterUtils进行搜索</title><link>http://www.blogjava.net/pengpenglin/archive/2010/03/31/317106.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Wed, 31 Mar 2010 15:45:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/03/31/317106.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/317106.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/03/31/317106.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/317106.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/317106.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Apache commons IO包中提供了一个可以遍历目录下资源的DirectoryWalker，还有很多的IOFileFilter用于过滤文件目录。下面的例子分别演示了这个功能。<br><br>这两个搜索类都是以内部类的方式嵌入客户端的，客户端接收客户的参数，然后通过一个后台线程来进行搜索，等待子线程完成搜索后(join方法)，再打印搜索结果。<br><br>注意这个过程是可以被cancel的。cancel主要有2种情况。外部cancel：外部线程通过调用内部类的cancel()方法。内部cancel：在handleDirectory、handleFile中主动抛出CancelException。<br><br>walk方法在每次执行前、后都会检查当前是否有cancel指令发出(checkIfCancelled ---> handleIsCancelled)，如果有那么默认立刻抛出CancelException，然后调用handleCancelled方法。&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/03/31/317106.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/317106.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-03-31 23:45 <a href="http://www.blogjava.net/pengpenglin/archive/2010/03/31/317106.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】IO与文件读写---慎用FileUtils.writeLines(File, Collection)方法</title><link>http://www.blogjava.net/pengpenglin/archive/2010/03/30/316879.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Mon, 29 Mar 2010 16:19:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/03/30/316879.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/316879.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/03/30/316879.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/316879.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/316879.html</trackback:ping><description><![CDATA[<p style="font-size: 10pt; font-family: Verdana;"></p>
<div id="blogDetailDiv" style="font-size: 16px;">
<p><font size="2"><font face="Verdana">从
同一个源文件(15M左右)使用不同的方式读入，一种是读入后构造成一个String，另外一个是读入后构造成一个List。然后再调用
writeLines(File, String)和writeLines(File, Collection)写入。下面是测试比较的结果：<br />
<br />
Read and write by string format<br />
&nbsp; File sizes(bytes): 15661680<br />
&nbsp; Content read(bytes): 15661680<br />
&nbsp; Time costing(ms) on reading: 2047<br />
&nbsp; Time costing(ms) on writing: <font color="#990000"><strong>1016</strong></font></font></font></p>
<p><br />
<font size="2"><font face="Verdana">Read and write by collection format<br />
&nbsp; File sizes(bytes): 15661680<br />
&nbsp; File read(lines): 1782615<br />
&nbsp; Time costing(ms) on reading: 2047<br />
&nbsp; Time costing(ms) on writing: <strong><font color="#990000">533437</font></strong></font></font></p>
<p><font size="2"><br />
<font color="#000000" face="Verdana">效率相差之多! 我的测试环境如下：<br />
<br />
OS：Win XP SP4<br />
CPU：Intel Core(TM) 2 Duo CPU<br />
内存：800M(虚拟机分配)<br />
JDK：JDK 5.0 (JVM内存分配：-Xms64m -Xmx512m)<br />
测试文件：15.295M (是一个IP地址文件，总共1782615行)<br />
<br />
<strong><font color="#990000">在读方面时间居然相当(这里面应该有操作系统层面的缓冲作用，我单独地测试时第2个方式总比第一个慢1/3左右)。而在写方面性能简直是天壤之别啊：533437/1016 ≈525倍。</font></strong><br />
<br />
虽然我这个测试还是不严谨的，但是从方法实现过程和原理来看，两者性能差异存在必然的因素：<br />
<br />
<strong><font color="#990000">①以Collection方式去构造的，在读取的过程中生成多个小String，而生成String是一项耗时的工作<br />
②以Collection方式去写的，首先要迭代这个Collection，然后每次调用Collection中的元素的toString()方法，造成多次的堆栈操作</font></strong></font></font></p>
</div>
<p style="font-size: 10pt; font-family: Verdana;"><br />
<br />
</p>
<img src ="http://www.blogjava.net/pengpenglin/aggbug/316879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-03-30 00:19 <a href="http://www.blogjava.net/pengpenglin/archive/2010/03/30/316879.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TSS上关于JDBC操作优化的Tips总结</title><link>http://www.blogjava.net/pengpenglin/archive/2010/03/19/315978.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Fri, 19 Mar 2010 15:11:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/03/19/315978.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/315978.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/03/19/315978.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/315978.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/315978.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/03/19/315978.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/315978.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-03-19 23:11 <a href="http://www.blogjava.net/pengpenglin/archive/2010/03/19/315978.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】IO与文件读写---对同步/异步和阻塞/非阻塞的理解</title><link>http://www.blogjava.net/pengpenglin/archive/2010/03/10/315060.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Wed, 10 Mar 2010 07:36:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/03/10/315060.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/315060.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/03/10/315060.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/315060.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/315060.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ①同步的操作，如果在等待的过程不能做别的事情，它是同步+阻塞的。这个也是最常见的<br>②同步的操作，如果在等待的过程可以做别的事情，它是同步+非阻塞的。<br>③异步的操作，如果在等待的过程不能做别的事情，它是异步+阻塞的。<br>④异步的操作，如果在等待的过程可以做别的事情，它是异步+非阻塞的。这个也是最常见的&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/03/10/315060.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/315060.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-03-10 15:36 <a href="http://www.blogjava.net/pengpenglin/archive/2010/03/10/315060.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】IO与文件读写---同步/异步与阻塞/非阻塞的区别（转）</title><link>http://www.blogjava.net/pengpenglin/archive/2010/03/10/315053.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Wed, 10 Mar 2010 06:54:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/03/10/315053.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/315053.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/03/10/315053.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/315053.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/315053.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 同步/异步：消息通知机制。是自己主动关注消息还是靠别人通知<br>阻塞/非阻塞：消息处理机制。等待消息处理完成的过程能否做别的事情&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/03/10/315053.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/315053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-03-10 14:54 <a href="http://www.blogjava.net/pengpenglin/archive/2010/03/10/315053.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】IO与文件读写---使用Apache commons IO包进行资源遍历</title><link>http://www.blogjava.net/pengpenglin/archive/2010/03/09/314894.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Mon, 08 Mar 2010 16:26:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/03/09/314894.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/314894.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/03/09/314894.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/314894.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/314894.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 要使用DirectoryWalker来遍历一个目录并进行相应的操作，步骤如下：<br><br>①创建一个继续于DirectoryWalker的类，并在构造方法中调用super()；<br>②定义一个业务入口方法，例如clean。在这个方法中调用walk方法<br>③覆盖DirectoryWalker类的handleDirectory方法，提供相应的处理逻辑<br>④覆盖DirectoryWalker类的handleFile方法，提供相应的处理逻辑&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/03/09/314894.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/314894.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-03-09 00:26 <a href="http://www.blogjava.net/pengpenglin/archive/2010/03/09/314894.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】IO与文件读写---使用Apache commons IO过滤文件和目录</title><link>http://www.blogjava.net/pengpenglin/archive/2010/03/09/314892.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Mon, 08 Mar 2010 16:02:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/03/09/314892.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/314892.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/03/09/314892.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/314892.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/314892.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 它们可以分为两大类：<br> ①实质性过滤器：例如针对文件的类型，属性，名称，大小进行过滤的过滤器<br> ②过滤器连接器：典型的包括AndFileFilter、OrFileFilter。用于逻辑连接多个过滤器&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/03/09/314892.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/314892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-03-09 00:02 <a href="http://www.blogjava.net/pengpenglin/archive/2010/03/09/314892.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】IO与文件读写---使用Apache commons IO操纵底层读写</title><link>http://www.blogjava.net/pengpenglin/archive/2010/03/08/314878.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Mon, 08 Mar 2010 13:24:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/03/08/314878.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/314878.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/03/08/314878.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/314878.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/314878.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 对IOUtils类的剖析&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/03/08/314878.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/314878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-03-08 21:24 <a href="http://www.blogjava.net/pengpenglin/archive/2010/03/08/314878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】IO与文件读写---使用Apache commons IO简化文件读写</title><link>http://www.blogjava.net/pengpenglin/archive/2010/03/08/314823.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Mon, 08 Mar 2010 07:07:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/03/08/314823.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/314823.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/03/08/314823.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/314823.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/314823.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: FileUtils总体上来说，主要功能有：<br> ※ 资源的创建、删除<br> ※ 资源的复制、移动<br> ※ 资源的读写<br> ※ 资源的比较<br> ※ 资源的过滤<br> ※ 资源的转换&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/03/08/314823.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/314823.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-03-08 15:07 <a href="http://www.blogjava.net/pengpenglin/archive/2010/03/08/314823.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】IO与文件读写---使用Apache commons IO包规范文件名</title><link>http://www.blogjava.net/pengpenglin/archive/2010/03/08/314788.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Mon, 08 Mar 2010 02:56:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/03/08/314788.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/314788.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/03/08/314788.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/314788.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/314788.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 使用Apache commons IO包规范文件名&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/03/08/314788.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/314788.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-03-08 10:56 <a href="http://www.blogjava.net/pengpenglin/archive/2010/03/08/314788.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】IO与文件读写---使用Apache commons io包提高读写效率</title><link>http://www.blogjava.net/pengpenglin/archive/2010/03/04/314488.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Thu, 04 Mar 2010 02:28:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/03/04/314488.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/314488.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/03/04/314488.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/314488.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/314488.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文通过对Apache commons io包的input,output子类的源代码研究，来揭示为什么使用commons IO包会在性能上由于JDK自带的IO类。<br><br>特别是输出流方面&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/03/04/314488.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/314488.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-03-04 10:28 <a href="http://www.blogjava.net/pengpenglin/archive/2010/03/04/314488.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】IO与文件读写---Java的IO流架构</title><link>http://www.blogjava.net/pengpenglin/archive/2010/03/02/314239.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Tue, 02 Mar 2010 01:47:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/03/02/314239.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/314239.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/03/02/314239.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/314239.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/314239.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 使用图例全面展示Java中IO的架构，特别是节点流和过滤流及其之间的转换&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/03/02/314239.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/314239.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-03-02 09:47 <a href="http://www.blogjava.net/pengpenglin/archive/2010/03/02/314239.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】编码与乱码(08)---JavaEE防止中文乱码的设置</title><link>http://www.blogjava.net/pengpenglin/archive/2010/02/24/313761.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Wed, 24 Feb 2010 02:25:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/02/24/313761.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/313761.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/02/24/313761.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/313761.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/313761.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 良好的编程习惯，对编码和数据传输流程的清晰认识，规范的配置是确保JavaEE应用不会出现乱码的三大法宝&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/02/24/313761.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/313761.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-02-24 10:25 <a href="http://www.blogjava.net/pengpenglin/archive/2010/02/24/313761.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】编码与乱码(07)---native2ascii命令的用法</title><link>http://www.blogjava.net/pengpenglin/archive/2010/02/23/313739.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Tue, 23 Feb 2010 10:41:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/02/23/313739.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/313739.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/02/23/313739.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/313739.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/313739.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 可以看到该命令对于英文字符，数字不会转换而是直接输出，而对于每个中文字符则转换成以\u开头的4个16进制数字。<br><br>通常情况下，如果要进行字符的逆转换，-encoding encoding_name这个参数都会配合-reverse出现。在上面的例子中因为本地系统是中文操作系统，所以即便没有指定-encoding也可以正确地从unicode ---》GBK。如果是在英文平台下由于默认字符集是ISO-8859-1，那么这个时候如果不指定则转换出来的将是?了。&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/02/23/313739.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/313739.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-02-23 18:41 <a href="http://www.blogjava.net/pengpenglin/archive/2010/02/23/313739.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】编码与乱码(06)---字符的各种值转换</title><link>http://www.blogjava.net/pengpenglin/archive/2010/02/23/313730.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Tue, 23 Feb 2010 08:48:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/02/23/313730.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/313730.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/02/23/313730.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/313730.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/313730.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 可以看到在Java中，字符的unicode有两种表示显示：一种是10进制形式，一种是16进制形式。它们可以分别通过：int i = (int)(string.charAt(i))和Integer.toHexString(i);获得。而且在java文件和Web页面，同一个unicode的表示形式是不同。web页面需要用&#进行转义，在java文件中则使用\u进行转义。&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/02/23/313730.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/313730.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-02-23 16:48 <a href="http://www.blogjava.net/pengpenglin/archive/2010/02/23/313730.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】编码与乱码(05)---GBK与UTF-8之间的转换</title><link>http://www.blogjava.net/pengpenglin/archive/2010/02/22/313669.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Mon, 22 Feb 2010 15:00:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/02/22/313669.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/313669.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/02/22/313669.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/313669.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/313669.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在这个专题的第一篇文章【Java基础专题】编码与乱码(01)---编码基础 开头，我们就已经介绍了这个规则：<br> ①得到每个字符的2进制GBK编码<br> ②将该16进制的GBK编码转换成2进制的字符串(2个字节)<br> ③分别在字符串的首位插入110，在第9位插入10，在第17位插入10三个字符串，得到3个字节<br> ④将这3个字节分别转换成16进制编码，得到最终的UTF-8编码。&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/02/22/313669.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/313669.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-02-22 23:00 <a href="http://www.blogjava.net/pengpenglin/archive/2010/02/22/313669.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】编码与乱码(04)---输出时的编码与乱码</title><link>http://www.blogjava.net/pengpenglin/archive/2010/02/22/313654.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Mon, 22 Feb 2010 09:39:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/02/22/313654.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/313654.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/02/22/313654.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/313654.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/313654.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 谨慎地使用getBytes(NAME_OF_CHARSET)和new String(bytes, NAME_OF_CHARSET)，除非你很清楚的知道原始的字符编码和传输协议使用的编码。<br><br>推荐使用基于服务器的配置、过滤器设置request/response的characterEncoding、content type属性。还有就是JSP页面的pageEncoding属性、HTML meta元素的content type属性。尽量避免频繁的在代码中进行字符串转码，即降低了效率又增加了风险&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/02/22/313654.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/313654.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-02-22 17:39 <a href="http://www.blogjava.net/pengpenglin/archive/2010/02/22/313654.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】编码与乱码(03)----String的toCharArray()方法</title><link>http://www.blogjava.net/pengpenglin/archive/2010/02/22/313652.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Mon, 22 Feb 2010 09:18:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/02/22/313652.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/313652.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/02/22/313652.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/313652.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/313652.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这个方法再次证明了String的getBytes()方法的危险性，如果我们使用new String(str.getBytes(), encoding)对字符串进行重新编码解码时，我们一定要清楚str.getBytes()方法返回的字节数组的长度、内容到底是什么，因为在接下来使用新的encoding进行编码解码时，Java并不会自动地对字节数组进行扩展以适应新的encoding。而是按照新的编码方法直接对该字节数组进行解析。<br><br>于是结果就像上面的例子一样，同样是4个原始字节，有些每2个一组进行解析，有些每个一组进行解析，有些每3个一组进行解析。其结果就只能看那种编码方式合适了。&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/02/22/313652.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/313652.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-02-22 17:18 <a href="http://www.blogjava.net/pengpenglin/archive/2010/02/22/313652.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】编码与乱码(02)---String的getBytes([encoding])方法</title><link>http://www.blogjava.net/pengpenglin/archive/2010/02/22/313647.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Mon, 22 Feb 2010 08:53:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/02/22/313647.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/313647.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/02/22/313647.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/313647.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/313647.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 不要轻易地使用或滥用String类的getBytes(encoding)方法，更要尽量避免使用getBytes()方法。因为这个方法是平台依赖的，在平台不可预知的情况下完全可能得到不同的结果。如果一定要进行字节编码，则用户要确保encoding的方法就是当初字符串输入时的encoding。&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/02/22/313647.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/313647.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-02-22 16:53 <a href="http://www.blogjava.net/pengpenglin/archive/2010/02/22/313647.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【Java基础专题】编码与乱码(01)---编码基础</title><link>http://www.blogjava.net/pengpenglin/archive/2010/02/16/313177.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Tue, 16 Feb 2010 15:23:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/02/16/313177.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/313177.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/02/16/313177.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/313177.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/313177.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Unicode到UTF-8的转换：Unicode的16进制编码<-->对应的2进制编码<-->UTF-8规范的2进制编码<-->UTF-8规范的16进制编码<br><br>也就是说，假如我们需要从磁盘文件、数据库记录、网络传输一些字符，保存到Java的变量中，要经历由bytes-->encode字符-->Unicode字符的转换(例如new String(bytes, encode))；而要把Java变量保存到文件、数据库或者通过网络传输，系统要做一个Unicode字符-->encode字符-->bytes的转换(例如String.getBytes([encode]))&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/02/16/313177.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/313177.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-02-16 23:23 <a href="http://www.blogjava.net/pengpenglin/archive/2010/02/16/313177.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】RSS工具开发手记(14)---Informa的exporters包</title><link>http://www.blogjava.net/pengpenglin/archive/2010/01/04/308137.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Mon, 04 Jan 2010 02:15:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/01/04/308137.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/308137.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/01/04/308137.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/308137.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/308137.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Informa不仅提供了对不同版本的RSS Feed source的读入和解析，同样也提供了将channel object导出为不同协议版本的XML文件的功能。这个功能是通过exporters包下的各个导出类来完成的。目前仅支持对RSS协议的导出，不支持Atom协议、OPML协议的导出。&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/01/04/308137.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/308137.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-01-04 10:15 <a href="http://www.blogjava.net/pengpenglin/archive/2010/01/04/308137.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】RSS工具开发手记(13)---Informa的parsers包</title><link>http://www.blogjava.net/pengpenglin/archive/2010/01/02/308048.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Sat, 02 Jan 2010 12:56:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2010/01/02/308048.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/308048.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2010/01/02/308048.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/308048.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/308048.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: OPML(Outline Processor Markup Language)协议正是用于解决这样问题的。利用OPML协议，我们可以通过阅读器把已经订阅的频道导出为OPML协议规定的格式，从而作为<br>一个文件分享出去。&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2010/01/02/308048.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/308048.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2010-01-02 20:56 <a href="http://www.blogjava.net/pengpenglin/archive/2010/01/02/308048.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】RSS工具开发手记(12)---Informa的parsers包</title><link>http://www.blogjava.net/pengpenglin/archive/2009/12/30/307722.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Wed, 30 Dec 2009 02:45:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2009/12/30/307722.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/307722.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2009/12/30/307722.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/307722.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/307722.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 可以看到，对于这个解析过程，一般的步骤就是：<br> A.获取channnel下的某个子节点元素<br> B.如果该子节点元素有子元素或属性，则继续递归访问<br> C.调用该channnel子元素的createXxx方法加载或创建该子元素<br> D.调用Channel的setXxx方法添加该子元素到channel实例中&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2009/12/30/307722.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/307722.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2009-12-30 10:45 <a href="http://www.blogjava.net/pengpenglin/archive/2009/12/30/307722.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】RSS工具开发手记(11)---Informa的parse包</title><link>http://www.blogjava.net/pengpenglin/archive/2009/12/29/307641.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Tue, 29 Dec 2009 07:56:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2009/12/29/307641.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/307641.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2009/12/29/307641.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/307641.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/307641.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: FeedParser是一个facade类，这个类的工作就是根据读入的RSS Feed的协议系和版本“委托(delegate)”给已经硬编码的规则(concrete rules)指定的解析器，而且这些解析器是私有的。这意味着：用户不能直接调用一个RSS_0_91_Parser类的实例来进行解析工作。&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2009/12/29/307641.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/307641.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2009-12-29 15:56 <a href="http://www.blogjava.net/pengpenglin/archive/2009/12/29/307641.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】RSS工具开发手记(10)---Informa的impl.hibernate包</title><link>http://www.blogjava.net/pengpenglin/archive/2009/12/28/307526.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Mon, 28 Dec 2009 07:57:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2009/12/28/307526.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/307526.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2009/12/28/307526.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/307526.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/307526.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ChannelBuilder对channel object的创建原则就是：<br> A.如果能够从持久层中找到对应的记录，那么从持久层返回<br> B.如果找不到，则创建它并持久化它，然后返回该对象(已持久化)<br><br>只要记得的一点就是：从ChannelBuilder返回的对象都是已经持久化的。&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2009/12/28/307526.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/307526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2009-12-28 15:57 <a href="http://www.blogjava.net/pengpenglin/archive/2009/12/28/307526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】RSS工具开发手记(07)---Informa的impl.basic包</title><link>http://www.blogjava.net/pengpenglin/archive/2009/12/23/306962.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Tue, 22 Dec 2009 16:03:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2009/12/23/306962.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/306962.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2009/12/23/306962.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/306962.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/306962.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这个ID生成类采用了系统当前时间作为随即数产生的种子，这个并不难理解。但是有一个地方需要我们注意的就是关键字transient的使用。这个关键的作用是告诉编译器假设该类的对象被序列化了，这个值不需要被保存。因为它是“瞬时”的。&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2009/12/23/306962.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/306962.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2009-12-23 00:03 <a href="http://www.blogjava.net/pengpenglin/archive/2009/12/23/306962.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】RSS工具开发手记(05)---Informa的impl.basic包</title><link>http://www.blogjava.net/pengpenglin/archive/2009/12/22/306956.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Tue, 22 Dec 2009 15:31:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2009/12/22/306956.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/306956.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2009/12/22/306956.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/306956.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/306956.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 总结起来，channel的创建，更新过程如下：<br> ①接收经过ChannelParser解析后的XML Element元素，和其他一系列属性，调用构造方法<br> ②构造方法为channel生成一个全局唯一ID<br> ③构造方法创建item列表，观察者列表，设置好分类(Category)，首次更新时间<br> ④如果有新item到来，则添加到item列表，同时更新item的channel归属<br> ⑤如果现有channel更新，则设置最新更新时间<br> ⑥通知每一个已注册的观察者有事件发生&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2009/12/22/306956.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/306956.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2009-12-22 23:31 <a href="http://www.blogjava.net/pengpenglin/archive/2009/12/22/306956.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【原】RSS工具开发手记(04)---Informa的core包</title><link>http://www.blogjava.net/pengpenglin/archive/2009/12/21/306853.html</link><dc:creator>Paul Lin</dc:creator><author>Paul Lin</author><pubDate>Mon, 21 Dec 2009 14:09:00 GMT</pubDate><guid>http://www.blogjava.net/pengpenglin/archive/2009/12/21/306853.html</guid><wfw:comment>http://www.blogjava.net/pengpenglin/comments/306853.html</wfw:comment><comments>http://www.blogjava.net/pengpenglin/archive/2009/12/21/306853.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pengpenglin/comments/commentRss/306853.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pengpenglin/services/trackbacks/306853.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Informa的core包介绍如下：<br><br>“This package contains interfaces for the news channel objects, it builds the core API for all news channel storage implementation. ”<br><br>从上面这句话来看，core包里面定义的都是关于“news channel objects”的接口---实际上就是RSS协议中的channel和item元素。经过一个多小时查看源代码和阅读API，发现Informa对core包的设计有如下特点：<br><br>core包中的元素被分为标记接口、实体接口、行为接口&nbsp;&nbsp;<a href='http://www.blogjava.net/pengpenglin/archive/2009/12/21/306853.html'>阅读全文</a><img src ="http://www.blogjava.net/pengpenglin/aggbug/306853.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pengpenglin/" target="_blank">Paul Lin</a> 2009-12-21 22:09 <a href="http://www.blogjava.net/pengpenglin/archive/2009/12/21/306853.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>