<?xml version="1.0" encoding="gb2312"?>

<!-- RSS generated by oioj.net on 4/16/2004 ; 感谢LeXRus提供 RSS 2.0 文档; 此文件可自由使用，但请保留此行信息 --> 
<!-- Source download URL: http://blogger.org.cn/blog/rss2.asp       -->
<rss version="2.0">

<channel>
<title>春天俱乐部</title>
<link>http://blogger.org.cn/blog/blog.asp?name=miniboot</link>
<description>JavaerInSpring的博客</description>
<copyright>blogger.org.cn</copyright>
<generator>W3CHINA Blog</generator>
<webMaster>webmaster@blogger.org.cn</webMaster>
<item>
<title><![CDATA[java入门与加深]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7720</link>
<author>miniboot</author>
<pubDate>2005/8/9 8:34:14</pubDate>
<description><![CDATA[<P> java入门与加深 </P>
<P><BR>&nbsp;<BR>&nbsp;<BR>&nbsp; java学习入门篇.必看.(转载)<BR>1 什么是Java、Java2、JDK？JDK后面的1.3、1.4.2版本号又是怎么回事？</P>
<P>答：Java是一种通用的，并发的，强类型的，面向对象的编程语言（摘自Java规范第二版) JDK是Sun公司分发的免费Java开发工具，正式名称为J2SDK(Java2 Softw<BR>are Develop Kit)。</P>
<P>2 什么是JRE/J2RE？<BR>答：J2RE是Java2 Runtime Environment，即Java运行环境，有时简称JRE。<BR>如果你只需要运行Java程序或Applet，下载并安装它即可。<BR>如果你要自行开发Java软件，请下载JDK。在JDK中附带有J2RE。<BR>注意由于Microsoft对Java的支持不完全，请不要使用IE自带的虚拟机来运行Applet，务<BR>必安<BR>装一个J2RE或JDK。</P>
<P>3 学习Java用什么工具比较好？<BR>答：作者建议首先使用JDK+文本编辑器，这有助你理解下列几个基础概念：path，class<BR>path<BR>，package<BR>并熟悉基本命令：javac和java。并且下载和你的JDK版本一致的API帮助。</P>
<P>如果你不确定类或函数的用法，请先查阅API而不是发贴求助。<BR>当你熟悉Java之后，你可以考虑换一个IDE。很多人推荐JCreator，实际上JCreator的功能还 是很弱的。<BR>作者推荐eclipse，下载网址<A href="http://www.eclipse.org">http://www.eclipse.org</A> ;。因eclispe是免费的.</P>
<P>4 学习Java有哪些好的参考书？<BR>答：作者首先推荐Thinking in Java，中文名《Java编程思想》，有中文版。<BR>该书第一章介绍了很多面向对象的编程思想，作为新手应当认真阅读。<BR>除此以外，O′relly出版社和Wrox出版社的书也不错。作者本人不喜欢大陆作者的书。<BR>也许你觉得英文太难，但是网上大多数资料都是英文的。另外，你需要经常查阅API，而<BR>那也<BR>是英文的。</P>
<P>5 Java和C++哪个更好？<BR>答：这个问题是一个很不恰当的问题。你应该问：Java和C++哪个更适用于我的项目？<BR>如果你不需要跨平台，不需要分布式，要强调程序的运行速度，C++更为适用。<BR>反之?你应当考虑Java。</P>
<P>6 什么是J2SE/J2EE/J2ME？</P>
<P><BR>答：J2SE就是一般的Java。<BR>J2ME是针对嵌入式设备的，比如Java手机，它有自己的SDK。而J2EE使用J2SE的SDK。<BR>J2EE规范更多的是对J2EE服务器的要求和开发人员的约束。详情见后继《J2EE FAQ》。</P>
<P>二、命令篇</P>
<P>7 我写了第一个Java程序，应该如何编译/运行？<BR>答：首先请将程序保存为xxx.java文件，<BR>然后在dos窗口下使用javac xxx.java命令，你会发现该目录下多了一个xxx.class文件<BR>，<BR>再使用java xxx命令，你的java程序就开始运行了。</P>
<P>8 我照你说的做了，但是出现什么"′javac′ 不是内部或外部命令，也不是可运行的程<BR>序或<BR>批处理文件。"。<BR>答：你遇到了path问题。操作系统在一定的范围(path)内搜索javac.exe，但是没能找到<BR>。<BR>请编辑你的操作系统环境变量，新增一个JAVA_HOME变量，设为你JDK的安装目录，<BR>再编辑Path变量，加上一项 %JAVA_HOME%\bin。<BR>然后关掉并新开一个dos窗口，你就可以使用javac和java命令了。</P>
<P>9 环境变量怎么设置？<BR>答：请向身边会设的人咨询。</P>
<P>10 javac xxx.java顺利通过了，但是java xxx的时候显示什么"NoClassDefFoundErro<BR>r"?br&gt;</P>
<P>?br&gt; 答：你遇到了classpath问题。java命令在一定的范围(classpath)内搜索你要用的<BR>class文件<BR>，但是未能找到。<BR>首先请确认你没有错敲成java xxx.class，<BR>其次，检查你的CLASSPATH环境变量，如果你设置了该变量又没有包含.（代表当前目录<BR>）的?br&gt; 睿?br&gt; 你就会遇到这个问题。请在你的CLASSPATH环境变量中加入一项. 。另<BR>外参见15。</P>
<P>11 我在java xxx的时候显示"Exception in thread "main" java.lang.NoSuchMethod<BR>Erro<BR>r: main"。<BR>答：首先，在你的程序中每个java文件有且只能有一个public类，<BR>这个类的类名必须和文件名的大小写完全一样。<BR>其次，在你要运行的类中有且只能有一个public static void main(String[] args)方<BR>法，<BR>这个方法就是你的主程序。</P>
<P>12 package是什么意思？怎么用？<BR>答：为了唯一标识每个类并分组，java使用了package的概念。<BR>每个类都有一个全名，例如String的全名是java.lang.String，其中java.lang是包名，<BR>Stri<BR>ng是短名。<BR>这样，如果你也定义了String，你可以把它放在mypackage中，<BR>通过使用全名mypackage.String和java.lang.String来区分这两个类。<BR>同时，将逻辑上相关的类放在同一个包中，可以使程序结构更为清楚。</P>
<P><BR>你要做的就是在java文件开头加一行"package mypackage;"。<BR>注意包没有嵌套或包含关系，A包和A.B包对java命令来说是并列的两个包（虽然开发者<BR>可能?br&gt; 凳景?含关系）??br&gt;<BR>13 我没有声明任何package会怎么样？<BR>答：你的类被认为放在默认包中。这时全名和短名是一致的。</P>
<P>14 在一个类中怎么使用其他类？<BR>答：如果你使用java.lang包中的类，不用做任何事。<BR>如果你使用其他包中的类，使用import package1.class1; 或 import package2.*;<BR>这里.*表示引入这个包中的所有类。然后在程序中你可以使用其他类的短名。<BR>如果短名有冲突，使用全名来区分。</P>
<P>15 我用了package的时候显示"NoClassDefFoundError"，但是我把所有package去掉的时<BR>候能<BR>正常运行。<BR>答：将你的java文件按包名存放。<BR>比如你的工作目录是/work，你的类是package1.class1，那么将它存放为/work/package<BR>1/cl<BR>ass1.java。<BR>如果没有声明包，那么直接放在/work下。<BR>在/work下执行javac package1/class1.java，再执行java package1.class1，你会发现<BR>一切<BR>正常。<BR>另外，你可以考虑开始使用IDE。</P>
<P>&nbsp;</P>
<P>16 我想把java编译成exe文件，该怎么做？<BR>答：JDK只能将java源文件编译为class文件。<BR>class文件是一种跨平台的字节码，必须依赖平台相关的JRE来运行。Java以此来实现跨<BR>平台?br&gt; 浴?br&gt; 有些开发工具可以将java文件编译为exe文件。作者反对这种做法，因<BR>为这样就取消了跨平台<BR>性。<BR>如果你确信你的软件只在Windows平台上运行，你可以考虑使用C++/C#来编程。</P>
<P>17 我在编译的时候遇到什么"deprecated API"，是什么意思？<BR>答：所谓deprecated是指已经?时，但是为了向前兼容起见仍然保留的方法??br&gt; 这些方<BR>法可能会在以后取消支持。你应当改用较新的方法。<BR>一般在API里面会说明你应当用什么方法来代替之。</P>
<P>三、I/O篇</P>
<P>18 我怎么给java程序加启动参数，就像dir /p/w那样？<BR>答：还记得public static void main(String[] args)吗？这里的args就是你的启动参<BR>数。<BR>在运行时你输入java package1.class1 -arg1 -arg2，args中就会有两个String，一个<BR>是arg<BR>1，另一个是arg2。</P>
<P>19 我怎么从键盘输入一个int/double/字符串？</P>
<P><BR>答：java的I/O操作比C++要复杂一点。如果要从键盘输入，样例代码如下：<BR>BufferedReader cin = new BufferedReader( new InputStreamReader( System.in ) )<BR>;<BR>String s = cin.readLine();<BR>这样你就获得了一个字符串，如果你需要数字的话再加上：<BR>int n = Integer.parseInt( s ); 或者 double d = Double.parseDouble( s );</P>
<P>20 我怎么输出一个int/double/字符串？<BR>答：在程序开始写：<BR>PrintWriter cout = new PrintWriter( System.out );<BR>需要时写：<BR>cout.print(n); 或者cout.println("hello")等等。</P>
<P>21 我发现有些书上直接用System.in和System.out输入输出，比你要简单得多。<BR>答：java使用unicode，是双字节。而System.in和System.out是单字节的stream。<BR>如果你要输入输出双字节文字比如中文，请使用作者的做法。</P>
<P>22 我怎么从文件输入一个int/double/字符串？<BR>答：类似于从键盘输入，只不过换成<BR>BufferedReader fin = new BufferedReader( new FileReader(" myFileName " ) );<BR>PrintWriter fout = new PrintWriter( new FileWriter(" myFileName " ) );<BR>另外如果你还没下载API，请开始下载并阅读java.io包中的内容。</P>
<P>&nbsp;</P>
<P>23 我想读写文件的指定位置，该怎么办？<BR>答：你肯定没有认真看API。java.io.RandomAccessFile可以满足你的需要。</P>
<P>24 怎么判断要读的文件已经到了尽头？<BR>答：你肯定没有认真看API。在Reaer的read方法中明确说明返回-1表示流的结尾。</P>
<P>四、 关键字篇</P>
<P>25 java里面怎么定义宏？<BR>答：java不支持宏，因为宏代换不能保证类型安全。<BR>如果你需要定义常量，可以将它定义为某个类的static final成员。参见26和30。</P>
<P>26 java里面没法用const。<BR>答：你可以用final关键字。例如 final int m = 9。被声明为final的变量不能被再次<BR>赋值?br&gt; ?br&gt; final也可以用于声明方法或类，被声明为final的方法或类不能被继承<BR>。<BR>注意const是java的保留字以备扩充。</P>
<P>27 java里面也不能用goto。<BR>答：甚至在面向过程的语言中你也可以完全不用goto。请检查你的程序流程是否合理。<BR>如果你需要从多层循环中迅速跳出，java增强了（和C++相比）break和continue的功能<BR>，支?br&gt; ?label。</P>
<P><BR>例如：<BR>outer :<BR>while( ... )<BR>{<BR>inner :<BR>for( ... )<BR>{<BR>... break inner; ...<BR>... continue outer; ...<BR>}<BR>}<BR>和const一样，goto也是java的保留字以备扩充。</P>
<P>28 java里面能不能重载操作符？<BR>答：不能。String的+号是唯一一个内置的重载操作符。你可以通过定义接口和方法来实<BR>现类<BR>似功能。</P>
<P>29 我new了一个对象，但是没法delete掉它。<BR>答：java有自动内存回收机制，即所谓Garbarge Collector。你再也不用担心指针错误<BR>，内?br&gt; 嬉绯隽恕?br&gt;<BR>30 我想知道为什么main方法必须被声明为public static？</P>
<P><BR>答：声明为public是为了这个方法可以被外部调用，详情见面向对象篇37。<BR>static是为了将某个成员变量/方法关联到类（class）而非实例（instance）。<BR>你不需要创建一个对象就可以直接使用这个类的static成员，<BR>在A类中调用B类的static成员可以使用B.staticMember的写法。<BR>注意一个类的static成员变量是唯一的，被所有该类对象所共享的。</P>
<P>31 throw和throws有什么不同？<BR>答：throws用于声明一个方法会抛出哪些异常。而throw是在方法体中实际执行抛出异常<BR>的动<BR>作。<BR>如果你在方法中throw一个异常，却没有在方法声明中声明之，编译器会报错。<BR>注意Error和RuntimeException的子类是例外，无需特别声明。</P>
<P>32 什么是异常？<BR>答：异常最早在Ada语言中引入，用于在程序中动态处理错误并恢复。<BR>你可以在方法中拦截底层异常并处理之，也可以抛给更高层的模块去处理。<BR>你也可以抛出自己的异常指示发生了某些不正常情况。常见的拦截处理代码如下：<BR>try<BR>{<BR>...... //以下是可能发生异常的代码<BR>...... //异常被抛出，执行流程中断并转向拦截代码。<BR>......<BR>}</P>
<P><BR>catch(Exception1 e) //如果Exception1是Exception2的子类并要做特别处理，应排在<BR>前面<BR>{<BR>//发生Exception1时被该段拦截<BR>}<BR>catch(Exception2 e)<BR>{<BR>//发生Exception2时被该段拦截<BR>}<BR>finally //这是可选的<BR>{<BR>//无论异常是否发生，均执行此段代码<BR>}</P>
<P>33 final和finally有什么不同？<BR>答：final请见26。finally用于异常机制，参见32。</P>
<P>五、 面向对象篇</P>
<P>34 extends和implements有什么不同？<BR>答：extends用于（单）继承一个类（class），而implements用于实现一个接口（inter<BR>face<BR>）。<BR>interface的引入是为了部分地提供多继承的功能。</P>
<P><BR>在interface中只需声明方法头，而将方法体留给实现的class来做。<BR>这些实现的class的实例完全可以当作interface的实例来对待。<BR>有趣的是在interface之间也可以声明为extends（单继承）的关系。</P>
<P>35 java怎么实现多继承？<BR>答：java不支持显式的多继承。<BR>因为在显式多继承的语言例如c++中，会出现子类被迫声明祖先虚基类构造函数的问题，</P>
<P>而这是违反面向对象的封装性原则的。<BR>java提供了interface和implements关键字来部分地实现多继承。参见34。</P>
<P>36 abstract是什么？<BR>答：被声明为abstract的方法无需给出方法体，留给子类来实现。<BR>而如果一个类中有abstract方法，那么这个类也必须声明为abstract。<BR>被声明为abstract的类无法实例化，尽管它可以定义构造方法供子类使用。</P>
<P>37 public,protected,private有什么不同？<BR>答：这些关键字用于声明类和成员的可见性。<BR>public成员可以被任何类访问，<BR>protected成员限于自己和子类访问，<BR>private成员限于自己访问。<BR>Java还提供了第四种的默认可见性，当没有任何public,protected,private修饰时，成<BR>员是?br&gt; ?一包内可见??br&gt;</P>
<P>类可以用public或默认来修饰。</P>
<P>38 Override和Overload有什么不同？<BR>答：Override是指父类和子类之间方法的继承关系，这些方法有着相同的名称和参数类<BR>型。<BR>Overload是指同一个类中不同方法（可以在子类也可以在父类中定义）间的关系，<BR>这些方法有着相同的名称和不同的参数类型。</P>
<P>39 我继承了一个方法，但现在我想调用在父类中定义的方法。<BR>答：用super.xxx()可以在子类中调用父类方法。</P>
<P>40 我想在子类的构造方法中调用父类的构造方法，该怎么办？<BR>答：在子类构造方法的第一行调用super(...)即可。</P>
<P>41 我在同一个类中定义了好几个构造方法并且想在一个构造方法中调用另一个。<BR>答：在构造方法第一行调用this(...)。</P>
<P>42 我没有定义构造方法会怎么样？<BR>答：自动获得一个无参数的构造方法。</P>
<P>43 我调用无参数的构造方法失败了。<BR>答：如果你至少定义了一个构造方法，就不再有自动提供的无参数的构造方法了。<BR>你需要显式定义一个无参数的构造方法。</P>
<P>&nbsp;</P>
<P>44 我该怎么定义类似于C++中的析构方法（destructor）？<BR>答：提供一个void finalize()方法。在Garbarge Collector回收该对象时会调用该方法<BR>。<BR>注意实际上你很难判断一个对象会在什么时候被回收。作者从未感到需要提供该方法。</P>
<P>45 我想将一个父类对象转换成一个子类对象该怎么做？<BR>答：强制类型转换。如<BR>public void meth(A a)<BR>{<BR>B b = (B)a;<BR>}<BR>如果a实际上并不是B的实例，会抛出ClassCastException。所以请确保a确实是B的实例<BR>。</P>
<P>46 其实我不确定a是不是B的实例，能不能分情况处理？<BR>答：可以使用instanceof操作符。例如<BR>if( a instanceof B )<BR>{<BR>B b = (B)a;<BR>}<BR>else<BR>{<BR>...</P>
<P><BR>}</P>
<P>47 我在方法里修改了一个对象的值，但是退出方法后我发现这个对象的值没变！<BR>答：很可能你把传入参数重赋了一个新对象，例如下列代码就会造成这种错误：<BR>public void fun1(A a) //a是局部参数，指向了一个外在对象。<BR>{<BR>a = new A(); //a指向了一个新对象，和外在对象脱钩了。如果你要让a作为传<BR>出变<BR>量，不要写这一句。<BR>a.setAttr(attr);//修改了新对象的值，外在对象没有被修改。<BR>}<BR>基本类型也会出现这种情况。例如：<BR>public void fun2(int a)<BR>{<BR>a = 10;//只作用于本方法，外面的变量不会变化。<BR>}</P>
<P>六、java.util篇</P>
<P>48 java能动态分配数组吗？<BR>答：可以。例如int n = 3; Language[] myLanguages = new Language[n];</P>
<P>49 我怎么知道数组的长度？</P>
<P><BR>答：用length属性。如上例中的 myLanguages.length 就为 3。</P>
<P>50 我还想让数组的长度能自动改变，能够增加/删除元素。<BR>答：用顺序表--java.util.List接口。<BR>你可以选择用ArrayList或是LinkedList，前者是数组实现，后者是链表实现。<BR>例如： List list = new ArrayList(); 或是 List list = new LinkedList(); 。</P>
<P>51 什么是链表？为什么要有两种实现？<BR>答：请补习数据结构。</P>
<P>52 我想用队列/栈。<BR>答：用java.util.LinkedList。</P>
<P>53 我希望不要有重复的元素。<BR>答：用集合--java.util.Set接口。例如：Set set = new HashSet()。</P>
<P>54 我想遍历集合/Map。<BR>答：用java.util.Iterator。参见API。</P>
<P>55 我还要能够排序。<BR>答：用java.util.TreeSet。例如：Set set = new TreeSet()。放进去的元素会自动排<BR>序。<BR>你需要为元素实现Comparable接口，还可能需要提供equals()方法，compareTo()方法，<BR>hash</P>
<P><BR>Code()方法。</P>
<P>56 但是我想给数组排序。<BR>答：java.util.Arrays类包含了sort等实用方法。</P>
<P>57 我想按不同方法排序。<BR>答：为每种方法定义一个实现了接口Comparator的类并和Arrays综合运用。</P>
<P>58 Map有什么用？<BR>答：存储key-value的关键字-值对，你可以通过关键字来快速存取相应的值。</P>
<P>59 set方法没问题，但是get方法返回的是Object。<BR>答：强制类型转换成你需要的类型。参见45。</P>
<P>60 我要获得一个随机数。<BR>答：使用java.util.Random类。</P>
<P>61 我比较两个String总是false，但是它们明明都是"abc" ！<BR>答：比较String一定要使用equals或equalsIgnoreCase方法，不要使用 == ！<BR>==比较的是两个引用（变量）是否指向了同一个对象，而不是比较其内容。&nbsp;&nbsp;&nbsp;<BR></P>]]></description>
</item><item>
<title><![CDATA[窥探一下Java高人现在在做什么]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7513</link>
<author>miniboot</author>
<pubDate>2005/7/29 8:05:16</pubDate>
<description><![CDATA[<P>前段时间看了Blog上对程序员分的10个等级,出于一种好奇的心理,自我比对了一下.幸运的是自己算不上9,10等,够不上1,2级,大众化水平,没有脱离Javaer的广大群众基础.9,10等的人员只要留心,身边还会发现很多的.1,2流的就不是我们泛泛之辈能够轻易拜访的了.下面搜集了几位高人的Blog,算是Java世界的上帝与先知,看看,用心也许会发现Java未来的先兆.</P>
<P>James Gosling:Java<BR><A href="http://today.java.net/jag/page9.html">http://today.java.net/jag/page9.html</A></P>
<P>Gavin King:Hibernate作者<BR><A href="http://blog.hibernate.org/">http://blog.hibernate.org/</A></P>
<P><BR>Rod Johnson:Spring创始人<BR><A href="http://blog.springframework.com/rod/">http://blog.springframework.com/rod/</A><BR></P>
<P>Rickard Oberg's blog:Jboss创始人<BR><A href="http://www.jroller.com/page/rickard">http://www.jroller.com/page/rickard</A></P>]]></description>
</item><item>
<title><![CDATA[中间件与Web Services]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7481</link>
<author>miniboot</author>
<pubDate>2005/7/27 16:15:01</pubDate>
<description><![CDATA[
<TABLE cellSpacing=1 cellPadding=4 width="100%" border=0>
<TBODY>
<TR>
<TD vAlign=top>
<DIV class=subhead><B>中间件与Web Services</B></DIV></TD></TR>
<TR>
<TD vAlign=top>
<DIV class=content>中间件作为一大类系统软件,与操作系统,数据库管理系统并称"三套车",其重要性是不言而语的. <BR><BR>那什么是中间件? <BR><BR>我们来看看以下的几种定义: <BR>http://middleware.internet2.edu/ 给出了middleware的一个定义: <BR>Middleware, is a layer of software between the network and the applications. This software provides services such as identification, authentication, authorization, directories, and security. In today's Internet, applications usually have to provide these services themselves, which leads to competing and incompatible standards. By promoting standardization and interoperability, middleware will make advanced network applications much easier to use. <BR>同样,IDC给出的一个定义：中间件是一种独立的系统软件或服务程序，分布式应用软件借助这种软件在不同的技术之间共享资源，中间件位于客户机服务器的操作系统之上，管理计算资源和网络通信。 <BR><BR>从这些定义中可以看出: <BR>– 中间件是一类软件，而非一种软件； <BR>– 中间件不仅仅实现互连，还要实现应用之间的互操作； <BR>– 中间件是基于分布式处理的软件，最突出的特点是其网络通信功能。 <BR><BR>接着,我们再来看看什么是Web Services? <BR>Web Services就是可以通过web描述、发布、定位和调用的模块化应用。Web Services可以执行任何功能，从简单的请求到复杂的业务过程。一旦Web Services被部署，其他的应用程序或是Web Services就能够发现并且调用这个部署的服务。 <BR>Web Services通过简单对象访问协议 （Simple Object Access Protocol，SOAP）来调用。SOAP是一种轻量级的消息协议，它允许用任何语言编写的任何类型的对象在任何平台之上相互通信。SOAP消息采用可扩展标记语言（XML）进行编码，一般通过HTTP进行传输。与其它的分布式计算技术不同，Web Services是松耦合的，而且能够动态地定位其他在internet上提供服务的组件，并且与它们交互。 <BR>Web Services使用诸如SOAP消息这样的XML消息，通过一种良好定义的消息交换模式来调用。通过描述调用服务所必需的数据，Web Services描述语言 （WSDL）文档定义了消息交换模式。 <BR><BR>
<H3>一、中间件分类</H3>中间件分类有很多方式和很多种类,在这里我们由底向上从中间件的层次上来划分,可分为以下三个大的层次: <BR><BR><B>。集成型中间件</B> <BR><BR>在通用型中间件产品之上整合了Application,Portal,Business Process等技术 <BR>主流技术:WorkFlow,EAI <BR>代表产品: BEA WebLogic Integration <BR><BR><B>。通用型中间件</B> <BR><BR>主流技术:CORBA,J2EE,MOM <BR>代表产品:IONA Orbix,BEA WebLogic,IBM MQSeries <BR><BR><B>。基础型中间件</B> <BR><BR>主流技术: JVM,CLR, ACE <BR>代表产品:SUN JVM, Microsoft CLR <BR><BR><IMG src="http://www.huihoo.com/application_infrastructure/middleware_ws/i1.gif"><IMG src="http://www.huihoo.com/application_infrastructure/middleware_ws/i2.gif"> <BR><BR>当然,在这个大的层次划分下,中间件还可以细化为以下一些种类: <BR><BR>。分布式对象中间件: 如Orbix,TAO <BR>。J2EE应用服务器: 如WebLogic,Jboss <BR>。消息中间件: 如MQSeries,JMS <BR>。事务(交易)中间件: 如Tuxedo, TXSeries(CICS) <BR>。应用集成中间件: 如BEA WebLogic Integration <BR>。数据库中间件: 如JDBC <BR>。安全中间件: 如东方通的TongSec <BR>。无线移动中间件 <BR>。CTI(呼叫中心)中间件 <BR>。。。 <BR><BR>
<H3>二、中间件应用层次</H3>
<CENTER><IMG src="http://www.huihoo.com/application_infrastructure/middleware_ws/i3.gif"> <BR>中间件技术应用层次图 </CENTER><BR><BR>中间件提供了应用系统基本的运行/执行环境,而中间件服务则提供了更多高级的功能,如名字服务,事件服务,通告服务,日志等服务,在这些服务之上,我们还需要考虑不同行业的需求.不同的应用领域. <BR><BR>
<H3>三、中间件技术在集成中的应用</H3>中间件技术在集成中扮演着重要的角色，我们可以从不同层次采用不同种类，不同技术的中间件产品进行应用集成 <BR><BR>我们可以从传输,消息,组件,流程等各个层面分别加以集成. <BR><BR>
<CENTER><IMG src="http://www.huihoo.com/application_infrastructure/middleware_ws/i4.gif"> </CENTER><BR>从图中,我们可以看出,为了完成不同层次的集成,我们可以采用不同的技术和不同产品。 <BR>如： <BR>。为了完成系统底层传输层的集成,我们可以采用CORBA技术, <BR>。为了完成不同系统的信息传递,我们可以采用消息中间件产品 <BR><BR>以下是一个商业流程处理的例子： <BR>
<CENTER><IMG src="http://www.huihoo.com/application_infrastructure/middleware_ws/i5.gif"> <BR>TIBCO BusinessWorks Designer用户界面 </CENTER><BR>这样,我们面对复杂的集成问题,就有了一个大致的应对措施和解决方案。 <BR><BR>同样,目前中间件的竞争焦点也主要集中在集成应用平台上。以TIBCO为市场领导者的EAI市场遭到了来自传统中间件厂商BEA等公司的激烈挑战。大多中间件公司都已经或准备将下一步的工作重点放在了集成市场上。国内中间件公司东方通公司也在努力杀入这个市场。 <BR><BR>而在集成市场上,Web Services表现出极强的发展势头. <BR><BR>接着，我们了解一些有关Web Services的知识 <BR><BR>
<H3>四、从中间件到Web Services</H3>从中间件发展到目前的Web Services是一种基于Internet的发展需求。 <BR><BR>我们可以将Web Services简单理解为对已有中间件技术的更高层次的封装。 <BR>其业务逻辑和方法的实现还得依赖于底层的CORBA,J2EE等技术。 <BR><BR>我们先看看中间件的发展历程。 <BR><BR>
<CENTER><IMG src="http://www.huihoo.com/application_infrastructure/middleware_ws/i6.gif"> </CENTER><BR>这是中间件一条大致发展路线图: <BR><BR>CORBA<IMG src="http://www.huihoo.com/application_infrastructure/middleware_ws/i7.gif">MOM/EAI<IMG src="http://www.huihoo.com/application_infrastructure/middleware_ws/i7.gif">J2EE应用服务器<IMG src="http://www.huihoo.com/application_infrastructure/middleware_ws/i7.gif">应用集成平台(基于Web Services等技术) <BR><BR>从图中我们可以看见当前这个时期,中间件的竞争焦点将放在Web Services上 <BR><BR>比尔·盖茨也曾经说过："世界上所有一切都将包括在互联网服务中" <BR>未来一切都将通过互联网实现，那些为互联网服务提供基础架构的企业，将成为今后高科技行业真正的霸主。目前的成员有:IBM、微软、Oracle、SAP <BR><BR>其激烈竞争的焦点将是: 基于Internet的软件平台和集成应用平台 <BR><BR>是什么原因促使了这一格局的产生。我们来看看其中的一些原因: <BR><BR>软件业、软件服务业正发生着巨大的变革： <BR><BR>通过Internet完成软件,服务,客户,供应商,商业流程的互操作,交换和协作将成为一种发展趋势，主要体现在以下几个方面： <BR><BR>。软件模式的变化：软件即服务(Software as Service) 、应用软件、套装软件将以一种服务的形式向用户提供。而被封装成Web Services已成为一种趋势。 <BR>。Web技术,Internet的快速发展，要求软件和服务能够通过Internet取得和访问到.而Web Services标准、技术和应用的迅速发展也加快了这一进程的发展。 <BR>。CORBA、J2EE、NETD等复杂的分布式技术需要通过Web Services更方便,简单得提供给用户。使复杂,专用的技术变得简单,通用。 <BR><BR>Gartner Group对Web Services的发展也做出了一份研究报告。Y轴表明技术的受关注程度，而X轴则表示技术的应用的成熟度。 <BR><BR>从图中可看到,Web Services已是目前整个IT行业的最亮点. <BR><BR>
<CENTER><IMG src="http://www.huihoo.com/application_infrastructure/middleware_ws/i8.gif"> </CENTER><BR><BR>Web Services构建在一系列核心的标准协议之上,包含: <BR>。SOAP <BR>http://www.w3.org/TR/soap <BR>。WSDL <BR>http://www.w3.org/TR/wsdl <BR>。UDDI <BR>http://www.uddi.org <BR>。ebXML <BR>http://www.ebxml.org <BR><BR>JAVA由于其跨平台，面向对象，便于Internet应用开发等特性使它成为开发Web Services的首选语言。 <BR><BR>我们可以使用Java API实现Web Services <BR><BR>
<CENTER><IMG src="http://www.huihoo.com/application_infrastructure/middleware_ws/i9.gif"> </CENTER><BR><BR><B>SOAP</B>消息传输是针对Web服务的协议。JAXP API允许你访问并解析XML数据。JAXP的主要目标是提供一个接口，允许你不必参考底层实现，就能创建、操纵、和使用XML解析器，允许你创建解析器无关的代码，并且把解析器的选择推迟到运行时。 <BR><BR><B>JAX-RPC</B>帮助你创建基于XML的请求，比如SOAP请求，它被用来发送和接收基于XML的协议的方法调用。JAX-RPC API提供了高层的框架来把Java功能暴露为Web服务，这些服务能够被SOAP客户端消费，或者作为消费SOAP服务和客户端的方式。在典型的JAX-RPC使用案例中，开发人员没必要进行XML和SOAP编程，这样就能够快速开发应用。这不仅完成了XML和Java的互相映射，而且避免了直接与调用的XML表示进行交互。 <BR><BR><B>JAXM</B>提供了使这样的XML数据能够在两个应用之间互操作的框架。就是说，JAXM允许在两个独立的Web服务之间完成全部XML文件的传输。SOAP提供了在两个应用之间传输的消息的底层格式。JAXM作为轻量级的API，抽象了底层的消息基础结构。因此，开发 <BR><BR>利用SOAP包装的JAXM消息是容易的，SOAP使你能够快速而且容易地访问SOAP消息。 <BR><BR><B>SAAJ</B> API使你能够操纵简单SOAP消息。它可以与JAX-RPC结合使用，JAX-RPC是用来接收和发送SOAP消息的J2EE标准API，用来表示字面上的XML文件片断。SAAJ是JAX-RPC的主要部分，但你也可以把它和其他API，比如JAXM，一起使用。 <BR><BR>JAXM和JAX-RPC之间的区别在于，JAXM支持面向消息的中间件类型的应用开发，它允许你专注于消息的发送和接收。但是，JAX-RPC支持应用的RPC行为。如同SOAP 中定义的一样，JAX-RPC为XML RPC调用提供了Java接口。 <BR><BR>以下是需要我们密切关注的产品和技术趋势: <BR><BR>。移动计算中间件 <BR>。反射中间件 <BR>。自治中间件 <BR>。Qos中间件 <BR>。网格计算中间件 <BR>。CORBA3 <BR>。J2EE <BR>。NET <BR>。。。 <BR><BR>中间件，Web Services做为软件的一个发展趋势，我们不能忽视，更不能放弃这个机会。 <BR>期待与大家更多的交流与协作. <BR><BR>参考资料: <BR>。C++ Network Programming Mastering Complexity with ACE &amp; Patterns <BR>。Dr Andy Bond的Middleware and Enterprise Architectures <BR>。SUN公司Sun ONE Application Server 7 Web Services 开发者指南 <BR>http://www.huihoo.com/one_and_net/app7/index.htm <BR>。http://www.tibco.com <BR><BR>关于作者: <BR>Allen,研究方向：J2EE、CORBA、WebServices、WorkFlow、EAI等方面，愿意与更多的朋友一起来打造中国人自己的中间件基础平台。 <BR>http://www.huihoo.com 中间件技术论坛 <BR>http://www.huihoo.org 开源中间件项目 <BR>个人主页 http://www.huihoo.org/~allen/ <BR></DIV></TD></TR></TBODY></TABLE>]]></description>
</item><item>
<title><![CDATA[电脑与人生--杂谈]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7470</link>
<author>miniboot</author>
<pubDate>2005/7/27 8:48:55</pubDate>
<description><![CDATA[l．致男人：有些女人很漂亮很迷人，就像高级彩色激光打印机样，但你不仅仅要考虑买下它的花费费，更要留意日后耗材的消耗、你微薄的薪水是否能承受。<BR><BR>　　2．致女人：男人就像出售电脑的奸商，在把他自己卖给你之前说得天花乱坠，并承诺一切售后服务，但如果你真的把他买下，很不幸那就该你为他服务了。<BR><BR>　　3．婚姻和光盘一样脆弱，一日发生磨擦，便再也不能光洁如初。<BR><BR>　　4.人生就像没有BACK键的例览器，一旦选择了一个链接，就无法再回头。<BR><BR>　　5．不够冷静的头脑就像没有装风扇的CPU，温度一高就会造成重大错误。<BR><BR>　　6．婚外恋是一个危险的 WhN98应用程序，一旦运行在多任务进程中，就可能导致整个系统瘫痪。]]></description>
</item><item>
<title><![CDATA[学会示弱]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7469</link>
<author>miniboot</author>
<pubDate>2005/7/27 8:42:46</pubDate>
<description><![CDATA[
<P class=cyf0>其实，强者自强，充满自信的内心，不需要时时的强大，或者口头的赞美，来顶起自己的脊梁。</P>
<P class=cyf style="TEXT-INDENT: 20pt"><SPAN lang=EN-US>&nbsp;</P>
<P class=cy2>文<SPAN lang=EN-US>-唐慧忠</SPAN></P><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p>
<P class=cyf style="TEXT-INDENT: 20pt">有对年轻夫妇结婚刚三年，经常为一些鸡毛蒜皮的事吵个不停，感情就像阳光下的雪，变得越来越薄。有天，那位妻子对我诉苦说，这种日子无法忍受，还不如离掉算了。</P>
<P class=cyf style="TEXT-INDENT: 20pt">我建议说：再争吵，不要一味地逞强，学会示弱。</P>
<P class=cyf style="TEXT-INDENT: 20pt">示弱？她反问：“现实生活中女人本来就扮演弱者的角色，继续示弱，岂不更让男人得寸进尺？”</P>
<P class=cyf style="TEXT-INDENT: 20pt">当然不是。这里的示弱是有技巧分寸的，能达到逞强不能达到的效果。我举例说：没有触及原则问题的争吵，你不必针尖对麦芒，即使你理由充分，更不必得理不饶人。不如悄无声息地低下头来，作一种无辜无奈状，必要时，楚楚可怜地看他一眼……“英雄惜美”是男人的天性，而且退让更容易博得理解，远比控诉要更有力量，矛盾也就迎刃而解。</P>
<P class=cyf style="TEXT-INDENT: 20pt">以后再遇到细小的家庭矛盾，这位妻子如法炮制，果然收效明显，少了吵闹，多了份设身处地的理解和温情脉脉的恩爱。</P>
<P class=cyf style="TEXT-INDENT: 20pt">其实，在婚姻中向爱人示弱，我们在日常生活和工作中，也要学会向领导、同事、朋友，甚至你的对手“示弱”。古人云：“木秀于林，风必摧之；堆出于岸，流必湍之”，告诫我们警惕锋芒毕露，今天说并非让你埋没才华，而是学会谦逊内敛，有容乃大。</P>
<P class=cyf style="TEXT-INDENT: 20pt">向人示弱，并不代表你真正就是“弱”。生活中向人示弱，我们可以小忍而不乱大谋；工作中向人示弱，我们可以收敛触角并蓄势待发；强者示弱，可以展示你的博大胸襟；弱者示弱，可以积累时间渐渐变得强大。</P>
<P class=cyf style="TEXT-INDENT: 20pt">示弱，是一种经营人生的智慧，却往往被我们当成劣质的品行丢掉。我们喜欢逞强，不甘示弱，站在风口浪尖，也绝不转舵。我们宁可家庭破碎，也不愿向爱人低下头颅；或者甘愿和同事决裂，也不肯原谅他对你的蔑视。其实，强者自强，充满自信的内心，不需要时时的强大，或者口头的赞美，来顶起自己的脊梁。</P>
<P class=cyf style="TEXT-INDENT: 20pt">中国人习惯战天斗地，这个时代，让我们学会营造自己的气场，身居闹市而自辟宁静，学会“示弱”传达谦逊和大度，得到和谐的人际关系和渐渐丰满的幸福生活。<SPAN lang=EN-US> </SPAN></P></o:p></SPAN>]]></description>
</item><item>
<title><![CDATA[我们需要什么样的幸福]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7468</link>
<author>miniboot</author>
<pubDate>2005/7/27 8:39:47</pubDate>
<description><![CDATA[
<P class=cyf0>那个活得很幸福很幸福的人，也许就在内心留住了瞬间，并把它化成了永恒的人。文<SPAN lang=EN-US>-马德</SPAN></P>
<P class=cyf style="TEXT-INDENT: 20pt"><SPAN lang=EN-US>&nbsp;<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P class=cyf style="TEXT-INDENT: 20pt">一个朋友，在上大学的时候，他和女友勾勒的幸福生活是，一间屋子，不需要太大，盛得下一张床就可以了。然后，再有一扇朝北开的窗户，每天他们相拥在床上，看满天星斗。结果，朋友大学毕业后，仕途得意，现在他们有一套<SPAN lang=EN-US>160平米的房子，有好几扇朝北开的窗户，然而，谈起生活，他总是叹着气说，这日子，过得没劲。</SPAN></P>
<P class=cyf style="TEXT-INDENT: 20pt">我的另外一个朋友，高中没毕业就辍学了，每天骑着一辆破自行车在街上瞎逛，碰上能打零工的地方，他就去，挣一些零碎的钱。大家都觉得他过得清苦。后来，他做了司机，帮人家拉煤。再后来，他贷了款，也有了自己的车队。据说，从山西拉一趟煤回来，就可以赚得大把大把的钞票。然而，聚在一起吃饭，他总是没完没了地抱怨自己太忙，连轴转。他说，他很怀念骑着单车闲逛的那段日子，虽说苦些，但牵挂的事少，真幸福。</P>
<P class=cyf style="TEXT-INDENT: 20pt">不仅是我的这两个朋友，其实，现在的许多人，包括你我，都活在幸福的困境里。</P>
<P class=cyf style="TEXT-INDENT: 20pt">曾经有人为此作过一个调查，调查的结果是，大多数人认为现在的生活不幸福或者没有感觉到幸福。有六成以上的人认为小时候曾经有过幸福。有的人认为幸福或许在将来，还有的人干脆悲观地认为人生原本就没有什么幸福可言。</P>
<P class=cyf style="TEXT-INDENT: 20pt">与之相反的是，我曾经看到过一个帖子，一个网名叫“一头幸福的猪”的人非常非常地幸福。有人问他幸福的缘由。他说，每天到吃饭的时候，我有饭可吃，到睡觉的时候，有觉可睡，我为什么不幸福呢？</P>
<P class=cyf style="TEXT-INDENT: 20pt">如果说，幸福是一种心态的话，那么幸福的人实际上就是时时懂得调整自己心态的人。他们无论位置有多高，地位有多显赫，口袋有多鼓，事业有多如意，生活有多疲惫，在内心，常常把自己降到蝼蚁的位置，于是更多的事情，在心里想得通，驻存不住，流水一般地逝去了。一个在内心没有追逐，没有牵挂，没有羁绊的人，就应该是一个幸福的人了。</P>
<P class=cyf style="TEXT-INDENT: 20pt">一般说来，清贫而卑微的人，更容易捕捉到生活中的满足。而衣食无忧，常常让许多人落入到幸福的困境。</P>
<P class=cyf style="TEXT-INDENT: 20pt">有一次，大热的天，我给学生上课。突然一缕清风从窗外刮进来，给在一边大汗淋漓的我以无限的爽快，我轻轻地吟了一句“舒服啊”。同学们看到我这样，都会心地笑了。那一刻，我疲惫的心，也似乎突然得到了某种慰藉，恍惚中，觉得内心涌动着一种甜甜的感觉——幸福。</P>
<P class=cyf style="TEXT-INDENT: 20pt">也许，生活中的幸福就是这么一个个短暂的瞬间。你与妻子回忆恋爱时会心一笑的那一瞬间，孩子听话乖巧的那一瞬间，你得到周围的人肯定的那一瞬间，相逢一笑泯恩仇的那一瞬间，无助时别人伸手的那一瞬间，口渴时陌生人为你递过一瓢水的那一瞬间……</P>
<P class=cyf style="TEXT-INDENT: 20pt">谁都有过这样的瞬间。谁都有过这样的幸福。那个活得很幸福很幸福的人，也许就在内心留住了瞬间，并把它化成了永恒的人。<SPAN lang=EN-US> </SPAN></P>]]></description>
</item><item>
<title><![CDATA[Eclipse使用技巧-]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7450</link>
<author>miniboot</author>
<pubDate>2005/7/26 13:19:06</pubDate>
<description><![CDATA[<A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<P>
<P>1.将JDK Document集成到Eclipse中<BR>&nbsp;&nbsp; <SPAN class=javascript id=text20915>1.在Eclipse的plugins目录下创建子目录 org.jdkdoc.1.4.1<BR>&nbsp;&nbsp; 2.将附件中的文件拷贝到此子目录下<BR>&nbsp;&nbsp; 3.将JDK DOC压缩文件（我的是j2sdk-1_4_1-doc.zip）拷贝到此子目录下，并改名为doc.zip </SPAN></P>
<P><SPAN class=javascript>2.<SPAN class=javascript id=text59501>方法：ctrl +鼠标<BR>&nbsp;&nbsp; 操作：鼠标指向某一名称，会显示相关内容。<BR>&nbsp;&nbsp; 作用：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、鼠标指向主类的名称时，摘要显示主类的源代码。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、鼠标指向某些关键字（如：Object），显示其主体架构。</SPAN></SPAN></P>
<P><SPAN class=javascript><SPAN class=javascript></SPAN></SPAN><SPAN class=javascript><SPAN class=javascript>3.<SPAN class=javascript id=text60803>方法：ctrl + 1<BR>&nbsp;&nbsp;&nbsp;操作：当某行出现红色叉叉或黄色提醒灯泡的时候，在光标在该行的时候用<BR>&nbsp;&nbsp; 作用：自动修正或者给出修改方案</SPAN></SPAN></SPAN></P>
<P><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript>4.<SPAN class=javascript id=text60803>方法：</SPAN><SPAN class=javascript id=text64337>Ctrl+Shift+F<BR>&nbsp;&nbsp; 作用：如果选中了文本,对该文本格式化<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果当前没有选中的文本,格式化整个文档 </SPAN></SPAN></SPAN></SPAN></P>
<P><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript>5.方法：<SPAN class=javascript id=text64337>Alt+/</SPAN></SPAN></SPAN></SPAN></SPAN><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript><BR></SPAN></SPAN>&nbsp;&nbsp; 作用：内容辅助类</SPAN></SPAN></SPAN></P>
<P><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript>6.<SPAN class=javascript id=text70947>方法：ctrl + /<BR>&nbsp;&nbsp;&nbsp;操作：选中要注释的内容或选中要去除注释的内容<BR>&nbsp;&nbsp; 作用：将选中的内容自动注释或将选中的内容自动去除注释</SPAN></SPAN></SPAN></SPAN></P>
<P><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript>7.<SPAN class=javascript id=text70947>方法：</SPAN>Ctrl+Shift+O Organize Imports<BR>&nbsp;&nbsp; 作用：会自动整理当前Class中的import<BR><BR>8.<SPAN class=javascript id=text70947>方法：</SPAN>Ctrl+Shift+M Add Import<BR>&nbsp;&nbsp; 作用：当光标停留在某个未倒入的Class名称之上时候，这个Class会被自动加到import的部分 </SPAN></SPAN></SPAN></SPAN></P>
<P><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript>9.Eclipse下载了多国语言包安装后，可以在桌面建立多个快捷图标，例如我建了两个图标，然后一个加上-nl "zh_CN"参数，一个加上-nl "en_US"参数，这样一套软件就可以有中、英文语言的界面</SPAN></SPAN></SPAN></SPAN></P>
<P><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript>10.<SPAN class=javascript id=text70947>方法：</SPAN><SPAN class=javascript id=text98210>Ctrl+K<BR>&nbsp;&nbsp;&nbsp;&nbsp; 操作：选中要查找的内容<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;作用：查找选中内容的下一个</SPAN></SPAN></SPAN></SPAN></SPAN></P>
<P><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript>11.<SPAN class=javascript id=text70947>方法：</SPAN>ctrl＋小键盘的回车<BR>&nbsp;&nbsp;&nbsp;&nbsp; 作用：编辑框全屏</SPAN></SPAN></SPAN></SPAN></SPAN></P>
<P><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript><SPAN class=javascript>12.<SPAN class=javascript id=text70947>方法：</SPAN><SPAN class=javascript id=text104786>ctrl + shif + R&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp; 作用：查找文件<BR><BR>13.<SPAN class=javascript id=text70947>方法：</SPAN>ctrl + shif + T&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp; 作用：查找类 </SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P></A>]]></description>
</item><item>
<title><![CDATA[J2EE探险装备大全(原创)]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7446</link>
<author>miniboot</author>
<pubDate>2005/7/26 9:13:13</pubDate>
<description><![CDATA[
<P>原创:转载请著名:</P>
<P>作者:JavaerInSpring; <A href="mailto:miniboot@126.com">miniboot@126.com</A>,谢谢!</P>
<P>J2EE项目一般都是系统庞大,需求多变,人员结构复杂.项目环境宛如亚马孙丛林,道路崎岖其随时有猛兽出现.要成功冲出亚马逊除了一个&lt;BR&gt;出色的领导者,强大的团队战斗力外,一套优秀的装备也是必须的.</P>
<P>鄙人最近又将进入J2EE亚马逊探险,在探险队出发前,先为大家配置了如下装备.经演练,团队战斗力提升10点,个人魅力值加满.呵呵!</P>
<P>需求管理工具:探险队一个强大的地图,随时记录发生的变化.CaliberRM是我们的选择.支持CS和WEB Start方式发布,方便实用.</P>
<P>团队合作工具:探险队需要明确的问题描述和快速的决策,并发挥大家的力量.MindManager X5正适合这个需要,其思维图和头脑风暴等模式方便大家集中思维,将问题各个击破.</P>
<P>项目管理工具:project2003.干特图对探险路程准确描述,易于跟踪!</P>
<P>配置管理工具:探险队的后勤储备.兵马未动,粮草先行.配置管理是一个项目是否能够成为产品的关键.没有人愿意在项目后期东拼西凑的去找各个团队的模块.CVS是不错的选择.VSS也可以,上手快,就是安全性较差,需要开共享目录</P>
<P>集成测试工具:ant+CruseControl.及时检验各个探险队员的工作情况,问题早发现早处理.避免弯路!</P>
<P>数据库建模工具:千里之行始于足下,数据库建模工具是J2EE的一双越野鞋.PowerDesigner,能够根据概念模型生成物理模型,生成脚本,轻便的很</P>
<P>系统建模工具:探险队重型武器,用来防御系统重构这个怪兽.吐血推荐together 7.0 for Eclipse.能够根据代码生成类图(Rose2003只能生成类).和GOF模式集成,J2EE模式集成的相当不错.</P>
<P>IDE:单兵作战武器.Eclipse+MyEclipse</P>
<P>J2EE容器:弹药库哦,没它啥武器都灭火.WEblogic8.1或Jboss.</P>
<P>沟通工具:MSN!随时的沟通很重要的,探险队可不希望有人跟不上队伍哦!</P>
<P>探险队即将出发,随时报告行踪!</P>]]></description>
</item><item>
<title><![CDATA[上有政策，下有对策]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7445</link>
<author>miniboot</author>
<pubDate>2005/7/26 8:15:20</pubDate>
<description><![CDATA[<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IT行的，上班时间不让上网是不是有点BT！鄙人不幸被BT折磨了一把。</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; 也许是老总看了网上的统计：上班时间网络聊天损失工作效率30％！心疼钱了，发了个文件，通知除了批准的帐号其他人不让上网，还把上网权限和部门成本挂钩！难道他以为所有技术人员都是天才，头脑中是个海量存储且数据安全。不过我们这些虾兵蟹将也没什么本事和龙王辨理，动动脑袋达到目的足以！</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最初，上网帐号没有和域帐号绑定。IE的“保留密码”功能被大家利用。有上网权限的帐号在好友中广泛传播。网管意识到了这点，将帐号和域帐号绑定，以为这就能阻值大家上网。嘿嘿！我们有代理，找了个windows服务器，架了个HTTP代理，大家上网毫不影响。最近，突然间代理不能用了，估计又是网管搞了什么。经测试发现，在服务器使用本机代理一切正常，而其他同子网的不行。难道是在IP上做了文章。似乎是校验了HTTP的请求地址（具体什么技术，还没弄懂）。大家都是IT的，既然服务器上能用本身的，各个机器自己给自己搭代理就可以了么！！现在，各自机器都搭代理，上网还在继续～～～</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 作为技术人员，对公司的做法有点想不通：一个技术问题一般GOOGLE一下就能解决。但公司要封闭这个渠道。闭关锁国！走晚清的道路～～～</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不知道形式下一步会是什么样子！上有政策，下有对策！博弈在继续～～～</P>]]></description>
</item><item>
<title><![CDATA[生活在完全独立的今天]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7378</link>
<author>miniboot</author>
<pubDate>2005/7/22 8:01:17</pubDate>
<description><![CDATA[<SPAN class=content><FONT face=宋体 color=#333333>&nbsp;&nbsp;&nbsp;&nbsp;不管你是多么地位显赫，或者多么不起眼，你所有的一切都是从头开始，从今天开始，不信——— </FONT>
<P style="MARGIN-TOP: 6px; MARGIN-LEFT: 3px; MARGIN-RIGHT: 3px; margin-botom: 0">&nbsp;&nbsp;&nbsp;&nbsp;假如今天你大病不起，或者飞来横祸，一切的一切都已不再重要，这时候生命和健康是最可贵的。假如今天你一鸣惊人，或者用仅有的两块钱买了彩票，而恰恰中了大奖，一切的一切都已不再重要，即便昨天你还是一个乞丐，现在你却是快乐的。 
<P style="MARGIN-TOP: 6px; MARGIN-LEFT: 3px; MARGIN-RIGHT: 3px; margin-botom: 0">&nbsp;&nbsp;&nbsp;&nbsp;明天又是新的今天的开始，所以明天其实也是不存在的。于是假如你一直在依靠明天，或者倚赖明天的恩惠，那你的今天注定没有激情。 
<P style="MARGIN-TOP: 6px; MARGIN-LEFT: 3px; MARGIN-RIGHT: 3px; margin-botom: 0">&nbsp;&nbsp;&nbsp;&nbsp;有这样一个故事，爱德华·依文斯生长在一个贫苦的家庭里，起先靠卖报来赚钱，然后在一家杂货店当店员。后来，家里有7口人要靠他吃饭，他就谋到一个当助理图书管理员的职位，薪水很少，他却不敢辞职。八年之后.他才鼓起勇气开始他自己的事业。然后，厄运降临了———很可怕的厄运：他替一个朋友签了一张面额很大的支票，而那个朋友破产了。很快的，在这件灾祸之后又来了另外一次大灾祸，那家存着他全部财产的大银行垮了，他不但损失了所有的钱，还负债16000元。他精神受不住这样的打击，开始生起奇怪的病来。没有别的原因，只是因为担忧。有一天，他走在路上的时候，昏倒在路边，以后就再也不能走路了。最后医生告诉他，他只有两个礼拜好活了。他大吃一惊，写好遗嘱，然后躺在床上等死。挣扎或是担忧都没有了，他放弃了、也放松了下来。 
<P style="MARGIN-TOP: 6px; MARGIN-LEFT: 3px; MARGIN-RIGHT: 3px; margin-botom: 0">&nbsp;&nbsp;&nbsp;&nbsp;几个礼拜之后，他就能撑着拐杖走路了。六个礼拜以后，他又能回去工作了。他以前一年赚过2万块钱，可是现在能找到一个礼拜挣30块钱的工作.就已经很高兴了。爱德华·依文斯的进展非常快。不到几年，他已是依文斯工业公司的董事长。多年来，这个公司一直是纽约股票市场交易所的一家公司。如果你乘飞机到格陵兰去，很可能降落在依文斯机场———这是为纪念他而命名的飞机场。可是，如果他没有学会“生活在完全独立的今天里”的话，爱德华·依文斯绝不可能获得这样的胜利。 
<P style="MARGIN-TOP: 6px; MARGIN-LEFT: 3px; MARGIN-RIGHT: 3px; margin-botom: 0">&nbsp;&nbsp;&nbsp;&nbsp;完全独立的今天，其实是生活的哲学，假如你今天递交了辞职报告，说明你今天具有了充足的自信；假如你今天被老板炒了鱿鱼，说明你从今天开始可以重新选择一种职业或者一个工作；假如你今天进入婚姻的殿堂，表明幸福生活已经开始了，但是记住，是刚刚开始。 
<P style="MARGIN-TOP: 6px; MARGIN-LEFT: 3px; MARGIN-RIGHT: 3px; margin-botom: 0">&nbsp;&nbsp;&nbsp;&nbsp;今天是散发着泥土香味的，混合着这种味道的是你的汗水或者努力，停滞是今天的敌人。而昨天是臭鱼的腥味，明天的味道还闻不到。(许锋) </P></SPAN>]]></description>
</item><item>
<title><![CDATA[做一尾快乐的金鱼(转)]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7364</link>
<author>miniboot</author>
<pubDate>2005/7/21 12:55:58</pubDate>
<description><![CDATA[
<P class=cyf0>我羡慕金鱼简单的快乐，不由自主地想起了以前与家人相处的时光，那时光平淡而充满了生气。</P>
<P class=cyf style="TEXT-INDENT: 20pt"><SPAN lang=EN-US><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P class=cy0>文<SPAN lang=EN-US>-依梦</SPAN></P>
<P class=cyf style="TEXT-INDENT: 20pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P>
<P class=cyf style="TEXT-INDENT: 20pt">今年的元宵节我是挂在网上过的，在一个陌生的城市，一个人在网上冲浪。说是冲浪，其实就是点击鼠标发呆。往年过节，总是一家人围坐在电视机前，或者在家门口放焰火。女儿看着灿烂的焰火总会高声欢呼。而今年，我体验到了思念亲人的苦楚。</P>
<P class=cyf style="TEXT-INDENT: 20pt">记得那天领导说，我们国企人员冗余，我们这儿也要末位淘汰，要不，每个人轮流吧，从年龄最小的开始，依梦啊，就你先吧，三个月后换小李。我便这样被淘汰了。丈夫说，没什么，正好当休假。虽然是轮流做庄似的下岗，但心还是被刺痛。淘汰让我认识到了自己的多余。我往网上的招聘单位贴个人资料，凭着多年对文字的热爱和发表的作品，一个星期后，我成了省城一家时尚杂志的文字编辑。</P>
<P class=cyf style="TEXT-INDENT: 20pt">新的城市，新的工作，仿佛嚼到一颗鲜果，我尽情投入，忙碌得几乎忘我。每日电话约稿，吊在网上和作者交流，朝九晚十自觉加班。深夜，我踩着寂寞的高跟鞋，回到一条巷道里的租住屋。与我同屋的是和我差不多同时来编辑部工作的红。</P>
<P class=cyf style="TEXT-INDENT: 20pt">一般的，我回到房间后的第一件事就是给两条金鱼换水喂食。鱼在缸里游来游去，一杯清水，它们便能快乐地吐着泡泡，吞食鱼食。我羡慕金鱼简单的快乐，不由自主地想起了以前与家人相处的时光，那时光平淡而充满了生气。有时，我思念丈夫和女儿散布在我四周的气息，泪水兀自流下。</P>
<P class=cyf style="TEXT-INDENT: 20pt">红说，你这么想家，就快点回去吧。</P>
<P class=cyf style="TEXT-INDENT: 20pt">我摇头，说，既然出来了，就先好好工作。</P>
<P class=cyf style="TEXT-INDENT: 20pt">红与我的境遇不同。三年前她就已经买断了工龄。仅仅几千元，她就和原单位再无瓜葛。说及此事，她叹息，说，青春哪。我听着，心也在微微颤抖。是啊，青春啊，我们刚出校门的时候，都不到<SPAN lang=EN-US>20，而今我们已30多了。那流逝的青春并没有因为我们的努力而创造相应的价值，反而使我们莫名地成了社会的一种包袱，一件多余品。</SPAN></P>
<P class=cyf style="TEXT-INDENT: 20pt">三个月将近，我的工作上了轨道，爱人的电话也愈发勤了，他说，快回来吧。我总是无语，我不想回去做那份单调的工作，更重要的是那份工作让我没有成就感。爱人摆出现实，讲道理：你做得再好，工资不过<SPAN lang=EN-US>2000多，城市房价每平米却在3000元以上，如果举家搬迁便是房子问题，孩子教育问题……丈夫说，回家来至少目前还是稳定的，我是公务员，即使你以后没事做了，我也可以养你！每当丈夫说到“我来养你”时，我总是莫名愤怒地说“不要你养”，然后挂断电话。</SPAN></P>
<P class=cyf style="TEXT-INDENT: 20pt">红在频繁的通话中猜出了我的心事。那天，她跟我说了她的往事。她说，以前，是她丈夫先出去打工的，四年里从一个技术员做到部门主管。但是去年年底，他回家后他们平静地离婚了，她丈夫什么也没有要，包括孩子。她说，分离四年，夫妻间的感情很脆弱。他打工时，有时她打他的手机没有人接，她就会不停地打，每隔十几分钟一次，不停地想他在做什么，从担心到愤怒，直到电话里出现他的声音，她会问他为什么不接电话，他一开始还会解释，后来就不耐烦了，于是，她委屈，哭泣，歇斯底里。感情怎么经得起这样猜忌？后来，他们在一起的时间反而变得不自然，陌生，所以离婚了。</P>
<P class=cyf style="TEXT-INDENT: 20pt">“你是说，你的过去就是我的未来吗？”我说。</P>
<P class=cyf style="TEXT-INDENT: 20pt">“不是，人与人是不一样的，我只是想告诉你人的感情是很脆弱的。”红解释。</P>
<P class=cyf style="TEXT-INDENT: 20pt">很长的一段时间里，我仔细思考着自己在家庭与社会中的位置。我离开家，不是因为不喜欢家庭，作为妻子和母亲，我又何尝不想和丈夫、孩子在一起。我只是不愿做一个多余的人。我原来的单位里有很多女人，她们曾经说过，以后单位不行了，就在家里带孩子，打麻将，织毛线……她们说，管老公在外面做什么，把钱拿回来养家就行。我真的不愿意和她们一样。</P>
<P class=cyf style="TEXT-INDENT: 20pt">我清楚地知道我想要的是：家庭幸福，事业也成功。这愿望似乎很贪婪，但我觉得这“贪婪”若是理性地去实践，应该不会虚幻。</P>
<P class=cyf style="TEXT-INDENT: 20pt">三个月后，我辞职了。我踏上了归途，却也是一种新的旅程。我彻底与原来的单位断了关系，跳槽去了一家新单位做宣传工作。这样，我既能兼顾家庭，又在事业上不委屈自己。有时，红来电话询问近况，我说，很好，像一条金鱼，拥有简单的快乐。<SPAN lang=EN-US> </SPAN></P>]]></description>
</item><item>
<title><![CDATA[使用MiddleGen 产生hibernate的数据库表映射文件 选择自 kasam 的 Blog]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7363</link>
<author>miniboot</author>
<pubDate>2005/7/21 11:31:50</pubDate>
<description><![CDATA[<SPAN id=ArticleContent1_ArticleContent1_lblContent>1：下载Middlegen-Hibernate-r5<BR>地址：URL <A href="http://voxel.dl.sourceforge.net/sourceforge/hibernate/Middlegen-Hibernate-r5.zip">http://voxel.dl.sourceforge.net/sourceforge/hibernate/Middlegen-Hibernate-r5.zip</A><BR>2：解压缩<BR>将下载的解压缩，如 D:\Middlegen-Hibernate-r5<BR>3：配置数据库文件<BR>进入D:\Middlegen-Hibernate-r5 目录下的\config\database 子目录，选择你要得数据库文件，我使用的是mysql.<BR>将原来的<BR>&lt;property name="database.driver.file"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value="${lib.dir}/mysql-connector-java-3.0.0-beta-bin.jar"/&gt;<BR>改成<BR>&lt;property name="database.driver.file"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value="${lib.dir}/mysql-connector-java-3.0.15-ga-bin.jar"/&gt;&nbsp; <BR>同时指定数据库与用户名。我的配置如下（红色部分是要修改的部分）<BR>&nbsp;&nbsp; &lt;property name="database.script.file"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value="${src.dir}/sql/${name}-mysql.sql"/&gt;<BR>&nbsp;&nbsp; &lt;!--property name="database.driver.file"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value="${lib.dir}/mysql-connector-java-3.0.0-beta-bin.jar"/--&gt;<BR>&nbsp;&nbsp; <FONT color=#ff3300>&lt;property name="database.driver.file"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value="${lib.dir}/mysql-connector-java-3.0.15-ga-bin.jar"/&gt;&nbsp; <BR></FONT>&nbsp;&nbsp; &lt;property name="database.driver.classpath"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value="${database.driver.file}"/&gt;<BR>&nbsp;&nbsp; &lt;property name="database.driver"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value="org.gjt.mm.mysql.Driver"/&gt;<BR>&nbsp;&nbsp;<FONT color=#ff3300> &lt;property name="database.url"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value="jdbc:mysql://localhost/hibernate"/&gt;<BR></FONT>&nbsp;&nbsp; <FONT color=#ff3300>&lt;property name="database.userid"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value="root"/&gt;<BR>&nbsp;&nbsp; &lt;property name="database.password"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value=""/&gt;<BR></FONT>&nbsp;&nbsp; &lt;property name="database.schema"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value=""/&gt;<BR>&nbsp;&nbsp; &lt;property name="database.catalog"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value=""/&gt;<BR>&nbsp;&nbsp; &lt;property name="jboss.datasource.mapping"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value="mySQL"/&gt;<BR><BR>将mysql的驱动程序<FONT color=#ff3300>mysql-connector-java-3.0.15-ga-bin.jar </FONT>copy 到D:\Middlegen-Hibernate-r5\lib下<BR><BR>4：修改Build.xml<BR>修改D:\Middlegen-Hibernate-r5目录下的build.xml 文件，此文件是Middlegen-Hibernate 的Ant<BR>构建配置。Middlegen-Hibernate将根据build.xml 文件中的具体参数生成数据库表映射<BR>文件<BR><BR>1）第24行 修改数据库连接<BR>将hsqldb.xml 改成mysql.xml<BR>&lt;!ENTITY database SYSTEM "file:./config/database/mysql.xml"&gt;<BR>2）第52行 修改输出目录<BR>将${build.dir}/gen-src 改成你要的目录<BR>&nbsp;&nbsp; &lt;property name="build.gen-src.dir"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value="D:/Middlegen-Hibernate-r5/sample"/&gt;<BR>3）第184行 对应代码的Package name<BR>hibernate 节点package 属性的默认设置实际上是由前面的<BR>Application Name （${name}）和“.hibernate”组合而成，根据我们的需要，<BR>将其改为<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;hibernate<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; destination="${build.gen-src.dir}"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; package="org.hibernate.sample"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; genXDocletTags="true"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; genIntergratedCompositeKeys="false"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&gt;<BR>这里还有一个属性genXDocletTags，如果设置为true，则生成的代码将包含<BR>xdoclet tag。<BR>4）第33行 修改应用名<BR>将原来的<BR>&nbsp;&nbsp; &lt;property name="name" value="airline"/&gt;<BR>改成<BR>&nbsp;&nbsp; &lt;property name="name" value="HibernateSample"/&gt;<BR><BR>5：切换到D:\Middlegen-Hibernate-r5目录，运行ant<BR>界面如下<BR><STRONG>作者Blog：</STRONG><A id=ArticleContent1_ArticleContent1_AuthorBlogLink href="http://blog.csdn.net/kasam/" target=_blank>http://blog.csdn.net/kasam/</A></SPAN>]]></description>
</item><item>
<title><![CDATA[承德游记－随笔涂鸦]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7361</link>
<author>miniboot</author>
<pubDate>2005/7/21 11:08:50</pubDate>
<description><![CDATA[&nbsp;&nbsp;&nbsp; 游通社最新消息，我11人代表团响应主席戴XX的号召，于7月16日至7月17日对承德一带进行了实地考察。大家对北京至承德的交通状况十分不满，责令整改。据悉，北京至承德高速将于近日建成。对河北地区拦路设卡，私自收费的情况，公安部费书记已经取得第一手证据，为下一步工作打下了坚实的基础。在承德地区，代表团保持艰苦朴素作风，以最小的投资实地考察了普宁寺，小布达拉宫，避暑山庄。以实际行动抑制了当地乱收费现象。对像虎跃山庄一样胡乱要价的不法经营，代表团先后两次现场勘查，并在大搅二搅的带领下对不法势力加以狠狠的打击。对于像饼屋一样的遵纪守法经营者，代表团高度支持，投入了大笔餐饮金费予以扶持。总之，此次活动积累了实地经验，为日后工作铺平了道路。&nbsp;&nbsp;]]></description>
</item><item>
<title><![CDATA[Hibernate 学习笔记]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7360</link>
<author>miniboot</author>
<pubDate>2005/7/21 11:03:26</pubDate>
<description><![CDATA[转载：转载请保留本信息，本文来自<A href="http://www.matrix.org.cn/resource/article/1649_hibernate的总结.html">http://www.matrix.org.cn/resource/article/1649_hibernate的总结.html</A> <BR><B>一 hibernate配置</B><BR>1.下载所需包<BR>下载hibernate2.13, hibernate-extension2.13,Middlegen(已装了jdk和ant)<BR>2.创建数据库(例子:student;course,stu_cou)<BR>Student(id,name)<BR>Course(id,name)<BR>Stu_cou(stu_id,cou_id)(分别是student表和course表的外健)<BR>3.使用MiddleGen(见附录)<BR><BR><B>二 hibernate映射关系(many-to-many)</B><BR>1. 分析inverse参数(student.hbm.xml course.hbm.xml)<BR>inverse该参数用来负责映射之间的关系,设置为false的一方可以对他们的关系进行维护<BR>设置inverse = false的实体,表示在映射中是它是主动关系,由它来维户关系中的数据<BR>设置inverse = true 的实体,表示在映射中是它是被动关系,它不维护关系中的数据<BR>1) inverse=false的情况<BR>a) 添加记录的情况<BR>student.hbm.xml是主动方,由它来决定stu_cou表中的记录,故inverse=false<BR>当向stu_cou中写入记录时候,<BR>/*<BR>* 测试目的:在stu_cou中添加一组对应关系(student,course)<BR>* 测试结果:当执行完该段代码后<BR>* 如stu_cou中没有(student,course)时,自动加入(student,course)<BR>* 如stu_cou中存在(student,course)时,什么都不作,不会存在主健冲突<BR>Student student=(Student)session.load(Student.class,student2.getId())<BR>Course course=(Course)session.load(Course.class,course2.getId());<BR>student.getCourses().add(course);<BR>session.save(student);<BR>执行完后,hibenrate成功显示<BR>Hibernate: select course0_.id as id0_, course0_.name as name0_ from course course0_ where course0_.id=?<BR>Hibernate: select student0_.id as id0_, student0_.name as name0_ from student student0_ where student0_.id=?<BR>Hibernate: select courses0_.cid as cid__, courses0_.sid as sid__ from stu_cou courses0_ where courses0_.sid=?<BR>Hibernate: insert into stu_cou (sid, cid) values (?, ?)<BR>b) 删除记录的情况<BR>Student student=(Student)session.load(Student.class,student2.getId())<BR>Course course=(Course)session.load(Course.class,course2.getId());<BR>student.getCourses().让remove(course);<BR>session.save(student);<BR>代码执行完后,可以成功执行,hibernate显示:<BR>Hibernate: select course0_.id as id0_, course0_.name as name0_ from course course0_ where course0_.id=?<BR>Hibernate: select student0_.id as id0_, student0_.name as name0_ from student student0_ where student0_.id=?<BR>Hibernate: select courses0_.cid as cid__, courses0_.sid as sid__ from stu_cou courses0_ where courses0_.sid=?<BR>Hibernate: delete from stu_cou where sid=?<BR><BR>2) inverse=true的情况<BR>student.hbm.xml是被动方,设置它的inverse=true<BR>a) 添加记录情况<BR>* 测试目的:在stu_cou中添加一组对应关系(student,course)<BR>* 测试结果:当执行完该段代码后<BR>* 如stu_cou中没有(student,course)时,自动加入(student,course)<BR>* 如stu_cou中存在(student,course)时,什么都不作,不会存在主健冲突<BR>Student tudent=(Student)session.load(Student.class,student2.getId());<BR>Course course=(Course)session.load(Course.class,course2.getId());<BR>student.getCourses().add(course);<BR>session.save(student);<BR>代码执行完后,hibernate显示,没有插入记录<BR>Hibernate: select course0_.id as id0_, course0_.name as name0_ from course course0_ where course0_.id=?<BR>Hibernate: select student0_.id as id0_, student0_.name as name0_ from student student0_ where student0_.id=?<BR>Hibernate: select courses0_.cid as cid__, courses0_.sid as sid__ from stu_cou courses0_ where courses0_.sid=?<BR><BR>b) 删除记录情况<BR>当向stu_cou中删除记录时候,<BR>Student student=(Student)session.load(Student.class,student2.getId())<BR>Course course= (Course)session.load(Course.class,course2.getId());<BR>student.getCourses().remove(course);<BR>session.save(student);<BR>执行完,hibernate显示如下,证明没有删除记录<BR>Hibernate: select course0_.id as id0_, course0_.name as name0_ from course course0_ where course0_.id=?<BR>Hibernate: select student0_.id as id0_, student0_.name as name0_ from student student0_ where student0_.id=?<BR>Hibernate: select courses0_.cid as cid__, courses0_.sid as sid__ from stu_cou courses0_ where courses0_.sid=?<BR>Hibernate: select course0_.id as id0_, course0_.name as name0_ from course course0_ where course0_.id=?<BR>Hibernate: select course0_.id as id0_, course0_.name as name0_ from course course0_ where course0_.id=?<BR><BR>2. 分析cascade参数(student.hbm.xml course.hbm.xml)<BR>只有设置了inverse=false才可以操纵stu_cou的数据<BR>当inverse=true的时候,下列情况1中b)提示错误<BR>原因: stu_cou中存在外健约束,你无法直接删除student表中的数据<BR>1) cascade=save-update的情况<BR>a)添加记录情况<BR>Set set=new HashSet();<BR>set.add(course1);<BR>set.add(course2);<BR>set.add(course3);<BR>student3.setCourses(set);<BR>session.save(student3);<BR>执行后hibernate提示:<BR>Hibernate: insert into student (name) values (?)<BR>Hibernate: insert into course (name) values (?)<BR>Hibernate: insert into course (name) values (?)<BR>Hibernate: insert into course (name) values (?)<BR>Hibernate: insert into stu_cou (sid, cid) values (?, ?)<BR>可见,插入了student,course,和stu_cou三个表<BR><BR>b)删除记录情况<BR>Student student=(Student)session.load(Student.class,new Integer(22));<BR>session.delete(student);<BR>成功执行后,hibernate提示:<BR>Hibernate: select student0_.id as id0_, student0_.name as name0_ from student student0_ where student0_.id=?<BR>Hibernate: delete from stu_cou where sid=?<BR>Hibernate: delete from student where id=? <BR><BR>2) cascade=all的情况<BR>a) 添加记录情况<BR>Set set=new HashSet();<BR>set.add(course1);<BR>set.add(course2);<BR>set.add(course3);<BR>student3.setCourses(set);<BR>session.save(student3);<BR>执行后hibernate提示:成功添加级联关系<BR>Hibernate: insert into student (name) values (?)<BR>Hibernate: insert into course (name) values (?)<BR>Hibernate: insert into course (name) values (?)<BR>Hibernate: insert into course (name) values (?)<BR>Hibernate: insert into stu_cou (sid, cid) values (?, ?)<BR>b) 删除记录情况<BR>Student student=(Student)session.load(Student.class,new Integer(22));<BR>session.delete(student);<BR>测试结果(所有和student(22)相关的记录均被删除)<BR>删除student表中的student(22)记录<BR>删除stu_cou表中的student(22)的记录<BR>删除course表中的student(22)对应的course的记录<BR><BR>2) cascade=none情况<BR>a) 添加记录情况<BR>Set set=new HashSet();<BR>set.add(course1);<BR>set.add(course2);<BR>set.add(course3);<BR>student3.setCourses(set);<BR>session.save(student3);<BR>失败,因为没有级联关系,所以course记录添加不进去,造成外健失败<BR><BR>b) 删除记录情况<BR>Student student=(Student)session.load(Student.class,new Integer(22));<BR>session.delete(student);<BR>正常,删除了student表中的记录student(22),同时删除了stu_cou中对应的student(22)的记录<BR><BR><BR><BR><B>附录</B><BR>1．MiddleGen的使用<BR>1环境变量设置<BR>%Hibernate_Home%/lib/*.jar到%MiddleGen%/lib下<BR>%Hibernate_Home%/hibernate2.jar到%MiddleGen%/lib下<BR>%Hibernate-Extension_Home%/tools/lib/*.jar到%MiddleGen%/lib下<BR>%Hibernate-Extension_Home%/tools/hibernate-tools.jar到%MiddleGen%/lib下<BR><BR>2 MiddleGen的配置<BR>配置目标数据库参数<BR>进入MiddleGen 目录下的\config\database 子目录，根据我们实际采用的数据库打开对应的配置文件。如这里我用的是mysql数据库，对应的就是mysql.xml文件。<BR>&lt;property<BR>name="database.script.file" value="${src.dir}/sql/${name}-mysql.sql"/&gt;<BR>&lt;property <BR>name="database.driver.file" value="${lib.dir}/mysql.jar"/&gt;<BR>&lt;property<BR>name="database.driver.classpath" value="${database.driver.file}"/&gt;<BR>&lt;property<BR>name="database.driver" value="org.gjt.mm.mysql.Driver"/&gt;<BR>&lt;property<BR>name="database.url" value="jdbc:mysql://localhost/sample"/&gt;<BR>&lt;property<BR>name="database.userid" value="user"/&gt;<BR>&lt;property<BR>name="database.password" value="mypass"/&gt;<BR>&lt;property<BR>name="database.schema" value=""/&gt;<BR>&lt;property<BR>name="database.catalog" value=""/&gt;<BR>&lt;property<BR>name="jboss.datasource.mapping" value="mySQL"/&gt;<BR>其中下划线标准的部分是我们进行配置的内容，分别是数据url以及数据库用<BR>户名和密码。<BR><BR>1) 修改Build.xml<BR>修改MiddleGen 根目录下的build.xml 文件，此文件是Middlegen-Hibernate 的Ant构建配置。Middlegen-Hibernate将根据build.xml文件中的具体参数生成数据库表映射文件。可配置的项目包括：<BR><BR>a) 目标数据库配置文件地址<BR>查找关键字 ”!ENTITY”，得到：<BR>&lt;!DOCTYPE project [<BR>&lt;!ENTITY database SYSTEM<BR>"file:./config/database/hsqldb.xml"&gt;<BR>]&gt;<BR>默认情况下，MiddleGen 采用的是hsqldb.xml，<BR>将其修改为我们所用的数据库配置文件（mysql.xml）：<BR>&lt;!DOCTYPE project [<BR>&lt;!ENTITY database SYSTEM<BR>"file:./config/database/mysql.xml"&gt;<BR>]&gt;<BR><BR>b) Application name<BR>查找：<BR>&lt;property name="name" value="airline"/&gt;<BR>“aireline”是MiddleGen原始配置中默认的 Application Name，将其修改为我们<BR>所希望的名称，如“HibernateSample”：<BR>&lt;property name="name" value="HibernateSample"/&gt;<BR><BR>c) 输出目录<BR>查找关键字“name="build.gen-src.dir"”，得到：<BR>&lt;property name="build.gen-src.dir"<BR>value="${build.dir}/gen-src"/&gt;<BR>修改value="${build.dir}/gen-src"使其指向我们所期望的输出目录，<BR>这里我们修改为：&lt;property name="build.gen-src.dir"<BR>value="C:\sample"/&gt;<BR>d) 对应代码的Package name<BR>查找关键字“destination”，得到：<BR>&lt;hibernate<BR>destination="${build.gen-src.dir}"<BR>package="${name}.hibernate"<BR>genXDocletTags="false"<BR>genIntergratedCompositeKeys="false"<BR>javaTypeMapper=<BR>"middlegen.plugins.hibernate.HibernateJavaTypeMapper"<BR>/&gt;<BR>可以看到，hibernate 节点package 属性的默认设置实际上是由前面的<BR>Application Name （${name}）和“.hibernate”组合而成，根据我们的需要，<BR>这里还有一个属性genXDocletTags，如果设置为true，则生成的代码将包含<BR>xdoclet tag，这为以后在开发过程中借助xdoclet进行映射调整提供了帮助。注意，如果使用的数据库为SQLServer，需要将build.xml部分删除(参见夏?^的文档)，否则Middlegen会报出找不到表的错误。<BR>至此为止，MiddleGen 已经配置完毕，在MiddleGen 根目录下运行ant，就将出现<BR>MiddleGen的界面：<BR>2 *.xml到.java<BR>在得到.xml后,使用ant hbm2java 即可得到相应的java文件<BR>总结:<BR>我第一次运行成功,但是后来则出现如下类似错误,检查发现在MiddleGen的lib目录下存在多个类似的jar包<BR>(velocity.jar,velocity1-0.8.jar),删除旧的jar包后,问题解决<BR>[middlegen] java.lang.IncompatibleClassChangeError<BR>[middlegen] at [middlegen] at org.apache.velocity.Template.process(Template.java:136)<BR><BR><BR>2．(评论)关于Many-to-Many需要注意的问题<BR>比如group/user,user/role,group/role,都是多对多的关系。<BR>所以有必要搞搞清楚。以group/user为例<BR>(1)group.getUsers() &amp; user.getGroups()双向映射。在这里，考虑到user.setGroups()是不会放出来的。所以在user端加入inverse=true，就是说，让Group端来维护两者的关系表。<BR>(2)于是，添加的时候，要把user加入到group的user set中，保存，才有意义！<BR>(3)如果要删除group_user的关系，而不是group/user本身，那么，需要在group端设定casade=save-update。否则，group.getUsers().remove(user)不会起作用！<BR>(4)由于有了FK保护，你是无法单独删除User的。同时，由于你指定了inverse=true,所以无法光光的设置user.getGroups().clear就能够搞定一切。你必须首先在每个Group.getUsers中删除这个user，才能最后删除。所以，UserManagerImpl代码可能看起来像这样：<BR>public void delUser(User user) {<BR>if (user == null) {<BR>logger.info("Got a null user object!");<BR>return;<BR>}<BR>Session session = null;<BR>Transaction trans = null;<BR>boolean bSuccess = false;<BR>try {<BR>String username = new String(user.getName());<BR>session = PLUtils.getSession();<BR>trans = session.beginTransaction();<BR>session.update(user);<BR><BR>Set groups = ((UserEntity)user).getGroups(); <BR>for(Iterator i = groups.iterator();i.hasNext();){<BR>GroupEntity g = (GroupEntity)i.next();<BR>session.update(g);<BR>g.getUsers().remove(user);<BR>session.update(g);<BR>}<BR><BR>// ((UserEntity)user).getGroups().clear();<BR>session.delete(user);<BR>bSuccess = true;<BR>logger.debug("User " + username + " deleted ok!");<BR>}<BR>catch (ObjectNotFoundException onfe) {<BR>logger.info("user not found!", onfe);<BR>}<BR>catch (Exception e) {<BR>logger.error("failed!", e);<BR>}<BR>finally {<BR>try {<BR>if (bSuccess)<BR>trans.commit();<BR>else<BR>trans.rollback();<BR>session.close();<BR>}<BR>catch (Exception ex) {<BR>}<BR>}<BR>}<BR><BR>]]></description>
</item><item>
<title><![CDATA[快乐生活比第一更重要]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7348</link>
<author>miniboot</author>
<pubDate>2005/7/21 7:43:12</pubDate>
<description><![CDATA[
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 放弃的姿势，是我们准确地衡量自己把握自己之后，作出的最现实决定，它不是保守，不是退缩，而是为了保护自己想要的一切。</P>
<P>　　文-雪小禅</P>
<P>　　那天，一家人一起看王小丫的“开心辞典”，不时哈哈大笑。这个节目，充满了智慧和人性的美丽。</P>
<P>　　总有梦想会被实现，也总有更多的陷阱虚位以待，而王小丫的微笑永远不败，不停地问你：“继续吗？”继续下去，或者成功，或者失败，退回到原点。这是逆水行舟的世界，不进则退。</P>
<P>　　答对十二道题的人并不多，往往是到三道、六道或者九道题的关卡，因为一次失误，前功尽弃，被淘汰出局。但是选手依旧选择“继续”，面对这种刺激的新玩儿法，都不愿不继续。</P>
<P>　　当时，我正在犹豫是否考研。就业压力太大，周围的人都纷纷考研考博，寻求暂时的避风港。可是，我需要继续读下去吗？我更渴望工作，到社会的风浪里磨炼自己。</P>
<P>　　读大二的弟弟一直劝我：“姐，考研吧，现在大本还上哪儿混去啊？”</P>
<P>　　“学历并不能证明一切。”</P>
<P>　　“可是你想要出人头地就得读更多的书，继续向前！”</P>
<P>　　我无言以对。</P>
<P>　　思绪再跳到电视屏幕。新的一位答题者很幸运，已经闯到了第九道题。三个求助方法他已经全部用完，而这个题他毫无把握。他怀孕的妻子就在台下，关切地看着他。</P>
<P>　　王小丫又在问：“继续吗？”“不。”思索半刻，他眉头开了，很肯定地说：“我放弃。”</P>
<P>　　我一愣，王小丫也一愣。很少有人放弃，尤其在全国电视观众面前。兴许机遇好，蒙对了呢？弟弟不屑地说：“真不像个男人。太保守了！答错了往回扣分嘛，怕什么？”</P>
<P>　　王小丫继续问：“真的放弃吗？”她一连问了三次。他一丝犹豫都没有，点头：“真的放弃。”“不后悔？”王小丫问。他笑：“不后悔，我设定的家庭梦想都已实现。应该得到的，已经得到了。”</P>
<P>　　就这样，他只答了九道题，没有冲向完美的十二道。男主持人问他，“如果你的孩子长大后问你，爸爸，那天在‘开心辞典’你为什么放弃？”他说：“我会告诉孩子，人生并不一定非要走到最高点。”主持人问：“那你的孩子又问，那我以后考80分就满足了行不行？”他笑着回答：“如果他已经付出最大的努力，如果他对80分也满意，我赞同。不是每个人都要拿第一。人生懂得放弃，才会得到更多。”</P>
<P>　　全场响起了热烈的掌声。</P>
<P>　　那是一种更豁达的人生态度吧。从来我们都认为要永远追求，要一直向前，哪怕跌得头破血流。爬山时我们要达到山顶，怕停在半山腰被人讥笑，跑步时我们要撞到红线，仿佛那才能触碰到幸福。</P>
<P>　　可是为什么要继续？也许半山腰的风景更美丽，因为空气浓厚，各式各样的植物蓬勃生长；也许第一名还不如第二名幸福，因为除了胜利，人生还有更多趣味。</P>
<P>　　是的，在学会进取的同时，也应该学会放弃。放弃也是一种智慧，一种美丽。放弃的姿势，是我们准确地衡量自己把握自己之后，作出的最现实决定，它不是保守，不是退缩，而是为了保护自己想要的一切。</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 于是，我决定彻底放弃考研，到一家公司从秘书做起，脚踏实地地寻找属于自己的天空。不奢求总是拿第一，但是，不能不快乐生活。</P>
<P>&nbsp;</P>]]></description>
</item><item>
<title><![CDATA[Eclipse 3.0插件收集]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7337</link>
<author>miniboot</author>
<pubDate>2005/7/20 14:48:28</pubDate>
<description><![CDATA[
<TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellSpacing=0 cellPadding=0 width="99%" border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD>
<DIV align=right></DIV></TD></TR></TBODY></TABLE><SPAN class=oblog_text>
<TABLE cellSpacing=0 cellPadding=0 width="96%" align=center border=0>
<TBODY>
<TR>
<TD class=big vAlign=top>
<P>
<DIV>
<DIV class=dititle>
<DIV><FONT size=2>1.MyEclipse&nbsp; J2EE开发插件，支持SERVLET/JSP/EJB/数据库操纵等 <BR></FONT><A href="http://www.myeclipseide.com/"><FONT color=#4a664d size=2><U>www.myeclipseide.com</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>2.Properties Editor&nbsp; 编辑java的属性文件，并可以自动存盘为Unicode格式 <BR></FONT><A href="http://propedit.sourceforge.jp/index_en.html"><FONT color=#4a664d size=2><U>http://propedit.sourceforge.jp/index_en.html</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>3.Colorer Take&nbsp; 为上百种类型的文件按语法着色 <BR></FONT><A href="http://colorer.sourceforge.net/"><FONT color=#4a664d size=2><U>http://colorer.sourceforge.net/</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>4.XMLBuddy 编辑xml文件 <BR></FONT><A href="http://www.xmlbuddy.com/"><FONT color=#4a664d size=2><U>www.xmlbuddy.com</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>5.Code Folding&nbsp; 加入多种代码折叠功能（比eclipse自带的更多） <BR></FONT><A href="http://www.coffee-bytes.com/servlet/PlatformSupport"><FONT color=#4a664d size=2><U>http://www.coffee-bytes.com/servlet/PlatformSupport</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>6.Easy Explorer&nbsp; 从eclipse中访问选定文件、目录所在的文件夹 <BR></FONT><A href="http://easystruts.sourceforge.net/"><FONT color=#4a664d size=2><U>http://easystruts.sourceforge.net/</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>7.Fat Jar 打包插件，可以方便的完成各种打包任务，可以包含外部的包等 <BR></FONT><A href="http://fjep.sourceforge.net/"><FONT color=#4a664d size=2><U>http://fjep.sourceforge.net/</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>8.RegEx Test 测试正则表达式 <BR></FONT><A href="http://brosinski.com/stephan/archives/000028.php"><FONT color=#4a664d size=2><U>http://brosinski.com/stephan/archives/000028.php</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>9.JasperAssistant 报表插件（强，要钱的） <BR></FONT><A href="http://www.jasperassistant.com/"><FONT color=#4a664d size=2><U>http://www.jasperassistant.com/</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>10.Jigloo GUI Builder ＪＡＶＡ的ＧＵＩ编辑插件 <BR></FONT><A href="http://cloudgarden.com/jigloo/"><FONT color=#4a664d size=2><U>http://cloudgarden.com/jigloo/</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>11.Profiler 性能跟踪、测量工具，能跟踪、测量ＢＳ程序 <BR></FONT><A href="http://sourceforge.net/projects/eclipsecolorer/"><FONT color=#4a664d size=2><U>http://sourceforge.net/projects/eclipsecolorer/</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>12.AdvanQas 提供对if/else等条件语句的提示和快捷帮助（自动更改结构等） <BR></FONT><A href="http://eclipsecolorer.sourceforge.net/advanqas/index.html"><FONT color=#4a664d size=2><U>http://eclipsecolorer.sourceforge.net/advanqas/index.html</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>13.Log4E&nbsp;&nbsp;&nbsp;&nbsp; Log4j插件，提供各种和Log4j相关的任务，如为方法、类添加一个logger等 <BR></FONT><A href="http://log4e.jayefem.de/index.php/Main_Page"><FONT color=#4a664d size=2><U>http://log4e.jayefem.de/index.php/Main_Page</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>14.VSSPlugin VSS插件 <BR></FONT><A href="http://sourceforge.net/projects/vssplugin"><FONT color=#4a664d size=2><U>http://sourceforge.net/projects/vssplugin</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>15.Implementors&nbsp;&nbsp; 提供跳转到一个方法的实现类，而不是接中的功能（实用!） <BR></FONT><A href="http://eclipse-tools.sourceforge.net/implementors/"><FONT color=#4a664d size=2><U>http://eclipse-tools.sourceforge.net/implementors/</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>16.Call Hierarchy 显示一个方法的调用层次（被哪些方法调，调了哪些方法） <BR></FONT><A href="http://eclipse-tools.sourceforge.net/call-hierarchy/index.html"><FONT color=#4a664d size=2><U>http://eclipse-tools.sourceforge.net/call-hierarchy/index.html</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>17.EclipseTidy 检查和格式化HTML/XML文件 <BR></FONT><A href="http://eclipsetidy.sourceforge.net/"><FONT color=#4a664d size=2><U>http://eclipsetidy.sourceforge.net/</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>18.Checkclipse 检查代码的风格、写法是否符合规范 <BR></FONT><A href="http://www.mvmsoft.de/content/plugins/checkclipse/checkclipse.htm"><FONT color=#4a664d size=2><U>http://www.mvmsoft.de/content/plugins/checkclipse/checkclipse.htm</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>19.Hibernate Synchronizer Hibernate插件，自动映射等 <BR></FONT><A href="http://www.binamics.com/hibernatesync/"><FONT color=#4a664d size=2><U>http://www.binamics.com/hibernatesync/</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>20.VeloEclipse&nbsp; Velocity插件 <BR></FONT><A href="http://propsorter.sourceforge.net/"><FONT color=#4a664d size=2><U>http://propsorter.sourceforge.net/</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>21.EditorList&nbsp;&nbsp; 方便的列出所有打开的Editor <BR></FONT><A href="http://editorlist.sourceforge.net/"><FONT color=#4a664d size=2><U>http://editorlist.sourceforge.net/</U></FONT></A> </DIV>
<DIV><FONT color=#4a664d size=2><U></FONT>&nbsp; </DIV>
<DIV><FONT size=2>22.MemoryManager 内存占用率的监视 <BR></FONT><A href="http://cloudgarden.com/memorymanager/"><FONT color=#4a664d size=2><U>http://cloudgarden.com/memorymanager/</U></FONT></A> </DIV></DIV></DIV></U></U></U></U></U></U></U></U></U></U></U></U></U></U></U></U></U></U></U></U></U></TD></TR></TBODY></TABLE>
<P></P></SPAN></TD></TR></TBODY></TABLE>]]></description>
</item><item>
<title><![CDATA[别太把自己当回事]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7315</link>
<author>miniboot</author>
<pubDate>2005/7/19 8:51:54</pubDate>
<description><![CDATA[布思·塔金顿是20世纪美国著名小说家和剧作家，他的作品《伟大的安伯森斯》和《爱丽丝·亚当斯》均获得普利策奖。在塔金顿声名最鼎盛时期，他在多种场合讲述过这样一个故事：
<P>那是在一个红十字会举办的艺术家作品展览会上，我作为特邀的贵宾参加了展览会，其间，有两个可爱的十六七岁小女孩来到我面前，虔诚地向我索要签名。</P>
<P>“我没带自来水笔，用铅笔可以吗？”我其实知道她们不会拒绝，我只是想表现一下一个著名作家谦和地对待普通读者的大家风范。</P>
<P>“当然可以。”小女孩们果然爽快地答应了，我看得出她们很兴奋，当然她们的兴奋也使我备感欣慰。</P>
<P>一个女孩将她的非常精致的笔记本递给我，我取出铅笔，潇洒自如地写上了几句鼓励的话语，并签上我的名字。女孩看过我的签名后，眉头皱了起来，她仔细看了看我，问道：“你不是罗伯特查波斯啊？”</P>
<P>“不是，”我非常自负地告诉她，“我是布思·塔金顿，《爱丽丝·亚当斯》的作者，两次普利策奖获得者。”</P>
<P>小女孩将头转向另外一个女孩，耸耸肩说道：“玛丽，把你的橡皮借我用用。”</P>
<P>那一刻，我所有的自负和骄傲瞬间化为泡影，从此以后，我都时时刻刻告诫自己：无论自己多么出色，都别太把自己当回事。</P>]]></description>
</item><item>
<title><![CDATA[职场新人必读的劳动法规]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7290</link>
<author>miniboot</author>
<pubDate>2005/7/18 11:05:03</pubDate>
<description><![CDATA[1、试用期长短应如何掌握？<BR>&nbsp;&nbsp;&nbsp;<BR>　　根据劳动部《关于实行劳动合同制有关问题的通知》，合同期限在六个月以下的，试用期不得超过十五日；劳动合同期限在六个月以上一年以下的，试用期不得超过三十日；劳动合同期限在一年以上两年以下的，试用期不得超过六十日。 <BR>&nbsp;&nbsp;&nbsp;<BR>　　2、劳动者要求解除劳动合同应履行哪些程序？<BR>&nbsp;&nbsp;&nbsp;<BR>　　劳动者解除劳动合同，应当提前三十日以书面形式通知用人单位。超过三十日，劳动者可以向用人单位提出办理解除劳动合同手续，用人单位应予以办理。如果劳动者违法解除劳动合同给原用人单位造成经济损失，应当承担赔偿责任。如劳动者违反提前三十日的规定而要求解除劳动合同，用人单位可不予办理。<BR>&nbsp;&nbsp;&nbsp;<BR>　　3、在什么情况下，劳动者可随时通知用人单位解除劳动合同？<BR>&nbsp;&nbsp;&nbsp;<BR>　　根据《劳动法》第32条及劳动部《关于劳动法若干条文的说明》(劳办发“1994”289号)的规定，有下列情形之一的，劳动者可以随时通知用人单位解除劳动合同：<BR>&nbsp;&nbsp;&nbsp;<BR>　　(1)在试用期内的；(2)用人单位以暴力、威胁或者非法限制人身自由的手段强迫劳动的；(3)用人单位未按照劳动合同的约定支付劳动报酬或者提供劳动条件的。<BR>&nbsp;&nbsp;&nbsp;<BR>　　本条中的“非法限制人身自由”是指采用拘留、禁闭或者其他强制方法非法剥夺或限制他人按照自己的意志支配自己的身体活动的自由的行为。属于以上二、三种情况，用人单位给劳动者造成损失的，应依法给予赔偿。<BR>&nbsp;&nbsp;&nbsp;<BR>　　4、企业招工时收取“入厂押金”、“风险金”等费用是否合法？<BR>&nbsp;&nbsp;&nbsp;<BR>　　一些企业在录用职工时擅自向劳动者收取货币、实物等作为“入厂押金”、“风险金”、“保证金”、“培训费”、“集资款”等费用，为此，劳动部先后发出了劳部发［1994］118号文件、劳办发［1994］256号文件、劳部发［1995］346号文件，一致认为，这种做法违反国家关于劳动关系当事人平等、自愿和协商一致建立劳动关系的规定，侵害了职工的合法权益，必须予以制止和纠正。对非法收取的货币和实物，应当责令用人单位立即退还劳动者。<BR>&nbsp;&nbsp;&nbsp;<BR>　　5、用人单位故意不订立劳动合同怎么办？<BR>&nbsp;&nbsp;&nbsp;<BR>　　根据《劳动法》第98条和劳部发［1995］309号第17条规定，用人单位与劳动者之间形成了事实劳动关系，而用人单位故意拖延不订立劳动合同，劳动行政部门应予以纠正。用人单位因此给劳动者造成损害的，应按劳动部《违反〈劳动法〉有关劳动合同规定的赔偿办法》的规定进行赔偿。<BR>&nbsp;&nbsp;&nbsp;<BR>　　6、哪些休假应该向劳动者支付工资？<BR>&nbsp;&nbsp;&nbsp;<BR>　　根据劳动部办公厅《关于劳动法若干条文的说明》(劳办发［1994］289号)，劳动者在下列休假期间视为提供了正常劳动，应依法支付工资：<BR>&nbsp;&nbsp;&nbsp;<BR>　　法定休假日，是指法律、法规规定的劳动者休假的时间，包括法定节日(及元旦、春节、国际劳动节、国庆节及其他节假日)以及法定带薪年休假、探亲假、生育、节育、工伤、职业病等。婚丧假，是指劳动者本人结婚以及其直系亲属死亡时依法享受的假期。<BR>&nbsp;&nbsp;&nbsp;<BR>　　7、劳动者加班加点应按什么标准支付工资？根据《劳动法》第44条、劳动部《工资支付暂行规定》第十三条，用人单位在劳动者完成劳动定额或规定的工作任务后，根据实际需要安排劳动者在法定标准工作时间以外加班加点的，事后应尽量给予同等时间的补休。确实不能补休的，应按以下标准支付加班加点工资：<BR>&nbsp;&nbsp;&nbsp;<BR>　　(1)依法安排劳动者在日法定标准工作时间以外延长工作时间(加点)的，按照劳动合同规定的劳动者本人小时工资标准的150%支付工资。<BR>&nbsp;&nbsp;&nbsp;<BR>　　(2)依法安排劳动者在休息日工作的，按照劳动合同规定的劳动者本人日或小时工资标准的200%支付工资。<BR>&nbsp;&nbsp;&nbsp;<BR>　　(3)劳动者在法定休假节日工作的，按照劳动合同规定的劳动者本人日或小时工资标准的300%支付工资。<BR>&nbsp;&nbsp;&nbsp;<BR>　　实行计件工资的劳动者，在完成计件定额任务后，由用人单位安排延长工作时间的，应根据上述规定的原则，分别按照不低于其本人法定工作时间计件单价的150%、200%、300%支付其工资。<BR>&nbsp;&nbsp;&nbsp;<BR>　　经劳动行政部门批准实行综合计算工时工作制的，其综合计算工作时间超过法定标准工作时间的部分，应按本规定支付劳动者延长工作时间的工资。实行提成工资、包干工资等工资形式的劳动者，由用人单位安排延长工作时间的，均按照实行计件工资制的劳动者加班加点工资的支付办法和标准支付。
<P class=note align=right>来源：深圳特区报 　发表时间：2005-7-14</P>]]></description>
</item><item>
<title><![CDATA[周杰伦说过最经典的一句话！]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7244</link>
<author>miniboot</author>
<pubDate>2005/7/15 11:34:52</pubDate>
<description><![CDATA[
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2005年5月22号一起参加发布会，现场大家谈到"南京大屠杀"。在座的一个日<BR>本女 记者就问到蔡依林，你们中国人老说被杀了30W，难道你们有数过<BR>啊。蔡依林有些尴 尬，周杰伦当即抢答："我们是没数过，难道你们日本妇女被美国大兵强奸过后 ，你们 还要去问她是否有快感？"<BR>＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝</P>
<P>我不算是他的fans,但是我喜欢这样的明星。</P>]]></description>
</item><item>
<title><![CDATA[母亲，母爱－－需要用心去体会，需要用一生去报答！]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=miniboot&amp;id=7239</link>
<author>miniboot</author>
<pubDate>2005/7/15 9:13:01</pubDate>
<description><![CDATA[
<TABLE class=forumline cellSpacing=1 cellPadding=3 width="100%" align=center border=0>
<TBODY>
<TR>
<TD class=row1 noWrap align=left colSpan=2 height=26><SPAN class=postdetails><FONT size=2>链接地址：</FONT><A href="http://blog.hexun.com/fbnx/viewarticle.aspx?articleid=305914" target=_blank><FONT color=#006699 size=2>一位湖北大学的学生作品，看后久久不能平静（看N遍也值）</FONT></A></SPAN></TD></TR>
<TR>
<TD class=row1 vAlign=top width="100%"><SPAN class=postdetails><FONT size=2>23年前，有个年轻的女子流落到我们村，蓬头垢面，见人就傻笑，且毫不避讳地当众小便。因此，村里的媳妇们常对著那女子吐口水，有的媳妇还上前踹几脚，叫她“滚远些”。可她就是不走，依然傻笑著在村里转悠。 <BR>　　那时，我父亲已有35岁。他曾在石料场子干活被机器绞断了左手，又因家穷，一直没娶媳妇。奶奶见那女子还有几份姿色，就动了心思，决定收下她给我父亲做媳妇，等她给我 家“续上香火”后，再把她撵走。父亲虽老大不情愿，但看著家里这番光景，咬咬牙还是答应了。结果，父亲一分未花，就当了新郎。 <BR>　　娘生下我的时候，奶奶抱著我，瘪著没剩几颗牙的嘴，欣喜地说：“这疯婆娘，还给我生了个带把的孙子。”只是我一生下来，奶奶就把我抱走了，而且从不让娘*近。 <BR>　　娘一直想抱抱我，多次在奶奶面前吃力地喊：“给，给我……”奶奶没理她。我那么小，像个肉嘟嘟，万一娘失手把我掉在地上怎么办？毕竟，娘是个疯子。每当娘有抱我的请求时，奶奶总瞪起眼睛训她：“你别想抱孩子，我不会给你的。要是我发现你偷抱了他，我就打死你。即使不打死，我也要把你撵走。”奶奶说这话时，没有半点儿含糊的意思。娘听懂了，满脸的惶恐，每次只是远远地看著我。尽管娘的奶胀得厉害，可我没能吃到娘的半口奶水，是奶奶一匙一匙把我喂大的。奶奶说娘的奶水里有“神经病”，要是传染给我就麻烦了。 <BR>　　那时，我家依然在贫困的泥潭里挣扎。特别是添了娘和我后，家里常常揭不开锅。奶奶决定把娘撵走，因为娘不但在家吃“闲饭”，时不时还惹是生非。 <BR>一天，奶奶煮了一大锅饭，亲手给娘添了一大碗，说：“媳妇儿，这个家太穷了，婆婆对不起你。你吃完这碗饭，就去找个富点儿的人家过日子，以后也不准来了，啊？”娘刚扒了一大团饭在口里，听了奶奶下的“逐客令”显得非常吃惊，一团饭就在嘴里凝滞了。娘望著奶奶怀中的我，口齿不清地哀叫：“不，不要……”奶奶猛地沉下脸，拿出威严的家长作风厉声吼到：“你这个疯婆娘，□什么□，□下去没你的好果子吃。你本来就是到处流浪的，我收留了你两年了，你还要怎么样？吃完饭就走，听到没有？”说完奶奶从门后拿出一柄锄，像余太君的龙头杖似的往地上重重一磕，“咚”地发出一声响。娘吓了一大跳，怯怯地看著婆婆，又慢慢低下头去看面前的饭碗，有泪水落在白花花的米饭上。在逼视下，娘突然有个很奇怪的举动，她将碗中的饭分了一大半给另一只空碗，然后可怜巴巴地看著奶奶。 <BR>　　奶奶呆了，原来，娘是向奶奶表示，每餐只吃半碗饭，只求别赶她走。心仿佛被人狠狠揪了几把，奶奶也是女人，她的强硬态度也是装出来的。奶奶别过头，生生地将热泪憋了回去，然后重新板起了脸说：“快吃快吃，吃了快走。在我家你会饿死的。”娘似乎绝望了，连那半碗饭也没吃，朗朗跄跄地出了门，却长时间站在门前不走。奶奶硬著心肠说：“你走，你走，不要回头。天底下富裕人家多著呢！”娘反而走拢来，一双手伸向婆婆怀里，原来，娘想抱抱我。 <BR>　　奶奶忧郁了一下，还是将襁褓中的我递给了娘。娘第一次将我搂在怀里，咧开嘴笑了，笑得春风满面。奶奶却如临大敌，两手在我身下接著，生怕娘的疯劲一上来，将我像扔垃圾一样丢掉。娘抱我的时间不足三分钟，奶奶便迫不及待地将我夺了过去，然后转身进屋关上了门。 <BR>　　当我懵懵懂懂地晓事时，我才发现，除了我，别的小伙伴都有娘。我找父亲要，找奶奶要，他们说，你娘死了。可小伙伴却告诉我：“你娘是疯子，被你奶奶赶走了。”我便找奶奶扯皮，要她还我娘，还骂她是“狼外婆”，甚至将她端给我的饭菜泼了一地。那时我还没有“疯”的概念，只知道非常想念她，她长什么样？还活著吗？没想到，在我六岁那年，离家5年的娘居然回来了。 <BR>那天，几个小伙伴飞也似地跑来报信：“小树，快去看，你娘回来了，你的疯娘回来了。” 我喜得屁颠屁颠的，撒腿就往外跑，父亲奶奶随著我也追了出来。这是我有记忆后第一次看到娘。她还是破衣烂衫，头发上还有些枯黄的碎草末，天知道是在那个草堆里过的夜。娘不敢进家门，却面对著我家，坐在村前稻场的石□上，手里还拿著个脏兮兮的气球。当我和一群小伙伴站在她面前时，她急切地从我们中间搜寻她的儿子。娘终于盯住我，死死地盯住我，裂著嘴叫我：“小树……球……球”她站起来，不停地扬著手中的气球，讨好地往我怀里塞。我却一个劲儿地往后退。我大失所望，没想到□□思夜想的娘居然是这样一副形象。一个小伙伴在一旁起哄说：“小树，你现在知道疯子是什么样了吧？就是你娘这样的。” <BR>我气愤地对小伙伴说：“她是你娘！你娘才是疯子，你娘才是这个样子。”我扭头就跑了。这个疯娘我不要了。奶奶和父亲却把娘领进了门。当年，奶奶撵走娘后，她的良心受到了拷问，随著一天天衰老，她的心再也硬不起来，所以主动留下了娘，而我老大不乐意，因为娘丢了我的面子。 <BR>　　我从没给娘好脸色看，从没跟她主动说过话，更没有喊她一声“娘”，我们之间的交流是以我“吼”为主，娘是绝不敢顶嘴的。 <BR>　　家里不能白养著娘，奶奶决定训练娘做些杂活。下地劳动时，奶奶就带著娘出去“观摩”，说不听话就要挨打。 <BR>　　过了些日子，奶奶以为娘已被自己训练得差不多了，就叫娘单独出去割猪草。没想到，娘只用了半小时就割了两筐“猪草”。奶奶一看，又急又慌，娘割的是人家田里正生浆拔穗的稻谷。奶奶气急败坏地骂她：“疯婆娘谷草不分……”奶奶正想著如何善后时，稻田的主人找来了，竟说是奶奶故意教唆的。奶奶火冒三丈，当著人家的面拿出根棒一下敲在娘的后腰上，说：“打死你这个疯婆娘，你给老娘滚远些……” <BR>　　娘虽疯，疼还是知道的，她一跳一跳地躲著棒槌，口里不停地发出“别、别……”的哀号。最后，人家看不过眼，主动说“算了，我们不追究了。以后把她看严点就是……”这场风波平息后，娘歪在地上抽泣著。我鄙夷地对她说：“草和稻子都分不清，你真是个猪。”话音刚落，我的后脑勺挨了一巴掌，是奶奶打的。奶奶瞪著眼骂我：“小兔崽子，你怎么说话的？再这么著，她也是你娘啊！”我不屑地嘴一撇：“我没有这样的傻疯娘！” <BR>　　“□，你真是越来越不象话了。看我不打你！”奶奶又举起巴掌，这时只见娘像弹簧一样从地上跳起，横在我和奶奶中间，娘指著自己的头，“打我、打我”地叫著。 <BR>　　我懂了，娘是叫奶奶打她，别打我。奶奶举在半空中的手颓然垂下，嘴里喃喃地说道：“这个疯婆娘，心里也知道疼爱自己的孩子啊！”我上学不久，父亲被邻村一位养鱼专业户请去守鱼池，每月能赚50元。娘仍然在***带领下出门干活，主要是打猪草，她没再惹什么大的乱子。 <BR>　　记得我读小学三年级饿一个冬日，天空突然下起了雨，奶奶让娘给我送雨伞。娘可能一路摔了好几跤，浑身像个泥猴似的，她站在教室的窗户旁望著我傻笑，口里还叫：“树……伞……”一些同学嘻嘻地笑，我如坐针毡，对娘恨得牙痒痒，恨她不识相，恨她给我丢人，更恨带头起哄的范嘉喜。当他还在夸张地模仿时，我抓起面前的文具盒，猛地向他砸过去，却被范嘉喜躲过了，他冲上前来掐住我的脖子，我俩撕打起来。我个子小，根本不是他的对手，被他轻易压在地上。这时，只听教室外传来“嗷”的一声长啸，娘像个大侠似地飞跑进来，一把抓起范嘉喜，拖到了屋外。都说疯子力气大，真是不假。娘双手将欺负我的范嘉喜举向半空，他吓得哭爹喊娘，一双胖乎乎的小腿在空中乱踢蹬。娘毫不理会，居然将他丢到了学校门口的水塘里，然后一脸漠然地走开了。娘为我闯了大祸，她却像没事似的。在我面前，娘又恢复了一副怯怯的神态，讨好地看著我。我明白这就是母爱，即使神志不清，母爱也是清醒的，因为她的儿子遭到了别人的欺负。当时我情不自禁地叫了声：“娘！”这是我会说话以来第一次喊她。娘浑身一震，久久地看著我，然后像个孩子似的羞红了脸，咧了咧嘴，傻傻地笑了。那天，我们母子俩第一次共撑一把伞回家。我把这事跟奶奶说了，奶奶吓得跌倒在椅子上，连忙请人去把爸爸叫了回来。爸爸刚进屋，一群拿著刀棒的壮年男人闯进我家，不分青红皂白，先将锅碗瓢盆砸了个稀巴烂，家里像发生了九级地震。这都是范嘉喜家请来的人，范父恶狠狠地指著爸爸的鼻子说：“我儿子吓出了神经病，现在卫生院躺著。你家要不拿出1000块钱的医药费，我他妈一把火烧了你家的房子。” <BR>1000块？爸爸每月才50块钱啊！看著杀气腾腾的范家人，爸爸的眼睛慢慢烧红了，他用非常恐怖的目光盯著娘，一只手飞快地解下腰间的皮带，劈头盖脸地向娘打去。一下又一下，娘像只惶惶偷生的老鼠，又像一只跑进死胡同的猎物，无助地跳著、躲著，她发出的凄厉声以及皮带抽在她身上发出的那种清脆的声响，我一辈子都忘不了。最后还是派出所所长赶来制止了爸爸施暴的手。派出所的调解结果是，双方互有损失，两不亏欠。谁在闹就抓谁！一帮人走后，爸看看满屋狼籍的锅碗碎片，又看看伤痕累累的娘，他突然将娘搂在怀里痛哭起来，说：“疯婆娘，不是我硬要打你，我要不打你，这事下不了地，咱们没钱赔人家啊。这都是家穷惹的祸！”爸又看著我说：“树儿，你一定要好好读书考大学。要不，咱们就这样被人欺负一辈子啊！”我懂事地点点头。 <BR>　　2000年夏，我以优异成绩考上了高中。积劳成疾的奶奶不幸去世，家里的日子更难了。恩施洲的民政局将我家列为特困家庭，每月补助40元钱，我所在的高中也适当减免了我的学杂费，我这才得以继续读下去。 <BR>　　由于是住读，学习又抓得紧，我很少回家。父亲依旧在为50元打工，为我送菜的担子就责无旁贷地落在娘身上。每次总是隔壁的婶婶帮忙为我抄好咸菜，然后交给娘送来。20公里的羊肠山路亏娘牢牢地记了下来，风雨无阻。也真是奇迹，凡是为儿子做的事，娘一点儿也不疯。除了母爱，我无法解释这种现象在医学上应该怎么破译。 <BR>　　2003年4月27日，又是一个星期天，娘来了，不但为我送来了菜，还带来了十几个野鲜桃。我拿起一个，咬了一口，笑著问她：“挺甜的，哪来的？”娘说：“我……我摘的……”没想到娘还会摘野桃，我由衷地表扬她：“娘，您真是越来越能干了。”娘嘿嘿地笑了。 <BR>　　娘临走前，我照列叮嘱她注意安全，娘哦哦地应著。送走娘，我又扎进了高考前最后的复习中。第二天，我正在上课，婶婶匆匆地赶来学校，让老师将我喊出教室。婶婶问我娘送菜来没有，我说送了，她昨天就回去了。婶婶说：“没有，她到现在还没回家。”我心一紧，娘该不会走错道吧？可这条路她走了三年，照理不会错啊。婶婶问：“你娘没说什么？”我说没有，她给我带了十几个野鲜桃哩。婶婶两手一拍：“坏了坏了，可能就坏在这野鲜桃上。”婶婶问我请了假，我们沿著山路往回找，回家的路上确有几棵野桃树，桃树上稀稀拉拉地挂著几个桃子，因为长在峭壁上才得以保存下来。我们同时发现一棵桃树有枝丫折断的痕迹，树下是百丈深渊。婶婶看了看我说，“我们到峭壁底下去看看吧！”我说，“婶婶你别吓我……”婶婶不由分说，拉著我就往山谷里走…… <BR>　　娘静静地躺在谷底，周边是一些散落的桃子，她手里还紧紧□著一个，身上的血早就凝固成了沉重的黑色。我悲痛得五脏俱裂，紧紧地抱住娘，说：“娘啊，我的苦命娘啊，儿悔不该说这桃子甜啊，是儿子要了你的命……娘啊，您活著没享一天福啊……”我将头贴在娘冰凉的脸上，哭得漫山遍野的石头都陪著我落泪…… <BR>　　2003年8月7日，在娘下葬后的第100天，湖北大学烫金的录取通知书穿过娘所走过的路，穿过那几株野桃树，穿过村前的稻场，径直“飞”进了我的家门。我把这份迟到的书信插在娘冷寂的坟头：“娘，儿出息了，您听到了吗？您可以含笑九泉了！”</FONT></SPAN> </TD></TR></TBODY></TABLE>]]></description>
</item>
</channel>
</rss>