﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-初一七月</title><link>http://www.blogjava.net/caojianhua/</link><description>你必须承认，我们生存的这个世界取决于自身的能力而非别人的保护(AW)</description><language>zh-cn</language><lastBuildDate>Tue, 05 May 2026 13:41:41 GMT</lastBuildDate><pubDate>Tue, 05 May 2026 13:41:41 GMT</pubDate><ttl>60</ttl><item><title>package阶段跳过test</title><link>http://www.blogjava.net/caojianhua/archive/2013/11/05/maven.html</link><dc:creator>初一七月</dc:creator><author>初一七月</author><pubDate>Tue, 05 Nov 2013 09:21:00 GMT</pubDate><guid>http://www.blogjava.net/caojianhua/archive/2013/11/05/maven.html</guid><wfw:comment>http://www.blogjava.net/caojianhua/comments/406022.html</wfw:comment><comments>http://www.blogjava.net/caojianhua/archive/2013/11/05/maven.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caojianhua/comments/commentRss/406022.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caojianhua/services/trackbacks/406022.html</trackback:ping><description><![CDATA[1.命令行方式<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; ">1</span>&nbsp;mvn&nbsp;package&nbsp;-DskipTests</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: #008080; ">1</span>&nbsp;mvn&nbsp;package&nbsp;-Dmaven.test.skip=true</div><br />2.pom.xml配置文件方式<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; ">project</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;&nbsp;&nbsp;[<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />]<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">build</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">plugins</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">plugin</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span>org.apache.maven.plugins<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span>maven-surefire-plugin<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span>2.4.2<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">configuration</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">skipTests</span><span style="color: #0000FF; ">&gt;</span>true<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">skipTests</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">configuration</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">plugin</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">plugins</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">build</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;[<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />]<br /><span style="color: #008080; ">16</span>&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">project</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">17</span>&nbsp;</div><br /><br /><img src ="http://www.blogjava.net/caojianhua/aggbug/406022.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caojianhua/" target="_blank">初一七月</a> 2013-11-05 17:21 <a href="http://www.blogjava.net/caojianhua/archive/2013/11/05/maven.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MyEclipse 6.5安装maven插件</title><link>http://www.blogjava.net/caojianhua/archive/2013/11/05/406013.html</link><dc:creator>初一七月</dc:creator><author>初一七月</author><pubDate>Tue, 05 Nov 2013 08:19:00 GMT</pubDate><guid>http://www.blogjava.net/caojianhua/archive/2013/11/05/406013.html</guid><wfw:comment>http://www.blogjava.net/caojianhua/comments/406013.html</wfw:comment><comments>http://www.blogjava.net/caojianhua/archive/2013/11/05/406013.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caojianhua/comments/commentRss/406013.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caojianhua/services/trackbacks/406013.html</trackback:ping><description><![CDATA[<h4>一、卸载原有maven插件</h4>MyEclipse 6.5集成了Maven插件，不过有不少bug，用习惯了m2eclipse，不想在这上面浪费时间。要安装m2eclipse，需要先把自带的maven插件卸载掉，卸载步骤如下：<br />1.删除/eclipse/features/com.genuitec.myeclipse.maven_6.5.1.zmyeclipse650200806目录<br />2.进入plugins目录，删除以下目录及jar包<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;com.genuitec.myeclipse.maven_6.5.1.zmyeclipse650200806<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;org.maven.ide.components.archetype_common_2.0.0.20080331-1600<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;org.maven.ide.components.maven_embedder_2.1.0.20080410-2200<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;org.maven.ide.components.maven_model_edit_1.0.0.20080331-1600<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;org.maven.ide.components.maven_scm_1.0.0.20080410-2200<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;org.maven.ide.components.nexus_indexer_1.0.0.20080331-1600<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;org.maven.ide.components.qname_1.0.0.20080331-1600<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;com.genuitec.eclipse.maven_6.5.1.zmyeclipse650200806.jar<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;org.maven.ide.eclipse.central_0.9.1.zmyeclipse650200806.jar&nbsp;<br /><span style="color: #008080; ">10</span>&nbsp;org.maven.ide.eclipse.scm_0.9.2.zmyeclipse650200806.jar<br /><span style="color: #008080; ">11</span>&nbsp;org.maven.ide.eclipse_0.9.3.zmyeclipse650200806.jar</div><br /><h4>二、在线安装m2eclipse</h4>1.Help -&gt; Find and Install -&gt;Search for new features to install-&gt;New Remote Site<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: #008080; ">1</span>&nbsp;name：m2eclipse<br /><span style="color: #008080; ">2</span>&nbsp;url：http://m2eclipse.sonatype.org/sites/m2e/0.10.0.20100209-0800/</div><br />2.点击Finish，开始自动搜索。这个链接之前是好用的，不过今天再下载总是提示错误，直接访问也提示内容找不到，看来是挪地方了。最后在官网找到这个帖子<a href="https://support.sonatype.com/entries/24316542.html?__utma=152826725.190993842.1383629309.1383629309.1383636693.2&amp;__utmb=152826725.1.10.1383636693&amp;__utmc=152826725&amp;__utmx=-&amp;__utmz=152826725.1383629309.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)&amp;__utmv=-&amp;__utmk=199025391" title="Where did http://m2eclipse.sonatype.org/sites/m2e go?">Where did http://m2eclipse.sonatype.org/sites/m2e go?</a>根据提示找到了最新地址<a href="http://repository.sonatype.org/content/sites/forge-sites/m2e/">http://repository.sonatype.org/content/sites/forge-sites/m2e/</a><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 />-->As&nbsp;of&nbsp;June&nbsp;2013,&nbsp;that&nbsp;site&nbsp;has&nbsp;been&nbsp;shut&nbsp;down&nbsp;because&nbsp;M2Eclipse&nbsp;was&nbsp;moved&nbsp;to&nbsp;the&nbsp;Eclipse&nbsp;Foundation&nbsp;years&nbsp;ago.<br /><br />You&nbsp;can&nbsp;access&nbsp;the&nbsp;archived&nbsp;M2Eclipse&nbsp;sites&nbsp;(including&nbsp;0.12)&nbsp;here:<br /><br />https://repository.sonatype.org/content/sites/forge-sites/m2e/<br /><br />For&nbsp;more&nbsp;information&nbsp;on&nbsp;how&nbsp;to&nbsp;access&nbsp;current&nbsp;m2e&nbsp;releases,&nbsp;see&nbsp;http://eclipse.org/m2e/download/.</div>所以上面的地址变成了这样<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: #008080; ">1</span>&nbsp;name:m2eclipse<br /><span style="color: #008080; ">2</span>&nbsp;url:http://repository.sonatype.org/content/sites/forge-sites/m2e/0.10.0/S/20100209-0800/</div>再安装就没有问题了。<br /><br />3.设置maven<br /><div>Window-&gt;preferences，搜索maven，User Settings中选择本地maven配置文件，Update Settings-&gt;Apply-&gt;OK</div><br /><h4>三、问题</h4>重启MyEclipse后，跳出异常<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: #008080; ">1</span>&nbsp;Eclipse&nbsp;is&nbsp;running&nbsp;in&nbsp;a&nbsp;JRE,&nbsp;but&nbsp;a&nbsp;JDK&nbsp;is&nbsp;required<br /><span style="color: #008080; ">2</span>&nbsp;Some&nbsp;Maven&nbsp;plugins&nbsp;may&nbsp;not&nbsp;work&nbsp;when&nbsp;importing&nbsp;projects&nbsp;or&nbsp;updating&nbsp;source&nbsp;folders.</div><br />具体的解决方案见这个链接<a href="http://www.blogjava.net/itvincent/archive/2010/07/25/327101.html">http://www.blogjava.net/itvincent/archive/2010/07/25/327101.html<br /></a><br /><img src ="http://www.blogjava.net/caojianhua/aggbug/406013.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caojianhua/" target="_blank">初一七月</a> 2013-11-05 16:19 <a href="http://www.blogjava.net/caojianhua/archive/2013/11/05/406013.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Redis并发问题</title><link>http://www.blogjava.net/caojianhua/archive/2013/01/28/394847.html</link><dc:creator>初一七月</dc:creator><author>初一七月</author><pubDate>Mon, 28 Jan 2013 11:23:00 GMT</pubDate><guid>http://www.blogjava.net/caojianhua/archive/2013/01/28/394847.html</guid><wfw:comment>http://www.blogjava.net/caojianhua/comments/394847.html</wfw:comment><comments>http://www.blogjava.net/caojianhua/archive/2013/01/28/394847.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caojianhua/comments/commentRss/394847.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caojianhua/services/trackbacks/394847.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Redis 并发&nbsp;&nbsp;<a href='http://www.blogjava.net/caojianhua/archive/2013/01/28/394847.html'>阅读全文</a><img src ="http://www.blogjava.net/caojianhua/aggbug/394847.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caojianhua/" target="_blank">初一七月</a> 2013-01-28 19:23 <a href="http://www.blogjava.net/caojianhua/archive/2013/01/28/394847.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ActiveMQ报Address already in use异常</title><link>http://www.blogjava.net/caojianhua/archive/2012/07/27/384171.html</link><dc:creator>初一七月</dc:creator><author>初一七月</author><pubDate>Fri, 27 Jul 2012 07:59:00 GMT</pubDate><guid>http://www.blogjava.net/caojianhua/archive/2012/07/27/384171.html</guid><wfw:comment>http://www.blogjava.net/caojianhua/comments/384171.html</wfw:comment><comments>http://www.blogjava.net/caojianhua/archive/2012/07/27/384171.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caojianhua/comments/commentRss/384171.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caojianhua/services/trackbacks/384171.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Spring ActiveMQ Address already in use异常&nbsp;&nbsp;<a href='http://www.blogjava.net/caojianhua/archive/2012/07/27/384171.html'>阅读全文</a><img src ="http://www.blogjava.net/caojianhua/aggbug/384171.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caojianhua/" target="_blank">初一七月</a> 2012-07-27 15:59 <a href="http://www.blogjava.net/caojianhua/archive/2012/07/27/384171.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JMS规范及相关实现</title><link>http://www.blogjava.net/caojianhua/archive/2012/07/26/384095.html</link><dc:creator>初一七月</dc:creator><author>初一七月</author><pubDate>Thu, 26 Jul 2012 09:41:00 GMT</pubDate><guid>http://www.blogjava.net/caojianhua/archive/2012/07/26/384095.html</guid><wfw:comment>http://www.blogjava.net/caojianhua/comments/384095.html</wfw:comment><comments>http://www.blogjava.net/caojianhua/archive/2012/07/26/384095.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caojianhua/comments/commentRss/384095.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caojianhua/services/trackbacks/384095.html</trackback:ping><description><![CDATA[JMS是一种应用于异步消息传递的标准API，作为Java平台的一部分，JMS可以允许不同应用、不同模块之间实现可靠、异步数据通信。<br /><br /><strong>一些概念</strong><br /><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><br />JMS&nbsp;provider<br />&nbsp;&nbsp;&nbsp;&nbsp;An&nbsp;implementation&nbsp;of&nbsp;the&nbsp;JMS&nbsp;interface&nbsp;for&nbsp;a&nbsp;Message&nbsp;Oriented&nbsp;Middleware&nbsp;(MOM).&nbsp;Providers&nbsp;are&nbsp;implemented&nbsp;as&nbsp;either&nbsp;a&nbsp;Java&nbsp;JMS&nbsp;implementation&nbsp;or&nbsp;an&nbsp;adapter&nbsp;to&nbsp;a&nbsp;non-Java&nbsp;MOM.<br />JMS&nbsp;client<br />&nbsp;&nbsp;&nbsp;&nbsp;An&nbsp;application&nbsp;or&nbsp;process&nbsp;that&nbsp;produces&nbsp;and/or&nbsp;receives&nbsp;messages.<br />JMS&nbsp;producer/publisher<br />&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;JMS&nbsp;client&nbsp;that&nbsp;creates&nbsp;and&nbsp;sends&nbsp;messages.<br />JMS&nbsp;consumer/subscriber<br />&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;JMS&nbsp;client&nbsp;that&nbsp;receives&nbsp;messages.<br />JMS&nbsp;message<br />&nbsp;&nbsp;&nbsp;&nbsp;An&nbsp;object&nbsp;that&nbsp;contains&nbsp;the&nbsp;data&nbsp;being&nbsp;transferred&nbsp;between&nbsp;JMS&nbsp;clients.<br />JMS&nbsp;queue<br />&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;staging&nbsp;area&nbsp;that&nbsp;contains&nbsp;messages&nbsp;that&nbsp;have&nbsp;been&nbsp;sent&nbsp;and&nbsp;are&nbsp;waiting&nbsp;to&nbsp;be&nbsp;read.&nbsp;Note&nbsp;that,&nbsp;contrary&nbsp;to&nbsp;what&nbsp;the&nbsp;name&nbsp;queue&nbsp;suggests,&nbsp;messages&nbsp;don't&nbsp;have&nbsp;to&nbsp;be&nbsp;delivered&nbsp;in&nbsp;the&nbsp;order&nbsp;sent.&nbsp;A&nbsp;JMS&nbsp;queue&nbsp;only&nbsp;guarantees&nbsp;that&nbsp;each&nbsp;message&nbsp;is&nbsp;processed&nbsp;only&nbsp;once.<br />JMS&nbsp;topic<br />&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;distribution&nbsp;mechanism&nbsp;for&nbsp;publishing&nbsp;messages&nbsp;that&nbsp;are&nbsp;delivered&nbsp;to&nbsp;multiple&nbsp;subscribers.&nbsp;</div><br />在JMS中，支持两种消息模型，点对点（Point-to-point）和发布-订阅(Publish and subscribe)，这两种模式分别对应于JMS中的两种消息目标（Message Destination）:队列及主题。<br /><br />在点对点模型中，每个消息都有一个发送者和一个接收者，消息中介（broker）收到发送者的消息，会将消息放入队列中，而接收者请求并接收队列中的一条消息后，这条消息就会从队列中删除。消息队列中的每条消息只能投递给一个接收者，但并不意味着只能使用一个接收者从队列中取消息，根据业务需要，可以使用多个接收者同时从队列中请求消息，分担处理压力。但是需要注意的是，单个接收者收到的消息是按照发送顺序的，多个接收者因为多线程的关系，并不能保证收到的消息一定是原序的。<br /><br />在发布-订阅模式中，消息会发送给一个主题，但是与点对点模式不同的是消息不再只被投递给一个接收者，而是所有此主题的订阅者都会收到该消息。<br /><br /><strong>JMS消息类型<br /><br /></strong>在JMS1.1规范中，定义了五种消息类型，分别为：<br />1.StreamMessage ：消息体是 Java 流，写入和读出都是顺序的<br />2.MapMessage ：消息体包含 key-value 对， key 为 String ， value 为基本类型，可以通过迭代器访问<br />3.TextMessage ：消息体是 String<br />4.ObjectMessage ：消息体是可序列化的 Java 对象<br />5.BytesMessage ：消息体是字节数组<br /><div>可以通过 message.clearBody() 来清除消息体；但在消费端，消息体是只读的，针对消息的写操作都会抛出 MessageNotWritableException 异常</div><br /><strong>JMS消息头</strong><br /><div>所有消息的消息头都具体相同的字段，用于 JMS Client 以及 JMS Provider 对它们进行区别以及进行消息路由</div>1.JMSDestination<br /><div>消息发送的目的地（队列或主题）；创建消息时可以设置 JMSDestination ，但是在发送完成时其值会更新为发送方所指定的 JMSDestination ，也就是说发送前该字段会被忽略；当消息被消费时，该字段的值与在它被发送时被设置的值是相同的</div>以下所有示例均基于ActiveMQ<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 />-->Session&nbsp;session&nbsp;=&nbsp;connection.createSession(<span style="color: #0000FF; ">false</span>,&nbsp;Session.AUTO_ACKNOWLEDGE);<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;创建2个目的地</span><span style="color: #008000; "><br /></span>Destination&nbsp;destination&nbsp;=&nbsp;session.createQueue("JMS.DEMO");<br />Destination&nbsp;destination2&nbsp;=&nbsp;session.createQueue("JMS.DEMO2");<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;创建生产者</span><span style="color: #008000; "><br /></span>MessageProducer&nbsp;publisher&nbsp;=&nbsp;session.createProducer(destination);<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;设置传输模式</span><span style="color: #008000; "><br /></span>publisher.setDeliveryMode(DeliveryMode.PERSISTENT);<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;创建消息</span><span style="color: #008000; "><br /></span>TextMessage&nbsp;message&nbsp;=&nbsp;session.createTextMessage("Test&nbsp;Message");<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;设置消息的目的地为destination2</span><span style="color: #008000; "><br /></span>message.setJMSDestination(destination2);<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;发送消息</span><span style="color: #008000; "><br /></span>publisher.send(message);<br /><br />System.out.println(message.getJMSDestination());</div><br /><div>代码中，通过 message.setJMSDestination(destination2); 设置了 message 的 JMSDestination 消息头属性值，我们再看看其输出结果<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 />-->queue:<span style="color: #008000; ">//</span><span style="color: #008000; ">JMS.DEMO</span></div><br /><div>通过这个例子可以看出，虽然在发送前设置了消息的目的地，但是发送后消息的目的地被重置了</div>2.JMSDeliveryMode<br /><div>指明消息的传输模式，有两种：</div><div>DeliveryMode.PERSISTENT ：保证消息仅传一次， JMS Provider 服务停止后消息不会丢失；</div><div>DeliveryMode.NON_PERSISTENT ：消息最多传一次，消息会因 JMS Provider 停止后丢失；</div><div>同 JMSDestination 一样，在发送前设置的会被忽略</div><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 />-->Session&nbsp;session&nbsp;=&nbsp;connection.createSession(<span style="color: #0000FF; ">false</span>,&nbsp;Session.AUTO_ACKNOWLEDGE);<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;创建目的地</span><span style="color: #008000; "><br /></span>Destination&nbsp;destination&nbsp;=&nbsp;session.createQueue("JMS.DEMO");<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;创建生产者</span><span style="color: #008000; "><br /></span>MessageProducer&nbsp;publisher&nbsp;=&nbsp;session.createProducer(destination);<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;设置传输模式</span><span style="color: #008000; "><br /></span>publisher.setDeliveryMode(DeliveryMode.PERSISTENT);<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;发送PERSISTENT消息</span><span style="color: #008000; "><br /></span>publisher.send(session.createTextMessage("PERSISTENT&nbsp;MESSAGE"));<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;设置传输模式</span><span style="color: #008000; "><br /></span>publisher.setDeliveryMode(DeliveryMode.NON_PERSISTENT);<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;发送PERSISTENT消息</span><span style="color: #008000; "><br /></span>publisher.send(session.createTextMessage("NON_PERSISTENT&nbsp;MESSAGE"));</div><br /><div>例子中分别发送了一条 PERSISTENT 的消息和一条 NON_PERSISTENT 的消息；当 Active MQ 重启后，启动消费端，收到的消息如下<br /><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->PERSISTENT&nbsp;MESSAGE</div></div></div><br /><div>该例子说明，在 JMS Provider 重启后， NON_PERSISTENT 消息丢失了，而 PERSISTENT 消息能正常被消费者消费</div>3.JMSMessageID<br /><div>由 JMS Provider 指定的消息的唯一标识符；同上面的字段一样，在发送前设置的会被忽略，在发送完成时，由 JMS Provider 重置该字段<br /><br />4.JMSReplyTo</div><div>发送端在发送消息时，可以指定该属性（为一个 JMSDestination ），表示期望收到客户端的响应；是否响应由消费端决定</div><div></div><div>如下面的例子：</div><div>发送端：&nbsp;</div><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Session&nbsp;session&nbsp;=&nbsp;connection.createSession(<span style="color: #0000FF; ">false</span>,&nbsp;Session.AUTO_ACKNOWLEDGE);<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;创建目的地</span><span style="color: #008000; "><br /></span>Destination&nbsp;destination&nbsp;=&nbsp;session.createQueue("JMS.DEMO");<br />Destination&nbsp;destination2&nbsp;=&nbsp;session.createQueue("JMS.DEMO3");<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;创建生产者</span><span style="color: #008000; "><br /></span>MessageProducer&nbsp;publisher&nbsp;=&nbsp;session.createProducer(destination);<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;设置传输模式</span><span style="color: #008000; "><br /></span>publisher.setDeliveryMode(DeliveryMode.PERSISTENT);<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;创建消息</span><span style="color: #008000; "><br /></span>TextMessage&nbsp;message&nbsp;=&nbsp;session.createTextMessage("Test&nbsp;Message");<br />message.setJMSReplyTo(destination2);<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;发送消息</span><span style="color: #008000; "><br /></span>publisher.send(message);</div><br /><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: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;onMessage(Message&nbsp;message)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Receive&nbsp;message:&nbsp;"&nbsp;+&nbsp;message);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(message.getJMSReplyTo()&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.createProducer(message.getJMSReplyTo()).send(session.createTextMessage("This&nbsp;is&nbsp;a&nbsp;reply&nbsp;to"<br />&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;&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;&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;message.getJMSReplyTo()));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(Exception&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div><br />5.JMSRedelivered<br /><div>当消费者收到带有 JMSRedelivered 的消息头时，表明该消息在过去传输过但没有被确认</div><div>JMS Provider 必须对该字段进行设置，当为 true 时即告知消费者该消息是重传的，消费者需要自行处理重复的消息</div><br />6.JMSExpiration<br /><div>消息的过期时间，其值为当前时间加上存活时间（毫秒）；当存活时间设置为 0 时，该字段的值也被设置为 0 ，表示永不过期；</div><div>消费端在一般情况下都不会接收到过期的消息，但 JMS Provider 并不保证这一点；</div><div></div><div>下面的例子说明了如何设置消息的过期时间</div><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 />-->Session&nbsp;session&nbsp;=&nbsp;connection.createSession(<span style="color: #0000FF; ">false</span>,&nbsp;Session.AUTO_ACKNOWLEDGE);<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;创建目的地</span><span style="color: #008000; "><br /></span>Destination&nbsp;destination&nbsp;=&nbsp;session.createQueue("JMS.DEMO");<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;创建生产者</span><span style="color: #008000; "><br /></span>MessageProducer&nbsp;publisher&nbsp;=&nbsp;session.createProducer(destination);<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;设置传输模式</span><span style="color: #008000; "><br /></span>publisher.setDeliveryMode(DeliveryMode.PERSISTENT);<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;创建消息</span><span style="color: #008000; "><br /></span>TextMessage&nbsp;message&nbsp;=&nbsp;session.createTextMessage("Test&nbsp;Message");<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;发送消息</span><span style="color: #008000; "><br /></span>publisher.setTimeToLive(5000);<br />publisher.send(message);</div><br />7.JMSPriority<br /><div>消息的优先级， 0 代表最低优先级， 9 代表最高优先级；一般 0~4 为普通优先级， 5~9 为加快优先级</div><div>JMS 规范里并没有要求 JMS Provider 严格按这个优先级来实现，但是尽可能实现加快优先级消息的传输在普通消息的前面</div><div>同 JMSDestination 一样，该字段在发送前被忽略，在发送完成时重置</div><br /><br /><strong>消息属性</strong><br /><br /><div>除了前面提到的消息头以外， JMS 消息还提供了对&#8220;属性值对&#8221;的支持，以对消息头进行扩展；消息属性主要用于消息选择器 (message selector 详见下文 )&nbsp;</div><br />1.属性名<br /><span style="font-size: small;">属性名必须服务消息选择器的命名规则</span><br /><br />2.属性值<br /><div>可以是基本类型及其对象类型以及 Map 、 List 和 String</div><br /><div>下面的例子中，消息带 HashMap 的属性</div><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Session&nbsp;session&nbsp;=&nbsp;connection.createSession(<span style="color: #0000FF; ">false</span>,&nbsp;Session.AUTO_ACKNOWLEDGE);<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;创建目的地</span><span style="color: #008000; "><br /></span>Destination&nbsp;destination&nbsp;=&nbsp;session.createQueue("JMS.DEMO");<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;创建生产者</span><span style="color: #008000; "><br /></span>MessageProducer&nbsp;publisher&nbsp;=&nbsp;session.createProducer(destination);<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;设置传输模式</span><span style="color: #008000; "><br /></span>publisher.setDeliveryMode(DeliveryMode.PERSISTENT);<br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;创建消息</span><span style="color: #008000; "><br /></span>TextMessage&nbsp;message&nbsp;=&nbsp;session.createTextMessage("Test&nbsp;Message");<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;发送消息</span><span style="color: #008000; "><br /></span>message.setObjectProperty("myProp",&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;HashMap()&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.put("key1",&nbsp;"value1");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.put("key2",&nbsp;"value2");<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />});<br />publisher.send(message);</div><br />3.清除属性<br /><div>JMS 不能清除单个属性，但可以通过 Message.clearProperties() 方法清除所有消息属性</div><br /><strong>JMS实现（Provider implementations）</strong><br /><br />要使用JMS，必须要有相应的实现来管理session以及队列，从Java EE1.4开始，所有的Java EE应用服务器必须包含一个JMS实现。</div>以下是一些JMS实现：<br /><div>&nbsp; &nbsp; Apache ActiveMQ</div><div>&nbsp; &nbsp; Apache Qpid, using AMQP</div><div>&nbsp; &nbsp; BEA Weblogic (part of the Fusion Middleware suite) and Oracle AQ from Oracle</div><div>&nbsp; &nbsp; EMS from TIBCO</div><div>&nbsp; &nbsp; FFMQ, GNU LGPL licensed</div><div>&nbsp; &nbsp; JBoss Messaging and HornetQ from JBoss</div><div>&nbsp; &nbsp; JORAM, from the OW2 Consortium</div><div>&nbsp; &nbsp; Open Message Queue, from Sun Microsystems</div><div>&nbsp; &nbsp; OpenJMS, from The OpenJMS Group</div><div>&nbsp; &nbsp; RabbitMQ, using AMQP</div><div>&nbsp; &nbsp; Solace JMS from Solace Systems</div><div>&nbsp; &nbsp; SonicMQ from Progress Software</div><div>&nbsp; &nbsp; StormMQ, using AMQP</div><div>&nbsp; &nbsp; SwiftMQ</div><div>&nbsp; &nbsp; Tervela</div><div>&nbsp; &nbsp; Ultra Messaging from 29 West (acquired by Informatica)</div><div>&nbsp; &nbsp; webMethods from Software AG</div><div>&nbsp; &nbsp; WebSphere Application Server from IBM, which provides an inbuilt default messaging provider known as the Service Integration Bus (SIBus), or which can connect to WebSphere MQ as a JMS provider [5]</div><div>&nbsp; &nbsp; WebSphere MQ (formerly MQSeries) from IBM</div><br />Ref from:<br />1.http://en.wikipedia.org/wiki/Java_Message_Service<br />2.Spring in Action<br />3.http://goldendoc.iteye.com/blog/1155647<br /><img src ="http://www.blogjava.net/caojianhua/aggbug/384095.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caojianhua/" target="_blank">初一七月</a> 2012-07-26 17:41 <a href="http://www.blogjava.net/caojianhua/archive/2012/07/26/384095.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MyEclipse安装Python插件PyDev</title><link>http://www.blogjava.net/caojianhua/archive/2012/07/17/383324.html</link><dc:creator>初一七月</dc:creator><author>初一七月</author><pubDate>Tue, 17 Jul 2012 09:18:00 GMT</pubDate><guid>http://www.blogjava.net/caojianhua/archive/2012/07/17/383324.html</guid><wfw:comment>http://www.blogjava.net/caojianhua/comments/383324.html</wfw:comment><comments>http://www.blogjava.net/caojianhua/archive/2012/07/17/383324.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caojianhua/comments/commentRss/383324.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caojianhua/services/trackbacks/383324.html</trackback:ping><description><![CDATA[1.help-&gt;software updates-&gt;find and install<br /><br />2.search for new features to install-&gt;next<br /><br />3.new remote site<br /><img src="http://www.blogjava.net/images/blogjava_net/caojianhua/1.JPG" width="360" height="141" alt="" /><br /><br />4.finish<br /><img src="http://www.blogjava.net/images/blogjava_net/caojianhua/2.JPG" width="604" height="506" alt="" /><br /><br />5.next，接受声明<br /><img src="http://www.blogjava.net/images/blogjava_net/caojianhua/3.JPG" width="604" height="506" alt="" /><br /><br />6.finish，开始下载所有相关文件，在verification中选择install all，然后重启MyEclipse<br /><br />7.查看是否安装成功，help-&gt;about myeclipse enterprise workbench-&gt;plig-in details<br /><img src="http://www.blogjava.net/images/blogjava_net/caojianhua/4.JPG" width="759" height="411" alt="" /><br /><br />至此插件安装完毕，其他使用方法及安装参考：<br /><a href="http://pydev.org/manual_101_install.html">http://pydev.org/manual_101_install.html</a>&nbsp;<br /><a href="http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-pydev/">http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-pydev/</a>&nbsp;<br /><img src ="http://www.blogjava.net/caojianhua/aggbug/383324.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caojianhua/" target="_blank">初一七月</a> 2012-07-17 17:18 <a href="http://www.blogjava.net/caojianhua/archive/2012/07/17/383324.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle分页查找时，start与size在ibatis中的设置</title><link>http://www.blogjava.net/caojianhua/archive/2012/07/13/383018.html</link><dc:creator>初一七月</dc:creator><author>初一七月</author><pubDate>Fri, 13 Jul 2012 06:41:00 GMT</pubDate><guid>http://www.blogjava.net/caojianhua/archive/2012/07/13/383018.html</guid><wfw:comment>http://www.blogjava.net/caojianhua/comments/383018.html</wfw:comment><comments>http://www.blogjava.net/caojianhua/archive/2012/07/13/383018.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caojianhua/comments/commentRss/383018.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caojianhua/services/trackbacks/383018.html</trackback:ping><description><![CDATA[使用oracle + ibatis进行数据分页查找时，对传入的参数start与size，进行如下查找语句<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: #0000FF; ">select</span>&nbsp;<span style="color: #808080; ">*</span>&nbsp;<span style="color: #0000FF; ">from</span><br />&nbsp;&nbsp;(<span style="color: #0000FF; ">select</span>&nbsp;t.<span style="color: #808080; ">*</span>,&nbsp;romnum&nbsp;rn&nbsp;<span style="color: #0000FF; ">from</span><br />&nbsp;&nbsp;&nbsp;&nbsp;(<span style="color: #0000FF; ">select</span>&nbsp;<span style="color: #808080; ">*</span>&nbsp;<span style="color: #0000FF; ">from</span>&nbsp;<span style="color: #FF00FF; ">user</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">where</span>&nbsp;score&nbsp;<span style="color: #808080; ">&gt;</span>&nbsp;#score#&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">order</span>&nbsp;<span style="color: #0000FF; ">by</span>&nbsp;$orderby$<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;t&nbsp;<br />&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">where</span>&nbsp;rownum&nbsp;<span style="color: #808080; ">&lt;=</span>&nbsp;#start#&nbsp;<span style="color: #808080; ">+</span>&nbsp;#<font color="#0000ff">size</font>#&nbsp;)<br /><span style="color: #0000FF; ">where</span>&nbsp;rn&nbsp;<span style="color: #808080; ">&gt;</span>&nbsp;#start#</div>在数据量较少时，以上语句没有问题，但是在达到500w+数据量时，就会发生急剧的性能下降，经过测试，发现应该改为以下的语句，就可以避免，在千万数据以上仍可以在百毫秒得出结果<br /><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">select</span>&nbsp;<span style="color: #808080; ">*</span>&nbsp;<span style="color: #0000FF; ">from</span><br />&nbsp;&nbsp;(<span style="color: #0000FF; ">select</span>&nbsp;t.<span style="color: #808080; ">*</span>,&nbsp;romnum&nbsp;rn&nbsp;<span style="color: #0000FF; ">from</span><br />&nbsp;&nbsp;&nbsp;&nbsp;(<span style="color: #0000FF; ">select</span>&nbsp;<span style="color: #808080; ">*</span>&nbsp;<span style="color: #0000FF; ">from</span>&nbsp;<span style="color: #FF00FF; ">user</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">where</span>&nbsp;score&nbsp;<span style="color: #808080; ">&gt;</span>&nbsp;#score#&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">order</span>&nbsp;<span style="color: #0000FF; ">by</span>&nbsp;$orderby$<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;t&nbsp;<br />&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">where</span>&nbsp;rownum&nbsp;<span style="color: #808080; ">&lt;=</span>&nbsp;$start$&nbsp;<span style="color: #808080; ">+</span>&nbsp;$<span style="color: #0000FF; ">end</span>$&nbsp;)<br /><span style="color: #0000FF; ">where</span>&nbsp;rn&nbsp;<span style="color: #808080; ">&gt;</span>&nbsp;#start#</div><br />因为ibatis会将#xxx#参数解析为PreparedStatement中的？，但是如果使用#start#+#size#，会产生?+?的语句，影响oracle语句动态解析，实际上这个参数在执行时完全可以先计算和，再作为一个值传入语句，采用$start$+$size$正是做到了这点，大大加快了执行速度<br /><br /><img src ="http://www.blogjava.net/caojianhua/aggbug/383018.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caojianhua/" target="_blank">初一七月</a> 2012-07-13 14:41 <a href="http://www.blogjava.net/caojianhua/archive/2012/07/13/383018.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>查询系统负载---uptime命令</title><link>http://www.blogjava.net/caojianhua/archive/2011/08/10/356276.html</link><dc:creator>初一七月</dc:creator><author>初一七月</author><pubDate>Wed, 10 Aug 2011 13:49:00 GMT</pubDate><guid>http://www.blogjava.net/caojianhua/archive/2011/08/10/356276.html</guid><wfw:comment>http://www.blogjava.net/caojianhua/comments/356276.html</wfw:comment><comments>http://www.blogjava.net/caojianhua/archive/2011/08/10/356276.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caojianhua/comments/commentRss/356276.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caojianhua/services/trackbacks/356276.html</trackback:ping><description><![CDATA[<div><div>Linux系统监控的过程中少不了对主机运行时间和系统负责等信息进行查询，这时候就可以使用Linux uptime命令。uptime命令可以显示系统运行多久、当前有多少的用户登录、在过去的1，5，15分钟里平均负载时多少，其用法十分简单。<br /><br /><div>用法：直接输入uptime即可，以下显示输入uptime的信息：</div><div><div><div>04:03:58 up 10 days, 13:19, &nbsp;1 user, &nbsp;load average: 0.54, 0.40, 0.20</div></div></div></div></div><div><br /><div><div>1.04:03:58 &nbsp;当前时间</div><div>2.10 days, 13:19 系统已运行的时间，时间越大，说明你的机器越稳定</div><div>3.1 user &nbsp;当前在线用户，是总连接数而不是用户数</div><div>4.0.54, 0.40, 0.20最近1分钟、5分钟、15分钟系统的平均负载<br /><br /><div><div>系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中：&nbsp;</div><div>- 它没有在等待I/O操作的结果&nbsp;</div><div>- 它没有主动进入等待状态(也就是没有调用'wait')&nbsp;</div><div>- 没有被停止(例如：等待终止)<br /><div><div></div><div>一般来说，每个CPU内核当前活动进程数不大于3，则系统运行表现良好！当然这里说的是每个cpu内核，也就是如果你的主机是四核cpu的话，那么只要uptime最后输出的一串字符数值小于12即表示系统负载不是很严重，当然如果达到20，那就表示当前系统负载非常严重。<br /><br /><br /></div></div></div></div></div></div></div><img src ="http://www.blogjava.net/caojianhua/aggbug/356276.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caojianhua/" target="_blank">初一七月</a> 2011-08-10 21:49 <a href="http://www.blogjava.net/caojianhua/archive/2011/08/10/356276.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>svn版本对比</title><link>http://www.blogjava.net/caojianhua/archive/2011/08/10/356271.html</link><dc:creator>初一七月</dc:creator><author>初一七月</author><pubDate>Wed, 10 Aug 2011 13:19:00 GMT</pubDate><guid>http://www.blogjava.net/caojianhua/archive/2011/08/10/356271.html</guid><wfw:comment>http://www.blogjava.net/caojianhua/comments/356271.html</wfw:comment><comments>http://www.blogjava.net/caojianhua/archive/2011/08/10/356271.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caojianhua/comments/commentRss/356271.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caojianhua/services/trackbacks/356271.html</trackback:ping><description><![CDATA[要对项目的两个版本进行比对，查看哪些文件发生了改变，可以使用svn的版本比对功能，具体如下：<br /><br /><span>1.TortoiseSVN-&gt;Repo-browser，找到需要比对的项目工程，这里假设要对项目的trunk与tag版本1.1进行比较，并将trunk作为基础版本<br /></span>2.右键trunk-&gt;Mark for comparison，然后找到1.1版本，右键-&gt;Show differences as unified diff，之后svn会弹出TortoiseUDiff窗口<br /><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; ">Index:&nbsp;com/service/SVNService.java<br />===================================================================<br />---&nbsp;com/service/SVNService.java&nbsp;&nbsp;&nbsp;&nbsp;(<img src="http://www.blogjava.net/Images/dot.gif" alt="" />/tag/1.1)&nbsp;&nbsp;&nbsp;&nbsp;(版本&nbsp;227144)<br />+++&nbsp;com/service/SVNService.java&nbsp;&nbsp;&nbsp;&nbsp;(<img src="http://www.blogjava.net/Images/dot.gif" alt="" />/trunk)&nbsp;&nbsp;&nbsp;&nbsp;(版本&nbsp;227097)<br />@@&nbsp;-20,7&nbsp;+20,8&nbsp;@@<br /><br />-if&nbsp;(!target.exists())&nbsp;return;<br />+if&nbsp;(target.exists())&nbsp;return;</span></div>通常情况下，第2-4行用黄背景显示，表示进行比较的两个版本，而以减号开头的行用红色背景，表示1.1版本有而trunk版本没有的内容，以加号开始的行用绿色背景显示，表示trunk有而1.1版本没有的内容，上面的结果显示，我们可能在tag版本里将判断条件从不存在返回改为了存在返回。<br /><br />另外以@@开头并结尾的行，表示下面的变动所在的位置<img src ="http://www.blogjava.net/caojianhua/aggbug/356271.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caojianhua/" target="_blank">初一七月</a> 2011-08-10 21:19 <a href="http://www.blogjava.net/caojianhua/archive/2011/08/10/356271.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache 命令</title><link>http://www.blogjava.net/caojianhua/archive/2011/05/27/351202.html</link><dc:creator>初一七月</dc:creator><author>初一七月</author><pubDate>Fri, 27 May 2011 10:25:00 GMT</pubDate><guid>http://www.blogjava.net/caojianhua/archive/2011/05/27/351202.html</guid><wfw:comment>http://www.blogjava.net/caojianhua/comments/351202.html</wfw:comment><comments>http://www.blogjava.net/caojianhua/archive/2011/05/27/351202.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caojianhua/comments/commentRss/351202.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caojianhua/services/trackbacks/351202.html</trackback:ping><description><![CDATA[启动<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; ">apache/bin/apachectl&nbsp;start</span></div><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; ">apache/bin/apachectl&nbsp;stop</span></div><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; ">apache/bin/apachectl&nbsp;restart</span></div><br /><div>重启时不中断当前的连接</div><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; ">apache/bin/apachectl&nbsp;graceful</span></div><br /><div>如果apache安装成为linux的服务的话，可以用如下的命令<br /><br />启动<br /><div style="background-color: #eeeeee; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #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; ">service&nbsp;httpd&nbsp;start</span></div><br />停止<br /><div style="background-color: #eeeeee; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #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; ">service&nbsp;httpd&nbsp;stop</span></div><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; ">service&nbsp;httpd&nbsp;restart</span></div></div><img src ="http://www.blogjava.net/caojianhua/aggbug/351202.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caojianhua/" target="_blank">初一七月</a> 2011-05-27 18:25 <a href="http://www.blogjava.net/caojianhua/archive/2011/05/27/351202.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>