﻿<?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/yigemaser/</link><description>学习+实践=进步</description><language>zh-cn</language><lastBuildDate>Thu, 04 Dec 2008 23:31:01 GMT</lastBuildDate><pubDate>Thu, 04 Dec 2008 23:31:01 GMT</pubDate><ttl>60</ttl><item><title>iframe横向滚动条控制</title><link>http://www.blogjava.net/yigemaser/archive/2008/09/12/228549.html</link><dc:creator>满店香</dc:creator><author>满店香</author><pubDate>Fri, 12 Sep 2008 03:46:00 GMT</pubDate><guid>http://www.blogjava.net/yigemaser/archive/2008/09/12/228549.html</guid><wfw:comment>http://www.blogjava.net/yigemaser/comments/228549.html</wfw:comment><comments>http://www.blogjava.net/yigemaser/archive/2008/09/12/228549.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/yigemaser/comments/commentRss/228549.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yigemaser/services/trackbacks/228549.html</trackback:ping><description><![CDATA[在网上找了相关资料后，很多人都是把&#8220;<span style="color: gray">style="overflow-x:hidden" </span>",但我用了这种方法，还是不行，<br />
最后把页面上的<font face="Verdana">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</font><br />
在&lt;body&gt;中加<span style="color: gray">style="overflow-x:hidden" 就可以了，<br />
</span>
<img src ="http://www.blogjava.net/yigemaser/aggbug/228549.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yigemaser/" target="_blank">满店香</a> 2008-09-12 11:46 <a href="http://www.blogjava.net/yigemaser/archive/2008/09/12/228549.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>时间处理</title><link>http://www.blogjava.net/yigemaser/archive/2008/09/09/227891.html</link><dc:creator>满店香</dc:creator><author>满店香</author><pubDate>Tue, 09 Sep 2008 03:10:00 GMT</pubDate><guid>http://www.blogjava.net/yigemaser/archive/2008/09/09/227891.html</guid><wfw:comment>http://www.blogjava.net/yigemaser/comments/227891.html</wfw:comment><comments>http://www.blogjava.net/yigemaser/archive/2008/09/09/227891.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yigemaser/comments/commentRss/227891.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yigemaser/services/trackbacks/227891.html</trackback:ping><description><![CDATA[http://robinjie.javaeye.com/blog/54386
<img src ="http://www.blogjava.net/yigemaser/aggbug/227891.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yigemaser/" target="_blank">满店香</a> 2008-09-09 11:10 <a href="http://www.blogjava.net/yigemaser/archive/2008/09/09/227891.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简单可行的sitemesh</title><link>http://www.blogjava.net/yigemaser/archive/2008/07/17/215464.html</link><dc:creator>满店香</dc:creator><author>满店香</author><pubDate>Thu, 17 Jul 2008 05:34:00 GMT</pubDate><guid>http://www.blogjava.net/yigemaser/archive/2008/07/17/215464.html</guid><wfw:comment>http://www.blogjava.net/yigemaser/comments/215464.html</wfw:comment><comments>http://www.blogjava.net/yigemaser/archive/2008/07/17/215464.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yigemaser/comments/commentRss/215464.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yigemaser/services/trackbacks/215464.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 这个框架蛮不错<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; <a href="http://blog.sina.com.cn/s/blog_5287f3aa0100apee.html">使用sitemesh建立复合视图</a><br />
&nbsp;&nbsp;&nbsp; 
<img src ="http://www.blogjava.net/yigemaser/aggbug/215464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yigemaser/" target="_blank">满店香</a> 2008-07-17 13:34 <a href="http://www.blogjava.net/yigemaser/archive/2008/07/17/215464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle10用plsql访问，中文显示乱码</title><link>http://www.blogjava.net/yigemaser/archive/2008/06/20/209395.html</link><dc:creator>满店香</dc:creator><author>满店香</author><pubDate>Fri, 20 Jun 2008 03:33:00 GMT</pubDate><guid>http://www.blogjava.net/yigemaser/archive/2008/06/20/209395.html</guid><wfw:comment>http://www.blogjava.net/yigemaser/comments/209395.html</wfw:comment><comments>http://www.blogjava.net/yigemaser/archive/2008/06/20/209395.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yigemaser/comments/commentRss/209395.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yigemaser/services/trackbacks/209395.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; window系统，修改注册表，&nbsp;&nbsp;&nbsp;&nbsp;将NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK 改为&nbsp; AMERICAN_AMERICA.US7ASCII，重新启动
<img src ="http://www.blogjava.net/yigemaser/aggbug/209395.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yigemaser/" target="_blank">满店香</a> 2008-06-20 11:33 <a href="http://www.blogjava.net/yigemaser/archive/2008/06/20/209395.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>试用eclipse uml插件 green,AmaterasUML_1.3.1,idafeuml 第一阶段。</title><link>http://www.blogjava.net/yigemaser/archive/2008/05/21/201796.html</link><dc:creator>满店香</dc:creator><author>满店香</author><pubDate>Tue, 20 May 2008 22:22:00 GMT</pubDate><guid>http://www.blogjava.net/yigemaser/archive/2008/05/21/201796.html</guid><wfw:comment>http://www.blogjava.net/yigemaser/comments/201796.html</wfw:comment><comments>http://www.blogjava.net/yigemaser/archive/2008/05/21/201796.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yigemaser/comments/commentRss/201796.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yigemaser/services/trackbacks/201796.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; 上到<a href="http://www.eclipseplugincentral.com/">http://www.eclipseplugincentral.com/</a>中心<br />
&nbsp;&nbsp; 下载了三个插件，分别是green,AmaterasUML_1.3.1,idafeuml.前面两个是下载的，后面一个是通过eclipse的update manage下载的，我都把它们放到一个单独的目录，然后通过link方式加入到eclipse。<br />
&nbsp;&nbsp;&nbsp; 启动eclispse之后，检查发现插件都安装成功，但是点击图标，都报错，报unable load class XXX错误，检查了包路径，发现类确实在啊，是什么问题呢。后来发现是path路径设置的不对，指向的是jdk1.4。后来改为jdk5就没问题啦。<br />
&nbsp;&nbsp;&nbsp;&nbsp;经过简单测试3个都能够使用。不错。下一篇，再写写这三个使用的比较。先睡啦。<br />
&nbsp;&nbsp;&nbsp; 本来想用rose的。找了半天找不到免费的rose，再说这东西又大又贵，心血来潮，用用免费的，这东西技术含量也不是特别高，干嘛搞的那么高深非得用rose。无非就是画画类图，将类图映射为代码。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 
<img src ="http://www.blogjava.net/yigemaser/aggbug/201796.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yigemaser/" target="_blank">满店香</a> 2008-05-21 06:22 <a href="http://www.blogjava.net/yigemaser/archive/2008/05/21/201796.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>复习 一些基本知识复习-转java面试考点</title><link>http://www.blogjava.net/yigemaser/archive/2008/05/20/201655.html</link><dc:creator>满店香</dc:creator><author>满店香</author><pubDate>Tue, 20 May 2008 07:00:00 GMT</pubDate><guid>http://www.blogjava.net/yigemaser/archive/2008/05/20/201655.html</guid><wfw:comment>http://www.blogjava.net/yigemaser/comments/201655.html</wfw:comment><comments>http://www.blogjava.net/yigemaser/archive/2008/05/20/201655.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yigemaser/comments/commentRss/201655.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yigemaser/services/trackbacks/201655.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 温故而知新还是很重要的，长期不复习，有些东西就会模糊，在工作中可能就会犯些低级错误。所以今天将一篇java考点拿来复习一下，还是很有收获的。<br />
<p><strong>第一，谈谈final, finally, finalize的区别。<br />
</strong><br />
　final 用于声明属性，方法和类，分别表示属性不可变，方法不可覆盖，类不可继承。finally是异常处理语句结构的一部分，表示总是执行。finalize是 Object类的一个方法，在垃圾收集器执行的时候会调用被回收对象的此方法，可以覆盖此方法提供垃圾收集时的其他资源回收，例如关闭文件等。</p>
<p><strong>第二，Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类，是否可以implements(实现)interface(接口)?</strong> <br />
<br />
　可以继承其他类或完成其他接口，在swing编程中常用此方式。　</p>
<p><strong>第三，Static Nested Class 和 Inner Class的不同，说得越多越好(面试题有的很笼统)。<br />
</strong><br />
　Static Nested Class是被声明为静态（static）的内部类，它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。　　</p>
<p><strong>第四，&amp;和&amp;&amp;的区别。<br />
</strong><br />
&nbsp;　&amp;是位运算符，表示按位与运算，&amp;&amp;是逻辑运算符，表示逻辑与（and）.　　</p>
<p><strong>第五，HashMap和Hashtable的区别。<br />
<br />
</strong>　HashMap是Hashtable的轻量级实现（非线程<a class="channel_keylink" href="http://security.chinaitlab.com/" target="_blank">安全</a>的实现），他们都完成了Map接口，主要区别在于HashMap允许空（null）键值（key）,由于非线程<a class="channel_keylink" href="http://security.chinaitlab.com/" target="_blank">安全</a>，效率上可能高于Hashtable.　　</p>
<p><strong>第六，Collection 和 Collections的区别。<br />
　</strong>　<br />
　Collection是集合类的上级接口，继承与他的接口主要有Set 和List.Collections是针对集合类的一个帮助类，他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。　　</p>
<p><strong>第七，什么时候用assert。<br />
<br />
</strong>　1.4新增关键字（语法），用于测试boolean表达式状态，可用于调试程序。使用方法 assert <boolean>，表示如果表达式为真（true）,则下面的语句执行，否则抛出AssertionError。另外的使用方式assert &lt; boolean表达式&gt;:<other>，表示如果表达式为真，后面的表达式忽略，否则后面表达式的值用于AssertionError的构建参数。注意编译时要增加-source 1.4 参数，否则报错。]运行时要增加 &#8211;ea参数，否则assert行被忽略　　</other></boolean></p>
<p><strong>第八，GC是什么? 为什么要有GC? <br />
　</strong>　<br />
　GC是垃圾收集的意思（Gabage Collection）,内存处理是编程人员容易出现问题的地方，忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃，<a class="channel_keylink" href="http://java.chinaitlab.com/" target="_blank">Java</a>提供的GC功能可以 自动监测对象是否超过作用域从而达到自动回收内存的目的，<a class="channel_keylink" href="http://java.chinaitlab.com/" target="_blank">Java</a>语言没有提供释放已分配内存的显示操作方法。 　　</p>
<p><strong>第九，String s = new String("xyz");创建了几个String Object?<br />
</strong><br />
　两个　　</p>
<p><strong>第十，Math.round(11.5)等於多少? Math.round(-11.5)等於多少? <br />
<br />
</strong>　Math.round(11.5)==12Math.round(-11.5)==-11round方法返回与参数最接近的长整数，参数加1/2后求其floor.　　</p>
<p><strong>第十一，short s1 = 1; s1 = s1 + 1;有什么错?</strong> <strong>short s1 = 1; s1 += 1;有什么错?</strong></p>
<p>　short s1 = 1; s1 = s1 + 1; （s1+1运算结果是int型，需要强制转换类型）short s1 = 1; s1 += 1;（可以正确编译）　　</p>
<p><strong>第十二，sleep() 和 wait() 有什么区别?</strong> <br />
<br />
　sleep是线程类（Thread）的方法，导致此线程暂停执行指定时间，给执行机会给其他线程，但是监控状态依然保持，到时后会自动恢复。调用 sleep不会释放对象锁。wait是Object类的方法，对此对象调用wait方法导致本线程放弃对象锁，进入等待此对象的等待锁定池，只有针对此对 象发出notify方法（或notifyAll）后本线程才进入对象锁定池准备获得对象锁进入运行状态。　　</p>
<p><strong>第十三，Java有没有goto?</strong> <br />
<br />
　没有　　很十三的问题，如果哪个面试的问到这个问题，我劝你还是别进这家公司。</p>
<p><strong>第十四，数组有没有length()这个方法? String有没有length()这个方法？<br />
<br />
</strong>　数组没有length()这个方法，有length的属性。<br />
　String有有length()这个方法。</p>
<p><strong>第十五，Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?<br />
</strong><br />
　方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现， 重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数，我们说该方法被重写 (Overriding)。子类的对象使用这个方法时，将调用子类中的定义，对它而言，父类中的定义如同被&#8220;屏蔽&#8221;了。如果在一个类中定义了多个同名的方 法，它们或有不同的参数个数或有不同的参数类型，则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。</p>
<p><strong>第十六，Set里的元素是不能重复的，那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?<br />
</strong><br />
　Set里的元素是不能重复的，那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。<br />
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖，为的是当两个分离的对象的内容和类型相配的话，返回真值。</p>
<p><strong>第十七，给我一个你最常见到的runtime exception。</strong></p>
<p>参考如下：<br />
ArithmeticException, <br />
ArrayStoreException, <br />
BufferOverflowException, <br />
BufferUnderflowException, <br />
CannotRedoException, <br />
CannotUndoException, <br />
ClassCastException, <br />
CMMException, <br />
ConcurrentModificationException, <br />
DOMException, <br />
EmptyStackException, <br />
IllegalArgumentException, <br />
IllegalMonitorStateException, <br />
IllegalPathStateException, <br />
IllegalStateException, <br />
ImagingOpException, <br />
IndexOutOfBoundsException, <br />
MissingResourceException, <br />
NegativeArraySizeException, <br />
NoSuchElementException, <br />
NullPointerException, <br />
ProfileDataException, <br />
ProviderException, <br />
RasterFormatException, <br />
SecurityException, <br />
SystemException, <br />
UndeclaredThrowableException, <br />
UnmodifiableSetException, <br />
UnsupportedOperationException</p>
<p><strong>第十八，error和exception有什么区别?<br />
</strong><br />
　error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。<br />
　exception 表示一种设计或实现问题。也就是说，它表示如果程序运行正常，从不会发生的情况。</p>
<p><strong>第十九，List, Set, Map是否继承自Collection接口?<br />
</strong><br />
List，Set是<br />
Map不是</p>
<p><strong>第二十，abstract class和interface有什么区别?<br />
</strong><br />
　声明方法的存在而不去实现它的类被叫做抽象类（abstract class），它用于要创建一个体现某些基本行为的类，并为该类声明方法，但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量，其类型是一个抽象类，并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现，否则它们也是抽象类为。取而代之，在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。<br />
<br />
　接口（interface）是抽象类的变体。在接口中，所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的，没有一个 有程序体。接口只可以定义static final成员变量。接口的实现与子类相似，除了该实现类不能从接口定义中继承行为。当类实现特殊接口时，它定义（即将程序体给予）所有这种接口的方法。 然后，它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类，它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到 接口类型或从接口类型转换，instanceof 运算符可以用来决定某对象的类是否实现了接口。</p>
<p><strong>第二十一，abstract的method是否可同时是static,是否可同时是native，是否可同时是synchronized?<br />
<br />
</strong>都不能</p>
<p><strong>第二十二，接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?<br />
<br />
</strong>　接口可以继承接口。抽象类可以实现(implements)接口，抽象类是否可继承实体类，但前提是实体类必须有明确的构造函数。</p>
<p><strong>第二十三，启动一个线程是用run()还是start()?<br />
</strong><br />
　启动一个线程是调用start()方法，使线程所代表的虚拟处理机处于可运行状态，这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。</p>
<p><strong>第二十四，构造器Constructor是否可被override?<br />
</strong><br />
　构造器Constructor不能被继承，因此不能重写Overriding，但可以被重载Overloading。</p>
<p><strong>第二十五，是否可以继承String类?<br />
</strong><br />
　String类是final类故不可以继承。</p>
<p><strong>第二十六，当一个线程进入一个对象的一个synchronized方法后，其它线程是否可进入此对象的其它方法?<br />
<br />
</strong>　不能，一个对象的一个synchronized方法只能由一个线程访问。</p>
<p><strong>第二十七，try {}里有一个return语句，那么紧跟在这个try后的finally {}里的code会不会被执行，什么时候被执行，在return前还是后?<br />
</strong><br />
会执行，在return前执行。</p>
<p><strong>第二十八，编程题: 用最有效率的方法算出2乘以8等於几?<br />
</strong><br />
有C背景的程序员特别喜欢问这种问题。<br />
2 &lt;&lt; 3</p>
<p><strong>第二十九，两个对象值相同(x.equals(y) == true)，但却可有不同的hash code，这句话对不对?<br />
</strong><br />
不对，有相同的hash code。</p>
<p><strong>第三十，当一个对象被当作参数传递到一个方法后，此方法可改变这个对象的属性，并可返回变化后的结果，那么这里到底是值传递还是引用传递?</strong> <br />
<br />
　是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时，参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变，但对象的引用是永远不会改变的。</p>
<p><strong>第三十一，swtich是否能作用在byte上，是否能作用在long上，是否能作用在String上?<br />
</strong><br />
　switch（expr1）中，expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。</p>
<p><strong>第三十二，编程题: 写一个Singleton出来。<br />
</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp; Singleton模式主要作用是保证在Java应用程序中，一个类Class只有一个实例存在。<br />
一般Singleton模式通常有几种种形式:<br />
<br />
　第一种形式: 定义一个类，它的构造函数为private的，它有一个static的private的该类变量，在类初始化时实例话，通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。</p>
<p>
<table style="border-top-style: dotted; border-right-style: dotted; border-left-style: dotted; border-bottom-style: dotted" bordercolor="#cccccc" cellspacing="0" cellpadding="3" width="500" align="center" bgcolor="#f3f3f3" border="1" heihgt="">
    <tbody>
        <tr>
            <td>public class Singleton {<br />
            　　private Singleton(){}<br />
            　　//在自己内部定义自己一个实例，是不是很奇怪？<br />
            　　//注意这是private 只供内部调用<br />
            　　private static Singleton instance = new Singleton();<br />
            　　//这里提供了一个供外部访问本class的静态方法，可以直接访问　　<br />
            　　public static Singleton getInstance() {<br />
            　　　　return instance; 　　<br />
            　　 } <br />
            }&nbsp;&nbsp;</td>
        </tr>
    </tbody>
</table>
</p>
<p><br />
第二种形式: </p>
<p>
<table style="border-top-style: dotted; border-right-style: dotted; border-left-style: dotted; border-bottom-style: dotted" bordercolor="#cccccc" cellspacing="0" cellpadding="3" width="500" align="center" bgcolor="#f3f3f3" border="1" heihgt="">
    <tbody>
        <tr>
            <td>public class Singleton { <br />
            　　private static Singleton instance = null;<br />
            　　public static synchronized Singleton getInstance() {<br />
            　　//这个方法比上面有所改进，不用每次都进行生成对象，只是第一次　　　 　<br />
            　　//使用时生成实例，提高了效率！<br />
            　　if (instance==null)<br />
            　　　　instance＝new Singleton();<br />
            return instance; 　　} <br />
            }&nbsp;</td>
        </tr>
    </tbody>
</table>
<br />
&nbsp;<br />
其他形式:<br />
定义一个类，它的构造函数为private的，所有方法为static的。<br />
一般认为第一种形式要更加安全些 <br />
</p>
<img src ="http://www.blogjava.net/yigemaser/aggbug/201655.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yigemaser/" target="_blank">满店香</a> 2008-05-20 15:00 <a href="http://www.blogjava.net/yigemaser/archive/2008/05/20/201655.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>复习 接口隔离原则</title><link>http://www.blogjava.net/yigemaser/archive/2008/05/19/201297.html</link><dc:creator>满店香</dc:creator><author>满店香</author><pubDate>Sun, 18 May 2008 17:24:00 GMT</pubDate><guid>http://www.blogjava.net/yigemaser/archive/2008/05/19/201297.html</guid><wfw:comment>http://www.blogjava.net/yigemaser/comments/201297.html</wfw:comment><comments>http://www.blogjava.net/yigemaser/archive/2008/05/19/201297.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yigemaser/comments/commentRss/201297.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yigemaser/services/trackbacks/201297.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<div><font face="宋体" size="2"><span class="277092403-01032007"><strong>一、ISP简介（<span class="277092403-01032007">ISP--Interface Segregation Principle</span>）：</strong></span></font></div>
<div><font face="宋体" size="2"><span class="277092403-01032007">使用多个专门的接口比使用单一的总接口要好。<br />
一个类对另外一个类的依赖性应当是建立在最小的接口上的。<br />
一个接口代表一个角色，不应当将不同的角色都交给一个接口。没有关系的接口合并在一起，形成一个臃肿的大接口，这是对角色和接口的污染。</span></font></div>
<div><font face="宋体" size="2"></font>&nbsp;</div>
<div><font face="宋体" size="2"><span class="277092403-01032007">&#8220;不应该强迫客户依赖于它们不用的方法。接口属于客户，不属于它所在的类层次结构。&#8221;这个说得很明白了，再通俗点说，不要强迫客户使用它们不用的方法，如果强迫用户使用它们不使用的方法，那么这些客户就会面临由于这些不使用的方法的改变所带来的改变。</span></font></div>
<div><font face="宋体" size="2"></font>&nbsp;</div>
<div><font face="宋体" size="2"><span class="277092403-01032007"><strong>二、举例说明：</strong></span></font></div>
<div><font face="宋体" size="2"><span class="277092403-01032007">参考下图的设计，在这个设计里，取款、存款、转帐都使用一个通用界面接口，也就是说，每一个类都被强迫依赖了另两个类的接口方法，那么每个类有可能因为另外两个类的方法(跟自己无关)而被影响。拿取款来说，它根本不关心&#8220;存款操作&#8221;和&#8220;转帐操作&#8221;，可是它却要受到这两个方法的变化的影响。<br />
</span></font></div>
<div><font face="宋体" size="2"></font></div>
<div><font face="宋体" size="2"><span class="277092403-01032007"><img height="514" alt="" src="http://www.cnblogs.com/images/cnblogs_com/feipeng/Pic01.jpg" width="375" border="0" /><br />
那么我们该如何解决这个问题呢？参考下图的设计，为每个类都单独设计专门的操作接口，使得它们只依赖于它们关系的方法，这样就不会互相影了！</span></font></div>
<div><font face="宋体" size="2"></font></div>
<div><font face="宋体" size="2"><span class="277092403-01032007"><font face="宋体" size="2"><span class="277092403-01032007"><strong><img height="644" alt="" src="http://www.cnblogs.com/images/cnblogs_com/feipeng/Pic02.jpg" width="404" border="0" /><br />
三、实现方法：</strong><br />
1、使用委托分离接口<br />
2、使用多重继承分离接口</span></font></div>
<div><font face="宋体" size="2"></font></div>
</span></font>
<img src ="http://www.blogjava.net/yigemaser/aggbug/201297.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yigemaser/" target="_blank">满店香</a> 2008-05-19 01:24 <a href="http://www.blogjava.net/yigemaser/archive/2008/05/19/201297.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring让LOB数据操作变得简单易行的思考</title><link>http://www.blogjava.net/yigemaser/archive/2008/05/17/201174.html</link><dc:creator>满店香</dc:creator><author>满店香</author><pubDate>Sat, 17 May 2008 15:11:00 GMT</pubDate><guid>http://www.blogjava.net/yigemaser/archive/2008/05/17/201174.html</guid><wfw:comment>http://www.blogjava.net/yigemaser/comments/201174.html</wfw:comment><comments>http://www.blogjava.net/yigemaser/archive/2008/05/17/201174.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yigemaser/comments/commentRss/201174.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yigemaser/services/trackbacks/201174.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; spring中对lob操作就像普通对待String一样，不错。以前写代码的时候总是要单独对lob进行封装编程。地址如下。<br />
&nbsp;&nbsp; http://dev.yesky.com/5/3484005_4.shtml<br />
&nbsp;&nbsp; <a href="http://space.itpub.net/10714335/viewspace-167565">http://space.itpub.net/10714335/viewspace-167565</a><br />
&nbsp;&nbsp; 不过，我觉得是否可以再添加一层。再封装，而无需配置hibernate属性文件，岂不是更好。<br />
&nbsp;&nbsp; 比如下面这种情况。某个字段以前是varchar 4000以内，后来变动为clob。这样的话，需要修改hibernate属性文件,指定某个字段是clob类型，Spring能否增加自动识别，将vachar和clob识为一种类型，那样的话岂不是更爽。写到这里，我认为干脆，除非用户自定义数据类型，对于各种数据类型,都能有自动识别功能，无需再hibernate属性文件中指定，那样的话，我想会更棒。<br />
&nbsp;&nbsp; 在看dwr源码中发现，dwr源码对于数据类型的封装就做到了这一点，数据类型的映射做到了自动化。<br />
&nbsp;&nbsp; 
<img src ="http://www.blogjava.net/yigemaser/aggbug/201174.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yigemaser/" target="_blank">满店香</a> 2008-05-17 23:11 <a href="http://www.blogjava.net/yigemaser/archive/2008/05/17/201174.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDBC的隔离级别研究 (转)</title><link>http://www.blogjava.net/yigemaser/archive/2008/05/12/199923.html</link><dc:creator>满店香</dc:creator><author>满店香</author><pubDate>Sun, 11 May 2008 18:51:00 GMT</pubDate><guid>http://www.blogjava.net/yigemaser/archive/2008/05/12/199923.html</guid><wfw:comment>http://www.blogjava.net/yigemaser/comments/199923.html</wfw:comment><comments>http://www.blogjava.net/yigemaser/archive/2008/05/12/199923.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yigemaser/comments/commentRss/199923.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yigemaser/services/trackbacks/199923.html</trackback:ping><description><![CDATA[&nbsp;
<h1><img height="16" alt="原创" src="http://blog.csdn.net/images/authorship.gif" width="15" border="0" />&nbsp;<a href="http://blog.csdn.net/jkl_123/archive/2007/07/18/1696694.aspx">JDBC的隔离级别研究 </a></h1>
<div class="blogstory"><span id="Post.ascx_ViewPost_PreviousAndNextEntriesUp">
<h3></h3>
</span><script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>&nbsp;在通过JDBC对数据库进行并发访问时，为了解决并发之间的锁的控制，JDBC提供了一个隔离级别（Isolation）的方式解决并发访问的问题。
<div>&nbsp;&nbsp;&nbsp;&nbsp;因为最近时间在解决公司工作流在客户现场的高并发情况下经常出现死锁（dead lock）或者事务超时情况，而工作流的应用大多数主要这几种业务：查询工作项、领取工作、完成（或者提交）工作。根据以前公司在其他应用中并没有出现这 些故障，对所上线的环境进行的分析，主要差异是出问题的系统是DB2（其他系统基本上是ORACLE）。针对上面的问题进行了下面分析。</div>
<div>&nbsp;</div>
<div><strong>数据库的差异性：</strong></div>
<ul>
    <li>ORACLE数据库比较强调能够支持高并发情况下的访问，保证能够&#8220;读&#8221;到数据
    <li>DB2数据库比较强调高并发情况下的数据完整性，保证能够&#8220;读一致&#8221;的数据 </li>
</ul>
<div><strong>数据库的隔离级别分析：</strong></div>
<ul>
    <li>ORACLE缺省使用的是CS级别的数据库访问
    <li>DB2缺省使用的是RS级别的数据库访问 </li>
</ul>
<div><strong>JDBC的数据隔离级别设置：</strong></div>
<div>&nbsp;</div>
<div>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 104.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="139">
            <div align="center"><strong><em><span style="font-size: 12pt">JDBC</span></em></strong><strong><em></em></strong></div>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; border-left-color: rgb(236,233,216); padding-bottom: 0cm; width: 117pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="156">
            <div align="center"><strong><em><span style="font-size: 12pt">数据库隔离级别</span></em></strong></div>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; border-left-color: rgb(236,233,216); padding-bottom: 0cm; width: 204.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="273">
            <div align="center"><strong><em><span style="font-size: 12pt">数据访问情况</span></em></strong></div>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 104.4pt; border-top-color: rgb(236,233,216); padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="139">
            <div>TRANSACTION_READ_UNCOMMITTED</div>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-left-color: rgb(236,233,216); padding-bottom: 0cm; width: 117pt; border-top-color: rgb(236,233,216); padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="156">
            <div>ur</div>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-left-color: rgb(236,233,216); padding-bottom: 0cm; width: 204.7pt; border-top-color: rgb(236,233,216); padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="273">
            <div>就是俗称&#8220;脏读&#8221;（<span>dirty read），在没有提交数据时能够读到已经更新的数据</span></div>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 104.4pt; border-top-color: rgb(236,233,216); padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="139">
            <div>TRANSACTION_READ_COMMITTED</div>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-left-color: rgb(236,233,216); padding-bottom: 0cm; width: 117pt; border-top-color: rgb(236,233,216); padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="156">
            <div>cs</div>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-left-color: rgb(236,233,216); padding-bottom: 0cm; width: 204.7pt; border-top-color: rgb(236,233,216); padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="273">
            <div>在一个事务中进行查询时，允许读取提交前的数据，数据提交后，当前查询就可以读取到数据。update数据时候并不锁住表</div>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 104.4pt; border-top-color: rgb(236,233,216); padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="139">
            <div>TRANSACTION_REPEATABLE_READ</div>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-left-color: rgb(236,233,216); padding-bottom: 0cm; width: 117pt; border-top-color: rgb(236,233,216); padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="156">
            <div>rs</div>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-left-color: rgb(236,233,216); padding-bottom: 0cm; width: 204.7pt; border-top-color: rgb(236,233,216); padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="273">
            <div>在一个事务中进行查询时，不允许读取其他事务update的数据，允许读取到其他事务提交的新增数据</div>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 104.4pt; border-top-color: rgb(236,233,216); padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="139">
            <div>TRANSACTION_SERIALIZABLE</div>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-left-color: rgb(236,233,216); padding-bottom: 0cm; width: 117pt; border-top-color: rgb(236,233,216); padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="156">
            <div>rr</div>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-left-color: rgb(236,233,216); padding-bottom: 0cm; width: 204.7pt; border-top-color: rgb(236,233,216); padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="273">
            <div>在一个事务中进行查询时，不允许任何对这个查询表的数据修改。</div>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div>&nbsp;</div>
<div><strong>在websphere环境中通过JDBC连接DB2数据库的隔离级别的情况：</strong></div>
<ul>
    <li>只有使用实体（Entity Bean）的情况下可以通过修改ibm的部署文件修改当前数据操作的隔离级别
    <li>如果通过session bean，jdbc connection方式获得的数据库连接缺省都是TRANSACTION_REPEATABLE_READ
    <li>在通过数据源获得DB2的数据库连接时候，DB2的JDBC driver会缺省修改当前连接的隔离级别到<span>TRANSACTION_REPEATABLE_READ</span> </li>
</ul>
<div><span><strong>工作流应用分析：</strong></span></div>
<div>&nbsp;</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;在工作流应用中，主要是这些操作：查询工作项、领取工作、完成（或者提交）工作。</span></div>
<ul>
    <li><span>查询工作项，数据库操作是select，在工作流应用中的操作频率最高</span>
    <li><span>领取工作，数据库操作是update，在工作流应用中的操作频率较低</span>
    <li><span>完成（或者提交）工作，数据库操作主要是update、insert，在工作流应用中的操作频率较低</span> </li>
</ul>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;根据上面的应用分析，工作流应用中大量的select，少量对数据进行update，而发生死锁（dead lock）的现象是在DB2，在ORACLE上基本没有发生的主要原因是：</span></div>
<div>&nbsp;</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000"><strong>在DB2中数据库的隔离级别是rs，如果系统中有大量的select，特别是如果查询的工作项特别多，查询慢的情况下，造成其他的update操作等待select请求结束，如果又有大量的select请求过来时会出现死锁（dead lock）</strong></font></span></div>
<div>&nbsp;</div>
<div><span><strong>解决方案：</strong></span></div>
<div>&nbsp;</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;首先考虑参照ORACLE的模式，将DB2的JDBC连接的隔离级别改为<span>TRANSACTION_READ_COMMITTED，来提高并发能力，通常情况下获取数据库连接都是通过一个方法获得，因此可以直接改这个方法获得连接后直接将JDBC的Connection的隔离级别调整为<span>TRANSACTION_READ_COMMITTED。但是在验证这种方案是发现了一个问题：</span></span></span></div>
<div><span><span>&nbsp;&nbsp;&nbsp;&nbsp;如果在一个JTA事务中，先获取一个JDBC的Connection，程序修改了隔离级别到<span>TRANSACTION_READ_COMMITTED， 在这个Connection中进行了数据库操作，然后关闭连接，再从数据源中获取Connection时候，DB2的Driver会修改当前的连接的隔离 级别，造成了在一个全局事务中修改了隔离级别，系统会自动抛出异常。</span></span></span></div>
<div>&nbsp;</div>
<div><span><span><span>&nbsp;&nbsp;&nbsp;&nbsp;上面的方案中是对任何一个Connection都修改隔离级别，因为存在问题，因此只能对单个数 据库请求进行隔离级别的操作。对所有的获取工作项的select查询语句之后添加上 with cs的方式，这样这条查询请求并不会锁住表，其他update操作就能够正常工作。</span></span></span></div>
</div>
<img src ="http://www.blogjava.net/yigemaser/aggbug/199923.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yigemaser/" target="_blank">满店香</a> 2008-05-12 02:51 <a href="http://www.blogjava.net/yigemaser/archive/2008/05/12/199923.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring 2.0 包说明</title><link>http://www.blogjava.net/yigemaser/archive/2008/05/04/198044.html</link><dc:creator>满店香</dc:creator><author>满店香</author><pubDate>Sun, 04 May 2008 04:38:00 GMT</pubDate><guid>http://www.blogjava.net/yigemaser/archive/2008/05/04/198044.html</guid><wfw:comment>http://www.blogjava.net/yigemaser/comments/198044.html</wfw:comment><comments>http://www.blogjava.net/yigemaser/archive/2008/05/04/198044.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yigemaser/comments/commentRss/198044.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yigemaser/services/trackbacks/198044.html</trackback:ping><description><![CDATA[<table id="forum_main" cellspacing="1">
    <tbody id="posts">
        <tr id="p_510772">
            <td class="postauthor">
            <ul>
                <li></li>
            </ul>
            </td>
            <td class="postcontent">
            <div class="postactions">
            <div class="description">时间：2008-04-08 关键字: <strong>spring 2.0 包说明</strong></div>
            <div class="links"><a href="http://www.javaeye.com/forums/39/topics/180550/posts/510772/quote">引用</a> </div>
            </div>
            <div class="postbody clearfix">Spring压缩包目录说明 <br />
            关键字: sring <span class="hilite2"><span class="hilite2">jar</span></span> <br />
            1. Spring压缩包目录说明 <br />
            <br />
            aspectj目录下是在Spring框架下使用aspectj的源代码和测试程序文件。 <br />
            Aspectj是java最早的提供AOP的应用框架。 <br />
            dist 目录下是Spring 的发布包，关于发布包下面会详细进行说明。 <br />
            docs 目录下是相关的文档，包括有Spring api 的javadoc、reference 参考指南、Spring的标签库使用文件及Spring MVC 的MVC-step-by-step 讲解与示例。都是很好的文档，值得好好研究一下。 <br />
            lib 目录下是Spring 所依赖的第三方开源包。 <br />
            mock 目录下是Spring 辅助应用测试的Mock 源程序。 <br />
            samples 目录下是Spring 的示例源程序及简单的webapp 示例框架的示例配置，值得好好学习的有jpetstore 及petclinic，当然其它的countries、imagedb、tiles-example 也可以好好参考一下。 <br />
            src 目录下是Spring 的源程序。 <br />
            test 目录下Spring 的单元测试源程序。 <br />
            tiger 目录下是针对在Spring框架中使用java 1.5的源程序及测试程序。Tiger是jdk 1.5版本的开发代号。 <br />
            <br />
            根目录的其他文件为编译和说明文件。 <br />
            <br />
            2.Spring 包结构说明 <br />
            <br />
            接下来详细说说dist 目录下<span class="hilite2"><span class="hilite2">jar</span></span> 包的相关内容。了解这些内容有助于我们减小发布包的大小，同时也可以增加对Spring架构的了解。 <br />
            <br />
            spring.<span class="hilite2"><span class="hilite2">jar</span></span> 是包含有完整发布模块的单个<span class="hilite2"><span class="hilite2">jar</span></span> 包。但是不包括mock.<span class="hilite2"><span class="hilite2">jar</span></span>, aspects.<span class="hilite2"><span class="hilite2">jar</span></span>, spring-portlet.<span class="hilite2"><span class="hilite2">jar</span></span>, and spring-hibernate2.<span class="hilite2"><span class="hilite2">jar</span></span>。 <br />
            <br />
            spring-src.zip就是所有的源代码压缩包。 <br />
            <br />
            除了spring.<span class="hilite2"><span class="hilite2">jar</span></span> 文件，Spring 还包括有其它21 个独立的<span class="hilite2"><span class="hilite2">jar</span></span> 包，各自包含着对应的Spring组件，用户可以根据自己的需要来选择组合自己的<span class="hilite2"><span class="hilite2">jar</span></span> 包，而不必引入整个spring.<span class="hilite2"><span class="hilite2">jar</span></span> 的所有类文件。 <br />
            <br />
            spring-core.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            这个<span class="hilite2"><span class="hilite2">jar</span></span> 文件包含Spring 框架基本的核心工具类。Spring 其它组件要都要使用到这个包里的类，是其它组件的基本核心，当然你也可以在自己的应用系统中使用这些工具类。 <br />
            外部依赖Commons Logging， (Log4J)。 <br />
            <br />
            spring-beans.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            这个<span class="hilite2"><span class="hilite2">jar</span></span> 文件是所有应用都要用到的，它包含访问配置文件、创建和管理bean 以及进行Inversion of Control / Dependency Injection（IoC/DI）操作相关的所有类。如果应用只需基本的IoC/DI 支持，引入spring-core.<span class="hilite2"><span class="hilite2">jar</span></span> 及spring-beans.<span class="hilite2"><span class="hilite2">jar</span></span> 文件就可以了。 <br />
            外部依赖spring-core，(CGLIB)。 <br />
            <br />
            spring-aop.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            这个<span class="hilite2"><span class="hilite2">jar</span></span> 文件包含在应用中使用Spring 的AOP 特性时所需的类和源码级元数据支持。使用基于AOP 的Spring特性，如声明型事务管理（Declarative Transaction Management），也要在应用里包含这个<span class="hilite2"><span class="hilite2">jar</span></span>包。 <br />
            外部依赖spring-core， (spring-beans，AOP Alliance， CGLIB，Commons Attributes)。 <br />
            <br />
            spring-context.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            这个<span class="hilite2"><span class="hilite2">jar</span></span> 文件为Spring 核心提供了大量扩展。可以找到使用Spring ApplicationContext特性时所需的全部类，JDNI 所需的全部类，instrumentation组件以及校验Validation 方面的相关类。外部依赖spring-beans, (spring-aop)。 <br />
            <br />
            spring-dao.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            这个<span class="hilite2"><span class="hilite2">jar</span></span> 文件包含Spring DAO、Spring Transaction 进行数据访问的所有类。为了使用声明型事务支持，还需在自己的应用里包含spring-aop.<span class="hilite2"><span class="hilite2">jar</span></span>。 <br />
            外部依赖spring-core，(spring-aop， spring-context， JTA API)。 <br />
            <br />
            spring-jdbc.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            这个<span class="hilite2"><span class="hilite2">jar</span></span> 文件包含对Spring 对JDBC 数据访问进行封装的所有类。 <br />
            外部依赖spring-beans，spring-dao。 <br />
            <br />
            spring-support.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            这个<span class="hilite2"><span class="hilite2">jar</span></span> 文件包含支持UI模版（Velocity，FreeMarker，JasperReports），邮件服务，脚本服务(JRuby)，缓存Cache（EHCache），任务计划Scheduling（uartz）方面的类。 <br />
            外部依赖spring-context, (spring-jdbc, Velocity, FreeMarker, JasperReports, BSH, Groovy, JRuby, Quartz, EHCache) <br />
            <br />
            spring-web.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            这个<span class="hilite2"><span class="hilite2">jar</span></span> 文件包含Web 应用开发时，用到Spring 框架时所需的核心类，包括自动载入Web Application Context 特性的类、Struts 与JSF 集成类、文件上传的支持类、Filter 类和大量工具辅助类。外部依赖spring-context, Servlet API, (JSP API, JSTL, Commons FileUpload, COS)。 <br />
            <br />
            spring-webmvc.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            这个<span class="hilite2"><span class="hilite2">jar</span></span> 文件包含Spring MVC 框架相关的所有类。包括框架的Servlets，Web MVC框架，控制器和视图支持。当然，如果你的应用使用了独立的MVC 框架，则无需这个<span class="hilite2"><span class="hilite2">JAR</span></span> 文件里的任何类。外部依赖spring-web, (spring-support，Tiles，iText，POI)。 <br />
            <br />
            spring-portlet.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            spring自己实现的一个类似Spring MVC的框架。包括一个MVC框架和控制器。 <br />
            外部依赖spring-web， Portlet API，(spring-webmvc)。 <br />
            <br />
            spring-struts.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            Struts框架支持，可以更方便更容易的集成Struts框架。外部依赖spring-web，Struts。 <br />
            <br />
            spring-remoting.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            这个<span class="hilite2"><span class="hilite2">jar</span></span> 文件包含支持EJB、远程调用Remoting（RMI、Hessian、Burlap、Http Invoker、JAX-RPC）方面的类。外部依赖spring-aop， (spring-context，spring-web，Hessian，Burlap，JAX-RPC，EJB API)。 <br />
            <br />
            spring-jmx.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            这个<span class="hilite2"><span class="hilite2">jar</span></span>包提供了对JMX 1.0/1.2的支持类。外部依赖spring-beans，spring-aop， JMX API。 <br />
            <br />
            spring-jms.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            这个<span class="hilite2"><span class="hilite2">jar</span></span>包提供了对JMS 1.0.2/1.1的支持类。外部依赖spring-beans，spring-dao，JMS API。 <br />
            <br />
            spring-jca.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            对JCA 1.0的支持。外部依赖spring-beans，spring-dao， JCA API。 <br />
            <br />
            spring-jdo.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            对JDO 1.0/2.0的支持。外部依赖spring-jdbc， JDO API， (spring-web)。 <br />
            <br />
            spring-jpa.<span class="hilite2"><span class="hilite2">jar</span></span>对JPA 1.0的支持。外部依赖spring-jdbc， JPA API， (spring-web)。 <br />
            <br />
            spring-hibernate2.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            对Hibernate 2.1的支持，已经不建议使用。外部依赖spring-jdbc，Hibernate2，(spring-web)。 <br />
            <br />
            <span class="hilite1"><span class="hilite1">spring-hibernate3</span></span>.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            对Hibernate 3.0/3.1/3.2的支持。外部依赖spring-jdbc，Hibernate3，(spring-web)。 <br />
            <br />
            spring-toplink.<span class="hilite2"><span class="hilite2">jar</span></span>对TopLink框架的支持。外部依赖spring-jdbc，TopLink。 <br />
            <br />
            spring-ibatis.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            对iBATIS SQL Maps的支持。外部依赖spring-jdbc，iBATIS SQL Maps。 <br />
            <br />
            另外的两个包。 <br />
            <br />
            spring-mock.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            这个<span class="hilite2"><span class="hilite2">jar</span></span> 文件包含Spring 一整套mock 类来辅助应用的测试。Spring 测试套件使用了其中大量mock 类，这样测试就更加简单。模拟HttpServletRequest 和HttpServletResponse 类在Web 应用单元测试是很方便的。并且提供了对JUnit的支持。外部依赖spring-core。 <br />
            <br />
            spring-aspects.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            提供对AspectJ的支持，以便可以方便的将面向方面的功能集成进IDE中，比如Eclipse AJDT。 <br />
            <br />
            <br />
            <br />
            <br />
            3．外部依赖。WEAVER <span class="hilite2"><span class="hilite2">JAR</span></span>S (dist/weavers)说明 <br />
            <br />
            spring-agent.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            Spring的InstrumentationSavingAgent (为InstrumentationLoadTimeWeaver)，一个设备代理包，可以参考JDK1.5的Instrumentation功能获得更多信息。外部依赖none (for use at JVM startup: "-javaagent:spring-agent.<span class="hilite2"><span class="hilite2">jar</span></span>")。 <br />
            <br />
            spring-tomcat-weaver.<span class="hilite2"><span class="hilite2">jar</span></span> <br />
            <br />
            扩展Tomcat的ClassLoader，使其可以使用instrumentation（设备）类。外部依赖none (for deployment into Tomcat's "server/lib" directory)。</div>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/yigemaser/aggbug/198044.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yigemaser/" target="_blank">满店香</a> 2008-05-04 12:38 <a href="http://www.blogjava.net/yigemaser/archive/2008/05/04/198044.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>