﻿<?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-小人物_Amor Blog</title><link>http://www.blogjava.net/xue/</link><description /><language>zh-cn</language><lastBuildDate>Fri, 17 Apr 2026 21:11:19 GMT</lastBuildDate><pubDate>Fri, 17 Apr 2026 21:11:19 GMT</pubDate><ttl>60</ttl><item><title>JS-SDK的使用（微信多次分享）</title><link>http://www.blogjava.net/xue/archive/2016/12/16/432130.html</link><dc:creator>小人物_Amor</dc:creator><author>小人物_Amor</author><pubDate>Fri, 16 Dec 2016 09:05:00 GMT</pubDate><guid>http://www.blogjava.net/xue/archive/2016/12/16/432130.html</guid><wfw:comment>http://www.blogjava.net/xue/comments/432130.html</wfw:comment><comments>http://www.blogjava.net/xue/archive/2016/12/16/432130.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xue/comments/commentRss/432130.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xue/services/trackbacks/432130.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 需求描述：公司通过APP产品分享出去的需求和简历是做了一个H5页面作为分享的链接，通过APP分享出去自然是没问题，也是第一次分享，之后通过微信打开H5页面后想再次分享出去时候就变成了一个链接了，而不是自己定制的卡片模式，初次分享后如下：但是打开以后的H5页面再分享出去就变成这个样子了：也就是说需要在H5页面做微信分享的相关工作，JS-SDK上场了，首先看看JS-SDK的官方说明文档：https:/...&nbsp;&nbsp;<a href='http://www.blogjava.net/xue/archive/2016/12/16/432130.html'>阅读全文</a><img src ="http://www.blogjava.net/xue/aggbug/432130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xue/" target="_blank">小人物_Amor</a> 2016-12-16 17:05 <a href="http://www.blogjava.net/xue/archive/2016/12/16/432130.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache Zeppelin设置访问登录</title><link>http://www.blogjava.net/xue/archive/2016/11/09/431968.html</link><dc:creator>小人物_Amor</dc:creator><author>小人物_Amor</author><pubDate>Wed, 09 Nov 2016 07:32:00 GMT</pubDate><guid>http://www.blogjava.net/xue/archive/2016/11/09/431968.html</guid><wfw:comment>http://www.blogjava.net/xue/comments/431968.html</wfw:comment><comments>http://www.blogjava.net/xue/archive/2016/11/09/431968.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xue/comments/commentRss/431968.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xue/services/trackbacks/431968.html</trackback:ping><description><![CDATA[<div><div style="white-space: pre-wrap; line-height: 1.875; font-size: 14px;">Apache Zeppelin启动默认是匿名（anonymous）模式登录的，也就是任何人都可以访问，这个可以在/zeppelin/conf下的zeppelin-site.xml中看到：</div><div style="white-space: pre-wrap; line-height: 1.875; font-size: 14px;">&lt;property&gt;</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; font-size: 14px;">  &lt;name&gt;zeppelin.anonymous.allowed&lt;/name&gt;</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; font-size: 14px;">  &lt;value&gt;true&lt;/value&gt;</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; font-size: 14px;">  &lt;description&gt;Anonymous user allowed by default&lt;/description&gt;</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; font-size: 14px;">&lt;/property&gt;</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; font-size: 14px;">description中写道Anonymous user allowed by default（匿名用户默认被允许），这样我们访问我们安装的zepplin界面里是这样的：<img src="http://www.blogjava.net/images/blogjava_net/xue/2.1.png" alt="" width="1146" border="0" height="74" /></div><div><img data-media-type="image" src="C:\Users\WuWei\AppData\Local\YNote\data\sina1767744800\64e7f347cc4e483b960ebcc8e0134469\clipboard.png" data-attr-org-src-id="CD7D916465184CBEB126E16DF830D240"  alt="" /></div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; font-size: 14px;">右上角显示anonymous表示匿名模式。</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; font-size: 14px;">接下来我们要做的就是如何通过修改配置来让我们的zeppelin拥有验证登录的功能：</div><ol><li style="list-style-type: decimal; list-style-position: inside; white-space: pre-wrap; text-align: left; line-height: 1.875; font-size: 14px;">修改/zeppelin/conf/zeppelin-site.xml文件选项zeppelin.anonymous.allowed的value为false,表示不允许匿名访问：</li><ol><li style="list-style-type: lower-alpha; list-style-position: inside; white-space: pre-wrap; text-align: left; line-height: 1.875; font-size: 14px;">&lt;property&gt;</li></ol></ol><div style="white-space: pre-wrap; text-align: left; margin-left: 56px; line-height: 1.875; font-size: 14px;">  	&lt;name&gt;zeppelin.anonymous.allowed&lt;/name&gt;</div><div style="white-space: pre-wrap; text-align: left; margin-left: 56px; line-height: 1.875; font-size: 14px;">  	&lt;value&gt;false&lt;/value&gt;</div><div style="white-space: pre-wrap; text-align: left; margin-left: 56px; line-height: 1.875; font-size: 14px;">  	&lt;description&gt;Anonymous user allowed by default&lt;/description&gt;</div><div style="white-space: pre-wrap; text-align: left; margin-left: 56px; line-height: 1.875; font-size: 14px;">    &lt;/property&gt;</div><ol start="2"><li style="list-style-type: decimal; list-style-position: inside; white-space: pre-wrap; text-align: left; line-height: 1.875; font-size: 14px;">修改/zeppelin/conf/shiro.ini文件，显然zeppelin采用了shiro作为他的验证登录权限控制框架，那么我们需要对shiro有一些了解，我们去看该文件的最后几行：</li></ol><div style="white-space: pre-wrap; margin-left: 56px; line-height: 1.5; font-size: 14px;">[urls]</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 56px; font-size: 14px;"># anon means the access is anonymous.</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 56px; font-size: 14px;"># authcBasic means Basic Auth Security</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 56px; font-size: 14px;"># authc means Form based Auth Security</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 56px; font-size: 14px;"># To enfore security, comment the line below and uncomment the next one</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 56px; font-size: 14px;">/api/version = anon</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 56px; font-size: 14px;">/** = anon</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 56px; font-size: 14px;">#/** = authc</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 56px; font-size: 14px;">显然是对localhost:7878/#/**的进行验证，对/**的不验证，那我们就修改为对任何url访问都需要验证：把/**=anon修改为/**=authc,这样重启zeppelin后访问我们的zeppelin主页就变成这个样子了：<img src="http://www.blogjava.net/images/blogjava_net/xue/2.2.png" alt="" width="1360" border="0" height="561" /></div><div><img data-media-type="image" src="C:\Users\WuWei\AppData\Local\YNote\data\sina1767744800\71eea24d3a8d4a03913c92f3ac0dcf83\clipboard.png" data-attr-org-src-id="7005C8934EDB4FD08E804CB8DA6A8324"  alt="" /></div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 56px; font-size: 14px;">看见右上角的Login按钮了吧？对的，你现在zeppelin已经需要登录才能继续访问了，可是满屏幕的去找也没找到注册的地方，那么我们通过什么账号来进行登录呢？继续修改zeppelin/conf/shiro.ini文件：</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 84px; font-size: 14px;">[users]</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 84px; font-size: 14px;"># List of users with their password allowed to access Zeppelin.</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 84px; font-size: 14px;"># To use a different strategy (LDAP / Database / ...) check the shiro doc at http://shiro.apache.org/configuration.html#Configuration-INISections</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 84px; font-size: 14px;">admin = admin</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 84px; font-size: 14px;">user1 = password2, role1, role2</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 84px; font-size: 14px;">user2 = password3, role3</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 84px; font-size: 14px;">user3 = password4, role2</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 56px; font-size: 14px;">已经给我们加了这些账号了，看第一条注释提供了用户以及对应的密码用来允许访问zeppelin，然后你自己可以在下面加一些用户xxx = yyy，其中的角色也可以自行选择，需要详细了解的可以熟悉熟悉shiro的角色权限控制。重启zeppelin用你知道的账号去登录吧~！</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 56px; font-size: 14px;"></div><div style="white-space: pre-wrap; line-height: 1.5; font-size: 14px;">输入对应账号进入主页后选择一个你已经添加过的notebook进去然后去右上角看见有一把小锁：<img src="http://www.blogjava.net/images/blogjava_net/xue/2.3.png" alt="" width="1343" border="0" height="437" /></div><div><img data-media-type="image" src="C:\Users\WuWei\AppData\Local\YNote\data\sina1767744800\123fd5b6f2af4538ae5c7c6e15c1cf7f\clipboard.png" data-attr-org-src-id="39FA224D838D4E848F179916038C5C89"  alt="" /></div><div style="white-space: pre-wrap; line-height: 1.5; font-size: 14px;">会显示Note Permissions点击后出现上图所示可以填写该notebook的Owners(所有者)、Readers（只读用户）、Writers(读写用户)，这样每一个notebook就可以归属于某一个具体的用户了，避免了多用户同时使用zeppelin可能造成的冲突。</div><div style="white-space: pre-wrap; line-height: 1.5; font-size: 14px;"></div><div style="white-space: pre-wrap; line-height: 1.5; font-size: 14px;">还有很多其他功能值得你去发现、研究！</div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; margin-left: 56px; font-size: 14px;"></div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; font-size: 14px;"></div><div style="white-space: pre-wrap; text-align: left; line-height: 1.875; font-size: 14px;"></div></div><img src ="http://www.blogjava.net/xue/aggbug/431968.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xue/" target="_blank">小人物_Amor</a> 2016-11-09 15:32 <a href="http://www.blogjava.net/xue/archive/2016/11/09/431968.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache Zeppelin安装及使用</title><link>http://www.blogjava.net/xue/archive/2016/11/09/431967.html</link><dc:creator>小人物_Amor</dc:creator><author>小人物_Amor</author><pubDate>Wed, 09 Nov 2016 07:16:00 GMT</pubDate><guid>http://www.blogjava.net/xue/archive/2016/11/09/431967.html</guid><wfw:comment>http://www.blogjava.net/xue/comments/431967.html</wfw:comment><comments>http://www.blogjava.net/xue/archive/2016/11/09/431967.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xue/comments/commentRss/431967.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xue/services/trackbacks/431967.html</trackback:ping><description><![CDATA[<div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;">
<div style="background-color: inherit;">Apache&nbsp;Zeppelin官网：<a href="http://zeppelin.apache.org/" style="cursor: pointer; line-height: 1.5; background-color: inherit;">http://zeppelin.apache.org/</a></div>
</div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"><span style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-weight: normal; text-align: left; background-color: #ffffff;">Apache&nbsp;Zeppelin介绍：A web-based notebook that enables interactive data analytics. &nbsp;You can make beautiful data-driven, interactive and collaborative documents with SQL, Scala and more.</span></div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"></div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"><span style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-weight: normal; text-align: left; background-color: #ffffff;"><br style="background-color: inherit;" />
</span></div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;">安装说明：</div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;">&nbsp; &nbsp; 下载地址：<a href="http://zeppelin.apache.org/download.html" style="cursor: pointer; line-height: 1.5; background-color: inherit;">http://zeppelin.apache.org/download.html</a>当前最新版是0.6.1&nbsp;</div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;">
<div><img src="http://www.blogjava.net/images/blogjava_net/xue/1.0.png" alt="" width="1050" border="0" height="272" /></div>
</div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;">点击下载后解压到指定文件夹，你的zeppelin就安装完成了，很简单。但是zeppelin依赖于jdk，所以使用zeppelin前还需要机器拥有jdk环境。</div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"></div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;">解压完毕后需要配置几个地方：</div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;">
<ul style="margin-top: 0px; margin-bottom: 0px; background-color: inherit;">
     <li style="background-color: inherit;"><span style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; line-height: 1.5; background-color: #ffffff;">将conf中的zeppelin-env.sh.template与zeppelin-site.xml.template 重命名，去掉template</span></li>
     <li style="background-color: inherit;"><span style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; line-height: 1.5; background-color: #ffffff;">
     <div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-weight: normal; text-align: left; background-color: #ffffff;">修改conf/zepplin-env.sh&nbsp;<span style="line-height: 1.5; background-color: #ffffff;">新增</span></div>
     <div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-weight: normal; text-align: left; background-color: #ffffff;"><blockquote style="margin: 0px 0px 0px 40px; border: none; padding: 0px; background-color: inherit;">export&nbsp;&nbsp;SPARK_MASTER_IP=127.0.0.1</blockquote></div>
     <div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-weight: normal; text-align: left; background-color: #ffffff;"><blockquote style="margin: 0px 0px 0px 40px; border: none; padding: 0px; background-color: inherit;">export&nbsp;&nbsp;SPARK_LOCAL_IP=127.0.0.1</blockquote></div>
     <div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-weight: normal; text-align: left; background-color: #ffffff;"><blockquote style="margin: 0px 0px 0px 40px; border: none; padding: 0px; background-color: inherit;">修改&nbsp;<span style="line-height: 1.5; background-color: inherit;">export&nbsp;ZEPPELIN_MEM="-Xmx2048m&nbsp;-XX:PermSize=256M" &nbsp;</span></blockquote></div>
     </span></li>
</ul>
<div style="background-color: inherit;"></div>
<div style="background-color: inherit;">需要注意的是lib下的jar包，默认带的jackson-databind-2.5.3.jar包是无法使用的，这点不知道为什么zeppelin怎么处理的，需要将jackson-databind/jackson-annonations/jackson-core三个jar包全部替换成2.6.5版本的就可以了。</div>
</div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"></div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;">启动zeppelin：进入bin目录下执行<strong style="background-color: inherit;">&nbsp;<span style="line-height: 1.5; background-color: inherit;">./zeppelin-daemon.sh&nbsp;start&nbsp;</span></strong></div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;">然后浏览器访问127.0.0.1：8080就进入如下页面：<img src="http://www.blogjava.net/images/blogjava_net/xue/1.1.png" alt="" width="1342" border="0" height="564" /></div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"></div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;">ok，你的zeppelin安装成功了！</div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"></div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;">其实zeppelin就是一个java web项目，这样理解起来似乎就容易点了，接下来为了可以使用sql统计数据，我们来操作一下如何添加interpreter：</div>
<div style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;">
<ol style="margin-top: 0px; margin-bottom: 0px; background-color: inherit;">
     <li style="background-color: inherit;">首先<span style="line-height: 1.5; background-color: #ffffff;">修改conf/zeppelin-site.xml，</span><span style="line-height: 1.5; background-color: #ffffff;">添加org.apache.zeppelin.jdbc.JdbcInterpreter</span></li>
     <li style="background-color: inherit;">进入lib目录下上传&nbsp;<span style="line-height: 1.5; background-color: #ffffff;">JdbcInterpreter.jar、</span><span style="line-height: 1.5; background-color: #ffffff;">mysql-connection-.....jar两个jar包</span></li>
     <li style="background-color: inherit;">然后重启zeppelin，进入web页面的interpreter下，点击create：添加完成之后是这个样子：<img src="http://www.blogjava.net/images/blogjava_net/xue/1.2.png" alt="" width="1345" border="0" height="435" /><div><img src="http://www.blogjava.net/images/blogjava_net/xue/1.3.png" alt="" width="1346" border="0" height="578" /></div></li>
     <li style="background-color: inherit;">然后进入notebook页面：<img src="http://www.blogjava.net/images/blogjava_net/xue/1.5.png" alt="" width="1358" border="0" height="583" />绑定刚刚添加的interpreter就可以使用了：</li>
</ol>
<div style="background-color: inherit;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<img src="http://www.blogjava.net/images/blogjava_net/xue/1.6.png" alt="" width="422" border="0" height="244" /><img data-media-type="image" src="file:///C:/Users/WuWei/AppData/Local/YNote/data/sina1767744800/693943903a4d41cdb7387d60ba828a98/clipboard.png" data-attr-org-src-id="C797430BACE547469E722716DE1BADCB" data-attr-org-img-file="file:///C:/Users/WuWei/AppData/Local/YNote/data/sina1767744800/693943903a4d41cdb7387d60ba828a98/clipboard.png" style="cursor: default; display: inline-block; margin-top: 8px; max-width: 800px; height: auto !important; background-color: inherit;" alt="" /></div>
<div style="background-color: inherit;">这样一个JdbcInterpreter就添加完毕了。</div>
<div style="background-color: inherit;"></div>
<div style="background-color: inherit;">至于以后再想和redis、solr一起使用也是相应的加入jar包就可以了~</div>
<div style="background-color: inherit;"></div>
<div style="background-color: inherit;">就我个人来说zeppelin可以满足企业运营这块的需求，包括日活、百度引流统计、ngnix日志分析、用户行为分析、热门词汇、整体数据统计、多维度数据统计等等。</div>
</div>
</div><img src ="http://www.blogjava.net/xue/aggbug/431967.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xue/" target="_blank">小人物_Amor</a> 2016-11-09 15:16 <a href="http://www.blogjava.net/xue/archive/2016/11/09/431967.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java web面试题集锦</title><link>http://www.blogjava.net/xue/archive/2014/10/08/418517.html</link><dc:creator>小人物_Amor</dc:creator><author>小人物_Amor</author><pubDate>Wed, 08 Oct 2014 08:50:00 GMT</pubDate><guid>http://www.blogjava.net/xue/archive/2014/10/08/418517.html</guid><wfw:comment>http://www.blogjava.net/xue/comments/418517.html</wfw:comment><comments>http://www.blogjava.net/xue/archive/2014/10/08/418517.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xue/comments/commentRss/418517.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xue/services/trackbacks/418517.html</trackback:ping><description><![CDATA[<div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">1.JDK和JRE的区别：</span></div><div style="background-color: inherit;">&nbsp; &nbsp;&nbsp;<span style="background-color: inherit; font-size: 14px;">JDK是Java Development Kit。是面向开发人员使用的SDK，提供了java的开发环境以及运行环境。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; &nbsp;JRE是Java Runtime Enviroment。是指java的运行环境，是面向java程序得使用者，而不是开发者。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">2.序列化的目的：</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp;&nbsp;Java中，一切都是对象，在分布式环境中经常需要将Object从这一端网络或设备传递到另一端。这就需要有一种可以在两端传输数据的协议。Java序列化机制就是为了解决这个问题而产生。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; 以某种存储形式使自定义对象持久化。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; 将对象从一个地方传到另一个地方。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">3.equals和==的区别：</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; 基本数据类型应该用&#8220;==&#8221;来比较他们的值。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; 当比较对象时候，如果对象里重写了equals方法，比如String，Integer，Date这些类，比较对象的内存地址应该用&#8220;==&#8221;，比较对象的值用&#8220;equals&#8221;，如果没有重写equals方法，两者本质上是相同的，都是比较值。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">4.什么时候使用Comparator and Comparable 接口</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; 当需要排序的集合或数组不是单纯的数字类型的时候，通常可以使用Comparator或Comparable，以简单的方式实现对象排序和自定义排序。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp;&nbsp;Comparable用在对象本身，说明这个对象是可以被比较的，也就是说可以被排序的。（String和Integer之所以可以比较大小，是因为它们都实现了Comparable接口，并实现了compareTo()方法）。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; Compator用在对象外，相当于定义了一个排序算法。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">5.转发和重定向的区别：</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; 转发时URL不会改变，request请求内的对象将可以继续使用，重定向时浏览器URL会改变，之前的request会丢失，因此request里的数据也不会得到。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; 通常情况下转发速度更快，而且能保持request内的对象，但是转发之后，浏览器的连接还在先前页面所以可以重载先前页面。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; 转发：</span>request.getRequestDispatcher("apage.jsp").forward(request, response);<br style="background-color: inherit;" />&nbsp; &nbsp;<span style="background-color: inherit; font-size: 14px;">重定向：</span>response.sendRedirect("apage.jsp");</div><div style="background-color: inherit;">&nbsp; &nbsp;</div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">6.编译期异常和运行时异常</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; 编译时异常可以捕捉，比如我们读写文件时候会抛出IOException，操作数据库时会有SQLException，运行时异常不可以捕捉，比如数组下标溢出，空指针异常等<br style="background-color: inherit;" /><br style="background-color: inherit;" /></span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">7.Struts1原理和Struts2原理以及区别和联系，在什么项目中用过，有什么体会?</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp;<strong style="background-color: inherit;">&nbsp;struts1原理：</strong>客户端发送HttpServletRequest请求给ActionServlet，ActionServlet会检索和用户请求匹配的ActionMapping实例，如果不存在就返回请求路径无效的信息，如果存在就会把请求的表单数据保存到ActionForm中去，如果ActionForm不存在就会创建一个ActionForm对象，然后再根据配置信息决定是否需要表单验证，如果需要验证就调用ActionForm的validate()方法，验证通过后ActionServlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action，如果相应的Action实例不存在就先创建这个Action然后调用Action的execute()方法。Action的execute()方法返回一个ActionForward对象，ActionServlet再把客户请求转发给ActionForward对象指向的jsp组件。</span></div><div style="background-color: inherit;">&nbsp;&nbsp;<strong style="background-color: inherit;">&nbsp;</strong><span style="background-color: inherit; font-size: 14px;"><strong style="background-color: inherit;">struts2原理：</strong>客户端发送HttpServletRequest请求，请求被提交到一系列的Filter，首先是ActionContextCleanUp，然后是其他Filter，最后是FilterDispatcher。FilterDispatcher是Struts2的核心，就是MVC的Struts2实现中控制层的核心。FilterDispatcher询问ActionMapper决定需要调用哪个Action，FilterDispatcher会把请求交给ActionProxy，ActionProxy会根据Struts.xml配置文件找到需要调用的Action类。ActionProxy创建一个ActionInvocation实例，同时ActionInvocation通过代理模式调用Action类，调用之前会加载Action相关的所有拦截器，一旦Action执行完毕，ActionInvocation根据Struts.xml配置文件返回对应的result。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp;&nbsp;<strong style="background-color: inherit;">区别：</strong>1.Struts1是通过Servlet启动的，struts1要求Action继承一个抽象类，而不是接口，Struts2的Action类可以实现一个Action接口也可以实现其他接口。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2.struts1的Action是单例模式线程是不安全的，struts2是线程安全的，Action为每一个请求都生成了一个实例。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3.struts1是以ActionServlet为核心控制器，struts2是以FilterDispatcher为核心控制器。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp;&nbsp;</span><span style="background-color: #ffffff; color: #333333; font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; line-height: 16px; font-size: 14px;"><strong style="background-color: inherit;">执行流程:</strong></span></div><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><p style="margin: 5px 0px; background-color: inherit;">      <span style="background-color: inherit; font-size: 14px;">  a)struts1&nbsp;<br style="background-color: inherit;" />                    jsp发起httprequest请求-&gt;servlet捕获-&gt;struts.xml-&gt;namespace+ActionName-&gt; Action-&gt;填充表单setXxx()-&gt;action.execute()-&gt;&#8221;success&#8221;-&gt;Result-&gt;设置request属性-&gt;跳转目标页<br style="background-color: inherit;" />             b) Action(jsp发起httprequest请求，被过滤器捕获)-&gt;FilterDispatcher-&gt;struts.xml-&gt;namespace+ActionName-&gt;new Action-&gt;填充表单setXxx()-&gt;action.execute()-&gt;&#8221;success&#8221;-&gt;Result-&gt;设置request属性-&gt;跳转目标页</span></p></pre><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">8.spring原理</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp;&nbsp;spring的最大作用ioc/di,将类与类的依赖关系写在配置文件中，程序在运行时根据配置文件动态加载依赖的类，降低的类与类之间的藕合度。它的原理是在applicationContext.xml加入bean标记,在bean标记中通过class属性说明具体类名、通过property标签说明该类的属性名、通过constructor-args说明构造子的参数。其一切都是反射，当通过applicationContext.getBean(&#8220;id名称&#8221;)得到一个类实例时，就是以bean标签的类名、属性名、构造子的参数为准，通过反射实例对象，唤起对象的set方法设置属性值、通过构造子的newInstance实例化得到对象。正因为spring一切都是反射，反射比直接调用的处理速度慢，所以这也是spring的一个问题。<br style="background-color: inherit;" />&nbsp; &nbsp; spring第二大作用就是aop，其机理来自于代理模式，代理模式有三个角色分别是通用接口、代理、真实对象。代理、真实对象实现的是同一接口，将真实对象作为代理的一个属性，向客户端公开的是代理，当客户端调用代理的方法时，代理找到真实对象，调用真实对象方法，在调用之前之后提供相关的服务，如事务、安全、日志。其名词分别是代理、真实对象、装备、关切点、连接点。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">9.简要概述一下SpringMVC和StrutsMVC</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp;&nbsp;Spring的MVC框架主要由DispatcherServlet、处理器映射、处理器、视图解析器、视图组成</span>。</div><div style="background-color: inherit;">&nbsp; &nbsp; &nbsp;&nbsp;<span style="background-color: inherit; font-size: 14px;">&nbsp; 1）DispatcherServlet接收到请求后，根据对应配置文件中配置的处理器映射，找到对应的处理器映射项（HandlerMapping），根据配置的映射规则，找到对应的处理器（Handler）。<br style="background-color: inherit;" />&nbsp; &nbsp; &nbsp; &nbsp; 2）调用相应处理器中的处理方法，处理该请求，处理器处理结束后会将一个ModelAndView类型的数据传给DispatcherServlet，这其中包含了处理结果的视图和视图中要使用的数据。<br style="background-color: inherit;" />&nbsp; &nbsp; &nbsp; &nbsp; 3）DispatcherServlet 根据得到的ModelAndView中的视图对象，找到一个合适的ViewResolver（视图解析器），根据视图解析器的配 置，DispatcherServlet将视图要显示的数据传给对应的视图，最后给浏览器构造一个HTTP响应。<br style="background-color: inherit;" /><br style="background-color: inherit;" />&nbsp; &nbsp; &nbsp; &nbsp; DispatcherServlet是整个Spring MVC的核心。它负责接收HTTP请求组织协调Spring MVC的各个组成部分。其主要工作有以下三项：<br style="background-color: inherit;" />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1）截获符合特定格式的URL请求。<br style="background-color: inherit;" />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2）初始化DispatcherServlet上下文对应的WebApplicationContext，并将其与业务层、持久化层的WebApplicationContext建立关联。<br style="background-color: inherit;" />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3）初始化Spring MVC的各个组成组件，并装配到DispatcherServlet中。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; StrutsMVC</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; 1.当启动容器时，容器(tomcat、weblogic)实例化ActionServlet,初始化ActionServlet，在初始化<br style="background-color: inherit;" />ActionServlet时加载struts-config.xml文件。<br style="background-color: inherit;" />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2.当客户通过url.do将请求发给ActionServlet,ActionServlet将处理转发给助手RequestProcessor,RequestProcess通过struts-config.xml找到对应的actionForm及 action，如果有ActionForm用已有的，没有通过类的反射实例化一个新的ActionForm,放置到作用域对象，通过反射<br style="background-color: inherit;" /><ol style="background-color: inherit;"><li style="background-color: inherit;">将表单域的值填充到actionForm中。如果有Action用已有的，<span style="background-color: inherit; font-size: 18px;">没有产生一个新的，通过反射调用action实例的execute方法，在执行前将actionForm通过参数注入到execute方法中。</span></li><li style="background-color: inherit;"><span style="background-color: inherit; font-size: 18px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3.execute方法执行结束前通过actionMapping找到actionForward转发</span>到另一个页面。</li></ol></span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">10.Servlet的工作原理、生命周期</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; Servlet的工作原理：</span></div><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; Servlet 生命周期：Servlet 加载---&gt;实例化---&gt;服务---&gt;销毁。</span><div style="background-color: inherit;"></div><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; init（）：在Servlet的生命周期中，仅执行一次init()方法。它是在服务器装入Servlet时执行的，负责初始化Servlet 对象。可以配置服务器，以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet，都不会重复执行 init（）。</span><div style="background-color: inherit;"></div><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; service（）：它是Servlet的核心，负责响应客户的请求。每当一个客户请求一个HttpServlet对象，该对象的 Service()方法就要调用，而且传递给这个方法一个&#8220;请求&#8221;（ServletRequest）对象和一个&#8220;响应&#8221; （ServletResponse）对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法 相应的do功能。</span><div style="background-color: inherit;"></div><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; destroy（）：&nbsp;仅执行一次，在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时，负责释放占用的资 源。一个Servlet在运行service()方法时可能会产生其他的线程，因此需要确认在调用destroy()方法时，这些线程已经终止或完成。</span><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; Servlet工作原理：</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;1、首先简单解释一下Servlet接收和响应客户请求的过程，首先客户发送一个请求，Servlet是调用service()方法对请求进行响应 的，通过源代码可见，service()方法中对请求的方式进行了匹配，选择调用doGet,doPost等这些方法，然后再进入对应的方法中调用逻辑层 的方法，实现对客户的响应。在Servlet接口和GenericServlet中是没有doGet（）、doPost（）等等这些方法 的，HttpServlet中定义了这些方法，但是都是返回error信息，所以，我们每次定义一个Servlet的时候，都必须实现doGet或 doPost等这些方法。<br style="background-color: inherit;" />&nbsp; &nbsp; &nbsp; &nbsp; 2、每一个自定义的Servlet都必须实现Servlet的接口，Servlet接口中定义了五个方法，其中比较重要的三个方法涉及到 Servlet的生命周期，分别是上文提到的init(),service(),destroy()方法。GenericServlet是一个通用的，不 特定于任何协议的Servlet,它实现了Servlet接口。而HttpServlet继承于GenericServlet，因此 HttpServlet也实现了Servlet接口。所以我们定义Servlet的时候只需要继承HttpServlet即可。<br style="background-color: inherit;" />&nbsp; &nbsp; &nbsp; &nbsp; 3、Servlet接口和GenericServlet是不特定于任何协议的，而HttpServlet是特定于HTTP协议的类，所以 HttpServlet中实现了service()方法，并将请求ServletRequest、ServletResponse 强转为HttpRequest 和 HttpResponse。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">11.OOA、OOD、OOP含义</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp;&nbsp;Object-Oriented Analysis：面向对象分析方法</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; Object-Oriented Design：面向对象设计</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; Object Oriented Programming：面向对象编程</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; OOA是对系统业务调查了解之后根据面向对象的思想进行系统分析，在OOA分析的基础上对系统根据面向对象的思想进行系统设计，从而能够直接进行OOP面向对象编程。</span></div><div style="background-color: inherit;"></div><div style="background-color: inherit;">12.mysql分页查询</div><div style="background-color: inherit;">&nbsp;&nbsp;<span style="background-color: inherit; font-size: 14px;">&nbsp;对于有大数据量的mysql表来说，使用LIMIT分页存在很严重的性能问题。</span></div><div style="background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp;查询从第1000000之后的30条记录：</span></div><p style="margin: 5px 0px; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; SQL代码1：平均用时6.6秒 SELECT * FROM `cdb_posts` ORDER BY pid LIMIT 1000000 , 30</span></p><p style="margin: 5px 0px; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; SQL代码2：平均用时0.6秒 SELECT * FROM `cdb_posts` WHERE pid &gt;= (SELECT pid FROM `cdb_posts` ORDER BY pid LIMIT 1000000 , 1) LIMIT 30</span></p><p style="margin: 5px 0px; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; 因为要取出所有字段内容，第一种需要跨越大量数据块并取出，而第二种基本通过直接根据索引字段定位后，才取出相应内容，效率自然大大提升。</span></p><p style="margin: 5px 0px; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; 可以看出，越往后分页，LIMIT语句的偏移量就会越大，两者速度差距也会越明显。</span></p><p style="margin: 5px 0px; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; 实际应用中，可以利用类似策略模式的方式去处理分页，比如判断如果是一百页以内，就使用最基本的分页方式，大于一百页，则使用子查询的分页方式。</span></p><p style="margin: 5px 0px; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; Oracle查询：SELECT&nbsp;*&nbsp;FROM&nbsp;</span><span style="background-color: inherit; font-size: 14px;">(</span><span style="background-color: inherit; font-size: 14px;">SELECT&nbsp;A.*,&nbsp;ROWNUM&nbsp;RN&nbsp;</span><span style="background-color: inherit; font-size: 14px;">FROM&nbsp;(SELECT&nbsp;*&nbsp;FROM&nbsp;TABLE_NAME)&nbsp;A&nbsp;</span><span style="background-color: inherit; font-size: 14px;">WHERE&nbsp;ROWNUM&nbsp;&lt;=&nbsp;40</span><span style="background-color: inherit; font-size: 14px;">)&nbsp;</span><span style="background-color: inherit; font-size: 14px;">WHERE&nbsp;RN&nbsp;&gt;=&nbsp;21</span></p><p style="margin: 5px 0px; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></p><p style="margin: 5px 0px; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">13.单例模式、工厂模式、代理模式</span></p><p style="margin: 5px 0px; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp; &nbsp; 枚举实现单例模式：</span></p><p style="margin: 5px 0px; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color: inherit; font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; line-height: 16px; color: #0000ff;">public</span><span style="background-color: inherit; font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; line-height: 16px;">&nbsp;</span><span style="background-color: inherit; font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; line-height: 16px; color: #0000ff;">enum</span><span style="background-color: inherit; font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; line-height: 16px;">&nbsp;Singleton {</span></span></p><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">    <span style="background-color: inherit; color: #008000;">/**</span><span style="background-color: inherit; color: #008000;"><br style="background-color: inherit;" />     * 定义一个枚举的元素，它就代表了Singleton的一个实例。<br style="background-color: inherit;" />     </span><span style="background-color: inherit; color: #008000;">*/</span><br style="background-color: inherit;" />    <br style="background-color: inherit;" />    uniqueInstance;<br style="background-color: inherit;" />    <br style="background-color: inherit;" />    <span style="background-color: inherit; color: #008000;">/**</span><span style="background-color: inherit; color: #008000;"><br style="background-color: inherit;" />     * 单例可以有自己的操作<br style="background-color: inherit;" />     </span><span style="background-color: inherit; color: #008000;">*/</span><br style="background-color: inherit;" />    <span style="background-color: inherit; color: #0000ff;">public</span> <span style="background-color: inherit; color: #0000ff;">void</span> singletonOperation(){<br style="background-color: inherit;" />        <span style="background-color: inherit; color: #008000;">//</span><span style="background-color: inherit; color: #008000;">功能处理</span><span style="background-color: inherit; color: #008000;"><br style="background-color: inherit;" /></span>    }<br style="background-color: inherit;" />  }</span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">  懒汉同步单例模式：</span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">  public class LazySingleton { </span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">    private static LazySingleton instance = null; </span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">    /** </span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">     * 私有默认构造子 </span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">     */ </span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">    private LazySingleton(){} </span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">    /** </span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">     * 静态工厂方法 </span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">     */ </span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">    public static synchronized LazySingleton getInstance(){ </span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">        if(instance == null){ </span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">            instance = new LazySingleton(); </span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">        } </span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">        return instance; </span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">    } </span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">}</span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">工厂模式：<a href="http://www.cnblogs.com/java-my-life/archive/2012/03/28/2418836.html" style="background-color: inherit; cursor: pointer; font-family: 微软雅黑;">http://www.cnblogs.com/java-my-life/archive/2012/03/28/2418836.html</a></span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">代理模式：<a href="http://yangguangfu.iteye.com/blog/815787" style="background-color: inherit; cursor: pointer; font-family: 微软雅黑;">http://yangguangfu.iteye.com/blog/815787</a></span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><span style="background-color: inherit; font-size: 14px;">未完待续...</span></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><br style="background-color: inherit;" /></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><br style="background-color: inherit;" /></pre><pre style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 12px; line-height: 16px; font-style: normal; background-color: inherit;"><br style="background-color: inherit;" /></pre><div style="background-color: inherit;"><span style="background-color: inherit; color: #000000; font-family: 微软雅黑; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; font-size: 14px;"><br style="background-color: inherit;" /></span><div style="background-color: inherit; color: #000000; font-family: 微软雅黑; font-size: 18.18181800842285px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></div><div style="background-color: inherit; color: #000000; font-family: 微软雅黑; font-size: 18.18181800842285px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></div><div style="background-color: inherit; color: #000000; font-family: 微软雅黑; font-size: 18.18181800842285px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></div><div style="background-color: inherit; color: #000000; font-family: 微软雅黑; font-size: 18.18181800842285px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></div><div style="background-color: inherit; color: #000000; font-family: 微软雅黑; font-size: 18.18181800842285px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></div><div style="background-color: inherit; color: #000000; font-family: 微软雅黑; font-size: 18.18181800842285px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></div><div style="background-color: inherit; color: #000000; font-family: 微软雅黑; font-size: 18.18181800842285px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span style="background-color: inherit; font-size: 14px;"><br style="background-color: inherit;" /></span></div></div></div><img src ="http://www.blogjava.net/xue/aggbug/418517.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xue/" target="_blank">小人物_Amor</a> 2014-10-08 16:50 <a href="http://www.blogjava.net/xue/archive/2014/10/08/418517.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】Servlet 生命周期、工作原理</title><link>http://www.blogjava.net/xue/archive/2014/10/08/418513.html</link><dc:creator>小人物_Amor</dc:creator><author>小人物_Amor</author><pubDate>Wed, 08 Oct 2014 07:16:00 GMT</pubDate><guid>http://www.blogjava.net/xue/archive/2014/10/08/418513.html</guid><wfw:comment>http://www.blogjava.net/xue/comments/418513.html</wfw:comment><comments>http://www.blogjava.net/xue/archive/2014/10/08/418513.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xue/comments/commentRss/418513.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xue/services/trackbacks/418513.html</trackback:ping><description><![CDATA[<div><div id="cnblogs_post_body"><ol><li>Servlet 生命周期：Servlet 加载---&gt;实例化---&gt;服务---&gt;销毁。</li><li>init（）：在Servlet的生命周期中，仅执行一次init()方法。它是在服务器装入Servlet时执行的，负责初始化Servlet 对象。可以配置服务器，以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet，都不会重复执行 init（）。</li><li>service（）：它是Servlet的核心，负责响应客户的请求。每当一个客户请求一个HttpServlet对象，该对象的 Service()方法就要调用，而且传递给这个方法一个&#8220;请求&#8221;（ServletRequest）对象和一个&#8220;响应&#8221; （ServletResponse）对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法 相应的do功能。</li><li>destroy（）：&nbsp;仅执行一次，在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时，负责释放占用的资 源。一个Servlet在运行service()方法时可能会产生其他的线程，因此需要确认在调用destroy()方法时，这些线程已经终止或完成。</li></ol> <p>Tomcat 与 Servlet 是如何工作的：</p> <p><img src="http://images.cnitblog.com/blog/384192/201302/24114945-4774512d1247438fa58c37399d3999ae.jpg" alt="" /></p> <p>步骤：</p> <ol><li>Web Client 向Servlet容器（Tomcat）发出Http请求</li><li>Servlet容器接收Web Client的请求</li><li>Servlet容器创建一个HttpRequest对象，将Web Client请求的信息封装到这个对象中。</li><li>Servlet容器创建一个HttpResponse对象</li><li>Servlet容器调用HttpServlet对象的service方法，把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet 对象。</li><li>HttpServlet调用HttpRequest对象的有关方法，获取Http请求信息。</li><li>HttpServlet调用HttpResponse对象的有关方法，生成响应数据。</li><li>Servlet容器把HttpServlet的响应结果传给Web Client。</li></ol> <p>&nbsp;</p> <p>Servlet工作原理：</p> <p>1、首先简单解释一下Servlet接收和响应客户请求的过程，首先客户发送一个请求，Servlet是调用service()方法对请求进行响应 的，通过源代码可见，service()方法中对请求的方式进行了匹配，选择调用doGet,doPost等这些方法，然后再进入对应的方法中调用逻辑层 的方法，实现对客户的响应。在Servlet接口和GenericServlet中是没有doGet（）、doPost（）等等这些方法 的，HttpServlet中定义了这些方法，但是都是返回error信息，所以，我们每次定义一个Servlet的时候，都必须实现doGet或 doPost等这些方法。</p> <p>2、每一个自定义的Servlet都必须实现Servlet的接口，Servlet接口中定义了五个方法，其中比较重要的三个方法涉及到 Servlet的生命周期，分别是上文提到的init(),service(),destroy()方法。GenericServlet是一个通用的，不 特定于任何协议的Servlet,它实现了Servlet接口。而HttpServlet继承于GenericServlet，因此 HttpServlet也实现了Servlet接口。所以我们定义Servlet的时候只需要继承HttpServlet即可。</p> <p>3、Servlet接口和GenericServlet是不特定于任何协议的，而HttpServlet是特定于HTTP协议的类，所以 HttpServlet中实现了service()方法，并将请求ServletRequest、ServletResponse  强转为HttpRequest 和 HttpResponse。</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>创建Servlet对象的时机：</p> <ol><li>Servlet容器启动时：读取web.xml配置文件中的信息，构造指定的Servlet对象，创建ServletConfig对象，同时将ServletConfig对象作为参数来调用Servlet对象的init方法。</li><li>在Servlet容器启动后：客户首次向Servlet发出请求，Servlet容器会判断内存中是否存在指定的Servlet对象，如果没有则 创建它，然后根据客户的请求创建HttpRequest、HttpResponse对象，从而调用Servlet&nbsp;对象的service方法。</li><li>Servlet&nbsp;Servlet容器在启动时自动创建Servlet，这是由在web.xml文件中为Servlet设置的&lt;load- on-startup&gt;属性决定的。从中我们也能看到同一个类型的Servlet对象在Servlet容器中以单例的形式存在。<br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #000000; "></span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">servlet</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">servlet</span><span style="color: #000000; ">-</span><span style="color: #000000; ">name</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">Init</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">servlet</span><span style="color: #000000; ">-</span><span style="color: #000000; ">name</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">servlet</span><span style="color: #000000; ">-</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">org.xl.servlet.InitServlet</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">servlet</span><span style="color: #000000; ">-</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">load</span><span style="color: #000000; ">-</span><span style="color: #000000; ">on</span><span style="color: #000000; ">-</span><span style="color: #000000; ">startup</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">load</span><span style="color: #000000; ">-</span><span style="color: #000000; ">on</span><span style="color: #000000; ">-</span><span style="color: #000000; ">startup</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">servlet</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span></div> </li></ol> <p>&nbsp;</p></div></div><img src ="http://www.blogjava.net/xue/aggbug/418513.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xue/" target="_blank">小人物_Amor</a> 2014-10-08 15:16 <a href="http://www.blogjava.net/xue/archive/2014/10/08/418513.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Array.sort()、Collections.sort()以及Comparable、Comparator学习笔记</title><link>http://www.blogjava.net/xue/archive/2014/09/29/418385.html</link><dc:creator>小人物_Amor</dc:creator><author>小人物_Amor</author><pubDate>Mon, 29 Sep 2014 08:08:00 GMT</pubDate><guid>http://www.blogjava.net/xue/archive/2014/09/29/418385.html</guid><wfw:comment>http://www.blogjava.net/xue/comments/418385.html</wfw:comment><comments>http://www.blogjava.net/xue/archive/2014/09/29/418385.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xue/comments/commentRss/418385.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xue/services/trackbacks/418385.html</trackback:ping><description><![CDATA[<div><span>Arrays.sort(T[], Comparator &lt; ? super T &gt; c) 方法用于对象数组按用户自定义规则排序。</span></div><div><span>Collections.sort(List&lt;T&gt;, Comparator &lt; ? super T &gt; c)方法用于对象集合按用户自定义规则排序。<br /><br /><div><div><span>Comparable用在对象本身，说明这个对象是可以被比较的，也就是说可以被排序的。（String和Integer之所以可以比较大小，是因为它们都实现了Comparable接口，并实现了compareTo()方法）。</span></div><div><span>Compator用在对象外，相当于定义了一个排序算法。</span></div></div>所以当对象本身实现了Comparable接口，那么Arrays.sort(T[])就可以了。同理Collections.sort(List&lt;T&gt;)就可以了。<br /><br />还是代码来的直接：<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;com.zx.ww.comparable;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Arrays;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Comparator;<br /><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;ComparatorTest&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dog&nbsp;d1&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Dog(</span><span style="color: #000000; ">2</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dog&nbsp;d2&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Dog(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dog&nbsp;d3&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Dog(</span><span style="color: #000000; ">3</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dog[]&nbsp;dogArray&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;{d1,&nbsp;d2,&nbsp;d3};<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printDogs(dogArray);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Arrays.sort(dogArray,&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;DogSizeComparator());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printDogs(dogArray);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;printDogs(Dog[]&nbsp;dogArray)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(Dog&nbsp;dog&nbsp;:&nbsp;dogArray)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(dog.size</span><span style="color: #000000; ">+</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;Dog{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;size;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Dog(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;size)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.size&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;size;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;DogSizeComparator&nbsp;</span><span style="color: #0000FF; ">implements</span><span style="color: #000000; ">&nbsp;Comparator</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Dog</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;compare(Dog&nbsp;dog1,&nbsp;Dog&nbsp;dog2)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;dog1.size&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;dog2.size;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span></div><span>输出结果：<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">3</span><span style="color: #000000; ">&nbsp;<br /></span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">3</span><span style="color: #000000; "> <br /></span></div><span>这是对象数组用了Comparator的结果。<br /><br />下面看对象自身实现了Comparable接口的方式：<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*&nbsp;<br />&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;com.zx.ww.comparable;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Arrays;<br /><br /></span><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*&nbsp;</span><span style="color: #808080; ">@author</span><span style="color: #008000; ">&nbsp;wuwei<br />&nbsp;*&nbsp;2014年9月29日<br />&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;User&nbsp;</span><span style="color: #0000FF; ">implements</span><span style="color: #000000; ">&nbsp;Comparable</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Object</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;id;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;String&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;age;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;User(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;id,&nbsp;String&nbsp;name,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;age)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.id&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;id;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.name&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.age&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;age;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;getId()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;id;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setId(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;id)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.id&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;id;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;getName()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setName(String&nbsp;name)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.name&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;getAge()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;age;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setAge(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;age)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.age&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;age;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;compareTo(Object&nbsp;o)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.age&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;((User)o).getAge();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User[]&nbsp;users&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;User[]&nbsp;{</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;User(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">zhangsan</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">28</span><span style="color: #000000; ">),&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;User(</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">lisi</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">25</span><span style="color: #000000; ">)};<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Arrays.sort(users);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;users.length;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User&nbsp;user&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;users[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(user.getId()</span><span style="color: #000000; ">+</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">+</span><span style="color: #000000; ">user.getAge());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /></span></div><span>输出结果：<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; "><br /></span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">28</span></div><span>上述都是Arrays.sort()的应用方式，同理Collections.sort()一样的实现，代码如下，比较简单：<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;com.zx.ww.comparable;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.ArrayList;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Collections;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Comparator;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.List;<br /><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;CollectionSortTest&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;list&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ArrayList</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">ac</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">ab</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">aa</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">db</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">ca</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(String&nbsp;string&nbsp;:&nbsp;list)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(string&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collections.sort(list);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(String&nbsp;string&nbsp;:&nbsp;list)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(string&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">对象A自身实现Comparable接口</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">A</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;aList&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ArrayList</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">A</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aList.add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;A(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">wuwei</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aList.add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;A(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">zhangsan</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">3</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aList.add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;A(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">lisi</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(A&nbsp;a&nbsp;:&nbsp;aList)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(a</span><span style="color: #000000; ">+</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collections.sort(aList);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(A&nbsp;a&nbsp;:&nbsp;aList)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(a</span><span style="color: #000000; ">+</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">重写Conparator接口方法</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">B</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;bList&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ArrayList</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">B</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bList.add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;B(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">wuwei</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bList.add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;B(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">zhangsan</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">3</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bList.add(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;B(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">lisi</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(B&nbsp;b&nbsp;:&nbsp;bList)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(b</span><span style="color: #000000; ">+</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collections.sort(bList,&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Comparator</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">B</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">()&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;compare(B&nbsp;b1,&nbsp;B&nbsp;b2)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;b1.getCount().compareTo(b2.getCount());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(B&nbsp;b&nbsp;:&nbsp;bList)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(b</span><span style="color: #000000; ">+</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">对象A自身实现Comparable接口</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;A&nbsp;</span><span style="color: #0000FF; ">implements</span><span style="color: #000000; ">&nbsp;Comparable</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">A</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;String&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;Integer&nbsp;order;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;A(String&nbsp;name,&nbsp;Integer&nbsp;order)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.name&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.order&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;order;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;getName()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setName(String&nbsp;name)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.name&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Integer&nbsp;getOrder()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;order;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setOrder(Integer&nbsp;order)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.order&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;order;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;toString()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">name&nbsp;is&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">name</span><span style="color: #000000; ">+</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;order&nbsp;is&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">+</span><span style="color: #000000; ">order;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;compareTo(A&nbsp;o)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.order.compareTo(o.getOrder());<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;B{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;String&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;Integer&nbsp;count;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;B(String&nbsp;name,&nbsp;Integer&nbsp;count)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.name&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.count&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;count;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;getName()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setName(String&nbsp;name)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.name&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Integer&nbsp;getCount()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;count;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;setCount(Integer&nbsp;count)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.count&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;count;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;String&nbsp;toString()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">name&nbsp;is&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">+</span><span style="color: #000000; ">name</span><span style="color: #000000; ">+</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;count&nbsp;is&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">+</span><span style="color: #000000; ">count;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span></div><span>输出结果：<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">ac&nbsp;ab&nbsp;aa&nbsp;db&nbsp;ca&nbsp;<br />aa&nbsp;ab&nbsp;ac&nbsp;ca&nbsp;db&nbsp;<br />name&nbsp;is&nbsp;wuwei&nbsp;order&nbsp;is&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;name&nbsp;is&nbsp;zhangsan&nbsp;order&nbsp;is&nbsp;</span><span style="color: #000000; ">3</span><span style="color: #000000; ">&nbsp;name&nbsp;is&nbsp;lisi&nbsp;order&nbsp;is&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;<br />name&nbsp;is&nbsp;wuwei&nbsp;order&nbsp;is&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;name&nbsp;is&nbsp;lisi&nbsp;order&nbsp;is&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;name&nbsp;is&nbsp;zhangsan&nbsp;order&nbsp;is&nbsp;</span><span style="color: #000000; ">3</span><span style="color: #000000; ">&nbsp;<br />name&nbsp;is&nbsp;wuwei&nbsp;count&nbsp;is&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;name&nbsp;is&nbsp;zhangsan&nbsp;count&nbsp;is&nbsp;</span><span style="color: #000000; ">3</span><span style="color: #000000; ">&nbsp;name&nbsp;is&nbsp;lisi&nbsp;count&nbsp;is&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;<br />name&nbsp;is&nbsp;wuwei&nbsp;count&nbsp;is&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;name&nbsp;is&nbsp;lisi&nbsp;count&nbsp;is&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;name&nbsp;is&nbsp;zhangsan&nbsp;count&nbsp;is&nbsp;</span><span style="color: #000000; ">3</span><span style="color: #000000; "> <br /></span></div><span><br /><br /><br /><br /><br /><br /><br /><br /></span></div><img src ="http://www.blogjava.net/xue/aggbug/418385.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xue/" target="_blank">小人物_Amor</a> 2014-09-29 16:08 <a href="http://www.blogjava.net/xue/archive/2014/09/29/418385.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>快速、冒泡排序算法的性能比较</title><link>http://www.blogjava.net/xue/archive/2014/09/25/418267.html</link><dc:creator>小人物_Amor</dc:creator><author>小人物_Amor</author><pubDate>Thu, 25 Sep 2014 05:09:00 GMT</pubDate><guid>http://www.blogjava.net/xue/archive/2014/09/25/418267.html</guid><wfw:comment>http://www.blogjava.net/xue/comments/418267.html</wfw:comment><comments>http://www.blogjava.net/xue/archive/2014/09/25/418267.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xue/comments/commentRss/418267.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xue/services/trackbacks/418267.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*&nbsp;<br />&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;com.zx.ww.arraysort;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.text.Collator;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Arrays;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Calendar;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Comparator;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Locale;<br /><br /></span><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*&nbsp;</span><span style="color: #808080; ">@author</span><span style="color: #008000; ">&nbsp;xue<br />&nbsp;*&nbsp;2014年9月24日<br />&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;QuickSort&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">10</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;test()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;len&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">8000000</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">[]&nbsp;array&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">[len];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;len;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">)(Math.random()</span><span style="color: #000000; ">*</span><span style="color: #000000; ">10000</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Calendar&nbsp;cal_before&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Calendar.getInstance();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">&nbsp;before&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cal_before.getTimeInMillis();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(cal_before.getTime());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quickSort(array,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;array.length</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Calendar&nbsp;cal_after&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Calendar.getInstance();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">&nbsp;after&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cal_after.getTimeInMillis();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(cal_after.getTime());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">&nbsp;time&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;after</span><span style="color: #000000; ">-</span><span style="color: #000000; ">before;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">用时：</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;time&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">ms</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">==================================</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;quickSort(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">[]&nbsp;array,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;left,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;right)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(left&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;right)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;privot&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;getPrivot(array,&nbsp;left,&nbsp;right);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quickSort(array,&nbsp;left,&nbsp;privot</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quickSort(array,&nbsp;privot</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;right);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">将数组划分为两个数组，左边的数组都比中轴privot小，右边的都比中轴privot大</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;getPrivot(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">[]&nbsp;array,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;left,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;right)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;tmp&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;array[left];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(left&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;right)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(left&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;right&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;array[right]&nbsp;</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">&nbsp;tmp)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;right</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array[left]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;array[right];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(left&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;right&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;array[left]&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;tmp)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array[right]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;array[left];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array[left]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;tmp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;left;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /></span></div><br />运行十次输出的结果：<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">40</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">41</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />用时：</span><span style="color: #000000; ">1613</span><span style="color: #000000; ">.0ms<br /></span><span style="color: #000000; ">==================================</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">41</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">43</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />用时：</span><span style="color: #000000; ">1614</span><span style="color: #000000; ">.0ms<br /></span><span style="color: #000000; ">==================================</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">43</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">45</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />用时：</span><span style="color: #000000; ">1691</span><span style="color: #000000; ">.0ms<br /></span><span style="color: #000000; ">==================================</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">45</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">47</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />用时：</span><span style="color: #000000; ">1622</span><span style="color: #000000; ">.0ms<br /></span><span style="color: #000000; ">==================================</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">47</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">48</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />用时：</span><span style="color: #000000; ">1621</span><span style="color: #000000; ">.0ms<br /></span><span style="color: #000000; ">==================================</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">49</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">50</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />用时：</span><span style="color: #000000; ">1615</span><span style="color: #000000; ">.0ms<br /></span><span style="color: #000000; ">==================================</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">50</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">52</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />用时：</span><span style="color: #000000; ">1614</span><span style="color: #000000; ">.0ms<br /></span><span style="color: #000000; ">==================================</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">52</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">54</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />用时：</span><span style="color: #000000; ">1632</span><span style="color: #000000; ">.0ms<br /></span><span style="color: #000000; ">==================================</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">54</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">55</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />用时：</span><span style="color: #000000; ">1614</span><span style="color: #000000; ">.0ms<br /></span><span style="color: #000000; ">==================================</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">56</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">13</span><span style="color: #000000; ">:</span><span style="color: #000000; ">09</span><span style="color: #000000; ">:</span><span style="color: #000000; ">57</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />用时：</span><span style="color: #000000; ">1614</span><span style="color: #000000; ">.0ms<br /></span><span style="color: #000000; ">==================================</span><span style="color: #000000; "><br /></span></div>上述是快速排序八百万条数据用时基本在1.6s左右。<br /><br />接下来看冒泡排序：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*&nbsp;<br />&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;com.zx.ww.arraysort;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.text.Collator;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Arrays;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Calendar;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Comparator;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Locale;<br /><br /></span><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*&nbsp;</span><span style="color: #808080; ">@author</span><span style="color: #008000; ">&nbsp;wuwei<br />&nbsp;*&nbsp;2014年9月24日<br />&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;BubbleSort&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">5</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;test()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;len&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">80000</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">[]&nbsp;array&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">[len];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;array.length;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">)(Math.random()</span><span style="color: #000000; ">*</span><span style="color: #000000; ">10000</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Calendar&nbsp;calBefore&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Calendar.getInstance();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(calBefore.getTime());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bubbleSort(array);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Calendar&nbsp;calAfter&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Calendar.getInstance();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(calAfter.getTime());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">总共用时</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;(calAfter.getTimeInMillis()</span><span style="color: #000000; ">-</span><span style="color: #000000; ">calBefore.getTimeInMillis())&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">ms</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">==========================</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;bubbleSort(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">[]&nbsp;array)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;tmp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;array.length;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;j&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;array.length</span><span style="color: #000000; ">-</span><span style="color: #000000; ">i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(array[j]&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;array[j</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">])&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;array[j</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array[j</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;array[j];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array[j]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;tmp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /></span></div>运行五次输出如下结果：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">14</span><span style="color: #000000; ">:</span><span style="color: #000000; ">44</span><span style="color: #000000; ">:</span><span style="color: #000000; ">14</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">14</span><span style="color: #000000; ">:</span><span style="color: #000000; ">44</span><span style="color: #000000; ">:</span><span style="color: #000000; ">23</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />总共用时8822ms<br /></span><span style="color: #000000; ">==========================</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">14</span><span style="color: #000000; ">:</span><span style="color: #000000; ">44</span><span style="color: #000000; ">:</span><span style="color: #000000; ">23</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">14</span><span style="color: #000000; ">:</span><span style="color: #000000; ">44</span><span style="color: #000000; ">:</span><span style="color: #000000; ">32</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />总共用时8829ms<br /></span><span style="color: #000000; ">==========================</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">14</span><span style="color: #000000; ">:</span><span style="color: #000000; ">44</span><span style="color: #000000; ">:</span><span style="color: #000000; ">32</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">14</span><span style="color: #000000; ">:</span><span style="color: #000000; ">44</span><span style="color: #000000; ">:</span><span style="color: #000000; ">41</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />总共用时8915ms<br /></span><span style="color: #000000; ">==========================</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">14</span><span style="color: #000000; ">:</span><span style="color: #000000; ">44</span><span style="color: #000000; ">:</span><span style="color: #000000; ">41</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">14</span><span style="color: #000000; ">:</span><span style="color: #000000; ">44</span><span style="color: #000000; ">:</span><span style="color: #000000; ">50</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />总共用时8748ms<br /></span><span style="color: #000000; ">==========================</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">14</span><span style="color: #000000; ">:</span><span style="color: #000000; ">44</span><span style="color: #000000; ">:</span><span style="color: #000000; ">50</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />Thu&nbsp;Sep&nbsp;</span><span style="color: #000000; ">25</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">14</span><span style="color: #000000; ">:</span><span style="color: #000000; ">44</span><span style="color: #000000; ">:</span><span style="color: #000000; ">58</span><span style="color: #000000; ">&nbsp;CST&nbsp;</span><span style="color: #000000; ">2014</span><span style="color: #000000; "><br />总共用时8529ms<br /></span><span style="color: #000000; ">==========================</span><span style="color: #000000; "><br /></span></div>冒泡排序八万条数据用时接近9s。<br /><br />需要注意的是快速排序是八百万条数据只用了1.6s左右。<br /><br /><br /><img src ="http://www.blogjava.net/xue/aggbug/418267.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xue/" target="_blank">小人物_Amor</a> 2014-09-25 13:09 <a href="http://www.blogjava.net/xue/archive/2014/09/25/418267.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>根据集合里的Bean所包含的属性对集合进行排序工具类</title><link>http://www.blogjava.net/xue/archive/2014/09/24/418238.html</link><dc:creator>小人物_Amor</dc:creator><author>小人物_Amor</author><pubDate>Wed, 24 Sep 2014 08:25:00 GMT</pubDate><guid>http://www.blogjava.net/xue/archive/2014/09/24/418238.html</guid><wfw:comment>http://www.blogjava.net/xue/comments/418238.html</wfw:comment><comments>http://www.blogjava.net/xue/archive/2014/09/24/418238.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xue/comments/commentRss/418238.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xue/services/trackbacks/418238.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*&nbsp;<br />&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;com.infopatent.juangetljc.web.controller.util;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.lang.reflect.Field;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.text.Collator;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Collections;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Comparator;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.List;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Locale;<br /><br /></span><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*&nbsp;</span><span style="color: #808080; ">@author</span><span style="color: #008000; ">&nbsp;xue<br />&nbsp;*&nbsp;2014年9月24日<br />&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;SortListByBeanPropertyUtil&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">根据集合里的Bean拥有的属性进行排序</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">T</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;sort(List</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">T</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;list,&nbsp;</span><span style="color: #0000FF; ">final</span><span style="color: #000000; ">&nbsp;String&nbsp;sortProperty,&nbsp;</span><span style="color: #0000FF; ">final</span><span style="color: #000000; ">&nbsp;String&nbsp;sort)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(list&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&nbsp;sortProperty&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">""</span><span style="color: #000000; ">.equals(sortProperty)&nbsp;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&nbsp;list.isEmpty())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collections.sort(list,&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Comparator</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">T</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">()&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;compare(T&nbsp;t1,&nbsp;T&nbsp;t2)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;o1&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Object();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;o2&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Object();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o1&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;SortListByBeanPropertyUtil.getFieldValue(t1,&nbsp;sortProperty);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o2&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;SortListByBeanPropertyUtil.getFieldValue(t2,&nbsp;sortProperty);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&nbsp;(Exception&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;result&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(o1&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(o2&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(o1&nbsp;</span><span style="color: #0000FF; ">instanceof</span><span style="color: #000000; ">&nbsp;String)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Collator.getInstance(Locale.CHINESE).compare(o1,&nbsp;o2);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;((Comparable)o1).compareTo(o2);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">是否降序排序</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">desc</span><span style="color: #000000; ">"</span><span style="color: #000000; ">.equalsIgnoreCase(sort))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">-</span><span style="color: #000000; ">result;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;result;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">反射方法，反射出类型</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;Object&nbsp;getFieldValue(Object&nbsp;obj,&nbsp;String&nbsp;fieldName)&nbsp;</span><span style="color: #0000FF; ">throws</span><span style="color: #000000; ">&nbsp;Exception&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">反射出对象类型</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class</span><span style="color: #000000; ">&lt;?&gt;</span><span style="color: #000000; ">&nbsp;cls&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;obj.getClass();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">反射出类型字段</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Field&nbsp;field&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cls.getDeclaredField(fieldName);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">获取属性是，压制java对访问修饰符的检查</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;field.setAccessible(</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">在对象obj上读取field属性的值</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;val&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;field.get(obj);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;val;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /></span></div><img src ="http://www.blogjava.net/xue/aggbug/418238.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xue/" target="_blank">小人物_Amor</a> 2014-09-24 16:25 <a href="http://www.blogjava.net/xue/archive/2014/09/24/418238.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java读取sql脚本文件并插入到mysql数据库</title><link>http://www.blogjava.net/xue/archive/2014/07/29/416291.html</link><dc:creator>小人物_Amor</dc:creator><author>小人物_Amor</author><pubDate>Tue, 29 Jul 2014 07:07:00 GMT</pubDate><guid>http://www.blogjava.net/xue/archive/2014/07/29/416291.html</guid><wfw:comment>http://www.blogjava.net/xue/comments/416291.html</wfw:comment><comments>http://www.blogjava.net/xue/archive/2014/07/29/416291.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xue/comments/commentRss/416291.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xue/services/trackbacks/416291.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 因为项目框架hibernate里的hibernate.hbm2ddl.auto属性设置为create（为了使得开发人员只关注于实体类而不必去关心数据库设计。。。），所以我们每次部署项目的时候都会把数据库生成的表全删除了然后根据实体类生成数据表，这样就需要在maven项目写一个测试类来初始化项目需要的一些基础数据，如用户、权限、资源、字典等。因为maven在构建到特定的生命周期阶段的时候会通过插件来执行JUnit或者TestNG的测试用例，这个插件就是maven-surefire-plugin（这是需要配置的，当然也可以禁止去执行测试类，甚至禁止编译测试类），需要了解的请学习相关maven文档，或者参考http://blog.csdn.net/sin90lzc/article/details/7543262。<br />&nbsp;&nbsp;&nbsp; 考虑到上述因素，那么我就在src/test/java文件夹下新建一个测试类，那么这个测试类就会在clean install时候会执行，那么在这个时候执行数据初始化是合适的。因为初始化数据来自于sql脚本，所以我得读取sql脚本的内容并解析成相关的sql语句通过java的jdbc执行sql语句。那就开始做吧。不多说，上代码：<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; <br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">package</span><span style="color: #000000; ">&nbsp;com.infopatent.juangetljc.core;<br /></span><span style="color: #008080; ">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.io.BufferedReader;<br /></span><span style="color: #008080; ">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.io.FileInputStream;<br /></span><span style="color: #008080; ">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.io.InputStream;<br /></span><span style="color: #008080; ">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.sql.Connection;<br /></span><span style="color: #008080; ">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.sql.DriverManager;<br /></span><span style="color: #008080; ">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.sql.SQLException;<br /></span><span style="color: #008080; ">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.sql.Statement;<br /></span><span style="color: #008080; ">&nbsp;10</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.ArrayList;<br /></span><span style="color: #008080; ">&nbsp;11</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Arrays;<br /></span><span style="color: #008080; ">&nbsp;12</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.List;<br /></span><span style="color: #008080; ">&nbsp;13</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;14</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;org.junit.Test;<br /></span><span style="color: #008080; ">&nbsp;15</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;16</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;junit.framework.TestCase;<br /></span><span style="color: #008080; ">&nbsp;17</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;18</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;InitDataTest&nbsp;</span><span style="color: #0000FF; ">extends</span><span style="color: #000000; ">&nbsp;TestCase&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;19</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;20</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;String&nbsp;url&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">jdbc:mysql://localhost:3306/test?useUnicode=true&amp;amp;characterEncoding=UTF-8</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;21</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;String&nbsp;driver&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">com.mysql.jdbc.Driver</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;String&nbsp;userName&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">root</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;23</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;String&nbsp;password&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">""</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;24</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;filePathIn&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">F://workspace/juange-tljc/juange-tljc-core/src/test/java/basedata.sql</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;25</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;26</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;@Test<br /></span><span style="color: #008080; ">&nbsp;27</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;test()&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;28</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;29</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;30</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;execute(filePathIn);<br /></span><span style="color: #008080; ">&nbsp;31</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&nbsp;(Exception&nbsp;e)&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;32</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;TODO&nbsp;Auto-generated&nbsp;catch&nbsp;block</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;33</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br /></span><span style="color: #008080; ">&nbsp;34</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;35</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;36</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;37</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;38</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;读取sql文件,获取sql语句<br /></span><span style="color: #008080; ">&nbsp;39</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;返回所有sql语句的list集合<br /></span><span style="color: #008080; ">&nbsp;40</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;41</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;List</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;loadSql(String&nbsp;sqlFile)&nbsp;</span><span style="color: #0000FF; ">throws</span><span style="color: #000000; ">&nbsp;Exception&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;42</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;sqlList&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ArrayList</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">();<br /></span><span style="color: #008080; ">&nbsp;43</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;44</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;读取文件的内容并写道StringBuffer中去<br /></span><span style="color: #008080; ">&nbsp;45</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;46</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;sqlFileIn&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;FileInputStream(sqlFile);<br /></span><span style="color: #008080; ">&nbsp;47</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;sqlSb&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;StringBuffer();<br /></span><span style="color: #008080; ">&nbsp;48</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">byte</span><span style="color: #000000; ">[]&nbsp;buff&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">byte</span><span style="color: #000000; ">[sqlFileIn.available()];<br /></span><span style="color: #008080; ">&nbsp;49</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;byteRead&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;50</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">((byteRead&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;sqlFileIn.read(buff))&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;51</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlSb.append(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;String(buff,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;byteRead));<br /></span><span style="color: #008080; ">&nbsp;52</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;53</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;54</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;windows下换行是/r/n，Linux下是/n，<br /></span><span style="color: #008080; ">&nbsp;55</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;此处需要根据导出的sql文件进行具体的处理，我在处理的时候<br /></span><span style="color: #008080; ">&nbsp;56</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;也遇到了很多的问题，如果我这个不行可以在网上找找别的解析方法<br /></span><span style="color: #008080; ">&nbsp;57</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;58</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sqlArr[]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;sqlSb.toString().split(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">(;\\s*\\rr\\n)|(;\\s*\\n)</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;59</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">sqlArr.length;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;60</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sql&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;sqlArr[i].replaceAll(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">--.*</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">""</span><span style="color: #000000; ">).trim();<br /></span><span style="color: #008080; ">&nbsp;61</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">""</span><span style="color: #000000; ">.equals(sql))&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;62</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlList.add(sql);<br /></span><span style="color: #008080; ">&nbsp;63</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;64</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;65</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;sqlList;<br /></span><span style="color: #008080; ">&nbsp;66</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;67</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;68</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;69</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;70</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;传入文件执行sql语句<br /></span><span style="color: #008080; ">&nbsp;71</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br /></span><span style="color: #008080; ">&nbsp;72</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;73</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;execute(String&nbsp;sqlFile)&nbsp;</span><span style="color: #0000FF; ">throws</span><span style="color: #000000; ">&nbsp;SQLException&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;74</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Statement&nbsp;stmt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;75</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;sqlList&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ArrayList</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">();<br /></span><span style="color: #008080; ">&nbsp;76</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;conn&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;getConnection();<br /></span><span style="color: #008080; ">&nbsp;77</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;78</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlList&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;loadSql(sqlFile);<br /></span><span style="color: #008080; ">&nbsp;79</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setAutoCommit(</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;80</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;conn.createStatement();<br /></span><span style="color: #008080; ">&nbsp;81</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(String&nbsp;sql&nbsp;:&nbsp;sqlList)&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;82</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(sql);<br /></span><span style="color: #008080; ">&nbsp;83</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.addBatch(sql);<br /></span><span style="color: #008080; ">&nbsp;84</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;85</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">[]&nbsp;rows&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;stmt.executeBatch();<br /></span><span style="color: #008080; ">&nbsp;86</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Row&nbsp;count:</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;Arrays.toString(rows));<br /></span><span style="color: #008080; ">&nbsp;87</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.commit();<br /></span><span style="color: #008080; ">&nbsp;88</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">数据更新成功</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;89</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&nbsp;(Exception&nbsp;e)&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;90</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br /></span><span style="color: #008080; ">&nbsp;91</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.rollback();<br /></span><span style="color: #008080; ">&nbsp;92</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000FF; ">finally</span><span style="color: #000000; ">{<br /></span><span style="color: #008080; ">&nbsp;93</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.close();<br /></span><span style="color: #008080; ">&nbsp;94</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close();<br /></span><span style="color: #008080; ">&nbsp;95</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;96</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;97</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;98</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;99</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">/*</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">100</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;获取sql连接<br /></span><span style="color: #008080; ">101</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">102</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;Connection&nbsp;getConnection(){<br /></span><span style="color: #008080; ">103</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;conn&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">104</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">&nbsp;{<br /></span><span style="color: #008080; ">105</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class.forName(driver);<br /></span><span style="color: #008080; ">106</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;DriverManager.getConnection(url,&nbsp;userName,&nbsp;password);<br /></span><span style="color: #008080; ">107</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">conn.isClosed())&nbsp;{<br /></span><span style="color: #008080; ">108</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">数据库连接成功!</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">109</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">110</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&nbsp;(Exception&nbsp;e)&nbsp;{<br /></span><span style="color: #008080; ">111</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br /></span><span style="color: #008080; ">112</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">113</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;conn;<br /></span><span style="color: #008080; ">114</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">115</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">116</span>&nbsp;<span style="color: #000000; "></span></div><br />&nbsp;&nbsp;&nbsp; 在这个过程中遇到了很多的问题，曾经一度使我陷入迷糊状态中，后来好好梳理了一下思路，一个一个的去排查问题终于成功了~<br />&nbsp;&nbsp;&nbsp; 首先在读取文件的时候，发现读取的文件内容显示是正常的不是乱码，但是插入到数据库中就是乱码，好吧，我又遇到了这种问题，我依次检查了我java文件的编码，数据库的编码，都设置为utf-8，url也加上编码<span style="color: #000000; ">"</span><span style="color: #000000; ">jdbc:mysql://localhost:3306/test?useUnicode=true&amp;amp;characterEncoding=UTF-8</span><span style="color: #000000; ">"。</span>结果还是乱码，那就再看看mysql下的my.ini文件中的编码设置在[mysqld]节点下加上default-character-set=utf8（如果没有就改为utf8），这下终于不是乱码了。然后我开始maven clean install,去查看数据库发现又出现了乱码的问题，真是折磨人啊，我发现唯一不同的就是之前正常的插入数据是我在测试类下run as junit，而现在用的是maven clean install，刚接触maven完全不知道症结所在啊，百度一下，发现maven构建到特定的生命周期时候运行测试用例是依靠maven-surefire-plugin这个插件的，而这个插件也需要指定字符集编码的，于是我在项目的pom.xml中加入了如下代码（本来竟然没有！）：<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">build</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;<br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">plugins</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">plugin</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">org.apache.maven.plugins</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">maven-surefire-plugin</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">2.7.2</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">configuration</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">forkMode</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">once</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">forkMode</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">argLine</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">-Dfile.encoding=UTF-8</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">argLine</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">systemProperties</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">net.sourceforge.cobertura.datafile</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">value</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">target/cobertura/cobertura.ser</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">value</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">property</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">systemProperties</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">configuration</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">plugin</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">plugins</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;<br /></span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">build</span><span style="color: #0000ff;">&gt;</span></div><br />这个时候再去maven clean install,终于不乱码了，终于不乱码了！花了我四个小时，长见识了！此处记录自己遇到的问题以及如何解决，希望对各位有帮助！<br /><br /><br /><br /><br /><br /><div> </div><div><p> </p></div><img src ="http://www.blogjava.net/xue/aggbug/416291.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xue/" target="_blank">小人物_Amor</a> 2014-07-29 15:07 <a href="http://www.blogjava.net/xue/archive/2014/07/29/416291.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于dtree的树形菜单实现</title><link>http://www.blogjava.net/xue/archive/2014/05/30/414277.html</link><dc:creator>小人物_Amor</dc:creator><author>小人物_Amor</author><pubDate>Fri, 30 May 2014 09:46:00 GMT</pubDate><guid>http://www.blogjava.net/xue/archive/2014/05/30/414277.html</guid><wfw:comment>http://www.blogjava.net/xue/comments/414277.html</wfw:comment><comments>http://www.blogjava.net/xue/archive/2014/05/30/414277.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xue/comments/commentRss/414277.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xue/services/trackbacks/414277.html</trackback:ping><description><![CDATA[各位如果想找合适的树形菜单，不放试试dtree，去官网看看www.destroydrop.com/javascript/tree/，下载dtree.zip下来解压之后有dtree.js,dtree.css,img文件夹,api.html,example01.html这几个文件，可以看看api.html，里面有参数和方法说明，实际上在项目应用时，我们是需要从数据库里的菜单表里读取数据进行树形菜单构建的，根据api.html里面的参数说明可建立一张s_menu的数据表：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; "></span><span style="color: #0000FF; ">CREATE</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">TABLE</span><span style="color: #000000; ">&nbsp;`s_menu`&nbsp;(<br />&nbsp;&nbsp;`id`&nbsp;</span><span style="color: #000000; font-weight: bold; ">int</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">11</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #808080; ">NOT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">NULL</span><span style="color: #000000; ">&nbsp;AUTO_INCREMENT&nbsp;COMMENT&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">主键id</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;`pid`&nbsp;</span><span style="color: #000000; font-weight: bold; ">int</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">11</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #0000FF; ">DEFAULT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">NULL</span><span style="color: #000000; ">&nbsp;COMMENT&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">父级id</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;`name`&nbsp;</span><span style="color: #000000; font-weight: bold; ">varchar</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">45</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #0000FF; ">DEFAULT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">NULL</span><span style="color: #000000; ">&nbsp;COMMENT&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">菜单名称</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;`url`&nbsp;</span><span style="color: #000000; font-weight: bold; ">varchar</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">255</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #0000FF; ">DEFAULT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">NULL</span><span style="color: #000000; ">&nbsp;COMMENT&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">菜单url</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;`title`&nbsp;</span><span style="color: #000000; font-weight: bold; ">varchar</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">45</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #0000FF; ">DEFAULT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">NULL</span><span style="color: #000000; ">&nbsp;COMMENT&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">鼠标放上去显示的title</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;`target`&nbsp;</span><span style="color: #000000; font-weight: bold; ">varchar</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">45</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #0000FF; ">DEFAULT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">NULL</span><span style="color: #000000; ">&nbsp;COMMENT&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">目标iframe</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;`icon`&nbsp;</span><span style="color: #000000; font-weight: bold; ">varchar</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">255</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #0000FF; ">DEFAULT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">NULL</span><span style="color: #000000; ">&nbsp;COMMENT&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">菜单折叠时候显示的图片</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;`iconOpen`&nbsp;</span><span style="color: #000000; font-weight: bold; ">varchar</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">255</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #0000FF; ">DEFAULT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">NULL</span><span style="color: #000000; ">&nbsp;COMMENT&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">菜单打开时候显示的图片</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;`</span><span style="color: #0000FF; ">open</span><span style="color: #000000; ">`&nbsp;</span><span style="color: #000000; font-weight: bold; ">int</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">1</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #0000FF; ">DEFAULT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">0</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">&nbsp;COMMENT&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">是否打开</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,<br />&nbsp;&nbsp;</span><span style="color: #0000FF; ">PRIMARY</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">KEY</span><span style="color: #000000; ">&nbsp;(`id`)<br />)&nbsp;ENGINE</span><span style="color: #808080; ">=</span><span style="color: #000000; ">MyISAM&nbsp;AUTO_INCREMENT</span><span style="color: #808080; ">=</span><span style="color: #800000; font-weight: bold; ">12</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">DEFAULT</span><span style="color: #000000; ">&nbsp;CHARSET</span><span style="color: #808080; ">=</span><span style="color: #000000; ">utf8;</span></div><br />并且插入一些测试数据来使用：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; ">&nbsp;`s_menu`&nbsp;</span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">1</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">-1</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">浏览器</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">#</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">浏览器</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">0</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; ">&nbsp;`s_menu`&nbsp;</span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">2</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">1</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">IE</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">#</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">IE浏览器</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">0</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; ">&nbsp;`s_menu`&nbsp;</span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">3</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">2</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">IE6</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">#</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">IE6</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">0</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; ">&nbsp;`s_menu`&nbsp;</span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">4</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">2</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">IE7</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">#</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">IE7</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">0</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; ">&nbsp;`s_menu`&nbsp;</span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">5</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">2</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">IE8</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">#</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">IE8</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">0</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; ">&nbsp;`s_menu`&nbsp;</span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">6</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">2</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">IE10</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">#</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">IE10</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">0</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; ">&nbsp;`s_menu`&nbsp;</span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">7</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">1</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">Firefox</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">#</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">Firefox</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">0</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; ">&nbsp;`s_menu`&nbsp;</span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">8</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">7</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">Firefox15.0</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">#</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">Firefox15.0</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">0</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; ">&nbsp;`s_menu`&nbsp;</span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">9</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">7</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">Firefox15.1</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">#</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">Firefox15.1</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">0</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; ">&nbsp;`s_menu`&nbsp;</span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">10</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">1</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">360浏览器</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">#</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">360浏览器</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">0</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; ">&nbsp;`s_menu`&nbsp;</span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">11</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">1</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">搜狗浏览器</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">#</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">搜狗浏览器</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">0</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span></div><br />接下来把解压好的dtree.js以及dtree.css放到项目的对应目录下，并在页面引入，后台执行方法我就不说了，就是查询出s_menu里所有的数据就可以了，在jsp里面实现：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="background-color: #FFFF00; color: #000000; ">&lt;%</span><span style="background-color: #F5F5F5; color: #000000; ">@&nbsp;page&nbsp;contentType</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">text/html;charset=UTF-8</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #FFFF00; color: #000000; ">%&gt;</span><span style="color: #000000; "><br /></span><span style="background-color: #FFFF00; color: #000000; ">&lt;%</span><span style="background-color: #F5F5F5; color: #000000; ">@&nbsp;include&nbsp;file</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">/common/taglibs.jsp</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #FFFF00; color: #000000; ">%&gt;</span><span style="color: #000000; "><br /></span><span style="background-color: #FFFF00; color: #000000; ">&lt;%</span><span style="background-color: #F5F5F5; color: #000000; ">@&nbsp;page&nbsp;import</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">org.springframework.context.ApplicationContext,org.springframework.context.support.ClassPathXmlApplicationContext,com.zx.ww.entity.base.Menu,com.zx.ww.service.base.MenuManager,java.util.List</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;&nbsp;</span><span style="background-color: #FFFF00; color: #000000; ">%&gt;</span><span style="color: #000000; "><br /></span><span style="background-color: #FFFF00; color: #000000; ">&lt;%</span><span style="background-color: #F5F5F5; color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;ApplicationContext&nbsp;context&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">new</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;ClassPathXmlApplicationContext(</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">applicationContext.xml</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;MenuManager&nbsp;menuManager&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;(MenuManager)context.getBean(</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">menuManager</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="background-color: #F5F5F5; color: #000000; ">&lt;</span><span style="background-color: #F5F5F5; color: #000000; ">Menu</span><span style="background-color: #F5F5F5; color: #000000; ">&gt;</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;menus&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;menuManager.findAllMenu();<br />&nbsp;&nbsp;&nbsp;&nbsp;request.setAttribute(</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">menus</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">,&nbsp;menus);<br /></span><span style="background-color: #FFFF00; color: #000000; ">%&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;!</span><span style="color: #FF00FF; ">DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional//EN"&nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">html&nbsp;</span><span style="color: #FF0000; ">xmlns</span><span style="color: #0000FF; ">="http://www.w3.org/1999/xhtml"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">head</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">title</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">SSH2</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">title</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">head</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">body</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">table&nbsp;</span><span style="color: #FF0000; ">width</span><span style="color: #0000FF; ">="100%"</span><span style="color: #FF0000; ">&nbsp;height</span><span style="color: #0000FF; ">="100%"</span><span style="color: #FF0000; ">&nbsp;border</span><span style="color: #0000FF; ">="0"</span><span style="color: #FF0000; ">&nbsp;cellspacing</span><span style="color: #0000FF; ">="0"</span><span style="color: #FF0000; ">&nbsp;cellpadding</span><span style="color: #0000FF; ">="0"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">tr</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">td&nbsp;</span><span style="color: #FF0000; ">valign</span><span style="color: #0000FF; ">="top"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">div&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="treearea"</span><span style="color: #FF0000; ">&nbsp;style</span><span style="color: #0000FF; ">="overflow:&nbsp;scroll;height:100%;width:100%"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">div</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">tr</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">table</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">body</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">html</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">script&nbsp;</span><span style="color: #FF0000; ">type</span><span style="color: #0000FF; ">="text/javascript"</span><span style="color: #0000FF; ">&gt;</span><span style="background-color: #F5F5F5; color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;dtree&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">new</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;dTree('dtree',&nbsp;'${ctx}</span><span style="background-color: #F5F5F5; color: #000000; ">/</span><span style="background-color: #F5F5F5; color: #000000; ">images</span><span style="background-color: #F5F5F5; color: #000000; ">/</span><span style="background-color: #F5F5F5; color: #000000; ">dtree</span><span style="background-color: #F5F5F5; color: #000000; ">/</span><span style="background-color: #F5F5F5; color: #000000; ">');<br />&nbsp;&nbsp;&nbsp;&nbsp;dtree.config.folderLinks&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">true</span><span style="background-color: #F5F5F5; color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;dtree.config.useCookies&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">true</span><span style="background-color: #F5F5F5; color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">&lt;</span><span style="background-color: #F5F5F5; color: #000000; ">c:forEach&nbsp;items</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">${menus}</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;</span><span style="background-color: #F5F5F5; color: #0000FF; ">var</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">menu</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">&gt;</span><span style="background-color: #F5F5F5; color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dtree.add(${menu.id},${menu.pid},</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">${menu.name}</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">,</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">${menu.url}</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">,</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">${menu.title}</span><span style="background-color: #F5F5F5; color: #000000; ">"</span><span style="background-color: #F5F5F5; color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">&lt;/</span><span style="background-color: #F5F5F5; color: #000000; ">c:forEach</span><span style="background-color: #F5F5F5; color: #000000; ">&gt;</span><span style="background-color: #F5F5F5; color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById('treearea').innerHTML&nbsp;</span><span style="background-color: #F5F5F5; color: #000000; ">=</span><span style="background-color: #F5F5F5; color: #000000; ">&nbsp;dtree;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">script</span><span style="color: #0000ff;">&gt;</span></div><br />看效果：<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/xue/dtree.png" /><br />这是从数据库里读出数据的方式，本地的话构建这样的数据就行了：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">script&nbsp;type</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">text/javascript</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;!--</span><span style="color: #000000; "><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;dTree('d');<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.add(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,'My&nbsp;example&nbsp;tree');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.add(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,'Node&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">','example01.html');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.add(</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,'Node&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">','example01.html');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.add(</span><span style="color: #000000; ">3</span><span style="color: #000000; ">,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,'Node&nbsp;</span><span style="color: #000000; ">1.1</span><span style="color: #000000; ">','example01.html');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.add(</span><span style="color: #000000; ">4</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,'Node&nbsp;</span><span style="color: #000000; ">3</span><span style="color: #000000; ">','example01.html');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.add(</span><span style="color: #000000; ">5</span><span style="color: #000000; ">,</span><span style="color: #000000; ">3</span><span style="color: #000000; ">,'Node&nbsp;</span><span style="color: #000000; ">1.1</span><span style="color: #000000; ">.</span><span style="color: #000000; ">1</span><span style="color: #000000; ">','example01.html');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.add(</span><span style="color: #000000; ">6</span><span style="color: #000000; ">,</span><span style="color: #000000; ">5</span><span style="color: #000000; ">,'Node&nbsp;</span><span style="color: #000000; ">1.1</span><span style="color: #000000; ">.</span><span style="color: #000000; ">1.1</span><span style="color: #000000; ">','example01.html');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.add(</span><span style="color: #000000; ">7</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,'Node&nbsp;</span><span style="color: #000000; ">4</span><span style="color: #000000; ">','example01.html');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.add(</span><span style="color: #000000; ">8</span><span style="color: #000000; ">,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,'Node&nbsp;</span><span style="color: #000000; ">1.2</span><span style="color: #000000; ">','example01.html');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.add(</span><span style="color: #000000; ">9</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,'My&nbsp;Pictures','example01.html','Pictures&nbsp;I\'ve&nbsp;taken&nbsp;over&nbsp;the&nbsp;years','','','img</span><span style="color: #000000; ">/</span><span style="color: #000000; ">imgfolder.gif');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.add(</span><span style="color: #000000; ">10</span><span style="color: #000000; ">,</span><span style="color: #000000; ">9</span><span style="color: #000000; ">,'The&nbsp;trip&nbsp;to&nbsp;Iceland','example01.html','Pictures&nbsp;of&nbsp;Gullfoss&nbsp;and&nbsp;Geysir');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.add(</span><span style="color: #000000; ">11</span><span style="color: #000000; ">,</span><span style="color: #000000; ">9</span><span style="color: #000000; ">,'Mom\'s&nbsp;birthday','example01.html');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.add(</span><span style="color: #000000; ">12</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,'Recycle&nbsp;Bin','example01.html','','','img</span><span style="color: #000000; ">/</span><span style="color: #000000; ">trash.gif');<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write(d);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">--&gt;</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">&lt;/</span><span style="color: #000000; ">script</span><span style="color: #000000; ">&gt;</span></div>网上有很多关于dtree的说明，在此看不明白的再去网上找找别的，有说的比较详细的PPT，关于各个参数以及方法说明都有~<br />ok，留着以后会有用的！<img src ="http://www.blogjava.net/xue/aggbug/414277.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xue/" target="_blank">小人物_Amor</a> 2014-05-30 17:46 <a href="http://www.blogjava.net/xue/archive/2014/05/30/414277.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>