﻿<?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-owen</title><link>http://www.blogjava.net/absolutedo/</link><description>宝剑锋从磨砺出,梅花香自苦寒来。</description><language>zh-cn</language><lastBuildDate>Sun, 05 Apr 2026 17:37:36 GMT</lastBuildDate><pubDate>Sun, 05 Apr 2026 17:37:36 GMT</pubDate><ttl>60</ttl><item><title>ORA-00054:resource busy and acquire with nowait specified(资源正忙，需指定nowait)解决方法</title><link>http://www.blogjava.net/absolutedo/archive/2010/11/27/339196.html</link><dc:creator>absolute</dc:creator><author>absolute</author><pubDate>Sat, 27 Nov 2010 06:55:00 GMT</pubDate><guid>http://www.blogjava.net/absolutedo/archive/2010/11/27/339196.html</guid><wfw:comment>http://www.blogjava.net/absolutedo/comments/339196.html</wfw:comment><comments>http://www.blogjava.net/absolutedo/archive/2010/11/27/339196.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/absolutedo/comments/commentRss/339196.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/absolutedo/services/trackbacks/339196.html</trackback:ping><description><![CDATA[通过存储过程向数据库一下子插入了一千万(10000000)条记录，结果等了很长时间，PL/SQL都没有响应，我又瞎折腾了下，结果执行了好几次，导致数据库假死了，我只有删除当前的会话，从网上找到相关的脚本代码。<br />
<br />
<br />
1&gt; 通过此语句查询正在锁定的SESSION_ID: <br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;&nbsp;SESSION_ID&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;V$LOCKED_OBJECT,USER_OBJECTS&nbsp;&nbsp;</span><span style="color: #0000ff">WHERE</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;V$LOCKED_OBJECT.</span><span style="color: #ff00ff">OBJECT_ID</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;USER_OBJECTS.</span><span style="color: #ff00ff">OBJECT_ID</span></div>
<br />
<p><br />
2&gt; 通过第一步查询到的SESSION_ID查询SERIAL#<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;SERIAL#&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;V$SESSION&nbsp;&nbsp;</span><span style="color: #0000ff">WHERE</span><span style="color: #000000">&nbsp;SID</span><span style="color: #808080">=</span><span style="color: #ff0000">'</span><span style="color: #ff0000">12</span><span style="color: #ff0000">'</span><span style="color: #000000">(此处</span><span style="color: #ff0000">'</span><span style="color: #ff0000">12</span><span style="color: #ff0000">'</span><span style="color: #000000">为上面查询到的</span><span style="color: #ff0000">'</span><span style="color: #ff0000">SESSION_ID</span><span style="color: #ff0000">'</span><span style="color: #000000">)</span></div>
<p><br />
&nbsp;3&gt;&nbsp;根据1,2步查询到的SESSION_ID和SERIAL#执行<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">ALTER</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;SYSTEM&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">KILL</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;SESSION&nbsp;&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">12,154</span><span style="color: #ff0000">'</span><span style="color: #000000">(12为SESSION_ID的值,&nbsp;154为SERIAL#的值)</span></div>
<br />
4&gt; 如果利用上面的命令杀死一个进程后，进程状态被置为"killed"，但是锁定的资源很长时间没有被释放，那么还可以在os一级再杀死相应的进程(线程)，首先执行下面的语句获得当前进程(线程)的标示PID：<br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;spid,&nbsp;osuser,&nbsp;s.program&nbsp;<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;v$session&nbsp;s,v$process&nbsp;p<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;s.paddr</span><span style="color: #808080">=</span><span style="color: #000000">p.addr&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;s.sid</span><span style="color: #808080">=</span><span style="color: #800000; font-weight: bold">12</span><span style="color: #000000">&nbsp;(12是上面的SESSION_ID)</span></div>
<br />
<p>然后在OS通过任务管理器找到对应的进程，在杀死这个进程(线程)</p>
<img src ="http://www.blogjava.net/absolutedo/aggbug/339196.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/absolutedo/" target="_blank">absolute</a> 2010-11-27 14:55 <a href="http://www.blogjava.net/absolutedo/archive/2010/11/27/339196.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>存储过程学习-批量插入10000条数据进数据库</title><link>http://www.blogjava.net/absolutedo/archive/2010/11/27/339194.html</link><dc:creator>absolute</dc:creator><author>absolute</author><pubDate>Sat, 27 Nov 2010 06:41:00 GMT</pubDate><guid>http://www.blogjava.net/absolutedo/archive/2010/11/27/339194.html</guid><wfw:comment>http://www.blogjava.net/absolutedo/comments/339194.html</wfw:comment><comments>http://www.blogjava.net/absolutedo/archive/2010/11/27/339194.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/absolutedo/comments/commentRss/339194.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/absolutedo/services/trackbacks/339194.html</trackback:ping><description><![CDATA[最近在学习存储过程，以前在项目中没有怎么接触过！<br />
<br />
我通过存储过程像数据库中批量添加一千万(100000000)条记录,结果PL/SQL很长时间没有反映，结果不得已通过脚本杀掉当前进程，我重新通过存储过程插入10000条数据。<br />
<br />
建表脚本：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #008080">--</span><span style="color: #008080">删除用户表</span><span style="color: #008080"><br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #008080"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">DROP</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">TABLE</span><span style="color: #000000">&nbsp;T_PORTAL_USER;<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008080">--</span><span style="color: #008080">创建用户表</span><span style="color: #008080"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #008080"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">CREATE</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">TABLE</span><span style="color: #000000">&nbsp;T_PORTAL_USER<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />(<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="color: #000000; font-weight: bold">NUMBER</span><span style="color: #000000">&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;</span><span style="color: #008080">--</span><span style="color: #008080">&nbsp;用户表示</span><span style="color: #008080"><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #008080"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;username&nbsp;</span><span style="color: #000000; font-weight: bold">VARCHAR2</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">24</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">,</span><span style="color: #008080">--</span><span style="color: #008080">&nbsp;用户名</span><span style="color: #008080"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #008080"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;password&nbsp;</span><span style="color: #000000; font-weight: bold">VARCHAR2</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">24</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">,</span><span style="color: #008080">--</span><span style="color: #008080">&nbsp;密码</span><span style="color: #008080"><br />
</span><span style="color: #008080">10</span><span style="color: #008080"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;realname&nbsp;</span><span style="color: #000000; font-weight: bold">VARCHAR2</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">24</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">,</span><span style="color: #008080">--</span><span style="color: #008080">&nbsp;真实姓名</span><span style="color: #008080"><br />
</span><span style="color: #008080">11</span><span style="color: #008080"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;sex&nbsp;</span><span style="color: #000000; font-weight: bold">VARCHAR2</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">2</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">,</span><span style="color: #008080">--</span><span style="color: #008080">&nbsp;性别&nbsp;"0":Male&nbsp;"1":Female</span><span style="color: #008080"><br />
</span><span style="color: #008080">12</span><span style="color: #008080"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;registerDate&nbsp;</span><span style="color: #000000; font-weight: bold">TIMESTAMP</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">,</span><span style="color: #008080">--</span><span style="color: #008080">&nbsp;注册日期</span><span style="color: #008080"><br />
</span><span style="color: #008080">13</span><span style="color: #008080"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;</span><span style="color: #000000; font-weight: bold">VARCHAR2</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">2</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;</span><span style="color: #008080">--</span><span style="color: #008080">&nbsp;账号状态&nbsp;"0":启用&nbsp;&nbsp;"1":注销</span><span style="color: #008080"><br />
</span><span style="color: #008080">14</span><span style="color: #008080"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">)<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008080">--</span><span style="color: #008080">删除用户表序列</span><span style="color: #008080"><br />
</span><span style="color: #008080">17</span><span style="color: #008080"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">DROP</span><span style="color: #000000">&nbsp;SEQUENCE&nbsp;SEQ_T_PORTAL_USER;<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008080">--</span><span style="color: #008080">创建用户表序列</span><span style="color: #008080"><br />
</span><span style="color: #008080">20</span><span style="color: #008080"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">CREATE</span><span style="color: #000000">&nbsp;SEQUENCE&nbsp;SEQ_T_PORTAL_USER<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />START&nbsp;</span><span style="color: #0000ff">WITH</span><span style="color: #000000">&nbsp;</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000"><br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />INCREMENT&nbsp;</span><span style="color: #0000ff">BY</span><span style="color: #000000">&nbsp;</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000"><br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />NOMAXVALUE<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />CACHE&nbsp;</span><span style="color: #800000; font-weight: bold">20</span></div>
<br />
<br />
-- 批量新增一万条用户<br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080">&nbsp;1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #008080">--</span><span style="color: #008080">&nbsp;批量新增一万条用户</span><span style="color: #008080"><br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #008080"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">CREATE</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">OR</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">REPLACE</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">PROCEDURE</span><span style="color: #000000">&nbsp;PROC_USER_CREATE_BAT<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">AS</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;startTime&nbsp;</span><span style="color: #000000; font-weight: bold">VARCHAR2</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">32</span><span style="color: #000000">);</span><span style="color: #008080">--</span><span style="color: #008080">开始时间</span><span style="color: #008080"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #008080"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;endTime&nbsp;</span><span style="color: #000000; font-weight: bold">VARCHAR2</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">32</span><span style="color: #000000">);</span><span style="color: #008080">--</span><span style="color: #008080">结束时间</span><span style="color: #008080"><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #008080"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">BEGIN</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;TO_CHAR(SYSDATE,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">yyyy-mm-dd&nbsp;hh24:mi:ss:ff</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">INTO</span><span style="color: #000000">&nbsp;startTime&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;DUAL;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;DBMS_OUTPUT.PUT_LINE(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">Start&nbsp;Time:&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #808080">||</span><span style="color: #000000">startTime);<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">FOR</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #808080">in</span><span style="color: #000000">&nbsp;</span><span style="color: #800000; font-weight: bold">1</span><span style="color: #000000">..</span><span style="color: #800000; font-weight: bold">10000</span><span style="color: #000000">&nbsp;LOOP<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">INSERT</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">INTO</span><span style="color: #000000">&nbsp;T_PORTAL_USER&nbsp;</span><span style="color: #0000ff">VALUES</span><span style="color: #000000">(SEQ_T_PORTAL_USER.NEXTVAL,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">owen</span><span style="color: #ff0000">'</span><span style="color: #808080">||</span><span style="color: #000000">i,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">123456</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">gekunjin</span><span style="color: #ff0000">'</span><span style="color: #808080">||</span><span style="color: #000000">i,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">0</span><span style="color: #ff0000">'</span><span style="color: #000000">,sysdate,</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: #008080">11</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">END</span><span style="color: #000000">&nbsp;LOOP;<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;TO_CHAR(SYSDATE,</span><span style="color: #ff0000">'</span><span style="color: #ff0000">yyyy-mm-dd&nbsp;hh24:mi:ss:ff</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">INTO</span><span style="color: #000000">&nbsp;endTime&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;DUAL;<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;DBMS_OUTPUT.PUT_LINE(</span><span style="color: #ff0000">'</span><span style="color: #ff0000">End&nbsp;Time:&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #808080">||</span><span style="color: #000000">endTime);<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">END</span><span style="color: #000000">&nbsp;PROC_USER_CREATE_BAT;</span></div>
<img src ="http://www.blogjava.net/absolutedo/aggbug/339194.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/absolutedo/" target="_blank">absolute</a> 2010-11-27 14:41 <a href="http://www.blogjava.net/absolutedo/archive/2010/11/27/339194.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>让Apache CXF 支持传递java.sql.Timestamp和java.util.HashMap类型</title><link>http://www.blogjava.net/absolutedo/archive/2010/11/27/339190.html</link><dc:creator>absolute</dc:creator><author>absolute</author><pubDate>Sat, 27 Nov 2010 06:28:00 GMT</pubDate><guid>http://www.blogjava.net/absolutedo/archive/2010/11/27/339190.html</guid><wfw:comment>http://www.blogjava.net/absolutedo/comments/339190.html</wfw:comment><comments>http://www.blogjava.net/absolutedo/archive/2010/11/27/339190.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/absolutedo/comments/commentRss/339190.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/absolutedo/services/trackbacks/339190.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在项目中使用Apache开源的Services Framework CXF来发布WebService，CXF能够很简洁与Spring Framework 集成在一起，在发布WebService的过程中，发布的接口的入参有些类型支持不是很好，比如Timestamp和Map。这个时候我们就需要编写一些适配来实行类型转换。Timestamp:&nbsp;1/**&nbsp;*//**&n...&nbsp;&nbsp;<a href='http://www.blogjava.net/absolutedo/archive/2010/11/27/339190.html'>阅读全文</a><img src ="http://www.blogjava.net/absolutedo/aggbug/339190.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/absolutedo/" target="_blank">absolute</a> 2010-11-27 14:28 <a href="http://www.blogjava.net/absolutedo/archive/2010/11/27/339190.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Policy for init Spring Container in WEB Application</title><link>http://www.blogjava.net/absolutedo/archive/2010/09/13/331916.html</link><dc:creator>absolute</dc:creator><author>absolute</author><pubDate>Mon, 13 Sep 2010 10:10:00 GMT</pubDate><guid>http://www.blogjava.net/absolutedo/archive/2010/09/13/331916.html</guid><wfw:comment>http://www.blogjava.net/absolutedo/comments/331916.html</wfw:comment><comments>http://www.blogjava.net/absolutedo/archive/2010/09/13/331916.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/absolutedo/comments/commentRss/331916.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/absolutedo/services/trackbacks/331916.html</trackback:ping><description><![CDATA[<p>Web应用初始化Spring容器策略<br />
<br />
以下软件测试环境为Spring,Struts1</p>
<p>1、通过struts1提供的插件机制，采用Spring提供的ContextLoaderPlugIn</p>
<p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"&gt;</p>
<p>&lt;struts-config&gt;<br />
&nbsp;&lt;global-exceptions /&gt;<br />
&nbsp;&lt;global-forwards /&gt;<br />
&nbsp;&lt;message-resources parameter="com.portal.ApplicationResources" /&gt;<br />
&nbsp;&lt;!--&nbsp; 通过S1提供的插件机制来初始化Spring容器，加载Spring配置文件<br />
&nbsp;&lt;plug-in<br />
&nbsp;&nbsp;className="org.springframework.web.struts.ContextLoaderPlugIn"&gt;<br />
&nbsp;&nbsp;&lt;!--<br />
&nbsp;&nbsp;&nbsp;1、ContextLoaderPlugIn默认加载配置文件命名规则是actionServlet-servlet.xml,其中actionServlet<br />
&nbsp;&nbsp;&nbsp;是配置org.apache.struts.action.ActionServlet时指定的servlet名称<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;2、通过配置contextConfigLocation属性来指点Spring配置文件的位置,多个配置文件可以使用 逗号","、分号";"、空格" "<br />
&nbsp;&nbsp;--&gt;<br />
&nbsp;&nbsp;&lt;set-property property="contextConfigLocation"<br />
&nbsp;&nbsp;&nbsp;value="/WEB-INF/conf/spring-application.xml,/WEB-INF/conf/**/spring*.xml" /&gt;<br />
&nbsp;&lt;/plug-in&gt;&nbsp;<br />
&nbsp; --&gt;<br />
&lt;/struts-config&gt;</p>
<p><br />
2、采用Spring提供的ContextLoaderListener来初始化(应用服务器需要支持Listener,Servlet2.3版本及以上)<br />
&nbsp;&lt;context-param&gt;<br />
&nbsp; &nbsp;&lt;description&gt;通过配置contextConfigLocation属性来指点Spring配置文件的位置,多个配置文件可以使用 逗号","、分号";"、空格" "&lt;/description&gt;<br />
&nbsp; &nbsp;&lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;<br />
&nbsp; &nbsp;&lt;param-value&gt;/WEB-INF/conf/spring-application.xml /WEB-INF/conf/**/spring*.xml&lt;/param-value&gt;<br />
&nbsp; &lt;/context-param&gt;<br />
&nbsp; <br />
&nbsp; &lt;listener&gt;<br />
&nbsp; &nbsp;&lt;description&gt;通过ContextLocaderListener来初始化Spring容器，加载Spring配置文件&lt;/description&gt;<br />
&nbsp; &nbsp;&lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;<br />
&nbsp; &lt;/listener&gt;</p>
<p>3、采用load-on-startup Servlet 来初始化Spring容器<br />
&nbsp; &lt;servlet&gt;<br />
&nbsp; &nbsp;&lt;description&gt;<br />
&nbsp; &nbsp;&nbsp;通过load-on-startup Servlet来初始化Spring容器<br />
&nbsp; &nbsp;&nbsp;该如何Servlet 用于提供"后台"服务，作为容器管理应用中的其他bean，不需要响应客户请求，因此无须配置servlet-mapping<br />
&nbsp; &nbsp;&lt;/description&gt;<br />
&nbsp; &nbsp;&lt;servlet-name&gt;applicationContext&lt;/servlet-name&gt;<br />
&nbsp; &nbsp;&lt;servlet-class&gt;org.springframework.web.context.ContextLoaderServlet&lt;/servlet-class&gt;<br />
&nbsp; &nbsp;&lt;load-on-startup&gt;0&lt;/load-on-startup&gt;<br />
&nbsp; &lt;/servlet&gt;<br />
</p>
<img src ="http://www.blogjava.net/absolutedo/aggbug/331916.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/absolutedo/" target="_blank">absolute</a> 2010-09-13 18:10 <a href="http://www.blogjava.net/absolutedo/archive/2010/09/13/331916.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>集群和分布式[Reship]</title><link>http://www.blogjava.net/absolutedo/archive/2010/03/02/314282.html</link><dc:creator>absolute</dc:creator><author>absolute</author><pubDate>Tue, 02 Mar 2010 06:16:00 GMT</pubDate><guid>http://www.blogjava.net/absolutedo/archive/2010/03/02/314282.html</guid><wfw:comment>http://www.blogjava.net/absolutedo/comments/314282.html</wfw:comment><comments>http://www.blogjava.net/absolutedo/archive/2010/03/02/314282.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/absolutedo/comments/commentRss/314282.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/absolutedo/services/trackbacks/314282.html</trackback:ping><description><![CDATA[<p>集群概念<br />
1. 两大关键特性 <br />
集群是一组协同工作的服务实体，用以提供比单一服务实体更具扩展性与可用性的服务平台。在客户端看来，一个集群就象是一个服务实体，但事实上集群由一组服务实体组成。与单一服务实体相比较，集群提供了以下两个关键特性：</p>
<p>&#183;&nbsp; 可扩展性－－集群的性能不限于单一的服务实体，新的服务实体可以动态地加入到集群，从而增强集群的性能。</p>
<p>&#183;&nbsp; 高可用性－－集群通过服务实体冗余使客户端免于轻易遇到out of service的警告。在集群中，同样的服务可以由多个服务实体提供。如果一个服务实体失败了，另一个服务实体会接管失败的服务实体。集群提供的从一个出错的服务实体恢复到另一个服务实体的功能增强了应用的可用性。</p>
<p>2. 两大能力 <br />
为了具有可扩展性和高可用性特点，集群的必须具备以下两大能力：</p>
<p>&#183;&nbsp; 负载均衡－－负载均衡能把任务比较均衡地分布到集群环境下的计算和网络资源。</p>
<p>&#183;&nbsp; 错误恢复－－由于某种原因，执行某个任务的资源出现故障，另一服务实体中执行同一任务的资源接着完成任务。这种由于一个实体中的资源不能工作，另一个实体中的资源透明的继续完成任务的过程叫错误恢复。</p>
<p>负载均衡和错误恢复都要求各服务实体中有执行同一任务的资源存在，而且对于同一任务的各个资源来说，执行任务所需的信息视图（信息上下文）必须是一样的。</p>
<p>3. 两大技术 <br />
实现集群务必要有以下两大技术：</p>
<p>&#183;&nbsp; 集群地址－－集群由多个服务实体组成，集群客户端通过访问集群的集群地址获取集群内部各服务实体的功能。具有单一集群地址（也叫单一影像）是集群的一个基本特征。维护集群地址的设置被称为负载均衡器。负载均衡器内部负责管理各个服务实体的加入和退出，外部负责集群地址向内部服务实体地址的转换。有的负载均衡器实现真正的负载均衡算法，有的只支持任务的转换。只实现任务转换的负载均衡器适用于支持ACTIVE-STANDBY的集群环境，在那里，集群中只有一个服务实体工作，当正在工作的服务实体发生故障时，负载均衡器把后来的任务转向另外一个服务实体。</p>
<p>&#183;&nbsp; 内部通信－－为了能协同工作、实现负载均衡和错误恢复，集群各实体间必须时常通信，比如负载均衡器对服务实体心跳测试信息、服务实体间任务执行上下文信息的通信。</p>
<p>具有同一个集群地址使得客户端能访问集群提供的计算服务，一个集群地址下隐藏了各个服务实体的内部地址，使得客户要求的计算服务能在各个服务实体之间分布。内部通信是集群能正常运转的基础，它使得集群具有均衡负载和错误恢复的能力。</p>
<p>集群分类<br />
Linux集群主要分成三大类( 高可用集群， 负载均衡集群，科学计算集群)</p>
<p>高可用集群( High Availability Cluster)<br />
负载均衡集群(Load Balance Cluster)<br />
科学计算集群(High Performance Computing Cluster)<br />
================================================</p>
<p>具体包括：</p>
<p>Linux High Availability 高可用集群&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; <br />
(普通两节点双机热备，多节点HA集群，RAC, shared, share-nothing集群等)</p>
<p>Linux Load Balance 负载均衡集群&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; <br />
&nbsp;(LVS等....)</p>
<p>Linux High Performance Computing 高性能科学计算集群&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;(Beowulf 类集群....)</p>
<p>分布式存储&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; <br />
其他类linux集群&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
(如Openmosix, rendering farm 等..)</p>
<p>详细介绍<br />
1. 高可用集群(High Availability Cluster)<br />
常见的就是2个节点做成的HA集群，有很多通俗的不科学的名称，比如"双机热备", "双机互备", "双机".<br />
高可用集群解决的是保障用户的应用程序持续对外提供服务的能力。 (请注意高可用集群既不是用来保护业务数据的，保护的是用户的业务程序对外不间断提供服务，把因软件/硬件/人为造成的故障对业务的影响降低到最小程度)。</p>
<p>2. 负载均衡集群(Load Balance Cluster)</p>
<p>负载均衡系统：集群中所有的节点都处于活动状态，它们分摊系统的工作负载。一般Web服务器集群、数据库集群和应用服务器集群都属于这种类型。</p>
<p>负载均衡集群一般用于相应网络请求的网页服务器，数据库服务器。这种集群可以在接到请求时，检查接受请求较少，不繁忙的服务器，并把请求转到这些服务器上。从检查其他服务器状态这一点上看，负载均衡和容错集群很接近，不同之处是数量上更多。</p>
<p>3. 科学计算集群(High Performance Computing Cluster)</p>
<p>高性能计算(High Perfermance Computing)集群，简称HPC集群。这类集群致力于提供单个计算机所不能提供的强大的计算能力。</p>
<p>高性能计算分类　　<br />
　高吞吐计算(High-throughput Computing)<br />
　　有一类高性能计算，可以把它分成若干可以并行的子任务，而且各个子任务彼此间没有什么关联。象在家搜寻外星人（ SETI@HOME -- Search for Extraterrestrial Intelligence at Home ）就是这一类型应用。这一项目是利用Internet上的闲置的计算资源来搜寻外星人。SETI项目的服务器将一组数据和数据模式发给Internet上参加SETI的计算节点，计算节点在给定的数据上用给定的模式进行搜索，然后将搜索的结果发给服务器。服务器负责将从各个计算节点返回的数据汇集成完整的数据。因为这种类型应用的一个共同特征是在海量数据上搜索某些模式，所以把这类计算称为高吞吐计算。所谓的Internet计算都属于这一类。按照 Flynn的分类，高吞吐计算属于SIMD（Single Instruction/Multiple Data）的范畴。</p>
<p>&nbsp;分布计算(Distributed Computing)<br />
　　另一类计算刚好和高吞吐计算相反，它们虽然可以给分成若干并行的子任务，但是子任务间联系很紧密，需要大量的数据交换。按照Flynn的分类，分布式的高性能计算属于MIMD（Multiple Instruction/Multiple Data）的范畴。</p>
<p>4. 分布式（集群）与集群的联系与区别 <br />
分布式是指将不同的业务分布在不同的地方。 <br />
而集群指的是将几台服务器集中在一起，实现同一业务。 <br />
分布式中的每一个节点，都可以做集群。 <br />
而集群并不一定就是分布式的。 <br />
举例：就比如新浪网，访问的人多了，他可以做一个群集，前面放一个响应服务器，后面几台服务器完成同一业务，如果有业务访问的时候，响应服务器看哪台服务器的负载不是很重，就将给哪一台去完成。 <br />
而分布式，从窄意上理解，也跟集群差不多， 但是它的组织比较松散，不像集群，有一个组织性，一台服务器垮了，其它的服务器可以顶上来。 <br />
分布式的每一个节点，都完成不同的业务，一个节点垮了，哪这个业务就不可访问了。</p>
<p>&nbsp;</p>
<p>本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/tanghongru1983/archive/2009/04/28/4130356.aspx</p>
  <img src ="http://www.blogjava.net/absolutedo/aggbug/314282.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/absolutedo/" target="_blank">absolute</a> 2010-03-02 14:16 <a href="http://www.blogjava.net/absolutedo/archive/2010/03/02/314282.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Myeclipse7.0注册机的源代码[Reship]</title><link>http://www.blogjava.net/absolutedo/archive/2010/02/16/313155.html</link><dc:creator>absolute</dc:creator><author>absolute</author><pubDate>Tue, 16 Feb 2010 01:20:00 GMT</pubDate><guid>http://www.blogjava.net/absolutedo/archive/2010/02/16/313155.html</guid><description><![CDATA[代码如下：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.BufferedReader;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.IOException;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.InputStreamReader;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img id="Codehighlighter1_120_2632_Open_Image" onclick="this.style.display='none'; Codehighlighter1_120_2632_Open_Text.style.display='none'; Codehighlighter1_120_2632_Closed_Image.style.display='inline'; Codehighlighter1_120_2632_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_120_2632_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_120_2632_Closed_Text.style.display='none'; Codehighlighter1_120_2632_Open_Image.style.display='inline'; Codehighlighter1_120_2632_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;MyEclipseGen&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_120_2632_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_120_2632_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;String&nbsp;LL&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Decompiling&nbsp;this&nbsp;copyrighted&nbsp;software&nbsp;is&nbsp;a&nbsp;violation&nbsp;of&nbsp;both&nbsp;your&nbsp;license&nbsp;agreement&nbsp;and&nbsp;the&nbsp;Digital&nbsp;Millenium&nbsp;Copyright&nbsp;Act&nbsp;of&nbsp;1998&nbsp;(http://www.loc.gov/copyright/legislation/dmca.pdf).&nbsp;Under&nbsp;section&nbsp;1204&nbsp;of&nbsp;the&nbsp;DMCA,&nbsp;penalties&nbsp;range&nbsp;up&nbsp;to&nbsp;a&nbsp;$500,000&nbsp;fine&nbsp;or&nbsp;up&nbsp;to&nbsp;five&nbsp;years&nbsp;imprisonment&nbsp;for&nbsp;a&nbsp;first&nbsp;offense.&nbsp;Think&nbsp;about&nbsp;it;&nbsp;pay&nbsp;for&nbsp;a&nbsp;license,&nbsp;avoid&nbsp;prosecution,&nbsp;and&nbsp;feel&nbsp;better&nbsp;about&nbsp;yourself.</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img id="Codehighlighter1_612_1381_Open_Image" onclick="this.style.display='none'; Codehighlighter1_612_1381_Open_Text.style.display='none'; Codehighlighter1_612_1381_Closed_Image.style.display='inline'; Codehighlighter1_612_1381_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_612_1381_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_612_1381_Closed_Text.style.display='none'; Codehighlighter1_612_1381_Open_Image.style.display='inline'; Codehighlighter1_612_1381_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getSerial(String&nbsp;userId,&nbsp;String&nbsp;licenseNum)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_612_1381_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_612_1381_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;java.util.Calendar&nbsp;cal&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;java.util.Calendar.getInstance();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;cal.add(</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;cal.add(</span><span style="color: #000000">6</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;java.text.NumberFormat&nbsp;nf&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;java.text.DecimalFormat(</span><span style="color: #000000">"</span><span style="color: #000000">000</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;licenseNum&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;nf.format(Integer.valueOf(licenseNum));<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;String&nbsp;verTime&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StringBuilder(</span><span style="color: #000000">"</span><span style="color: #000000">-</span><span style="color: #000000">"</span><span style="color: #000000">).append(<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;java.text.SimpleDateFormat(</span><span style="color: #000000">"</span><span style="color: #000000">yyMMdd</span><span style="color: #000000">"</span><span style="color: #000000">).format(cal.getTime()))<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(</span><span style="color: #000000">"</span><span style="color: #000000">0</span><span style="color: #000000">"</span><span style="color: #000000">).toString();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;String&nbsp;type&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">YE3MP-</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;String&nbsp;need&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StringBuilder(userId.substring(</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">)).append(type)<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(</span><span style="color: #000000">"</span><span style="color: #000000">300</span><span style="color: #000000">"</span><span style="color: #000000">).append(licenseNum).append(verTime).toString();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;String&nbsp;dx&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StringBuilder(need).append(LL).append(userId)<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.toString();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;suf&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.decode(dx);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;String&nbsp;code&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StringBuilder(need).append(String.valueOf(suf))<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.toString();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&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">.change(code);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img id="Codehighlighter1_1413_1604_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1413_1604_Open_Text.style.display='none'; Codehighlighter1_1413_1604_Closed_Image.style.display='inline'; Codehighlighter1_1413_1604_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1413_1604_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1413_1604_Closed_Text.style.display='none'; Codehighlighter1_1413_1604_Open_Image.style.display='inline'; Codehighlighter1_1413_1604_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;decode(String&nbsp;s)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1413_1604_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1413_1604_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">[]&nbsp;ac;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;j;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;k;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&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">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;ac&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;s.toCharArray();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&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">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;k&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ac.length;<br />
<img id="Codehighlighter1_1539_1579_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1539_1579_Open_Text.style.display='none'; Codehighlighter1_1539_1579_Closed_Image.style.display='inline'; Codehighlighter1_1539_1579_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1539_1579_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1539_1579_Closed_Text.style.display='none'; Codehighlighter1_1539_1579_Open_Image.style.display='inline'; Codehighlighter1_1539_1579_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(j&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;k)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1539_1579_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1539_1579_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">31</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;i)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;ac[j];<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000">++</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;Math.abs(i);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img id="Codehighlighter1_1639_2131_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1639_2131_Open_Text.style.display='none'; Codehighlighter1_1639_2131_Closed_Image.style.display='inline'; Codehighlighter1_1639_2131_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1639_2131_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1639_2131_Closed_Text.style.display='none'; Codehighlighter1_1639_2131_Open_Image.style.display='inline'; Codehighlighter1_1639_2131_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;change(String&nbsp;s)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1639_2131_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1639_2131_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[]&nbsp;abyte0;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">[]&nbsp;ac;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;k;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;j;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;abyte0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;s.getBytes();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;ac&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">char</span><span style="color: #000000">[s.length()];<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&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">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;k&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;abyte0.length;<br />
<img id="Codehighlighter1_1808_2099_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1808_2099_Open_Text.style.display='none'; Codehighlighter1_1808_2099_Closed_Image.style.display='inline'; Codehighlighter1_1808_2099_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1808_2099_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1808_2099_Closed_Text.style.display='none'; Codehighlighter1_1808_2099_Open_Image.style.display='inline'; Codehighlighter1_1808_2099_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;k)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1808_2099_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1808_2099_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;abyte0[i];<br />
<img id="Codehighlighter1_1861_1904_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1861_1904_Open_Text.style.display='none'; Codehighlighter1_1861_1904_Closed_Image.style.display='inline'; Codehighlighter1_1861_1904_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1861_1904_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1861_1904_Closed_Text.style.display='none'; Codehighlighter1_1861_1904_Open_Image.style.display='inline'; Codehighlighter1_1861_1904_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;((j&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">48</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;(j&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">57</span><span style="color: #000000">))&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1861_1904_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1861_1904_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(((j&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">48</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">5</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">48</span><span style="color: #000000">;<br />
<img id="Codehighlighter1_1939_1983_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1939_1983_Open_Text.style.display='none'; Codehighlighter1_1939_1983_Closed_Image.style.display='inline'; Codehighlighter1_1939_1983_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1939_1983_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1939_1983_Closed_Text.style.display='none'; Codehighlighter1_1939_1983_Open_Image.style.display='inline'; Codehighlighter1_1939_1983_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;((j&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">65</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;(j&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">90</span><span style="color: #000000">))&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1939_1983_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1939_1983_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(((j&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">65</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">13</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">26</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">65</span><span style="color: #000000">;<br />
<img id="Codehighlighter1_2019_2063_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2019_2063_Open_Text.style.display='none'; Codehighlighter1_2019_2063_Closed_Image.style.display='inline'; Codehighlighter1_2019_2063_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_2019_2063_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2019_2063_Closed_Text.style.display='none'; Codehighlighter1_2019_2063_Open_Image.style.display='inline'; Codehighlighter1_2019_2063_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;((j&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">97</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;(j&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">122</span><span style="color: #000000">))&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2019_2063_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_2019_2063_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(((j&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">97</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">13</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">26</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">97</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;ac[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">char</span><span style="color: #000000">)&nbsp;j;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;String.valueOf(ac);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img id="Codehighlighter1_2156_2170_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2156_2170_Open_Text.style.display='none'; Codehighlighter1_2156_2170_Closed_Image.style.display='inline'; Codehighlighter1_2156_2170_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_2156_2170_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2156_2170_Closed_Text.style.display='none'; Codehighlighter1_2156_2170_Open_Image.style.display='inline'; Codehighlighter1_2156_2170_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;MyEclipseGen()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2156_2170_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_2156_2170_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">super</span><span style="color: #000000">();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img id="Codehighlighter1_2212_2630_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2212_2630_Open_Text.style.display='none'; Codehighlighter1_2212_2630_Closed_Image.style.display='inline'; Codehighlighter1_2212_2630_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_2212_2630_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2212_2630_Closed_Text.style.display='none'; Codehighlighter1_2212_2630_Open_Image.style.display='inline'; Codehighlighter1_2212_2630_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" /></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;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2212_2630_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_2212_2630_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_2221_2598_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2221_2598_Open_Text.style.display='none'; Codehighlighter1_2221_2598_Closed_Image.style.display='inline'; Codehighlighter1_2221_2598_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_2221_2598_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2221_2598_Closed_Text.style.display='none'; Codehighlighter1_2221_2598_Open_Image.style.display='inline'; Codehighlighter1_2221_2598_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2221_2598_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_2221_2598_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">please&nbsp;input&nbsp;register&nbsp;name:</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;BufferedReader&nbsp;reader&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;BufferedReader(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;InputStreamReader(<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.in));<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;userId&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;userId&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;reader.readLine();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;MyEclipseGen&nbsp;myeclipsegen&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;MyEclipseGen();<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;res&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;myeclipsegen.getSerial(userId,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">5</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Serial:</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;res);<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;reader.readLine();<br />
<img id="Codehighlighter1_2623_2628_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2623_2628_Open_Text.style.display='none'; Codehighlighter1_2623_2628_Closed_Image.style.display='inline'; Codehighlighter1_2623_2628_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_2623_2628_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2623_2628_Closed_Text.style.display='none'; Codehighlighter1_2623_2628_Open_Image.style.display='inline'; Codehighlighter1_2623_2628_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(IOException&nbsp;ex)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2623_2628_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_2623_2628_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
<br />
<p>注册方法：<br />
window -&gt; preferences -&gt; myeclipse -&gt; subscription</p>
<p>&nbsp;</p>
 <img src ="http://www.blogjava.net/absolutedo/aggbug/313155.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/absolutedo/" target="_blank">absolute</a> 2010-02-16 09:20 <a href="http://www.blogjava.net/absolutedo/archive/2010/02/16/313155.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate Study Note 1</title><link>http://www.blogjava.net/absolutedo/archive/2010/01/09/308863.html</link><dc:creator>absolute</dc:creator><author>absolute</author><pubDate>Sat, 09 Jan 2010 11:08:00 GMT</pubDate><guid>http://www.blogjava.net/absolutedo/archive/2010/01/09/308863.html</guid><wfw:comment>http://www.blogjava.net/absolutedo/comments/308863.html</wfw:comment><comments>http://www.blogjava.net/absolutedo/archive/2010/01/09/308863.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/absolutedo/comments/commentRss/308863.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/absolutedo/services/trackbacks/308863.html</trackback:ping><description><![CDATA[<p>&nbsp; </p>
<p style="text-align: center" class="MsoNormal" align="center"><span style="font-size: 16pt">Hibernate</span><span style="font-family: 宋体; font-size: 16pt">学习笔记</span></p>
<p style="text-indent: -21.75pt; margin-left: 21.75pt; tab-stops: list 21.75pt" class="MsoNormal"><span style="font-size: 14pt">1、</span><span style="font-size: 14pt">Hibernate</span><span style="font-family: 宋体; font-size: 14pt">核心类与接口</span><span style="font-size: 14pt">&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p style="margin-left: 10.5pt" class="MsoNormal"><strong><span style="font-size: 12pt">1-1.Configuration</span></strong><strong><span style="font-family: 宋体; font-size: 12pt">类</span></strong></p>
<p style="margin-left: 10.5pt" class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Configuration<span style="font-family: 宋体">类是</span>Hibernate<span style="font-family: 宋体">的入口，它负责配置和启动</span>Hibernate,Hibernate<span style="font-family: 宋体">框架通过</span>Configuration<span style="font-family: 宋体">实例加载配置文件信息</span>(hibernate.cfg.xml),<span style="font-family: 宋体">然后读取指定对象关系映射文件</span>(bean.hbm.xml)<span style="font-family: 宋体">的内容并创建</span>SessionFactory.</p>
<p style="margin-left: 10.5pt" class="MsoNormal"><strong><span style="font-size: 12pt">1-2.SessionFactory</span></strong><strong><span style="font-family: 宋体; font-size: 12pt">接口</span></strong></p>
<p style="margin-left: 10.5pt" class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SessionFactory<span style="font-family: 宋体">接口负责初始化</span>Hibernate,<span style="font-family: 宋体">一个</span>SessionFactory<span style="font-family: 宋体">实例对应一个数据存储源</span>(<span style="font-family: 宋体">一般就是指一个数据库</span>)<span style="font-family: 宋体">。应用程序从</span>SessionFactory<span style="font-family: 宋体">中获得</span>Session<span style="font-family: 宋体">实例。</span>SessionFactory<span style="font-family: 宋体">具有以下特点：</span></p>
<p style="margin-left: 10.5pt" class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1)&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">线程安全，即同一个</span> SessionFactory<span style="font-family: 宋体">实例可以被应用</span> <span style="font-family: 宋体">的多个线程共享。</span></p>
<p style="margin-left: 10.5pt" class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2)&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">它是重量级的</span> <span style="font-family: 宋体">，因为它需要一个很大的缓存，用来存放预定义的</span>SQL<span style="font-family: 宋体">语句以及映射元数据等。</span></p>
<p style="margin-left: 10.5pt" class="MsoNormal"><span style="font-family: 宋体">所以说</span> <span style="font-family: 宋体">，如果一个应用程序中只访问一个数据库</span> <span style="font-family: 宋体">，则只需要创建一个全局的</span> SessionFactory<span style="font-family: 宋体">实例。</span></p>
<p style="margin-left: 10.5pt" class="MsoNormal"><strong><span style="font-size: 12pt">1-3.Session </span></strong><strong><span style="font-family: 宋体; font-size: 12pt">接口</span></strong></p>
<p style="margin-left: 10.5pt" class="MsoNormal">&nbsp;&nbsp;&nbsp; Session<span style="font-family: 宋体">是</span>Hibernate<span style="font-family: 宋体">中应用最频繁的接口。</span>Session<span style="font-family: 宋体">也被称为持久化管理器</span> <span style="font-family: 宋体">，它负责管理所有与持久化相关的操作：如存储、更新、删除和加载对象等。</span>Session<span style="font-family: 宋体">接口具有以下特点：</span></p>
<p style="margin-left: 10.5pt" class="MsoNormal">&nbsp;&nbsp;&nbsp; 1)&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">单线程，非共享的对象。线程不安全，在设计软件架构时候，应该避免多个线程共享同一个</span>session<span style="font-family: 宋体">实例。</span></p>
<p style="margin-left: 10.5pt" class="MsoNormal">&nbsp;&nbsp;&nbsp; 2)&nbsp;&nbsp;&nbsp; Session <span style="font-family: 宋体">实例是轻量级的，它的创建和销毁不需要消耗太多的资源。可以为每个请分配一个</span>Session<span style="font-family: 宋体">实例，在每次请求过程汇总及时创建和销毁</span> Session<span style="font-family: 宋体">实例。</span></p>
<p style="margin-left: 10.5pt" class="MsoNormal">&nbsp;&nbsp;&nbsp; 3)&nbsp;&nbsp;&nbsp; Session<span style="font-family: 宋体">有一个缓存，它存放当前工作单元加载的对象。</span>Session<span style="font-family: 宋体">的缓存被称为</span>Hibernate<span style="font-family: 宋体">的一级缓存。</span></p>
<p style="margin-left: 10.5pt" class="MsoNormal"><strong><span style="font-size: 12pt">1-4.Transaction</span></strong><strong><span style="font-family: 宋体; font-size: 12pt">接口</span></strong></p>
<p style="margin-left: 10.5pt" class="MsoNormal">&nbsp;&nbsp;&nbsp; Transaction<span style="font-family: 宋体">接口是</span> Hibernate<span style="font-family: 宋体">框架的事务接口。它对底层的事务接口做了封装，包括：</span>JDBC API<span style="font-family: 宋体">和</span>JTA.<span style="font-family: 宋体">这样使得</span>Hibernate<span style="font-family: 宋体">应用可以通过一致的</span>Transaction<span style="font-family: 宋体">接口来申明事务边界，这有助于应用程序再不同的环境和容器中移植。</span></p>
<p style="margin-left: 10.5pt" class="MsoNormal"><strong><span style="font-size: 12pt">1-5.Query</span></strong><strong><span style="font-family: 宋体; font-size: 12pt">和</span></strong><strong><span style="font-size: 12pt">Criteria</span></strong><strong><span style="font-family: 宋体; font-size: 12pt">接口</span></strong></p>
<p style="margin-left: 10.5pt" class="MsoNormal">&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">它们是</span> Hibernate<span style="font-family: 宋体">的查询接口，用于从数据存储源查询对象及控制执行查询的过程。</span>Query<span style="font-family: 宋体">包装了一个</span> HQL(Hibernate Query Language)<span style="font-family: 宋体">；而</span>Criteria<span style="font-family: 宋体">接口完全封装了基本字符串形式的查询语句，比</span>Query<span style="font-family: 宋体">更加面向对象，</span>Criteria<span style="font-family: 宋体">接口擅长于执行动态查询。</span></p>
<p style="text-indent: -21.75pt; margin-left: 21.75pt; tab-stops: list 21.75pt" class="MsoNormal"><span style="font-size: 14pt">2、</span><span style="font-size: 14pt">Hibernate</span><span style="font-family: 宋体; font-size: 14pt">中常用的事务隔离级别</span></p>
<p>
<table style="border-bottom: medium none; border-left: medium none; width: 419.4pt; border-collapse: collapse; border-top: medium none; border-right: medium none" class="MsoTableGrid" border="1" cellspacing="0" cellpadding="0" width="559">
    <tbody>
        <tr>
            <td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 202.75pt; padding-right: 5.4pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="270">
            <p><span style="font-family: 宋体; font-size: 14pt">常量</span></p>
            </td>
            <td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 24.95pt; padding-right: 5.4pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="33">
            <p><span style="font-family: 宋体; font-size: 14pt">值</span></p>
            </td>
            <td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 191.7pt; padding-right: 5.4pt; border-top: windowtext 1pt solid; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="256">
            <p><span style="font-family: 宋体; font-size: 14pt">说明</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 202.75pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="270">
            <p>TRANSACTION_NONE&nbsp;</p>
            </td>
            <td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 24.95pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="33">
            <p>0</p>
            </td>
            <td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 191.7pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="256">
            <p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">不支持事务</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 202.75pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="270">
            <p>TRANSACTION_READ_UNCOMMITTED</p>
            </td>
            <td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 24.95pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="33">
            <p>1</p>
            </td>
            <td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 191.7pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="256">
            <p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">指示可以发生脏读（</span>dirty read<span style="font-family: 宋体">）、不可重复读和虚读（</span>phantom read<span style="font-family: 宋体">）的常量。此级别允许被某一事务更改的行在已提交该行所有更改之前被另一个事务读取（&#8220;脏读&#8221;）。如果所有更改都被回滚，则第二个事务将获取无效的行。</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 202.75pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="270">
            <p>TRANSACTION_READ_COMMITTED</p>
            </td>
            <td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 24.95pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="33">
            <p>2</p>
            </td>
            <td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 191.7pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="256">
            <p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">指示不可以发生脏读的常量；不可重复读和虚读可以发生。此级别只禁止事务读取其中带有未提交更改的行。</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 202.75pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="270">
            <p>TRANSACTION_REPEATABLE_READ</p>
            </td>
            <td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 24.95pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="33">
            <p>4</p>
            </td>
            <td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 191.7pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="256">
            <p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">指示不可以发生脏读和不可重复读的常量；虚读可以发生。此级别禁止事务读取带有未提交更改的行，它还禁止这种情况：一个事务读取某一行，而另一个事务更改该行，第一个事务重新读取该行，并在第二次读取时获得不同的值（&#8220;不可重复读&#8221;）。</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 202.75pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="270">
            <p>TRANSACTION_SERIALIZABLE</p>
            </td>
            <td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 24.95pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="33">
            <p>8</p>
            </td>
            <td style="border-bottom: windowtext 1pt solid; border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 191.7pt; padding-right: 5.4pt; border-top: medium none; border-right: windowtext 1pt solid; padding-top: 0cm" valign="top" width="256">
            <p style="text-indent: 21pt" class="MsoNormal"><span style="font-family: 宋体">指示不可以发生脏读、不可重复读和虚读的常量。此级别包括</span>TRANSACTION_REPEATABLE_READ <span style="font-family: 宋体">中禁止的事项，同时还禁止出现这种情况：某一事务读取所有满足</span> WHERE <span style="font-family: 宋体">条件的行，另一个事务插入一个满足</span> WHERE <span style="font-family: 宋体">条件的行，第一个事务重新读取满足相同条件的行，并在第二次读取时获得额外的&#8220;虚&#8221;行。</span></p>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p style="text-indent: -21.75pt; margin-left: 21.75pt; tab-stops: list 21.75pt" class="MsoNormal"><span style="font-size: 14pt">3、</span><span style="font-size: 14pt">Hibernate</span><span style="font-family: 宋体; font-size: 14pt">中实例的状态</span><span style="font-size: 14pt"></p>
<p></span><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/absolutedo/11111.jpg" width="586" height="480" /></p>
<p style="margin-left: 10.5pt" class="MsoNormal"><strong><span style="font-size: 12pt">3-1</span></strong><strong><span style="font-family: 宋体; font-size: 12pt">：临时状态</span></strong></p>
<p style="margin-left: 10.5pt" class="MsoNormal"><strong><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong>&nbsp;<span style="font-family: 宋体">该实例从未与任何持久化上下文关联过。它没有持久化标识（相当于主键值），临时状态下的对象有如下特征。</span></p>
<p style="text-indent: -21pt; margin-left: 74.25pt; tab-stops: list 74.25pt" class="MsoNormal">1）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">不处于</span>Session<span style="font-family: 宋体">缓存中，也可以说不被任何一个</span>Session<span style="font-family: 宋体">关联</span></p>
<p style="text-indent: -21pt; margin-left: 74.25pt; tab-stops: list 74.25pt" class="MsoNormal">2）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">在数据库中没有对应的记录</span></p>
<p style="margin-left: 53.25pt" class="MsoNormal"><span style="font-family: 宋体">在以下情况下，</span>Java<span style="font-family: 宋体">对象进入临时状态</span></p>
<p style="text-indent: -18pt; margin-left: 71.25pt; tab-stops: list 71.25pt" class="MsoNormal">1）&nbsp;<span style="font-family: 宋体">当通过</span>new<span style="font-family: 宋体">语句刚创建一个</span>Java<span style="font-family: 宋体">对象，它处于临时状态，此时不和数据库中的任何记录对应。</span></p>
<p style="text-indent: -18pt; margin-left: 71.25pt; tab-stops: list 71.25pt" class="MsoNormal">2）&nbsp;Session<span style="font-family: 宋体">的</span>delete()<span style="font-family: 宋体">方法能使一个持久化或临时脱管对象转换为临时对象。对于脱管对象，</span>delete()<span style="font-family: 宋体">方法从数据库中删除与它对应的记录，并且把它从</span>Session<span style="font-family: 宋体">缓存中删除。</span></p>
<p style="margin-left: 10.5pt" class="MsoNormal"><strong><span style="font-size: 12pt">3-2</span></strong><strong><span style="font-family: 宋体; font-size: 12pt">：持久化状态</span></strong></p>
<p style="margin-left: 10.5pt" class="MsoNormal"><strong><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong><span style="font-family: 宋体">该实例目前与某个持久化上下文有关联，它拥有持久化标识（相当于主键值），并且可能在数据库汇总有一个对应的行。对于某一个特定的持久化上下文，</span>Hibernate<span style="font-family: 宋体">保证标识与</span>Java<span style="font-family: 宋体">标识（其值代表对应在内存中的位置）等价。持久化对象有以下特征。</span></p>
<p style="text-indent: -18pt; margin-left: 71.25pt; tab-stops: list 71.25pt" class="MsoNormal">1）&nbsp;<span style="font-family: 宋体">位于一个</span>Session<span style="font-family: 宋体">实例的缓存中，也可以说，持久化对象总是被一个</span>Session<span style="font-family: 宋体">实例关联。</span></p>
<p style="text-indent: -18pt; margin-left: 71.25pt; tab-stops: list 71.25pt" class="MsoNormal">2）&nbsp;<span style="font-family: 宋体">持久化对象和数据库中的相关记录对应。</span></p>
<p style="text-indent: -18pt; margin-left: 71.25pt; tab-stops: list 71.25pt" class="MsoNormal">3）&nbsp;Session<span style="font-family: 宋体">在清理缓存时，会根据持久化对象的属性变化，来同步更新数据库。</span></p>
<p style="margin-left: 71.25pt" class="MsoNormal">Session<span style="font-family: 宋体">的许多方法都能够触发</span>Java<span style="font-family: 宋体">对象进入持久化状态。</span></p>
<p style="text-indent: -18pt; margin-left: 71.25pt; tab-stops: list 71.25pt" class="MsoNormal">4）&nbsp;Session<span style="font-family: 宋体">的</span>save()<span style="font-family: 宋体">的方法能够把临时对象转变成持久化对象。</span></p>
<p style="text-indent: -18pt; margin-left: 71.25pt; tab-stops: list 71.25pt" class="MsoNormal">5）&nbsp;Session<span style="font-family: 宋体">的</span>load()<span style="font-family: 宋体">或</span>get()<span style="font-family: 宋体">方法返回的对象总是处于持久化状态。</span></p>
<p style="text-indent: -18pt; margin-left: 71.25pt; tab-stops: list 71.25pt" class="MsoNormal">6）&nbsp;Query<span style="font-family: 宋体">类的</span>list()<span style="font-family: 宋体">方法返回的</span>list<span style="font-family: 宋体">集合中存放的都是持久化对象。</span></p>
<p style="text-indent: -18pt; margin-left: 71.25pt; tab-stops: list 71.25pt" class="MsoNormal">7）&nbsp;Session<span style="font-family: 宋体">的</span>update()<span style="font-family: 宋体">、</span>saveOrUpdate()<span style="font-family: 宋体">和</span>lock()<span style="font-family: 宋体">方法使脱管对象转变为持久化对象。</span></p>
<p style="margin-left: 53.25pt" class="MsoNormal"><span style="font-family: 宋体">当一个持久化对象关联一个临时对象时，在允许级联保存的情况下，</span>Session<span style="font-family: 宋体">在清理缓存时会把这个临时对象也转变成持久化对象。</span>Hibernate<span style="font-family: 宋体">保证在同一个</span>Session<span style="font-family: 宋体">实例的缓存中，数据库表中的每条记录只对应唯一的持久化对象，也就是说在一个</span>Session<span style="font-family: 宋体">里</span>load/get<span style="font-family: 宋体">同一个</span>OID<span style="font-family: 宋体">得到</span> <span style="font-family: 宋体">的是相同的对象。</span></p>
<p style="margin-left: 10.5pt" class="MsoNormal"><strong><span style="font-size: 12pt">3-3</span></strong><strong><span style="font-family: 宋体; font-size: 12pt">：脱管状态</span></strong></p>
<p style="margin-left: 10.5pt" class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<span style="font-family: 宋体">实例曾经与某个持久化上下文发生过关联，不过那个上下文被关闭了，或者这个实例是被序列化</span>(serialize)<span style="font-family: 宋体">到另外的进程。它拥有持久化标识，并且在数据库中可能存在一个对应的行。对于脱管状态的实例，</span>Hibernate<span style="font-family: 宋体">不保证任何持久化标识和</span>Java<span style="font-family: 宋体">标识的关系。</span></p>
<p style="margin-left: 10.5pt" class="MsoNormal"><span style="font-family: 宋体">脱管对象具有以下特征。</span></p>
<p style="text-indent: -21pt; margin-left: 74.25pt; tab-stops: list 74.25pt" class="MsoNormal">1）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">不再位于</span>Session<span style="font-family: 宋体">的缓存中，也可以说，脱管对象不被</span>Session<span style="font-family: 宋体">关联。</span></p>
<p style="text-indent: -21pt; margin-left: 74.25pt; tab-stops: list 74.25pt" class="MsoNormal">2）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">脱管对象是有持久化对象转变过来的，因此在数据库中可能还存在与它对应的记录</span>(<span style="font-family: 宋体">前提条件是没有其他程序删除了这条记录</span>)<span style="font-family: 宋体">。</span></p>
<p style="text-indent: -21pt; margin-left: 74.25pt; tab-stops: list 74.25pt" class="MsoNormal">3）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">脱管对象与临时对象的相同指出在于两者都不被</span>Session<span style="font-family: 宋体">关联，因此</span>Hibernate<span style="font-family: 宋体">不会保证他们属性变化与数据库保持同步。脱管对象与临时对象的区别在于前者是由持久化对象转变过来的，因此可能在书库中还存在对应的记录，而后者在数据库中是没有对应的记录的。</span></p>
<p style="margin-left: 53.25pt" class="MsoNormal">Session<span style="font-family: 宋体">的以下方法使持久化对象转变成脱管对象</span>.</p>
<p style="text-indent: -18pt; margin-left: 71.25pt; tab-stops: list 71.25pt" class="MsoNormal">1)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">当调用</span>Session<span style="font-family: 宋体">的</span>close()<span style="font-family: 宋体">方法时，</span>Session <span style="font-family: 宋体">的缓存被清空，缓存中的所有持久化对象都变为脱管对象，如果在应用程序中没有引用变量引用这些脱管对象，他们就会结束生命周期。</span></p>
<p style="text-indent: -18pt; margin-left: 71.25pt; tab-stops: list 71.25pt" class="MsoNormal">2)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Session<span style="font-family: 宋体">的</span>evict()<span style="font-family: 宋体">方法能够从缓存中删除一个持久化对象，使它变为脱管状态，当</span>Session<span style="font-family: 宋体">的缓存中保存了大量的持久化对象时，会消耗许多内存空间，为了提高性能，可以考虑调用</span>evict()<span style="font-family: 宋体">方法，从缓存中删除一些持久化对象。但是多数情况下不推荐使用该方法，而应该通过查询语言，或者显示的导航来控制对象图的深度。</span></p>
<p style="margin-left: 10.5pt" class="MsoNormal"><strong>&nbsp;</strong></p>
  <img src ="http://www.blogjava.net/absolutedo/aggbug/308863.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/absolutedo/" target="_blank">absolute</a> 2010-01-09 19:08 <a href="http://www.blogjava.net/absolutedo/archive/2010/01/09/308863.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rational Rose Enterprise Edition 2003 安装破解步骤[Reship]</title><link>http://www.blogjava.net/absolutedo/archive/2009/10/25/299641.html</link><dc:creator>absolute</dc:creator><author>absolute</author><pubDate>Sun, 25 Oct 2009 00:29:00 GMT</pubDate><guid>http://www.blogjava.net/absolutedo/archive/2009/10/25/299641.html</guid><wfw:comment>http://www.blogjava.net/absolutedo/comments/299641.html</wfw:comment><comments>http://www.blogjava.net/absolutedo/archive/2009/10/25/299641.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/absolutedo/comments/commentRss/299641.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/absolutedo/services/trackbacks/299641.html</trackback:ping><description><![CDATA[最近在构思写一些设计模式方面的文章,用到UML图,以前用Visio和WithClass..但功能不多,所以就安装了Rose 2003..以下是安装过程:<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 1.安装Rose后,默认是需要许可证书的..去下载个破解的..我上传了破解文件..<a href="http://files.cnblogs.com/lixianhuei/rose2003crack.rar" target="_blank">点击这里下载Rose 2003破解</a><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 2.先用破解压缩包里的 rational.exe，lmgrd.exe 覆盖到你的 \安装目录的Rartional\commen\下<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 3.然后记事本打开 license.dat, 修改里面的 SERVER yourPC ANY&nbsp; DAEMON rational "C:\Program Files\Rational\Common\rational.exe" <br />
&nbsp;&nbsp;&nbsp;&nbsp; 改成 SERVER 你的机器名 ANY&nbsp; DAEMON rational "你的安装目录\rational.exe" ,拷贝到Common目录下..<br />
<br />
&nbsp;&nbsp;&nbsp; 4. 将Flexlm.cpl拷贝到C:\winnt\system32\下， 在控制面板里运行 FlexLm License Manager，&nbsp;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp; 运行后, 在 Setup 面板配置文件路径，lmgrd.exe -&gt; 你的安装目录 \Common\lmgrd.exe, 而 License File 为你改过的 license.dat ...<br />
<br />
<img hspace="5" align="baseline" src="http://images.cnblogs.com/cnblogs_com/lixianhuei/2.gif" width="477" height="245"  alt="" /><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 5.在Control面板点击Start，如果成功的话点击Status按钮将显示 你的机器名：license server UP (MASTER) 说明成功了 <br />
&nbsp;&nbsp;&nbsp;&nbsp; 失败的话重启一下FlexLm License Manager就没问题了。&nbsp;<br />
<br />
<img hspace="5" align="baseline" src="http://images.cnblogs.com/cnblogs_com/lixianhuei/3.gif" width="477" height="245"  alt="" /><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 6.如果弹出对话框License Key Administrator Wizard后, 选定Point to a Rational License Server to get my licenses，单击下一步， <br />
Server Name文本框中填写你的机器号(可能已经填好)，单击完成。 (成功的话会出现两屏的licenses)&nbsp;<br />
<br />
注意：本文转至：<a href="http://www.cnblogs.com/lixianhuei/archive/2006/01/09/313644.html">http://www.cnblogs.com/lixianhuei/archive/2006/01/09/313644.html</a>
 <img src ="http://www.blogjava.net/absolutedo/aggbug/299641.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/absolutedo/" target="_blank">absolute</a> 2009-10-25 08:29 <a href="http://www.blogjava.net/absolutedo/archive/2009/10/25/299641.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一道SQL面试题</title><link>http://www.blogjava.net/absolutedo/archive/2009/08/17/291432.html</link><dc:creator>absolute</dc:creator><author>absolute</author><pubDate>Mon, 17 Aug 2009 02:14:00 GMT</pubDate><guid>http://www.blogjava.net/absolutedo/archive/2009/08/17/291432.html</guid><wfw:comment>http://www.blogjava.net/absolutedo/comments/291432.html</wfw:comment><comments>http://www.blogjava.net/absolutedo/archive/2009/08/17/291432.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/absolutedo/comments/commentRss/291432.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/absolutedo/services/trackbacks/291432.html</trackback:ping><description><![CDATA[有这样两个表：<br />
table_a:<br />
<br />
id&nbsp; &nbsp; &nbsp; &nbsp; name&nbsp; &nbsp; &nbsp; &nbsp; val <br />
1&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; aaa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;30 <br />
2&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; aaa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;40 <br />
3&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; aaa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;50 <br />
1&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; bbb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;35 <br />
2&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; bbb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;45 <br />
3&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; bbb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;55 <br />
<br />
table_b: <br />
name&nbsp; &nbsp; &nbsp; &nbsp; val1&nbsp; &nbsp; &nbsp; &nbsp; val2&nbsp; &nbsp; &nbsp; &nbsp; val3 <br />
aaa&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; 40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;50 <br />
bbb&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp; 35&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; 45&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;55 <br />
<br />
请用一个SQL语句实现table_a到table_b的转化。<br />
<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;tb(id&nbsp;</span><span style="font-weight: bold; color: #000000">int</span><span style="color: #000000">,&nbsp;name&nbsp;</span><span style="font-weight: bold; color: #000000">varchar</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">10</span><span style="color: #000000">),&nbsp;val&nbsp;</span><span style="font-weight: bold; color: #000000">int</span><span style="color: #000000">)<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">insert</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">into</span><span style="color: #000000">&nbsp;tb&nbsp;</span><span style="color: #0000ff">values</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">aaa</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="font-weight: bold; color: #800000">30</span><span style="color: #000000">&nbsp;)<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">insert</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">into</span><span style="color: #000000">&nbsp;tb&nbsp;</span><span style="color: #0000ff">values</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">2</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">aaa</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="font-weight: bold; color: #800000">40</span><span style="color: #000000">&nbsp;)<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">insert</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">into</span><span style="color: #000000">&nbsp;tb&nbsp;</span><span style="color: #0000ff">values</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">3</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">aaa</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="font-weight: bold; color: #800000">50</span><span style="color: #000000">&nbsp;)<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">insert</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">into</span><span style="color: #000000">&nbsp;tb&nbsp;</span><span style="color: #0000ff">values</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">bbb</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="font-weight: bold; color: #800000">35</span><span style="color: #000000">&nbsp;)<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">insert</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">into</span><span style="color: #000000">&nbsp;tb&nbsp;</span><span style="color: #0000ff">values</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">2</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">bbb</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="font-weight: bold; color: #800000">45</span><span style="color: #000000">&nbsp;)<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">insert</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">into</span><span style="color: #000000">&nbsp;tb&nbsp;</span><span style="color: #0000ff">values</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">3</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">bbb</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="font-weight: bold; color: #800000">55</span><span style="color: #000000">&nbsp;)<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">go</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008080">--</span><span style="color: #008080">sql&nbsp;2000静态，指ID只有1,2,3</span><span style="color: #008080"><br />
</span><span style="color: #008080">11</span><span style="color: #008080"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;name&nbsp;,&nbsp;<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff00ff">sum</span><span style="color: #000000">(</span><span style="color: #ff00ff">case</span><span style="color: #000000">&nbsp;id&nbsp;</span><span style="color: #0000ff">when</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">then</span><span style="color: #000000">&nbsp;val&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">end</span><span style="color: #000000">)&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">val1</span><span style="color: #ff0000">]</span><span style="color: #000000">,<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff00ff">sum</span><span style="color: #000000">(</span><span style="color: #ff00ff">case</span><span style="color: #000000">&nbsp;id&nbsp;</span><span style="color: #0000ff">when</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">then</span><span style="color: #000000">&nbsp;val&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">end</span><span style="color: #000000">)&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">val2</span><span style="color: #ff0000">]</span><span style="color: #000000">,<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff00ff">sum</span><span style="color: #000000">(</span><span style="color: #ff00ff">case</span><span style="color: #000000">&nbsp;id&nbsp;</span><span style="color: #0000ff">when</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">3</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">then</span><span style="color: #000000">&nbsp;val&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">end</span><span style="color: #000000">)&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">val3</span><span style="color: #ff0000">]</span><span style="color: #000000"><br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;tb<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">group</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">by</span><span style="color: #000000">&nbsp;name<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img id="Codehighlighter1_514_705_Open_Image" onclick="this.style.display='none'; Codehighlighter1_514_705_Open_Text.style.display='none'; Codehighlighter1_514_705_Closed_Image.style.display='inline'; Codehighlighter1_514_705_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_514_705_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_514_705_Closed_Text.style.display='none'; Codehighlighter1_514_705_Open_Image.style.display='inline'; Codehighlighter1_514_705_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_514_705_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="Codehighlighter1_514_705_Open_Text"><span style="color: #008080">/*</span><span style="color: #008080"><br />
</span><span style="color: #008080">18</span><span style="color: #008080"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;val1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;val2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;val3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">19</span><span style="color: #008080"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />----------&nbsp;-----------&nbsp;-----------&nbsp;-----------&nbsp;<br />
</span><span style="color: #008080">20</span><span style="color: #008080"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />aaa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;50<br />
</span><span style="color: #008080">21</span><span style="color: #008080"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />bbb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;35&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;45&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;55<br />
</span><span style="color: #008080">22</span><span style="color: #008080"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">23</span><span style="color: #008080"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />（所影响的行数为&nbsp;2&nbsp;行）<br />
</span><span style="color: #008080">24</span><span style="color: #008080"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span><span style="color: #008080">*/</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008080">--</span><span style="color: #008080">sql&nbsp;2000动态，指ID不确定</span><span style="color: #008080"><br />
</span><span style="color: #008080">27</span><span style="color: #008080"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">declare</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@sql</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #000000">varchar</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">8000</span><span style="color: #000000">)<br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@sql</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">select&nbsp;name&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #000000"><br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@sql</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@sql</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">&nbsp;,&nbsp;sum(case&nbsp;id&nbsp;when&nbsp;</span><span style="color: #ff0000">'''</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">cast</span><span style="color: #000000">(id&nbsp;</span><span style="color: #0000ff">as</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #000000">varchar</span><span style="color: #000000">)&nbsp;</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'''</span><span style="color: #ff0000">&nbsp;then&nbsp;val&nbsp;else&nbsp;0&nbsp;end)&nbsp;[val</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">cast</span><span style="color: #000000">(id&nbsp;</span><span style="color: #0000ff">as</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #000000">varchar</span><span style="color: #000000">)&nbsp;</span><span style="color: #808080">+</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"><br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">distinct</span><span style="color: #000000">&nbsp;id&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;tb)&nbsp;</span><span style="color: #0000ff">as</span><span style="color: #000000">&nbsp;a<br />
</span><span style="color: #008080">31</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@sql</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@sql</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">&nbsp;from&nbsp;tb&nbsp;group&nbsp;by&nbsp;name</span><span style="color: #ff0000">'</span><span style="color: #000000"><br />
</span><span style="color: #008080">32</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">exec</span><span style="color: #000000">(</span><span style="color: #008000">@sql</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">33</span><span style="color: #000000"><img id="Codehighlighter1_1004_1180_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1004_1180_Open_Text.style.display='none'; Codehighlighter1_1004_1180_Closed_Image.style.display='inline'; Codehighlighter1_1004_1180_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1004_1180_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1004_1180_Closed_Text.style.display='none'; Codehighlighter1_1004_1180_Open_Image.style.display='inline'; Codehighlighter1_1004_1180_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_1004_1180_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="Codehighlighter1_1004_1180_Open_Text"><span style="color: #008080">/*</span><span style="color: #008080"><br />
</span><span style="color: #008080">34</span><span style="color: #008080"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;val1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;val2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;val3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">35</span><span style="color: #008080"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />----------&nbsp;-----------&nbsp;-----------&nbsp;-----------&nbsp;<br />
</span><span style="color: #008080">36</span><span style="color: #008080"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />aaa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;50<br />
</span><span style="color: #008080">37</span><span style="color: #008080"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />bbb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;35&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;45&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;55<br />
</span><span style="color: #008080">38</span><span style="color: #008080"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span><span style="color: #008080">*/</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">39</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">40</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">41</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">drop</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;tb<br />
</span><span style="color: #008080">42</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
<br />
<img src ="http://www.blogjava.net/absolutedo/aggbug/291432.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/absolutedo/" target="_blank">absolute</a> 2009-08-17 10:14 <a href="http://www.blogjava.net/absolutedo/archive/2009/08/17/291432.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql中 with rollup 、with cube、grouping 统计函数用法 </title><link>http://www.blogjava.net/absolutedo/archive/2009/08/17/291426.html</link><dc:creator>absolute</dc:creator><author>absolute</author><pubDate>Mon, 17 Aug 2009 01:51:00 GMT</pubDate><guid>http://www.blogjava.net/absolutedo/archive/2009/08/17/291426.html</guid><wfw:comment>http://www.blogjava.net/absolutedo/comments/291426.html</wfw:comment><comments>http://www.blogjava.net/absolutedo/archive/2009/08/17/291426.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/absolutedo/comments/commentRss/291426.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/absolutedo/services/trackbacks/291426.html</trackback:ping><description><![CDATA[<dt>SQL code
<dd>
<pre>
<div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><span style="color: #0000ff">with</span><span style="color: #000000"> rollup 、</span><span style="color: #0000ff">with</span><span style="color: #000000"> cube、</span><span style="color: #ff00ff">grouping</span><span style="color: #000000">
CUBE 和 ROLLUP 之间的区别在于：
CUBE 生成的结果集显示了所选列中值的所有组合的聚合。
ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。
</span><span style="color: #ff00ff">grouping</span><span style="color: #000000">:
当用 CUBE 或 ROLLUP 运算符添加行时，附加的列输出值为1，当所添加的行不是由 CUBE 或 ROLLUP 产生时，附加列值为0。
</span><span style="color: #008080">--</span><span style="color: #008080">例如</span><span style="color: #008080">
</span><span style="color: #0000ff">DECLARE</span><span style="color: #000000"> </span><span style="color: #008000">@T</span><span style="color: #000000"> </span><span style="color: #0000ff">TABLE</span><span style="color: #000000">(名称 </span><span style="color: #0000ff">VARCHAR</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">) , 出版商 </span><span style="color: #0000ff">VARCHAR</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">10</span><span style="color: #000000">),  价格1  </span><span style="color: #0000ff">INT</span><span style="color: #000000">, 价格2 </span><span style="color: #0000ff">INT</span><span style="color: #000000">)
</span><span style="color: #0000ff">INSERT</span><span style="color: #000000"> </span><span style="color: #008000">@T</span><span style="color: #000000">
</span><span style="color: #0000ff">SELECT</span><span style="color: #000000"> </span><span style="color: #ff0000">'</span><span style="color: #ff0000">a</span><span style="color: #ff0000">'</span><span style="color: #000000">,  </span><span style="color: #ff0000">'</span><span style="color: #ff0000">北京</span><span style="color: #ff0000">'</span><span style="color: #000000">,  </span><span style="font-weight: bold; color: #800000">11</span><span style="color: #000000">,  </span><span style="font-weight: bold; color: #800000">22</span><span style="color: #000000"> </span><span style="color: #0000ff">UNION</span><span style="color: #000000"> </span><span style="color: #808080">ALL</span><span style="color: #000000">
</span><span style="color: #0000ff">SELECT</span><span style="color: #000000"> </span><span style="color: #ff0000">'</span><span style="color: #ff0000">a</span><span style="color: #ff0000">'</span><span style="color: #000000">,  </span><span style="color: #ff0000">'</span><span style="color: #ff0000">四川</span><span style="color: #ff0000">'</span><span style="color: #000000">,  </span><span style="font-weight: bold; color: #800000">22</span><span style="color: #000000">,  </span><span style="font-weight: bold; color: #800000">33</span><span style="color: #000000"> </span><span style="color: #0000ff">UNION</span><span style="color: #000000"> </span><span style="color: #808080">ALL</span><span style="color: #000000">
</span><span style="color: #0000ff">SELECT</span><span style="color: #000000"> </span><span style="color: #ff0000">'</span><span style="color: #ff0000">b</span><span style="color: #ff0000">'</span><span style="color: #000000">,  </span><span style="color: #ff0000">'</span><span style="color: #ff0000">四川</span><span style="color: #ff0000">'</span><span style="color: #000000">,  </span><span style="font-weight: bold; color: #800000">12</span><span style="color: #000000">,  </span><span style="font-weight: bold; color: #800000">23</span><span style="color: #000000"> </span><span style="color: #0000ff">UNION</span><span style="color: #000000"> </span><span style="color: #808080">ALL</span><span style="color: #000000">
</span><span style="color: #0000ff">SELECT</span><span style="color: #000000"> </span><span style="color: #ff0000">'</span><span style="color: #ff0000">b</span><span style="color: #ff0000">'</span><span style="color: #000000">,  </span><span style="color: #ff0000">'</span><span style="color: #ff0000">北京</span><span style="color: #ff0000">'</span><span style="color: #000000">,  </span><span style="font-weight: bold; color: #800000">10</span><span style="color: #000000">,  </span><span style="font-weight: bold; color: #800000">20</span><span style="color: #000000"> </span><span style="color: #0000ff">UNION</span><span style="color: #000000"> </span><span style="color: #808080">ALL</span><span style="color: #000000">
</span><span style="color: #0000ff">SELECT</span><span style="color: #000000"> </span><span style="color: #ff0000">'</span><span style="color: #ff0000">b</span><span style="color: #ff0000">'</span><span style="color: #000000">,  </span><span style="color: #ff0000">'</span><span style="color: #ff0000">昆明</span><span style="color: #ff0000">'</span><span style="color: #000000">,  </span><span style="font-weight: bold; color: #800000">20</span><span style="color: #000000">,  </span><span style="font-weight: bold; color: #800000">30</span><span style="color: #000000">
</span><span style="color: #0000ff">SELECT</span><span style="color: #000000">
名称,
出版商,
</span><span style="color: #ff00ff">SUM</span><span style="color: #000000">(价格1) </span><span style="color: #0000ff">AS</span><span style="color: #000000"> 价格1,
</span><span style="color: #ff00ff">SUM</span><span style="color: #000000">(价格2) </span><span style="color: #0000ff">AS</span><span style="color: #000000"> 价格2,
</span><span style="color: #ff00ff">GROUPING</span><span style="color: #000000">(名称) </span><span style="color: #0000ff">AS</span><span style="color: #000000"> CHECK名称,
</span><span style="color: #ff00ff">GROUPING</span><span style="color: #000000">(出版商) </span><span style="color: #0000ff">AS</span><span style="color: #000000"> CHECK出版商
</span><span style="color: #0000ff">FROM</span><span style="color: #000000"> </span><span style="color: #008000">@T</span><span style="color: #000000"> </span><span style="color: #0000ff">GROUP</span><span style="color: #000000"> </span><span style="color: #0000ff">BY</span><span style="color: #000000"> 名称,出版商 </span><span style="color: #0000ff">WITH</span><span style="color: #000000"> CUBE
</span><span style="color: #008080">/*</span><span style="color: #008080">
名称   出版商        价格1         价格2         CHECK名称 CHECK出版商
---- ---------- ----------- ----------- ------- --------
a    北京         11          22          0       0
a    四川         22          33          0       0
a    NULL       33          55          0       1
b    北京         10          20          0       0
b    昆明         20          30          0       0
b    四川         12          23          0       0
b    NULL       42          73          0       1
NULL NULL       75          128         1       1
NULL 北京         21          42          1       0
NULL 昆明         20          30          1       0
NULL 四川         34          56          1       0
（所影响的行数为 11 行）
</span><span style="color: #008080">*/</span><span style="color: #000000">
</span><span style="color: #008080">--</span><span style="color: #008080">分析</span><span style="color: #008080">
/*</span><span style="color: #008080">group by 两列：名称有两个类别A,B;所有由CUBE运算而生成行的是
名称   出版商        价格1         价格2         CHECK名称 CHECK出版商
---- ---------- ----------- ----------- ------- --------
a    NULL       33          55          0       1
b    NULL       42          73          0       1
出版商有三个类别，所有由CUBE运算而生成行的是
名称   出版商        价格1         价格2         CHECK名称 CHECK出版商
---- ---------- ----------- ----------- ------- --------
NULL 北京         21          42          1       0
NULL 昆明         20          30          1       0
NULL 四川         34          56          1       0
以及
NULL NULL       75          128         1       1
</span><span style="color: #008080">*/</span><span style="color: #000000">
</span><span style="color: #0000ff">SELECT</span><span style="color: #000000">
名称,
出版商,
</span><span style="color: #ff00ff">SUM</span><span style="color: #000000">(价格1) </span><span style="color: #0000ff">AS</span><span style="color: #000000"> 价格1,
</span><span style="color: #ff00ff">SUM</span><span style="color: #000000">(价格2) </span><span style="color: #0000ff">AS</span><span style="color: #000000"> 价格2
</span><span style="color: #0000ff">FROM</span><span style="color: #000000"> </span><span style="color: #008000">@T</span><span style="color: #000000"> </span><span style="color: #0000ff">GROUP</span><span style="color: #000000"> </span><span style="color: #0000ff">BY</span><span style="color: #000000"> 名称,出版商 </span><span style="color: #0000ff">WITH</span><span style="color: #000000"> ROLLUP
</span><span style="color: #008080">/*</span><span style="color: #008080">
名称   出版商        价格1         价格2
---- ---------- ----------- -----------
a    北京         11          22
a    四川         22          33
a    NULL       33          55
b    北京         10          20
b    昆明         20          30
b    四川         12          23
b    NULL       42          73
NULL NULL       75          128
</span><span style="color: #008080">*/</span></div>
</pre>
</dd>
<img src ="http://www.blogjava.net/absolutedo/aggbug/291426.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/absolutedo/" target="_blank">absolute</a> 2009-08-17 09:51 <a href="http://www.blogjava.net/absolutedo/archive/2009/08/17/291426.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>