﻿<?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/</link><description>专注于Java技术</description><language>zh-cn</language><lastBuildDate>Sat, 10 May 2008 21:20:26 GMT</lastBuildDate><pubDate>Sat, 10 May 2008 21:20:26 GMT</pubDate><ttl>60</ttl><item><title>冒号和他的学生们（连载11）——切面范式</title><link>http://www.blogjava.net/xyz98/archive/2008/05/11/199782.html</link><dc:creator>郑晖</dc:creator><author>郑晖</author><pubDate>Sat, 10 May 2008 16:00:00 GMT</pubDate><guid>http://www.blogjava.net/xyz98/archive/2008/05/11/199782.html</guid><wfw:comment>http://www.blogjava.net/xyz98/comments/199782.html</wfw:comment><comments>http://www.blogjava.net/xyz98/archive/2008/05/11/199782.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xyz98/comments/commentRss/199782.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xyz98/services/trackbacks/199782.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>AOP简谈</b><br>引号重开话题：“OOP方兴未艾，AOP又开始崭露头角。AOP算是OOP的一种分支、一种补充还是一种超越？”。。。<br><br>“准确地说，抽象是前提，分解是方式，模块化是结果。”冒号很讲究精确，“大家记得庖丁解牛的故事吧？在常人眼中复杂的牛体，庖丁经过抽象，已目无全牛，及至提刀分解，自是游刃有余。待牛如土委地，模块化既成。”。。。<br><br>问号提问：“抽象与分解的原则是什么？”<br>冒号作了个V字：“两条：单一化，正交化。每个模块职责明确专一，模块之间相互独立，即高聚合低耦合。。。<br><br>何谓横切关注点？顾名思义，乃是与程序的纵向主流执行方向横向正交的关注焦点。。。<br><br>对程序员来说，英语也是一门程序语言。。。&nbsp;&nbsp;<a href='http://www.blogjava.net/xyz98/archive/2008/05/11/199782.html'>阅读全文</a><img src ="http://www.blogjava.net/xyz98/aggbug/199782.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xyz98/" target="_blank">郑晖</a> 2008-05-11 00:00 <a href="http://www.blogjava.net/xyz98/archive/2008/05/11/199782.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Job Scheduling Framework［翻译］第六章.  Job 存储和持久性化 (第一部分) </title><link>http://www.blogjava.net/Unmi/archive/2008/05/10/199692.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Sat, 10 May 2008 12:24:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/05/10/199692.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/199692.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/05/10/199692.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/199692.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/199692.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>第六章. Job 存储和持久化</b><br><br>Quartz 用 JobStores 对 Job、Trigger、calendar 和 Schduler 数据提供一种存储机制。Scheduler 应用已配置的 JobStore 来存储和获取到部署信息，并决定正被触发执行的 Job 的职责。所有的关于哪个 Job 要执行和以什么时间表来执行他们的信息都来自于 JobStore。本章就来看 Quartz 中可用的各种类型的 JobStore，和如何使用他们，以及哪一个能适应你的需求。<br><br><i>"罗马非一日建成"</i><br><br>道格拉斯.亚当斯，《宇宙环游指南》<br> <br><b>一. Job 存储</b><br><br>在前面章节中，我们未曾花过任何时间来讨论 Scheduler 的 Job 和 Trigger 是保存在哪儿的。我们也许已经实现了，然而，当你停止了 Scheduler 后，那些有关哪些 Job 已经运行和哪些 Job 没有运行的信息就会丢失掉。实际上，所有的关于正在运行中的 Job 的信息也被销毁。<br><br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/05/10/199692.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/199692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-05-10 20:24 <a href="http://www.blogjava.net/Unmi/archive/2008/05/10/199692.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java的多进程运行模式分析</title><link>http://www.blogjava.net/nokiaguy/archive/2008/05/10/199738.html</link><dc:creator>银河使者</dc:creator><author>银河使者</author><pubDate>Sat, 10 May 2008 11:02:00 GMT</pubDate><guid>http://www.blogjava.net/nokiaguy/archive/2008/05/10/199738.html</guid><wfw:comment>http://www.blogjava.net/nokiaguy/comments/199738.html</wfw:comment><comments>http://www.blogjava.net/nokiaguy/archive/2008/05/10/199738.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nokiaguy/comments/commentRss/199738.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nokiaguy/services/trackbacks/199738.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一般我们在java中运行其它类中的方法时，无论是静态调用，还是动态调用，都是在当前的进程中执行的，也就是说，只有一个java虚拟机实例在运行。而有的时候，我们需要通过java代码启动多个java子进程。这样做虽然占用了一些系统资源，但会使程序更加稳定，因为新启动的程序是在不同的虚拟机进程中运行的，如果有一个进程发生异常，并不影响其它的子进程。&nbsp;&nbsp;<a href='http://www.blogjava.net/nokiaguy/archive/2008/05/10/199738.html'>阅读全文</a><img src ="http://www.blogjava.net/nokiaguy/aggbug/199738.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nokiaguy/" target="_blank">银河使者</a> 2008-05-10 19:02 <a href="http://www.blogjava.net/nokiaguy/archive/2008/05/10/199738.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>嵌入式系统开发之基础-预处理器和Typedef</title><link>http://www.blogjava.net/armodmlr/archive/2008/05/10/199722.html</link><dc:creator>龙人嵌入式开发</dc:creator><author>龙人嵌入式开发</author><pubDate>Sat, 10 May 2008 08:26:00 GMT</pubDate><guid>http://www.blogjava.net/armodmlr/archive/2008/05/10/199722.html</guid><wfw:comment>http://www.blogjava.net/armodmlr/comments/199722.html</wfw:comment><comments>http://www.blogjava.net/armodmlr/archive/2008/05/10/199722.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/armodmlr/comments/commentRss/199722.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/armodmlr/services/trackbacks/199722.html</trackback:ping><description><![CDATA[&nbsp;
<div class="Section0">
<p class="0" style="layout-grid-mode: char"><span style="font-weight: bold; font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">嵌入式系统开发之基础-</font> </span><span style="font-weight: bold; font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">预处理器</font> </span><span style="font-weight: bold; font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">和</font> </span><span style="font-weight: bold; font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'">Typedef</span> <span style="font-weight: bold; font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-weight: normal; font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">做为一个嵌入式开发程序员，必须很熟悉</font> </span><span style="font-weight: normal; font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">预处理器</font> </span><span style="font-weight: normal; font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">和</font> </span><span style="font-weight: normal; font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'">Typedef</span> <span style="font-weight: normal; font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">的含义，以下龙人计算机（</font> </span><span><a href="http://www.armlab.net/"><span class="15" style="font-weight: normal; font-size: 10pt; color: rgb(0,0,255); font-family: '宋体'; text-decoration: underline; mso-spacerun: 'yes'"><font face="宋体">深圳龙人嵌入式事业部</font> </span></a></span><span style="font-weight: normal; font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">）就分别介绍。</font> </span><span style="font-weight: normal; font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-weight: bold; font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">预处理器(Preprocessor)&nbsp;</font> </span><span style="font-weight: bold; font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　1&nbsp;.&nbsp;用预处理指令#define&nbsp;声明一个常数，用以表明1年中有多少秒(忽略闰年问题)&nbsp;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　　　　#define&nbsp;SECONDS_PER_YEAR&nbsp;(60&nbsp;*&nbsp;60&nbsp;*&nbsp;24&nbsp;*&nbsp;365)UL</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　我在这想看到几件事情：&nbsp;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　1)&nbsp;#define&nbsp;语法的基本知识(例如：不能以分号结束，括号的使用，等等)&nbsp;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　2)懂得预处理器将为你计算常数表达式的值，因此，直接写出你是如何计算一年中有多少秒而不是计算出实际的值，是更清晰而没有代价的。&nbsp;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　3)&nbsp;意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。&nbsp;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　4)&nbsp;如果你在你的表达式中用到UL(表示无符号长整型)，那么你有了一个好的起点。记住，第一印象很重要。</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span><a href="http://armodmlr.spaces.live.com/"><span class="15" style="font-size: 10pt; color: rgb(0,0,255); font-family: '宋体'; text-decoration: underline; mso-spacerun: 'yes'"><font face="宋体">嵌入式</font> </span></a></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;</span> <span><a href="http://www.szarm.com/"><span class="15" style="font-size: 10pt; color: rgb(0,0,255); font-family: '宋体'; text-decoration: underline; mso-spacerun: 'yes'"><font face="宋体">嵌入式系统</font> </span></a></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">&nbsp;</span> <span><a href="http://webliver.com/u/arm9arm7/Blog/Default.aspx"><span class="15" style="font-size: 10pt; color: rgb(0,0,255); font-family: '宋体'; text-decoration: underline; mso-spacerun: 'yes'"><font face="宋体">嵌入式开发</font> </span></a></span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'">&nbsp;</span> <span><a href="http://blog.vsharing.com/arm9arm7"><span class="15" style="font-weight: normal; font-size: 10pt; color: rgb(0,0,255); font-family: 'Times New Roman'; text-decoration: underline; mso-spacerun: 'yes'"><font face="宋体">预处理器</font> </span></a></span><span style="font-weight: normal; font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'">Typedef</span> <span style="font-weight: normal; font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　2&nbsp;.&nbsp;写一个"标准"宏MIN&nbsp;，这个宏输入两个参数并返回较小的一个。&nbsp;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　　　　#define&nbsp;MIN(A,B)&nbsp;((A)&nbsp;&lt;=&nbsp;(B)&nbsp;?&nbsp;(A)&nbsp;:&nbsp;(B))</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　&nbsp;这个测试是为下面的目的而设的：&nbsp;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　1)&nbsp;标识#define在宏中应用的基本知识。这是很重要的。因为在&nbsp;嵌入(inline)操作符&nbsp;变为标准C的一部分之前，宏是方便产生嵌入代码的唯一方法，对于嵌入式系统来说，为了能达到要求的性能，嵌入代码经常是必须的方法。&nbsp;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码，了解这个用法是很重要的。&nbsp;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　3)&nbsp;懂得在宏中小心地把参数用括号括起来&nbsp;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　4)&nbsp;我也用这个问题开始讨论宏的副作用，例如：当你写下面的代码时会发生什么事？&nbsp;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　3.&nbsp;预处理器标识#error的目的是什么？&nbsp;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　如果你不知道答案，请</font> </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">上龙人嵌入式系统开发技术的网站下载相关资料</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种问题的答案。当然如果你不是在找一个书呆子，那么应试者最好希望自己不要知道答案。&nbsp;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-weight: bold; font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span><a href="http://computer.mblogger.cn/arm9arm7"><span class="15" style="font-weight: bold; font-size: 10pt; color: rgb(0,0,255); font-family: 'Times New Roman'; text-decoration: underline; mso-spacerun: 'yes'">Typedef</span> </a></span><span style="font-weight: bold; font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'">&nbsp;</span> <span style="font-weight: bold; font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　15&nbsp;Typedef&nbsp;在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如，思考一下下面的例子：&nbsp;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　　　#define&nbsp;dPS&nbsp;struct&nbsp;s&nbsp;*</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　　　typedef&nbsp;struct&nbsp;s&nbsp;*&nbsp;tPS;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　以上两种情况的意图都是要定义dPS&nbsp;和&nbsp;tPS&nbsp;作为一个指向结构s指针。哪种方法更好呢？(如果有的话)为什么？&nbsp;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　这是一个非常微妙的问题，任何人答对这个问题(正当的原因)是应当被恭喜的。答案是：typedef更好。思考下面的例子：&nbsp;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　　　dPS&nbsp;p1,p2;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　　　tPS&nbsp;p3,p4;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　第一个扩展为&nbsp;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　　　struct&nbsp;s&nbsp;*&nbsp;p1,&nbsp;p2;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><font face="宋体">　　上面的代码定义p1为一个指向结构的指，p2为一个实际的结构，这也许不是你想要的。第二个例子正确地定义了p3&nbsp;和p4&nbsp;两个指针。&nbsp;</font> </span><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">龙人计算机嵌入式研发中心</font> </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">是国内最早进入</font> </span><span><a href="http://arm9arm7.x.zuihao.biz/"><span class="15" style="font-size: 10pt; color: rgb(0,0,255); font-family: '宋体'; text-decoration: underline; mso-spacerun: 'yes'"><font face="宋体">嵌入式技术</font> </span></a></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">研发和应用推广的技术型企业之一</font> </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">，</font> </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">成立以来</span> <span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">在</span> <span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">专注于嵌入式底层应用技术的研究和开发</span> <span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">的同时为广大客户提供嵌入式系统开发技术、嵌入式解决方案和嵌入式产品（嵌入式开发板、ARM开发板、</span> <span><a href="http://arm9arm7.web.17jzw.com/"><span class="15" style="font-size: 10pt; color: rgb(0,0,255); font-family: '宋体'; text-decoration: underline; mso-spacerun: 'yes'">ARM9开发板</span> </a></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'">、ARM开发工具、ARM仿真器和ARM工控板、ARM实验仪等）。</span> <span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">网址：</font> </span><span><a href="http://www.armodm.com/"><span class="15" style="font-size: 10pt; color: rgb(0,0,255); font-family: '宋体'; text-decoration: underline; mso-spacerun: 'yes'">http://www.armodm.com</span> </a></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">联&nbsp;系&nbsp;电&nbsp;话：+86-0755-83346939&nbsp;&nbsp;83662100&nbsp;&nbsp;&nbsp;余小姐</font> </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">销&nbsp;售&nbsp;</font> </span><span><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#69;&#109;&#97;&#105;&#108;&#65306;&#98;&#101;&#105;&#106;&#105;&#110;&#103;&#115;&#104;&#101;&#110;&#122;&#104;&#101;&#110;&#64;&#49;&#50;&#54;&#46;&#99;&#111;&#109;"><span class="15" style="font-size: 10pt; color: rgb(0,0,255); font-family: '宋体'; text-decoration: underline; mso-spacerun: 'yes'">Email<font face="宋体">：beijingshenzhen@126.com</font> </span></a></span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><font face="宋体">联&nbsp;系&nbsp;地&nbsp;址:&nbsp;深圳市福田区福虹路世界贸易广场B座13F&nbsp;&nbsp;&nbsp;邮&nbsp;编：518033</font> </span><span style="font-size: 10.5pt; font-family: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="0" style="layout-grid-mode: char"><span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
</div>
<!--endfragment-->
<img src ="http://www.blogjava.net/armodmlr/aggbug/199722.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/armodmlr/" target="_blank">龙人嵌入式开发</a> 2008-05-10 16:26 <a href="http://www.blogjava.net/armodmlr/archive/2008/05/10/199722.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用JSON格式进行内容组织，跟多项内容的字符串解析说BYEBYE</title><link>http://www.blogjava.net/alwayscy/archive/2008/05/10/199689.html</link><dc:creator>我爱佳娃</dc:creator><author>我爱佳娃</author><pubDate>Sat, 10 May 2008 04:15:00 GMT</pubDate><guid>http://www.blogjava.net/alwayscy/archive/2008/05/10/199689.html</guid><wfw:comment>http://www.blogjava.net/alwayscy/comments/199689.html</wfw:comment><comments>http://www.blogjava.net/alwayscy/archive/2008/05/10/199689.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/alwayscy/comments/commentRss/199689.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alwayscy/services/trackbacks/199689.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 平时编程中经常遇到将多项内容放入字串，然后再一一解析出来的情况，常常是这样的字串操作不胜其烦。<br>我们可以使用JSON这一标准格式来组织内容到字符串，然后现成的类库来进行解析，准确而清晰。&nbsp;&nbsp;<a href='http://www.blogjava.net/alwayscy/archive/2008/05/10/199689.html'>阅读全文</a><img src ="http://www.blogjava.net/alwayscy/aggbug/199689.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alwayscy/" target="_blank">我爱佳娃</a> 2008-05-10 12:15 <a href="http://www.blogjava.net/alwayscy/archive/2008/05/10/199689.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Unmi 的 Struts2 学习笔记(十二) </title><link>http://www.blogjava.net/Unmi/archive/2008/05/10/197721.html</link><dc:creator>隔叶黄莺</dc:creator><author>隔叶黄莺</author><pubDate>Sat, 10 May 2008 03:59:00 GMT</pubDate><guid>http://www.blogjava.net/Unmi/archive/2008/05/10/197721.html</guid><wfw:comment>http://www.blogjava.net/Unmi/comments/197721.html</wfw:comment><comments>http://www.blogjava.net/Unmi/archive/2008/05/10/197721.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Unmi/comments/commentRss/197721.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Unmi/services/trackbacks/197721.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 上有所好，下必甚之。君不见屠宰场的墙头“以三个代表指导我们的屠宰工作!” 发挥到极致；近来更是“和谐”泛滥，褒贬难分，诸如“创建人水和谐” 等比比皆是。程序开发更需要务实，任凭天花乱坠都糊弄不了梗直的机器。<br><br>1. 初见 Struts2 的表单标签有 tooltip 以及 tooltipConfig 下的 tooltipBgColor 等属性，有一种砰然心动的感，本能的以为例如一个输入框，鼠标悬停其中便出现一个 JS Tip 层，还可控制这个层的样式。用了才知道头脑其实有点过热，不过是在输入框前加下图标，鼠标要放在那个图标上才显示 tooltip 指定的内容，而且如果不给 form 加上 tooltipConfig="#{'jsTooltipEnabled':'true'}"，也就用 alt/title 来实现，没什么新意。加了tooltipConfig="#{'jsTooltipEnabled':'true'}" 的话还要人命的是 JS 提示层会出来，alt/title 也会迸出来，产生重叠。同时还必须加上 <s:head/> 否则出现 dojo 的错误，即使 jsT&nbsp;&nbsp;<a href='http://www.blogjava.net/Unmi/archive/2008/05/10/197721.html'>阅读全文</a><img src ="http://www.blogjava.net/Unmi/aggbug/197721.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Unmi/" target="_blank">隔叶黄莺</a> 2008-05-10 11:59 <a href="http://www.blogjava.net/Unmi/archive/2008/05/10/197721.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>搜索spider对二叉查找树查找实验（中文翻译）</title><link>http://www.blogjava.net/wangdei/archive/2008/05/10/199673.html</link><dc:creator>王能</dc:creator><author>王能</author><pubDate>Sat, 10 May 2008 03:32:00 GMT</pubDate><guid>http://www.blogjava.net/wangdei/archive/2008/05/10/199673.html</guid><wfw:comment>http://www.blogjava.net/wangdei/comments/199673.html</wfw:comment><comments>http://www.blogjava.net/wangdei/archive/2008/05/10/199673.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wangdei/comments/commentRss/199673.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangdei/services/trackbacks/199673.html</trackback:ping><description><![CDATA[<p>原文链接：<a href="http://drunkmenworkhere.org/219.php">http://drunkmenworkhere.org/219.php</a><br />
中文翻译：<a href="http://www.tondou.cn/">benhur</a></p>
<p>持续修正中&#8230;&#8230;欢迎多提意见！</p>
<h4 id="contents">Contents</h4>
<ul>
    <li><a href="http://chn.blogbeta.com/142.html#introduction">Introduction</a>
    <li><a href="http://chn.blogbeta.com/142.html#setup">Setup</a>
    <li><a href="http://chn.blogbeta.com/142.html#results">Overall results</a>
    <li><a href="http://chn.blogbeta.com/142.html#yahoo">Yahoo! Slurp</a>
    <li><a href="http://www.bt285.cn/">Googlebot</a>
    <li><a href="http://chn.blogbeta.com/142.html#msn">MSNbot</a>
    <li><a href="http://chn.blogbeta.com/142.html#spam">Spam bots</a> </li>
</ul>
<h4 id="introduction">Introduction</h4>
<p>关于搜索引擎的大规模试验在持续了一年之后于2006-4-13结束。该试验的目的是分析搜索引擎行为模式，共使用了基于二叉查找树结构- <a href="http://drunkmenworkhere.org/218">Binary Search Tree 2</a> -而组织的20亿页面。在一年的时间内，三个主要搜索引擎向超过十万个不同的URL提交了超过一百万次页面请求。由于显示在页面上的访问记录和留言的增长，drunkmenworkhere.org的主页也从最初的1.6kB增长到了4MB。</p>
<p>本文即为这次试验的结果。</p>
<p><a href="http://chn.blogbeta.com/142.html#contents">^</a></p>
<h4 id="setup">Setup</h4>
<p>这次试验共准备了2,147,483,647个页面，这些页面(结点)以<a href="http://www.tondou.cn/">二叉查找树</a>的结构组织在一起。对于某一特定结点来说，它自身的值大于其左子树上任意一结点的值，而小于右子树上任意一结点的值。在这次试验中，最左叶结点的值为1，而最右叶结点的值为2,147,483,647。</p>
<p>二叉树的深度是指从根结点访问到最远的叶结点所经历的结点数量。如果二叉树的深度是n，那在这棵二叉树上最多能排列2<sup>n+1</sup>个结点。在本次试验中，二叉树的深度定为30(2<sup>31</sup>= 2,147,483,648)，所以根结点的值为1073741824(2<sup>30</sup>)。在持续一年的时间里(从2005-4-13到2006-4-13)，我们跟踪了三大搜索机器人(<a href="http://help.yahoo.com/help/us/ysearch/slurp">Yahoo!Slurp</a>、<a href="http://www.tondou.cn/">Googlebot</a>和<a href="http://search.msn.com/msnbot.htm">msnbot</a>)在每个页面上的访问量。</p>
<p>为了让搜索引擎对页面内容更感兴趣，每个结点的值都用short scale(短级差制英语表示，billion=&#8220;十亿&#8221;，译者注)表示，每一次搜索机器人对于任意结点的访问记录都会按时间排序显示在该结点的页面上。每个页面上添加了一个留言板(已于被2006-4-13被移除)。上一版二叉查找树结构- <a href="http://drunkmenworkhere.org/217">Binary Search Tree</a> - 因为使用了长URL而造成不便，现在这些措施都是对其的进一步改进。</p>
<p>每个结点上首先显示了三张<a href="http://static.flickr.com/54/145123987_ac17758f7b_o.png">访问树图</a>。这是被搜索引擎抓取的结点的图形化表示。图中的每条线代表一个结点，线的长度代表搜索机器人的访问次数。下文中所使用的图片是访问树全图的修改版，除去了拥有最大访问量的根结点，但没有连接到根结点的树枝仍会被表示。</p>
<p><a href="http://chn.blogbeta.com/142.html#contents">^</a></p>
<h4 id="results">Overall results</h4>
<p>到目前为止，Yahoo! Slurp是最活跃的搜索机器人。在一年时间里总共请求了超过一百万次页面，抓取了超过十万个不同的结点。这是一个很大的数字，但也只占了总结点数的0.0049%。所有机器人的统计数据如下：</p>
<table style="width: 500px; text-align: right">
    <caption>overall statistics by search engine</caption>
    <tbody>
        <tr>
            <th>&nbsp;</th>
            <th style="text-align: right">
            <p align="right">Yahoo!</p>
            </th>
            <p>
            <th style="text-align: right">Google</th></p>
            <p>
            <th style="text-align: right">MSN</th></p>
        </tr>
        <tr>
            <th style="text-align: right">total number of pageviews<br />
            (页面总请求数)</th>
            <td>1,030,396</td>
            <td>20,633</td>
            <td>4,699</td>
        </tr>
        <tr>
            <th style="text-align: right">number of nodes crawled<br />
            (抓取结点数)</th>
            <td>105,971</td>
            <td>7,556</td>
            <td>1,390</td>
        </tr>
        <tr>
            <th style="text-align: right">percentage of tree crawled<br />
            (抓取率)</th>
            <td>0.0049%</td>
            <td>0.00035%</td>
            <td>0.000065%</td>
        </tr>
        <tr>
            <th style="text-align: right">number of indexed nodes<br />
            (索引结点数)</th>
            <td><a href="http://drunkmenworkhere.org/bintree/yahoo2_cashed.html">120,000</a></td>
            <td><a href="http://drunkmenworkhere.org/bintree/google_cashed.html">554</a></td>
            <td><a href="http://drunkmenworkhere.org/bintree/msn_cashed.html">1</a></td>
        </tr>
        <tr>
            <th style="text-align: right">indexed/crawled ratio<br />
            (索引/抓取比)</th>
            <td>113.23%</td>
            <td>7.33%</td>
            <td>0.07%</td>
        </tr>
    </tbody>
</table>
<p>页面总请求数和抓取结点总数在一年内的增长趋势如图1和图2所示。在随后几节中将具体分析搜索机器人抓取结点的方式(配有动画演示)。</p>
<p><img height="301" alt="pageviews in time" src="http://static.flickr.com/53/144627026_8277583cf2_o.png" width="457" /><br />
<strong>Fig. 1</strong> - The cumulative number of pageviews by the search bots in time.</p>
<p><img height="301" alt="nodes crawled in time" src="http://static.flickr.com/54/144626968_b91ec6015d_o.png" width="457" /><br />
<strong>Fig. 2</strong> - The cumulative number of nodes crawled by the search bots in time.</p>
<p>图3中显示了二叉树中的不同层结点被抓取的数据统计(注：纵轴为对数表示)。根结点在level 0，最远叶结点(如结点1)在level 30。二叉树的结构决定了在第n层有2<sup>n</sup>个结点，所以从理论上说，搜索机器人抓取整个二叉树的行为会在图中表示为一条单调上升的直线。</p>
<p><img height="301" alt="nodes crawled by level" src="http://static.flickr.com/51/144626979_5331a64cf4_o.png" width="457" /><br />
<strong>Fig. 3</strong> - The number of nodes crawled after 1 year, grouped by node level.</p>
<p>Googlebot的抓取模式基本上接近于这条直线，直到在第12级发生转折。它所抓取的大多数结点在第12层或12层以下(8191中的5524个)，少有深层的结点被抓取。MSNbot的行为模式与Googlebot类似但拐点出现得更早，在第9级(1023中的656个)。Yahoo没有发生明显的转折，不过在深层抓取新结点的行为逐渐放缓。</p>
<p>与其他搜索机器人相比，Yahoo更频繁地向其所抓取的深层结点发送请求：在14层到30层的结点平均请求次数为10次。(见图4)</p>
<p><img height="301" alt="nodes crawled by depth" src="http://static.flickr.com/48/144627032_e65bc93547_o.png" width="457" /><br />
<strong>Fig. 4</strong> - The average number of pageviews per node after 1 year, grouped by node level.</p>
<p><a href="http://chn.blogbeta.com/142.html#contents">^</a></p>
<p>&nbsp;</p>
<h4 id="yahoo">Yahoo! Slurp</h4>
<p><img height="362" alt="Yahoo! binary tree" src="http://static.flickr.com/52/144627086_acbc4384a9_o.png" width="501" /> </p>
<ul>
    <li><a href="http://drunkmenworkhere.org/bintree/yahoo.png">large version</a> (4273&#215;3090, 1.5MB)
    <li><a href="http://drunkmenworkhere.org/219.php?a=yahoo">animated version over 1 year</a> (2005-04-13 - 2006-04-13, 13MB)
    <li><a href="http://drunkmenworkhere.org/219.php?a=yahoo2hour">animated version of the first 2 hours</a> (2006-04-14 00:40:00-02:40:00, 2.2MB) </li>
</ul>
<p><strong>Fig. 5</strong> - The Yahoo! Slurp tree.</p>
<p>Yahoo! Slurp是第一个发现Binary Search Tree 2的引擎。在其后的几个小时里Yahoo! Slurp每秒2.3个结点(见<a href="http://drunkmenworkhere.org/219.php?a=yahoo2hour">动画演示(2 hours )</a>)的速度精力旺盛地抓取着每一个结点。到第一天结束它已经抓取了大约30,000个结点。</p>
<p>在接下来的一个月里Slurp表现得没有第一天那么活跃，但一个月以后它重新请求了它先前访问的每一页。在<a href="http://drunkmenworkhere.org/219.php?a=yahoo">动画演示</a>中可以看到：访问树在2005-05-14增长了一倍。这一现象在一个月后再次重复：在2005-06-13访问树增长到原来规模的三倍。Yahoo! Slurp在请求数已经达到90,000时抓取的结点数仍然维持在30,000。图6显示了在最初几个月里请求数的阶梯式增长。</p>
<p><img height="301" alt="pageviews by Yahoo! Slurp" src="http://static.flickr.com/46/144627070_f099deb59b_o.png" width="485" /><br />
<strong>Fig. 6</strong> - The cumulative number of pageviews by Yahoo! Slurp in time.</p>
<p>4个月后，Slurp重复了其第一回合的行为，请求了大量的&#8220;新&#8221;结点。它请求了所有访问过的结点。因为已经建立了30000个结点的索引而每一个结点都链接到更深一层的两个子结点，在8月底它请求了60000个页面(请求数由100,000跳到160,000，见图6)，同时抓取页面总数也翻了一番。(见图7)</p>
<p>5个月后Yahoo! Slurp开始显得更有规律发送请求，从图7中上仍然可以看到新的&#8220;发现期&#8221;(例：10个月以后)。</p>
<p><img height="301" alt="nodes crawled by Yahoo! Slurp" src="http://static.flickr.com/50/144627064_6af5c6b2e5_o.png" width="485" /><br />
<strong>Fig. 7</strong> - The cumulative number of nodes crawled by Yahoo! Slurp in time.</p>
<p>Yahoo在索引中报告了<a href="http://drunkmenworkhere.org/bintree/yahoo2_cashed.html">120,000</a>个页面(<a href="http://search.yahoo.com/search?ei=UTF-8&amp;fr=sfp&amp;p=site%3Adrunkmenworkhere.org+inurl%3Adrunkmenworkhere.org%2F218">current value</a>)。考虑到它只访问了105,971 个结点，这看起来有点不可思议，但实际上每个结点都有两个域名：www.drunkmenworkhere.org和drunkmenworkhere.org</p>
<p>Note: 从返回的查询结果上看，Google和MSN与Yahoo的<a href="http://drunkmenworkhere.org/bintree/yahoo_cashed.html">35,600</a>条记录相比明显落于下风。截止到试验结束为止，Yahoo是唯一一个对上述查询返回结果的搜索引擎。</p>
<p><a href="http://chn.blogbeta.com/142.html#contents">^</a></p>
<p>&nbsp;</p>
<h4 id="google">Googlebot</h4>
<p><img height="608" alt="Google binary tree" src="http://static.flickr.com/53/144626915_455a5bfa9c_o.png" width="500" /> </p>
<ul>
    <li><a href="http://drunkmenworkhere.org/bintree/google.png">large version</a> (4067&#215;4815, 180kB)
    <li><a href="http://drunkmenworkhere.org/219.php?a=google">animated version</a> (2005-04-13 - 2006-04-13, 1.2MB) </li>
</ul>
<p><strong>Fig. 8</strong> - The Googlebot tree.</p>
<p>与Yahoo的访问树相比，Google的访问树更像一棵真实的树。Google访问深层结点并不如它们的父结点那么频繁。Yahoo访问最频繁的结点集中在前三层，Google则集中在前12层(见图4)。</p>
<p>Google访问树的形状取决于<a href="http://www-db.stanford.edu/~backrub/google.html">PageRank</a>算法，该算法的具体定义如下：</p>
<blockquote style="width: 450px">
<p>&#8220;We assume page A has pages T1&#8230;Tn which point to it (i.e., are citations). The parameter d is a damping factor which can be set between 0 and 1. We usually set d to 0.85. There are more details about d in the next section. Also C(A) is defined as the number of links going out of page A. The PageRank of a page A is given as follows:</p>
<p>PR(A) = (1-d) + d (PR(T1)/C(T1) + &#8230; + PR(Tn)/C(Tn)) &#8220;</p>
</blockquote>
<p>二叉树上的绝大多数结点都没有外部链接，所以各结点的PR值计算式可简化为如下形式(忽略留言上的链接)：</p>
<blockquote>
<p>PR(node) = 0.15 + 0.85 (PR(parent) + PR(left child) + PR(right child))/3</p>
</blockquote>
<p>唯一不确定的地方是在迭代计算各结点PR值时我们无法确定根结点的PR值。考虑到根结点作为drunkmenworkhere.org的主页已经有了一年时间，可以假定它拥有一个高PR值。PageRank树的特征与Googlebot访问树很相似，可以认为Googlebot访问某一页面的频率与这一页面的PR值直接相关。</p>
<p><img height="515" alt="PageRank of pages in a binary tree" src="http://static.flickr.com/44/144626999_7856b64935_o.png" width="500" /><br />
<strong>Fig. 9</strong> - A binary tree of depth 17 visualising calculated PageRank as length of each line, when the PageRank of the root node is set to 100.</p>
<p>Googlebot访问树的<a href="http://drunkmenworkhere.org/219.php?a=google">动画</a>显示了某些不能用PageRank的有趣特征。</p>
<dl>
<dt>最远右子树
<dd>一开始Googlebot更多地抓取了二叉树右支上的结点。在2005-07-04它试图到达拥有最高值的最右结点。从根结点出发，Googlebot在右子树深度为20的地方停了下来。访问树的右段形成了一段圆弧。<br />
<img height="269" alt="Googlebot's rightmost branch" src="http://static.flickr.com/51/144626898_cf7ca8ce3e_o.png" width="450" />
<dt>搜索结点1
<dd>在2005-06-30，Googlebot访问了 <a href="http://drunkmenworkhere.org/218_1">结点1</a>——这是二叉树的最左叶结点。Googlebot并没有从根结点沿着左子树一路爬上来，它究竟是如何发现这一结点的呢？是Googlebot猜到了URL还是从某个外部链接跟踪过来？<br />
几个小时后，Googlebot抓到了<a href="http://drunkmenworkhere.org/218_2">结点2</a>——结点1的父结点。这两个游离于主干之外的结点在动画演示的2005-06-30显示为一个小黑点。一周后的2005-07-06 (也就是到达访问树最远右结点的两天后)，Googlebot找到了从根结点访问结点1的路径，在20秒之内串联了24个结点(从<a href="http://drunkmenworkhere.org/218_16777216">06:39:39</a>到<a href="http://drunkmenworkhere.org/218_4">06:39:59</a>)。这次大串联行动从根结点开始，直到连接到结点2，其间没有一次请求右子结点。在Googlebot访问树的<a href="http://drunkmenworkhere.org/bintree/google.png">全景图</a>中很容易找到这条访问路径。中途的大部分结点没有第二次被访问过，在访问树上它们被表示短而细的线段，整体的显示效果为一段极其陡峭的圆弧。<br />
<img height="252" alt="Googlebot's path to node 1" src="http://static.flickr.com/45/144626935_c61f3468f9_o.png" width="450" />
<dt>类Yahoo子树
<dd>在2005-07-23，Google突然间花费几个小时在<a href="http://drunkmenworkhere.org/218_1073872896">结点1073872896</a>周边抓取了600个新结点。其中绝大多数没有被再次访问。<br />
这棵类Yahoo子树正是图3中Googlebot在18层到30层抓取的结点数重新上升的原因。<br />
<img height="250" alt="Googlebot's subtree" src="http://static.flickr.com/51/144626921_4c6b790d15_o.png" width="450" /> </dd></dl>
<p>在后六个月里Googlebot一直以一个稳定的速度发送着页面请求(平均每月260个页面，见图11)。与Yahoo! Slurp类似，Googlebot的行为模式也可以分为发现期(periods of discovery)和刷新期(periods of refreshing its cache)。</p>
<p><img height="301" alt="pageviews by Googlebot" src="http://static.flickr.com/52/144626885_4c7256d513_o.png" width="485" /></p>
<p><strong>Fig. 10</strong> - The cumulative number of pageviews by Googlebot in time.</p>
<p><img height="301" alt="nodes crawled by Googlebot" src="http://static.flickr.com/52/144626869_4b7b44708d_o.png" width="485" /><br />
<strong>Fig. 11</strong> - The cumulative number of nodes crawled by Googlebot in time.</p>
<p>Google收录了它所抓取结点中的<a href="http://drunkmenworkhere.org/bintree/google_cashed.html">554个结点</a>。最早收录的结点是结点1和结点2。它们最早收录是因为它们的短URL。而Google第一页的搜索结果的其他结点都位于第4层，这可能是因为前三层结点因为垃圾留言过多而被Google 过滤了。<br />
查看当前的搜索结果请点<a href="http://www.google.nl/search?q=site%3Adrunkmenworkhere.org+%22enriched+zero+content+for+compulsive+search+engines%22">这里</a>。</p>
<p><a href="http://chn.blogbeta.com/142.html#contents">^</a></p>
<p>&nbsp;</p>
<h4 id="msn">MSNbot</h4>
<p><img height="338" alt="MSN binary tree" src="http://static.flickr.com/47/144626958_cb2795458a_o.png" width="500" /> </p>
<ul>
    <li><a href="http://drunkmenworkhere.org/bintree/msn.png">large version</a> (4200&#215;2795, 123kB)
    <li><a href="http://drunkmenworkhere.org/219.php?a=msn">animated version</a> (2005-04-13 - 2006-04-13, 846kB) </li>
</ul>
<p><strong>Fig. 12</strong> - The msnbot tree</p>
<p>Msnbot的访问树与Yahoo和Google相比显得更小，比较有趣的是在访问树的右边有一个大的断支。这个断支发生于2005-04-29，msnbot访问了<a href="http://drunkmenworkhere.org/218_2045877824">结点2045877824</a>。这个结点上有一句两周前的留言：</p>
<blockquote>
<p>I hereby claim this name in the name of&#8230;well, mine. Paul Pigg.</p>
</blockquote>
<p>一周后msnbot请求了这个结点，Googlebot也请求了这个结点。这个看似无奇的24层结点被抓取是因为Paul Pigg的网站masterpigg.com (该站点现在已不存在了, <a href="http://www.google.com/search?q=cache:al9EzfXlSsMJ:masterpigg.com/circus/Random/Bizarre/Binary-Search-Tree-2+site:masterpigg.com&amp;hl=en&amp;ct=clnk&amp;cd=1&amp;ie=UTF-8">Google cache</a>)为它作了超链接。所有这三个搜索引擎都是通过这个链接访问到这个结点，谁也没能把它同访问树的根结点连接上。<br />
查看<a href="http://drunkmenworkhere.org/218_2045877824">结点2045877824</a>的留言也能确认这一点。</p>
<p>从这个孤立的结点的上下两个方向抓取其他结点，从而形成了一颗大的子树。这颗子树造成了msnbot在图3中18层到30层向上趋势。</p>
<p>第二颗较大的子树位于顶部中央，是由<a href="http://uu-dot.com/2005/07/21/boomklimmen-voor-gevorderden/">uu-dot.com的一个超链接引起的。这两个独立子树在Googlebot的访问树中同样看得很清楚。</a><a href="http://drunkmenworkhere.org/bintree/msn_cashed.html">搜索结果</a>在上图中看得不是很清楚。</p>
<p><img height="301" alt="pageviews by msnbot" src="http://static.flickr.com/53/144626951_f2ad820b43_o.png" width="485" /></p>
<p><strong>Fig. 13</strong> - The cumulative number of pageviews by msnbot in time.</p>
<p><img height="301" alt="nodes crawled by msnbot" src="http://static.flickr.com/48/144626944_ecc2bab924_o.png" width="485" /><br />
<strong>Fig. 14</strong> - The cumulative number of nodes crawled by msnbot in time.</p>
<p>如图所示，msnbot在5个月后实际上终止了抓取Binary Search Tree 2的行动。MSN Search如何反馈</p>
<p><a href="http://chn.blogbeta.com/142.html#contents">^</a></p>
<p>&nbsp;</p>
<h4 id="spam">Spam bots</h4>
<p>一年之中103个结点上留下了5265条留言。其中有32个结点没有被任何搜索机器人访问过。大多数留言(3652)都留在根结点(主页)上。留言中的最常见的单词统计如下：</p>
<table style="width: 450px">
    <caption>top 50 of most frequently spammed words</caption>
    <tbody>
        <tr>
            <th>&nbsp;</th>
            <th>count</th>
            <th>word</th>
        </tr>
        <tr>
            <td>1</td>
            <td>32743</td>
            <td>http</td>
        </tr>
        <tr>
            <td>2</td>
            <td>23264</td>
            <td>com</td>
        </tr>
        <tr>
            <td>3</td>
            <td>12375</td>
            <td>url</td>
        </tr>
        <tr>
            <td>4</td>
            <td>8636</td>
            <td>www</td>
        </tr>
        <tr>
            <td>5</td>
            <td>5541</td>
            <td>info</td>
        </tr>
        <tr>
            <td>6</td>
            <td>4631</td>
            <td>viagra</td>
        </tr>
        <tr>
            <td>7</td>
            <td>4570</td>
            <td>online</td>
        </tr>
        <tr>
            <td>8</td>
            <td>4533</td>
            <td>phentermine</td>
        </tr>
        <tr>
            <td>9</td>
            <td>4512</td>
            <td>buy</td>
        </tr>
        <tr>
            <td>10</td>
            <td>4469</td>
            <td>html</td>
        </tr>
        <tr>
            <td>11</td>
            <td>3531</td>
            <td>org</td>
        </tr>
        <tr>
            <td>12</td>
            <td>3346</td>
            <td>blogstudio</td>
        </tr>
        <tr>
            <td>13</td>
            <td>3194</td>
            <td>drunkmenworkhere</td>
        </tr>
        <tr>
            <td>14</td>
            <td>2801</td>
            <td>free</td>
        </tr>
        <tr>
            <td>15</td>
            <td>2772</td>
            <td>cialis</td>
        </tr>
        <tr>
            <td>16</td>
            <td>2371</td>
            <td>to</td>
        </tr>
        <tr>
            <td>17</td>
            <td>2241</td>
            <td>u</td>
        </tr>
        <tr>
            <td>18</td>
            <td>2169</td>
            <td>generic</td>
        </tr>
        <tr>
            <td>19</td>
            <td>2054</td>
            <td>cheap</td>
        </tr>
        <tr>
            <td>20</td>
            <td>1921</td>
            <td>ringtones</td>
        </tr>
        <tr>
            <td>21</td>
            <td>1914</td>
            <td>view</td>
        </tr>
        <tr>
            <td>22</td>
            <td>1835</td>
            <td>a</td>
        </tr>
        <tr>
            <td>23</td>
            <td>1818</td>
            <td>net</td>
        </tr>
        <tr>
            <td>24</td>
            <td>1756</td>
            <td>the</td>
        </tr>
        <tr>
            <td>25</td>
            <td>1658</td>
            <td>buddy4u</td>
        </tr>
        <tr>
            <td>26</td>
            <td>1633</td>
            <td>of</td>
        </tr>
        <tr>
            <td>27</td>
            <td>1633</td>
            <td>lelefa</td>
        </tr>
        <tr>
            <td>28</td>
            <td>1580</td>
            <td>xanax</td>
        </tr>
        <tr>
            <td>29</td>
            <td>1572</td>
            <td>blogspot</td>
        </tr>
        <tr>
            <td>30</td>
            <td>1570</td>
            <td>tramadol</td>
        </tr>
        <tr>
            <td>31</td>
            <td>1488</td>
            <td>mp3sa</td>
        </tr>
        <tr>
            <td>32</td>
            <td>1390</td>
            <td>insurance</td>
        </tr>
        <tr>
            <td>33</td>
            <td>1379</td>
            <td>poker</td>
        </tr>
        <tr>
            <td>34</td>
            <td>1310</td>
            <td>cgi</td>
        </tr>
        <tr>
            <td>35</td>
            <td>1232</td>
            <td>sex</td>
        </tr>
        <tr>
            <td>36</td>
            <td>1198</td>
            <td>teen</td>
        </tr>
        <tr>
            <td>37</td>
            <td>1193</td>
            <td>in</td>
        </tr>
        <tr>
            <td>38</td>
            <td>1158</td>
            <td>content</td>
        </tr>
        <tr>
            <td>39</td>
            <td>1105</td>
            <td>aol</td>
        </tr>
        <tr>
            <td>40</td>
            <td>1099</td>
            <td>mime</td>
        </tr>
        <tr>
            <td>41</td>
            <td>1095</td>
            <td>and</td>
        </tr>
        <tr>
            <td>42</td>
            <td>1081</td>
            <td>home</td>
        </tr>
        <tr>
            <td>43</td>
            <td>1034</td>
            <td>us</td>
        </tr>
        <tr>
            <td>44</td>
            <td>1022</td>
            <td>valium</td>
        </tr>
        <tr>
            <td>45</td>
            <td>1020</td>
            <td>josm</td>
        </tr>
        <tr>
            <td>46</td>
            <td>1012</td>
            <td>order</td>
        </tr>
        <tr>
            <td>47</td>
            <td>992</td>
            <td>is</td>
        </tr>
        <tr>
            <td>48</td>
            <td>948</td>
            <td>de</td>
        </tr>
        <tr>
            <td>49</td>
            <td>908</td>
            <td>ringtone</td>
        </tr>
        <tr>
            <td>50</td>
            <td>907</td>
            <td>i</td>
        </tr>
    </tbody>
</table>
<p><a href="http://drunkmenworkhere.org/bintree/spam_wordcount.txt">complete list</a> (360 kB)</p>
<p>从top50可以看出，很多留言都与制药业有关。下面饼图就是各种药物的比例。</p>
<p><img height="500" alt="spammed pharmaceuticals" src="http://static.flickr.com/45/144627054_d319b259ac_o.png" width="500" /><br />
<strong>Fig. 15</strong> - The share of various medicines in comment spam.</p>
<p>留言中提交的域名，所有的顶级域名见图16(按频度排序)</p>
<p><img height="700" alt="spam by tld" src="http://static.flickr.com/52/144627057_fad17a8d0e_o.png" width="500" /></p>
<p><strong>Fig. 16</strong> - Number of spammed domains by top level domain</p>
<p>Spam bots发送的许多邮件都指向一个不存在的地址——@drunkmenworkhere.org，从一个侧面也反映出这个域名在&#8220;Spam bots最流行域名榜&#8221;(the chart of most frequently spammed domains)上的高排名。(见图17)</p>
<p><img height="714" alt="spam by tld" src="http://static.flickr.com/46/144627041_dfbbacaacf_o.png" width="500" /></p>
<p><strong>Fig. 17</strong> - Most frequently spammed domains</p>
<p>(全文完)</p>
<img src ="http://www.blogjava.net/wangdei/aggbug/199673.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangdei/" target="_blank">王能</a> 2008-05-10 11:32 <a href="http://www.blogjava.net/wangdei/archive/2008/05/10/199673.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于蚂蚁问题（Ants）</title><link>http://www.blogjava.net/dreamingnest/archive/2008/05/10/199672.html</link><dc:creator>dreamingnest</dc:creator><author>dreamingnest</author><pubDate>Sat, 10 May 2008 03:28:00 GMT</pubDate><guid>http://www.blogjava.net/dreamingnest/archive/2008/05/10/199672.html</guid><wfw:comment>http://www.blogjava.net/dreamingnest/comments/199672.html</wfw:comment><comments>http://www.blogjava.net/dreamingnest/archive/2008/05/10/199672.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/dreamingnest/comments/commentRss/199672.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dreamingnest/services/trackbacks/199672.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 假设中间的任意两只相邻蚂蚁即将发生碰撞，如：A －>        <－B，当A，B发生碰撞后，便有<－A    B－>。A，B反向相当于<－B   A －> ，即二者继续向着原来的方向前进，对于任意相邻的发生碰撞的蚂蚁都适用，所以只需求最两端的两只蚂蚁距离两端的最远距离。&nbsp;&nbsp;<a href='http://www.blogjava.net/dreamingnest/archive/2008/05/10/199672.html'>阅读全文</a><img src ="http://www.blogjava.net/dreamingnest/aggbug/199672.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dreamingnest/" target="_blank">dreamingnest</a> 2008-05-10 11:28 <a href="http://www.blogjava.net/dreamingnest/archive/2008/05/10/199672.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《程序员》第9期智慧擂台题目——高频词汇提取</title><link>http://www.blogjava.net/nokiaguy/archive/2008/05/10/199654.html</link><dc:creator>银河使者</dc:creator><author>银河使者</author><pubDate>Sat, 10 May 2008 01:37:00 GMT</pubDate><guid>http://www.blogjava.net/nokiaguy/archive/2008/05/10/199654.html</guid><wfw:comment>http://www.blogjava.net/nokiaguy/comments/199654.html</wfw:comment><comments>http://www.blogjava.net/nokiaguy/archive/2008/05/10/199654.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nokiaguy/comments/commentRss/199654.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nokiaguy/services/trackbacks/199654.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这次智慧擂台请大家在一个比较庞大的英文文本中找出M个数量最多的短语（由N个单词组成）。统一处理相同的文本文件，该文本只包含英文单词、空格和回行符，比较谁的程序效率最高。&nbsp;&nbsp;<a href='http://www.blogjava.net/nokiaguy/archive/2008/05/10/199654.html'>阅读全文</a><img src ="http://www.blogjava.net/nokiaguy/aggbug/199654.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nokiaguy/" target="_blank">银河使者</a> 2008-05-10 09:37 <a href="http://www.blogjava.net/nokiaguy/archive/2008/05/10/199654.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>百度面试题的java实现</title><link>http://www.blogjava.net/nokiaguy/archive/2008/05/10/199649.html</link><dc:creator>银河使者</dc:creator><author>银河使者</author><pubDate>Sat, 10 May 2008 01:23:00 GMT</pubDate><guid>http://www.blogjava.net/nokiaguy/archive/2008/05/10/199649.html</guid><wfw:comment>http://www.blogjava.net/nokiaguy/comments/199649.html</wfw:comment><comments>http://www.blogjava.net/nokiaguy/archive/2008/05/10/199649.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/nokiaguy/comments/commentRss/199649.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nokiaguy/services/trackbacks/199649.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 有一根27厘米的细木杆，在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细，不能同时通过一只蚂蚁。开始时，蚂蚁的头朝左还是朝右是任意的，它们只会朝前走或调头，但不会后退。当任意两只蚂蚁碰头时，两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。编写程序，求所有蚂蚁都离开木杆的最小时间和最大时间。&nbsp;&nbsp;<a href='http://www.blogjava.net/nokiaguy/archive/2008/05/10/199649.html'>阅读全文</a><img src ="http://www.blogjava.net/nokiaguy/aggbug/199649.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nokiaguy/" target="_blank">银河使者</a> 2008-05-10 09:23 <a href="http://www.blogjava.net/nokiaguy/archive/2008/05/10/199649.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一著名软件公司的java笔试算法题的答案</title><link>http://www.blogjava.net/nokiaguy/archive/2008/05/10/199647.html</link><dc:creator>银河使者</dc:creator><author>银河使者</author><pubDate>Sat, 10 May 2008 01:19:00 GMT</pubDate><guid>http://www.blogjava.net/nokiaguy/archive/2008/05/10/199647.html</guid><wfw:comment>http://www.blogjava.net/nokiaguy/comments/199647.html</wfw:comment><comments>http://www.blogjava.net/nokiaguy/archive/2008/05/10/199647.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/nokiaguy/comments/commentRss/199647.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nokiaguy/services/trackbacks/199647.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原题如下：用1、2、2、3、4、5这六个数字，用java写一个程序，打印出所有不同的排列，如：512234、412345等，要求："4"不能在第三位，"3"与"5"不能相连。&nbsp;&nbsp;<a href='http://www.blogjava.net/nokiaguy/archive/2008/05/10/199647.html'>阅读全文</a><img src ="http://www.blogjava.net/nokiaguy/aggbug/199647.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nokiaguy/" target="_blank">银河使者</a> 2008-05-10 09:19 <a href="http://www.blogjava.net/nokiaguy/archive/2008/05/10/199647.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件架构设计--好书推荐</title><link>http://www.blogjava.net/Jack2007/archive/2008/05/10/199646.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sat, 10 May 2008 01:19:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/05/10/199646.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/199646.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/05/10/199646.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/199646.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/199646.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:       先推荐一本书：《软件架构设计》温昱著。今天刚拿到这本书，非常高兴。这本书非常好，它对软件架构描述得非常清晰，理论包含了很多实践的例子，看上去很爽呀，嘿嘿。<br>     &nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/05/10/199646.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/199646.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-05-10 09:19 <a href="http://www.blogjava.net/Jack2007/archive/2008/05/10/199646.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java正则表达式初学者指南</title><link>http://www.blogjava.net/nokiaguy/archive/2008/05/10/199645.html</link><dc:creator>银河使者</dc:creator><author>银河使者</author><pubDate>Sat, 10 May 2008 01:14:00 GMT</pubDate><guid>http://www.blogjava.net/nokiaguy/archive/2008/05/10/199645.html</guid><wfw:comment>http://www.blogjava.net/nokiaguy/comments/199645.html</wfw:comment><comments>http://www.blogjava.net/nokiaguy/archive/2008/05/10/199645.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nokiaguy/comments/commentRss/199645.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nokiaguy/services/trackbacks/199645.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文将介绍如何在Java中使用正则表达式来处理文本数据。正则表达式就是一个字符串，但和普通的字符串不同的是，正则表达式是对一组相似字符串的抽象&nbsp;&nbsp;<a href='http://www.blogjava.net/nokiaguy/archive/2008/05/10/199645.html'>阅读全文</a><img src ="http://www.blogjava.net/nokiaguy/aggbug/199645.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nokiaguy/" target="_blank">银河使者</a> 2008-05-10 09:14 <a href="http://www.blogjava.net/nokiaguy/archive/2008/05/10/199645.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>冒号和他的学生们（连载10）——超级范式</title><link>http://www.blogjava.net/xyz98/archive/2008/05/10/199616.html</link><dc:creator>郑晖</dc:creator><author>郑晖</author><pubDate>Fri, 09 May 2008 16:02:00 GMT</pubDate><guid>http://www.blogjava.net/xyz98/archive/2008/05/10/199616.html</guid><wfw:comment>http://www.blogjava.net/xyz98/comments/199616.html</wfw:comment><comments>http://www.blogjava.net/xyz98/archive/2008/05/10/199616.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/xyz98/comments/commentRss/199616.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xyz98/services/trackbacks/199616.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <b>元编程简谈</b><br>引号忽然想起一事，问道：“有一本名为《C++模版元编程》的书，既然提到了模板，想来也属于泛型编程吧？”。。。<br><br>元程序将程序作为数据来对待，能自我发现和自我赋权，有着其他程序所不具备的自觉性、自适应性和智能性，可以说是一种最高级的程序。它要求编程者超越常规的编程思维，在一种崭新的高度上理解编程。想象一下，”冒号激情勃发，“如果有一天机器人能自我学习、自我完善，甚至能生产机器人，实现‘智能繁衍’，是不是很美妙？”。。。&nbsp;&nbsp;<a href='http://www.blogjava.net/xyz98/archive/2008/05/10/199616.html'>阅读全文</a><img src ="http://www.blogjava.net/xyz98/aggbug/199616.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xyz98/" target="_blank">郑晖</a> 2008-05-10 00:02 <a href="http://www.blogjava.net/xyz98/archive/2008/05/10/199616.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2教程9：实现自已的拦截器</title><link>http://www.blogjava.net/nokiaguy/archive/2008/05/09/199587.html</link><dc:creator>银河使者</dc:creator><author>银河使者</author><pubDate>Fri, 09 May 2008 12:14:00 GMT</pubDate><guid>http://www.blogjava.net/nokiaguy/archive/2008/05/09/199587.html</guid><wfw:comment>http://www.blogjava.net/nokiaguy/comments/199587.html</wfw:comment><comments>http://www.blogjava.net/nokiaguy/archive/2008/05/09/199587.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nokiaguy/comments/commentRss/199587.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nokiaguy/services/trackbacks/199587.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在上一篇中介绍了Struts2拦截器的原理，在这一篇中我们将学习一下如何编写自己的拦截器。实现一个拦截器非常简单。实际上，一个拦截器就是一个普通的类，只是这个类必须实现com.opensymphony.xwork2.interceptor.Interceptor接口。&nbsp;&nbsp;<a href='http://www.blogjava.net/nokiaguy/archive/2008/05/09/199587.html'>阅读全文</a><img src ="http://www.blogjava.net/nokiaguy/aggbug/199587.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nokiaguy/" target="_blank">银河使者</a> 2008-05-09 20:14 <a href="http://www.blogjava.net/nokiaguy/archive/2008/05/09/199587.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Interceptor 中onFlushDirty()函数执行多次的问题（Hibernate 的一个小Bug）</title><link>http://www.blogjava.net/sealyu/archive/2008/05/09/199527.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Fri, 09 May 2008 07:59:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2008/05/09/199527.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/199527.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2008/05/09/199527.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/199527.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/199527.html</trackback:ping><description><![CDATA[最近在项目中遇到一个奇怪的问题，在使用Hibernate拦截器捕获实体变化并进行处理时，发现其中的onFlushDirty()函数执行了很多次，导致进行处理时产生很多重复数据。具体问题如下：<br />
使用一个类继承Hibernate的EmptyInterceptor类来对程序中的实体变化进行拦截，并在其中的onFlushDirty()函数中对捕获的数据进行处理，产生对应的event数据并保存到数据库中。 例如：<br />
public class EventInterceptor extends EmptyInterceptor {<br />
public boolean onFlushDirty(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object entity,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Serializable id,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object[] currentState,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object[] previousState,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] propertyNames,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type[] types ) throws CallbackException {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(isAuditable(entity)){//如果该实体需要被记录，生成对应的event。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //此处生成对应的event。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
在程序执行后，发现对应一条实体的变化生成了多条重复的event记录，非常不解。<br />
后来google发现，有人也碰到过对应的问题，并在Hibernage论坛中提出过这个问题，鉴定为Hibernate的一个小Bug。<br />
（原文地址：http://forum.hibernate.org/viewtopic.php?t=940410&amp;highlight=interceptor+onflushdirty）<br />
解决方法如下：<br />
将FlushMode改为：FlushMode.COMMIT<br />
或者也可以提前进行flush()<br />
都可以解决这个问题。<br />
<br />
<img src ="http://www.blogjava.net/sealyu/aggbug/199527.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2008-05-09 15:59 <a href="http://www.blogjava.net/sealyu/archive/2008/05/09/199527.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谷歌词霸真的那么好？词库大幅缩水！</title><link>http://www.blogjava.net/beansoft/archive/2008/05/09/199518.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Fri, 09 May 2008 07:36:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2008/05/09/199518.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/199518.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2008/05/09/199518.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/199518.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/199518.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 2008 Beta 有词库53本，然而谷歌词霸里却只有13本！&nbsp;&nbsp;<a href='http://www.blogjava.net/beansoft/archive/2008/05/09/199518.html'>阅读全文</a><img src ="http://www.blogjava.net/beansoft/aggbug/199518.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2008-05-09 15:36 <a href="http://www.blogjava.net/beansoft/archive/2008/05/09/199518.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谷歌金山词霸使用感受</title><link>http://www.blogjava.net/babymouse/archive/2008/05/09/199489.html</link><dc:creator>Robert Su</dc:creator><author>Robert Su</author><pubDate>Fri, 09 May 2008 06:27:00 GMT</pubDate><guid>http://www.blogjava.net/babymouse/archive/2008/05/09/199489.html</guid><wfw:comment>http://www.blogjava.net/babymouse/comments/199489.html</wfw:comment><comments>http://www.blogjava.net/babymouse/archive/2008/05/09/199489.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/babymouse/comments/commentRss/199489.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/babymouse/services/trackbacks/199489.html</trackback:ping><description><![CDATA[当得知谷歌金山词霸（http://g.iciba.com/）发布的消息之后，我第一时间下载并安装了这款软件。<br />
先谈下大体印象<br />
1、界面清新了很多；<br />
2、启动速度大大提高，本人的笔记本比较老，性能不是很好，在Eclipse运行的状态下，运行金山词霸还是有些负荷高，不过谷歌金山词霸占用内存显然没有原先的版本那么大；<br />
3、主界面简洁明了&#8220;词典、例句、翻译&#8221;——字词、句、全文，so good,so powerful:)<br />
<br />
我之前参与过一些教材的翻译，当时用的辅助工具是&#8220;灵格斯&#8221;，那时感觉这个软件很小巧实用，里面集成了很多家的全文翻译，比如Google翻译、yahoo翻译，不过现在这款软件已经变烂了。<br />
言归正传<br />
深入使用&#8230;&#8230;<br />
我在谷歌词霸中输入&#8220;龙&#8221;首先分别按照词典给出了不同的条目，非常简洁<br />
<img src="http://www.blogjava.net/images/blogjava_net/babymouse/gugeciba1.jpg" alt="" border="0" /><br />
<br />
当我双击某个单词的时候，谷歌词霸会执行查询，这点是值得称赞的改进。<br />
我非常欣赏的是Google词典，当我查龙的时候，我明白了国外人所认为的dragon，并不是我们传统中的龙，而是&#8220;恶龙&#8221;，应该翻译成Loong。<br />
有人提到谷歌金沙词霸对Firefox支持不佳，我的版本是2.0.0.14，不存在这样的问题。<br />
还有谷歌词霸的语音功能，对中文的朗读不支持，不过英文单词的发音还是没有问题。<br />
暂时写到这里&#8230;&#8230;<br />
<br />
<img src ="http://www.blogjava.net/babymouse/aggbug/199489.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/babymouse/" target="_blank">Robert Su</a> 2008-05-09 14:27 <a href="http://www.blogjava.net/babymouse/archive/2008/05/09/199489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring 与 hibernate 整合(事务)</title><link>http://www.blogjava.net/Good-Game/archive/2008/05/09/199477.html</link><dc:creator>G_G</dc:creator><author>G_G</author><pubDate>Fri, 09 May 2008 05:47:00 GMT</pubDate><guid>http://www.blogjava.net/Good-Game/archive/2008/05/09/199477.html</guid><wfw:comment>http://www.blogjava.net/Good-Game/comments/199477.html</wfw:comment><comments>http://www.blogjava.net/Good-Game/archive/2008/05/09/199477.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Good-Game/comments/commentRss/199477.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Good-Game/services/trackbacks/199477.html</trackback:ping><description><![CDATA[参考：第 9 章 事务管理 - Spring Framework  reference 2.0.5  参考手册中文版<br /><font color="#0000ff">http://doc.javanb.com/spring-framework-reference-zh-2-0-5/ch09.html</font><br /><br />先从配置文件开始：<br />源码：<a href="/Files/Good-Game/springAop.rar">springAop.rar</a><br /><br />需要jar<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">&lt;?</span><span style="color: rgb(255, 0, 255);">xml version="1.0" encoding="UTF-8"</span><span style="color: rgb(0, 0, 255);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">classpath</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">classpathentry </span><span style="color: rgb(255, 0, 0);">kind</span><span style="color: rgb(0, 0, 255);">="src"</span><span style="color: rgb(255, 0, 0);"> path</span><span style="color: rgb(0, 0, 255);">="java"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">classpathentry </span><span style="color: rgb(255, 0, 0);">kind</span><span style="color: rgb(0, 0, 255);">="con"</span><span style="color: rgb(255, 0, 0);"> path</span><span style="color: rgb(0, 0, 255);">="org.eclipse.jdt.launching.JRE_CONTAINER"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">classpathentry </span><span style="color: rgb(255, 0, 0);">kind</span><span style="color: rgb(0, 0, 255);">="lib"</span><span style="color: rgb(255, 0, 0);"> path</span><span style="color: rgb(0, 0, 255);">="lib/aspectjrt.jar"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">classpathentry </span><span style="color: rgb(255, 0, 0);">kind</span><span style="color: rgb(0, 0, 255);">="lib"</span><span style="color: rgb(255, 0, 0);"> path</span><span style="color: rgb(0, 0, 255);">="lib/aspectjweaver.jar"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">classpathentry </span><span style="color: rgb(255, 0, 0);">kind</span><span style="color: rgb(0, 0, 255);">="lib"</span><span style="color: rgb(255, 0, 0);"> path</span><span style="color: rgb(0, 0, 255);">="lib/spring.jar"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">classpathentry </span><span style="color: rgb(255, 0, 0);">kind</span><span style="color: rgb(0, 0, 255);">="lib"</span><span style="color: rgb(255, 0, 0);"> path</span><span style="color: rgb(0, 0, 255);">="lib/spring-sources.jar"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">classpathentry </span><span style="color: rgb(255, 0, 0);">kind</span><span style="color: rgb(0, 0, 255);">="lib"</span><span style="color: rgb(255, 0, 0);"> path</span><span style="color: rgb(0, 0, 255);">="lib/commons-logging-1.0.4.jar"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">classpathentry </span><span style="color: rgb(255, 0, 0);">kind</span><span style="color: rgb(0, 0, 255);">="lib"</span><span style="color: rgb(255, 0, 0);"> path</span><span style="color: rgb(0, 0, 255);">="lib/cglib-nodep-2.1_3.jar"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">classpathentry </span><span style="color: rgb(255, 0, 0);">kind</span><span style="color: rgb(0, 0, 255);">="lib"</span><span style="color: rgb(255, 0, 0);"> path</span><span style="color: rgb(0, 0, 255);">="lib/hibernate3.jar"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">classpathentry </span><span style="color: rgb(255, 0, 0);">kind</span><span style="color: rgb(0, 0, 255);">="lib"</span><span style="color: rgb(255, 0, 0);"> path</span><span style="color: rgb(0, 0, 255);">="lib/log4j-1.2.11.jar"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">classpathentry </span><span style="color: rgb(255, 0, 0);">kind</span><span style="color: rgb(0, 0, 255);">="con"</span><span style="color: rgb(255, 0, 0);"> path</span><span style="color: rgb(0, 0, 255);">="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">classpathentry </span><span style="color: rgb(255, 0, 0);">kind</span><span style="color: rgb(0, 0, 255);">="lib"</span><span style="color: rgb(255, 0, 0);"> path</span><span style="color: rgb(0, 0, 255);">="lib/dom4j-1.6.1.jar"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">classpathentry </span><span style="color: rgb(255, 0, 0);">kind</span><span style="color: rgb(0, 0, 255);">="lib"</span><span style="color: rgb(255, 0, 0);"> path</span><span style="color: rgb(0, 0, 255);">="lib/commons-collections-2.1.1.jar"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">classpathentry </span><span style="color: rgb(255, 0, 0);">kind</span><span style="color: rgb(0, 0, 255);">="lib"</span><span style="color: rgb(255, 0, 0);"> path</span><span style="color: rgb(0, 0, 255);">="lib/mysql.jar"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">classpathentry </span><span style="color: rgb(255, 0, 0);">kind</span><span style="color: rgb(0, 0, 255);">="lib"</span><span style="color: rgb(255, 0, 0);"> path</span><span style="color: rgb(0, 0, 255);">="lib/jta.jar"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">classpathentry </span><span style="color: rgb(255, 0, 0);">kind</span><span style="color: rgb(0, 0, 255);">="lib"</span><span style="color: rgb(255, 0, 0);"> path</span><span style="color: rgb(0, 0, 255);">="lib/antlr-2.7.6.jar"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">classpathentry </span><span style="color: rgb(255, 0, 0);">kind</span><span style="color: rgb(0, 0, 255);">="output"</span><span style="color: rgb(255, 0, 0);"> path</span><span style="color: rgb(0, 0, 255);">="bin"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">classpath</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span></div><br /><br /><font color="#a52a2a">spring 配置<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">&lt;?</span><span style="color: rgb(255, 0, 255);">xml version="1.0" encoding="UTF-8"</span><span style="color: rgb(0, 0, 255);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">beans </span><span style="color: rgb(255, 0, 0);">xmlns</span><span style="color: rgb(0, 0, 255);">="http://www.springframework.org/schema/beans"</span><span style="color: rgb(255, 0, 0);"><br />       xmlns:xsi</span><span style="color: rgb(0, 0, 255);">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: rgb(255, 0, 0);"><br />       xmlns:aop</span><span style="color: rgb(0, 0, 255);">="http://www.springframework.org/schema/aop"</span><span style="color: rgb(255, 0, 0);"><br />       xmlns:tx</span><span style="color: rgb(0, 0, 255);">="http://www.springframework.org/schema/tx"</span><span style="color: rgb(255, 0, 0);"><br />       xsi:schemaLocation</span><span style="color: rgb(0, 0, 255);">="<br />       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd<br />       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd<br />       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />       <br />  <br />  </span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);"> daoCalss : extends HibernateDaoSupport implements BeanDao </span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />  </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">bean </span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="beanDao"</span><span style="color: rgb(255, 0, 0);"> class</span><span style="color: rgb(0, 0, 255);">="dao.imp.BeanDaoImp"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />      </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="sessionFactory"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />          </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">ref </span><span style="color: rgb(255, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">="sessionFactory"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">ref</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />      </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />  </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />  <br />   <br />   </span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);"> hibernate3 sessionFactory </span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />   </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">bean </span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="sessionFactory"</span><span style="color: rgb(255, 0, 0);">     <br />        class</span><span style="color: rgb(0, 0, 255);">="org.springframework.orm.hibernate3.LocalSessionFactoryBean"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">   <br />        </span><font><font color="#a52a2a"><span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);"> spring 与 hibernate 联系 </span><span style="color: rgb(0, 128, 0);">--&gt;</span></font></font><span style="color: rgb(0, 0, 0);">   <br />       </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="configLocation"</span><span style="color: rgb(255, 0, 0);"> value</span><span style="color: rgb(0, 0, 255);">="classpath:hibernate.cfg.xml"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);">  <br />   </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">  <br />   <br />   </span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);"> aop 与事务联系 aopBean&lt;-&gt;txAdvice  </span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />   </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">aop:config</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />           </span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);"> 逻辑拦截 </span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />         </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">aop:pointcut </span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="aopBean"</span><span style="color: rgb(255, 0, 0);"> expression</span><span style="color: rgb(0, 0, 255);">="execution(* *.*.*(..))"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />           </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">aop:advisor </span><span style="color: rgb(255, 0, 0);">advice-ref</span><span style="color: rgb(0, 0, 255);">="txAdvice"</span><span style="color: rgb(255, 0, 0);"> pointcut-ref</span><span style="color: rgb(0, 0, 255);">="aopBean"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />      </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">aop:config</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><br />    </span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);"> 事务适配器 </span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />       </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">bean </span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="txManager"</span><span style="color: rgb(255, 0, 0);"> class</span><span style="color: rgb(0, 0, 255);">="org.springframework.orm.hibernate3.HibernateTransactionManager"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />      </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="sessionFactory"</span><span style="color: rgb(255, 0, 0);"> ref</span><span style="color: rgb(0, 0, 255);">="sessionFactory"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><br />    </span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);"> 事务原子 具体方法进行什么事务 </span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />      </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">tx:advice </span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="txAdvice"</span><span style="color: rgb(255, 0, 0);"> transaction-manager</span><span style="color: rgb(0, 0, 255);">="txManager"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />           </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">tx:attributes</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />             </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">tx:method </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="get*"</span><span style="color: rgb(255, 0, 0);"> read-only</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />          </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">tx:method </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="*"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />        </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">tx:attributes</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />      </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">tx:advice</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">beans</span><span style="color: rgb(0, 0, 255);">&gt;</span></div><br /></font><br /><font color="#a52a2a"><b>hibernate 配置</b></font><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">&lt;?</span><span style="color: rgb(255, 0, 255);">xml version="1.0" encoding="UTF-8"</span><span style="color: rgb(0, 0, 255);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;!</span><span style="color: rgb(255, 0, 255);">DOCTYPE hibernate-configuration PUBLIC<br />        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"<br />        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">hibernate-configuration</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">session-factory </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="asdf"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="hibernate.dialect"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">mysql</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="myeclipse.connection.profile"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />        com.mysql.jdbc.Driver<br />    </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="connection.url"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />        jdbc:mysql://localhost/aop<br />    </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="show_sql"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">true</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />    <br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="connection.username"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">root</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="connection.password"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="connection.driver_class"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />        com.mysql.jdbc.Driver<br />    </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="dialect"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />        org.hibernate.dialect.MySQLDialect<br />    </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />    <br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">mapping </span><span style="color: rgb(255, 0, 0);">resource</span><span style="color: rgb(0, 0, 255);">="bean/UnitBean.hbm.xml"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    <br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">session-factory</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">hibernate-configuration</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span></div><br /><br />dao 类（接口）<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">package</span><span style="color: rgb(0, 0, 0);"> dao.imp;<br /><br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.util.List;<br /><br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> org.springframework.orm.hibernate3.support.HibernateDaoSupport;<br /><br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> bean.UnitBean;<br /><br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> dao.BeanDao;<br /><br /></span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);"> BeanDaoImp </span><span style="color: rgb(0, 0, 255);">extends</span><span style="color: rgb(0, 0, 0);"> HibernateDaoSupport </span><span style="color: rgb(0, 0, 255);">implements</span><span style="color: rgb(0, 0, 0);"> BeanDao{<br />    </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> addBean(UnitBean unitBean) {<br />        </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.getHibernateTemplate().save(unitBean);<br />    }<br /><br />    </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> List</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">UnitBean</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"> getBeanByAll() {<br />        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.getHibernateTemplate().find(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> from </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">UnitBean.</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">.getName());<br />    }<br /><br />    </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> removeBean(</span><span style="color: rgb(0, 0, 255);">long</span><span style="color: rgb(0, 0, 0);"> beanId) {<br />        </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.getHibernateTemplate().delete(<br />                getHibernateTemplate().get(UnitBean.</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">, beanId)<br />            );<br />    }<br />    <br />}<br /></span></div><br />Main 类<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">package</span><span style="color: rgb(0, 0, 0);"> unit;<br /><br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> org.springframework.context.ApplicationContext;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> org.springframework.context.support.ClassPathXmlApplicationContext;<br /><br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> dao.BeanDao;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> bean.UnitBean;<br /><br /></span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);"> Main {<br />    </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> main(String[] args) {<br />           ApplicationContext ctx </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> ClassPathXmlApplicationContext(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">beans.xml</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />           BeanDao dao </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> (BeanDao) ctx.getBean(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">beanDao</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />           UnitBean bean </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> UnitBean();<br />           bean.setName(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">xx</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />           bean.setPass(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">11</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />           dao.addBean(bean);<br />           <br />           </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(UnitBean unitBean : dao.getBeanByAll() ){<br />               System.out.println( unitBean.getId() );<br />           }<br />           <br />           dao.removeBean(bean.getId());<br />           <br />    }<br />}<br /></span></div>结果：<br /><font color="#006400">Hibernate: insert into bean (name, pass) values (?, ?)<br />Hibernate: select unitbean0_.id as id0_, unitbean0_.name as name0_, unitbean0_.pass as pass0_ from bean unitbean0_<br />1<br />Hibernate: select unitbean0_.id as id0_0_, unitbean0_.name as name0_0_, unitbean0_.pass as pass0_0_ from bean unitbean0_ where unitbean0_.id=?<br />Hibernate: delete from bean where id=?<br /></font><br /><br /><br /><br /><br /><br /><img src ="http://www.blogjava.net/Good-Game/aggbug/199477.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Good-Game/" target="_blank">G_G</a> 2008-05-09 13:47 <a href="http://www.blogjava.net/Good-Game/archive/2008/05/09/199477.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2SE5.0中最有趣的新特性：注释(annotation)</title><link>http://www.blogjava.net/nokiaguy/archive/2008/05/09/199456.html</link><dc:creator>银河使者</dc:creator><author>银河使者</author><pubDate>Fri, 09 May 2008 04:46:00 GMT</pubDate><guid>http://www.blogjava.net/nokiaguy/archive/2008/05/09/199456.html</guid><wfw:comment>http://www.blogjava.net/nokiaguy/comments/199456.html</wfw:comment><comments>http://www.blogjava.net/nokiaguy/archive/2008/05/09/199456.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/nokiaguy/comments/commentRss/199456.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nokiaguy/services/trackbacks/199456.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文将向你介绍J2SE5.0中的新特性之一：注释。本文将从什么是注释；J2SE5.0中预定义的注释；如何自定义注释；如何对注释进行注释以及如何在程序中读取注释5个方面进行讨论。&nbsp;&nbsp;<a href='http://www.blogjava.net/nokiaguy/archive/2008/05/09/199456.html'>阅读全文</a><img src ="http://www.blogjava.net/nokiaguy/aggbug/199456.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nokiaguy/" target="_blank">银河使者</a> 2008-05-09 12:46 <a href="http://www.blogjava.net/nokiaguy/archive/2008/05/09/199456.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个很难想到的用"Oracle客户端+PL/SQL连接Oracle"引起ORA-12154的原因</title><link>http://www.blogjava.net/xinwuhen/archive/2008/05/09/199453.html</link><dc:creator>心无痕</dc:creator><author>心无痕</author><pubDate>Fri, 09 May 2008 04:13:00 GMT</pubDate><guid>http://www.blogjava.net/xinwuhen/archive/2008/05/09/199453.html</guid><wfw:comment>http://www.blogjava.net/xinwuhen/comments/199453.html</wfw:comment><comments>http://www.blogjava.net/xinwuhen/archive/2008/05/09/199453.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xinwuhen/comments/commentRss/199453.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xinwuhen/services/trackbacks/199453.html</trackback:ping><description><![CDATA[使用<font style="background-color: #c7edcc">Oracle客户端+PL/SQL连接Oracle</font>时(我连的是Oracle 9i，其他版本未知)，如果出现<font style="background-color: #c7edcc">ORA-12154</font>错误。可能的错误原因如下：<br />
1：你的执行目录太长。<br />
2：执行目录有括号。<br />
3：$ORACLE_CLIENT_HOME/<font style="background-color: #c7edcc">network/admin/<font style="background-color: #c7edcc">tnsnames.ora</font>中数据库名前有空格。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: red">&nbsp;<font style="background-color: #c7edcc">CCID_QUALITY =</font></span><font style="background-color: #c7edcc">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 注：此行<font style="background-color: #c7edcc"><span style="color: red"><font style="background-color: #c7edcc">CCID_QUALITY<span style="color: #000000"><font style="background-color: #c7edcc"><font style="background-color: #c7edcc">前面有空格，这是错误的原因。</font></font></span></font></span></font>&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(DESCRIPTION =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS_LIST =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = 10.8.101.100)(PORT = 1521)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(CONNECT_DATA =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(SERVICE_NAME = CCID)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />
4：注册表问题，检查注册表，HKey_Local_Machine\Software\Oracle下面的Oracle_Home，若不对，修改成正确的。<br />
</font><br />
<br />
<br />
</font>等，那么即使你的服务名是对的，也会引起ORA-12154问题&#8220;TNS: 无法处理服务名&#8221;，当出现这个问题时，请考虑这几个原因。 
<img src ="http://www.blogjava.net/xinwuhen/aggbug/199453.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xinwuhen/" target="_blank">心无痕</a> 2008-05-09 12:13 <a href="http://www.blogjava.net/xinwuhen/archive/2008/05/09/199453.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下安装使用Subversion</title><link>http://www.blogjava.net/chybox/archive/2008/05/09/199448.html</link><dc:creator>囝泺</dc:creator><author>囝泺</author><pubDate>Fri, 09 May 2008 03:41:00 GMT</pubDate><guid>http://www.blogjava.net/chybox/archive/2008/05/09/199448.html</guid><wfw:comment>http://www.blogjava.net/chybox/comments/199448.html</wfw:comment><comments>http://www.blogjava.net/chybox/archive/2008/05/09/199448.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chybox/comments/commentRss/199448.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chybox/services/trackbacks/199448.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 这几天把工作环境从windows下面转到linux了，因为用的java语言开发，项目移植还是蛮容易的，但不准备再用CVS来做版本控制系统了，决定换功能较强大的SVN，于是了解了下linux下安装Subversion的方法，现总结如下<br />
<p align="center">文/囝泺 <a href="http://www.bluenuo.cn/">www.bluenuo.cn</a>&nbsp;</p>
<hr size="2" width="100%" />
<span style="color: rgb(32, 0, 255);"><span style="color: rgb(2, 2, 2);"><strong>编译安装相关软件</strong>（我们采用源码编译安装）</span></span><br />
<span style="color: rgb(32, 0, 255);"><span style="color: rgb(2, 2, 2);">a.httpd<br />
下载地址：http://httpd.apache.org<br />
下载</span></span><a href="http://apache.mirror.phpchina.com/httpd/httpd-2.2.8.tar.gz">httpd-*.tar.gz</a> (*为版本号，这里使用的是2.8.8）<br />
安装<br />
<span>
#tar -zxvf httpd-2.8.8.tar.gz<br />
#cd httpd-2.8.8<br />
#./configure --enable-dav --enable-so --enable-maintainer-mode<br />
#make<br />
#make install<br />
b.</span><span>Berkeley DB<br />
下载地址：<br />
下载<br />
</span><span style="color: rgb(32, 0, 255);"><span style="color: rgb(2, 2, 2);">安装<br />
</span></span><span>
#tar -zxvf db-4.4.20.NC.tar.gz<br />
#cd db-4.4.20.NC/build_unix/<br />
#../dist/configure --prefix=/usr/local/bdb<br />
#make<br />
#make install</span><br />
<span>c.Subversion<br />
下载地址：http://subversion.tigris.org<br />
下载</span><a href="http://subversion.tigris.org/downloads/subversion-1.4.6.tar.gz">subversion-*.tar.gz</a>和<a href="http://subversion.tigris.org/downloads/subversion-deps-1.4.6.tar.gz">
subversion-deps-*.tar.gz</a>包下下来，后一个包里是一些依赖程序，把2个包放在同一个目录下，解压缩，解压的文件会自动放到同一个文件夹下。<br />
安装<br />
<span>
#tar -zxvf subversion-1.2.3.tar.gz<br />
#cd subversion-1.2.3<br />
#./configure --with-berkeley-db=/usr/local/bdb --with-apxs=/usr/local/apache2/bin/apxs<br />
#make<br />
#make install</span><br />
安装成功后你可以使用<span>
#svnadmin --version检查是否安装成功<br />
安装成功会出现<br />
</span>svnadmin，版本 1.4.6 (r28521)<br />
&nbsp;&nbsp; 编译于 May&nbsp; 6 2008，19:55:08<br />
&#8230;&#8230;&#8230;&#8230;<br />
<strong>配置 <br />
</strong>配置Subversion<br />
# mkdir /home/*/svn(*代表用户目录）<br />
# cd /usr/local/subversion/bin<br />
# ./svnadmin create /home/*/svn/test<br />
这样我们就在svn下面建立了一个test仓库<br />
修改httpd配置文件<br />
# vi /usr/local/apache2/conf/httpd.conf <font color="#008000"><br />
在最下面添加如下内容</font><br />
LoadModule dav_svn_module modules/mod_dav_svn.so <br />
LoadModule authz_svn_module modules/mod_authz_svn.so <br />
&lt;Location /svn&gt; <br />
DAV svn <br />
SVNParentPath /home/*/svn/ <font color="#008000">//svn父目录 </font><br />
AuthzSVNAccessFile /home/*/svn/authz.conf <font color="#008000">//权限配置文件 </font><br />
AuthType Basic <font color="#008000">//连接类型设置 </font><br />
AuthName "Subversion.zoneyump" <font color="#008000">//连接框提示 </font><br />
AuthUserFile /home/*/svn/authfile <font color="#008000">//用户配置文件 </font><br />
Require valid-user <font color="#008000">//采用何种认证 </font><br />
&lt;/Location&gt;<br />
<font color="#008000">//其中authfile是通过"htpasswd [&#8211;c] /home/*/svn/authfile username password"来创建的 <br />
//"Require valid-user"告诉apache在authfile中所有的用户都可以访问。如果没有它，<br />
//则只能第一个用户可以访问新建库<br />
</font>修改好后保存，重启apache<br />
# ./usr/local/apache2/bin/apachectl restart <br />
<p> </p>
权限管理<br />
<p>
1)增加用户<br />
# ./usr/local/apache2/bin/htpasswd [-c] /home/*/svn/authfile wooin<br />
<font color="#008000">//第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码，完成对用户的增加</font><br />
# ./usr/local/apache2/bin/htpasswd authfile 用户名(加入新的用户)<br />
2)权限分配</p>
<p># vi /home/svnroot/repository/authz.conf <br />
&nbsp;&nbsp;  [test:/] <font color="#008000">//这表示，仓库test的根目录下的访问权限 </font><br />
&nbsp;&nbsp;  wooin = rw <font color="#008000">//test仓库wooin用户具有读和写权限 </font><br />
&nbsp;&nbsp;  bao = r <font color="#008000">//test仓库bao用户具有读权限 </font><br />
&nbsp;&nbsp;  [test2:/] <font color="#008000">//test2仓库根目录下的访问权限 </font><br />
&nbsp;&nbsp;  wooin = r <font color="#008000">//wooin用户在test2仓库根目录下只有读权限 </font><br />
&nbsp;&nbsp;  bao = <font color="#008000">//bao用户在 test2仓库根目录下无任何权限 </font><br />
&nbsp;&nbsp;  [/] <font color="#008000">//这个表示在所有仓库的根目录下 </font><br />
&nbsp;&nbsp;  * = r <font color="#008000">//这个表示对所有的用户都具有读权限 </font><br />
&nbsp;&nbsp;  #[groups] <font color="#008000">//这个表示群组设置 </font><br />
&nbsp;&nbsp;  #svn1-developers = wooin, bao <font color="#008000">//这个表示某群组里的成员 </font><br />
&nbsp;&nbsp;  #svn2-developers = wooin <br />
&nbsp;&nbsp;  #[svn1:/] <br />
&nbsp;&nbsp;  #@svn1-developers = rw <font color="#008000">//如果在前面加上@符号，则表示这是个群组权限设置</font></p>
<p> </p>
<p>将这个设置完成后。重启Apache，就可以通过 <br />
http://localhost/svn/test <br />
这个URL来访问仓库了</p>
<p>至于在eclipse使用svn就需要自己安装svn插件了</p>
<p>这里介紹Eclipse的SVN Plugin，叫做Subclipse,官方网站的下载地址在<a href="http://subclipse.tigris.org/"><font color="#007799">http://subclipse.tigris.org/</font></a>，也提供了update site <a href="http://subclipse.tigris.org/update"><font color="#007799">http://subclipse.tigris.org/update</font></a>。<br />
Eclipse
的使用者可以通过Eclipse的插件自动下载和更新功能来安装这个插件，在Eclipse的菜单中选择Help-&gt;Software
Updates-&gt;Find and Install-&gt; Search for new features to install
-&gt;New Remote Site。URL中就输入<a href="http://subclipse.tigris.org/update"><font color="#007799">http://subclipse.tigris.org/update</font></a>，Eclipse就会自已安装上了.
</p>
<p>安装完成后，在Eclipse的plugins中就会多了5个包，命名为org.tigris.subversion.*的都应该是了。打开
Eclipse,window-&gt;show
view窗口中多了一个SVN文件夹，到此就证明svn插件成功的安装上了。具体的使用方法，在Eclipse的Help中有详细的帮助
Subclipse - Subversion Eclipse
Plugin，教你一步一步的使用SVN的客户端了。如果你对subversion想进行深入的了解，那么看看help中的Version
Control with
Subversion一定有所收获，通过本人的观察，这份文档和sbuversion安装文件中提供的官方文档一样，这里看起来就更舒服些了。</p>
<p>注：本文是总结前辈资料的成果</p>
<hr size="2" width="100%" />
<p><font size="3">囝泺</font>，武汉科技学院<br />
您可以通过其博客了解更多信息和文章：<a href="http://www.bluenuo.cn" target="_blank">http://www.bluenuo.cn</a> </p>
<p><font color="#008000"></font></p>
<p> </p>
<span style="color: rgb(32, 0, 255);">
</span>
<img src ="http://www.blogjava.net/chybox/aggbug/199448.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chybox/" target="_blank">囝泺</a> 2008-05-09 11:41 <a href="http://www.blogjava.net/chybox/archive/2008/05/09/199448.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TextArea显示彩色文字</title><link>http://www.blogjava.net/beansoft/archive/2008/05/09/199433.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Fri, 09 May 2008 02:38:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2008/05/09/199433.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/199433.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2008/05/09/199433.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/199433.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/199433.html</trackback:ping><description><![CDATA[<p></p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/TextArea_959F/image_2.png"><img border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/TextArea_959F/image_thumb.png" width="177" height="41"></a>  <script><![CDATA[
var div = document.createElement("div");
div.innerHTML="<b>Bold</b>font color=blue>blue</font>i><font color=red>red</font>/i>";
tx.appendChild(div);
]]&gt;</script>  </p> <p>只有IE浏览器才支持。</p> <p>这段显示效果的HTML代码是：</p> <p>&lt;textarea id="tx"&gt;&lt;/textarea&gt;<br>&lt;script&gt;<br>var div = document.createElement("div");<br>div.innerHTML="&lt;b&gt;Bold&lt;/b&gt;&lt;font color=blue&gt;blue&lt;/font&gt;&lt;i&gt;&lt;font color=red&gt;red&lt;/font&gt;&lt;/i&gt;";<br>tx.appendChild(div);<br>&lt;/script&gt;</p> <p>&nbsp;</p> <p>BlogJava 对脚本嵌入支持不好，先前发的没看到效果，只好贴图看效果了。</p><img src ="http://www.blogjava.net/beansoft/aggbug/199433.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2008-05-09 10:38 <a href="http://www.blogjava.net/beansoft/archive/2008/05/09/199433.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在SQL Server2005中进行错误捕捉</title><link>http://www.blogjava.net/nokiaguy/archive/2008/05/09/199421.html</link><dc:creator>银河使者</dc:creator><author>银河使者</author><pubDate>Fri, 09 May 2008 01:57:00 GMT</pubDate><guid>http://www.blogjava.net/nokiaguy/archive/2008/05/09/199421.html</guid><wfw:comment>http://www.blogjava.net/nokiaguy/comments/199421.html</wfw:comment><comments>http://www.blogjava.net/nokiaguy/archive/2008/05/09/199421.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nokiaguy/comments/commentRss/199421.html</wfw:c