﻿<?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>IT博客-我的ITblog我作主　　关注→　『伊波拉』→　测试　SzDlinXie- ITblog　　  　　   -随笔分类-JAVA基础杂志</title><link>http://www.cnitblog.com/szdlinxie/category/4486.html</link><description>·√·  本ITblog站点记录相关的软件技术文档、网络技术杂志、测试技术杂谈等技术文档的管理站点.联系方式：MSN：dowling@sunlike.cn   QQ:94595885</description><language>zh-cn</language><lastBuildDate>Fri, 30 Sep 2011 17:12:21 GMT</lastBuildDate><pubDate>Fri, 30 Sep 2011 17:12:21 GMT</pubDate><ttl>60</ttl><item><title>批量插入数据MYSQL</title><link>http://www.cnitblog.com/szdlinxie/archive/2008/10/10/50062.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 10 Oct 2008 09:46:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2008/10/10/50062.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/50062.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2008/10/10/50062.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/50062.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/50062.html</trackback:ping><description><![CDATA[&nbsp;
<p><span>@echo off</span></p>
<p><span>cls</span></p>
<p>&nbsp;</p>
<p><span>set CLASSPATH=..\api\jogre.jar</span></p>
<p><span>set CLASSPATH=%CLASSPATH%;.</span></p>
<p><span>set CLASSPATH=%CLASSPATH%;classes</span></p>
<p><span>set CLASSPATH=%CLASSPATH%;lib\dom4j.jar</span></p>
<p>&nbsp;</p>
<p><span>java org.jogre.server.JogreServer</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>建表<span><br>[code]<br>create database con_test;<br>use con_test;<br>create table test(id int not null,txt varchar (70),primary key (id),index (id));<br>[/code]<br><br></span>就两个字段，<span>id</span>加索引。<span><br><br></span>用<span>java</span>程序给表循环<span>10</span>万次插入纪录，<span>id(</span>循环次数<span>) </span>和 内容<span>(</span>这条记录是第<span>=xx)<br><br><br>InsertTestMysql.java<br><br>[code]<br>import java.lang.*;<br>import java.sql.*;<br><br>public class InsertTestMysql{<br>&nbsp; &nbsp; &nbsp; &nbsp; public static void main(String [] args){&nbsp; &nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; java.util.Date now_start = new java.util.Date();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; long start_time=now_start.getTime();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int st = 100000;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String str,info;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String db="org.gjt.mm.mysql.Driver";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String host="jdbc:mysql://192.168.1.35/test";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String user="root";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String passwd="root";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Connection con=null;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try{<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Class.forName(db).newInstance();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; catch(Exception e){<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("</span>加载驱动失败<span>:"+db);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try{<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; con=DriverManager.getConnection(host,user,passwd);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; con.setAutoCommit(false);//</span>关闭事务自动提交<span><br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int i=1;i&lt;=st;i++){<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; info = "</span>这条记录是第<span>=";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; info = info.concat(java.lang.Integer.toString(i));<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; str = "insert into test (id,txt) values(?,?);";<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PreparedStatement pstmt = con.prepareStatement(str);<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pstmt.setInt(1,i);<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pstmt.setString(2,info);<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pstmt.executeUpdate();<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; con.commit();//</span>语句执行完毕，提交本事务<span><br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; con.close();<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; catch(Exception e) {<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;System.out.println(e);<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; }<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; java.util.Date now_end = new java.util.Date();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; long end_time=now_end.getTime();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; long use_time=end_time-start_time;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("&lt;&lt;---</span>本页生成耗时<span>["+use_time+"]</span>毫秒<span>("+((double)use_time)/1000+"</span>秒<span>)---&gt;&gt;");<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("\n&lt;&lt;---</span>共插入记录<span>"+st+"</span>条<span>--&gt;&gt;");<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>}<br>[/code]<br><br><br></span>在不同版本的<span>jdbc</span>下，表现不同。<span><br><br>jdbc <st1:chsdate w:st="on" Year="1899" Month="12" Day="30" IsLunarDate="False" IsROCDate="False">3.1.7</st1:chsdate>, 12770,12778 </span>插入这个数目时，程序退出，中文正常。<span><br>jdbc 3.1.12 12000 </span>插入这个数目时，程序退出，中文正常。<span><br><br></span>均出现以下提示：<span><br>"Exception in thread "main" java.lang.OutOfMemoryError: Java heap space"<br>&#8220;Java </span>堆 空间 错误<span>&#8221;</span>，可能是我机器内存不够。但用<span>3.10</span>系列<span>jdbc</span>就正常。<span><br><br>jdbc 3.0.16-ga 10</span>万记录正常，中文正常。<span><br>jdbc 3.0.10 10</span>万记录成功，但中文错误。<span><br><br></span>使用<span>3.1</span>系列<span>jdbc</span>，程序运行后，机器剩余物理内存很快就成了<span>40xxKB</span>了。<span><br><br></span>这个，也可能是<span>jdbc3.1</span>系列需要内存大，我机器内存不足。<span><br><br></span>明天再去同学的<span>AMD64 <st1:chmetcnv w:st="on" UnitName="m" SourceValue="512" HasSpace="False" Negative="False" NumberType="1" TCSC="0">512M</st1:chmetcnv> RAM </span>机器测试。<span><br><br><br></span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>jdbc <st1:chsdate w:st="on" Year="1899" Month="12" Day="30" IsLunarDate="False" IsROCDate="False">3.0.16</st1:chsdate>-ga </span><span>唯一这个正常的，测试结果为：<span><br><br>[code]<br>D:\Program Files\test\db_test&gt;java InsertTestMysql<br>&lt;&lt;---</span>本页生成耗时<span>[98582]</span>毫秒<span>(98.582</span>秒<span>)---&gt;&gt;<br><br>&lt;&lt;---</span>共插入记录<span>100000</span>条<span>--&gt;&gt;<br>[/code]</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>前几天又测试了下，用开源的<span>jdts </span>的<span>jdbc </span>连接<span>ms-sql server 2000&nbsp;&nbsp;sp3 </span>其他同上，测试结果惨不忍睹：<span><br><br>[code]<br>D:\dev\java\src\ts\Ms-Sql&gt;java InsertTestMssql<br>&lt;&lt;---</span>本页生成耗时<span>[1746681]</span>毫秒<span>(1746.681</span>秒<span>)---&gt;&gt;<br><br>&lt;&lt;---</span>共插入记录<span>100000</span>条<span>--&gt;&gt;<br>[/code]<br><br><br></span>因为<span>MicorSoft</span>官方的<span>jdbc</span>不支持手动提交，因此用开源<span>jdts</span>的<span>,</span>反正官方测试报告说<span>jdts</span>性能在<span>ms-sql</span>的<span>java</span>驱动里性能最好。<span><br><br><br></span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>把<span>insert </span>语句注释掉， 看你的程序运行<span>10</span>次是否会正常</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>--&gt;<br>Error</span><span>即是<span>JVM</span>的問題<span>,</span>大概是<span>garbage collection</span>太慢<span>:roll:<br><br></span>試試每<span>10000</span>條作一次<span>garbage collection </span>看看<span>:roll:<br><br>--&gt;<br></span>這句每一次作了<span>3</span>個物件<span>,</span>改一個看看<span><br><br><br></span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>--&gt;<br><br></span><span>但是配合<st1:chsdate w:st="on" Year="1899" Month="12" Day="30" IsLunarDate="False" IsROCDate="False"><span>3.0.16</span></st1:chsdate>和<span>3.0.10 </span>都没问题。<span><br><br><br></span>我也曾设置过，每执行<span>1000</span>次就提交一次，照样是用<span>3.1</span>的驱动出问题。还是<span>1w2</span>时候。</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>事务太长了，每插入一条就<span>commit</span>一次；偶插入过<span>3</span>千万条，没有问题的</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>昨天，用<st1:chsdate w:st="on" Year="1899" Month="12" Day="30" IsLunarDate="False" IsROCDate="False"><span>3.1.12</span></st1:chsdate>驱动，在同学的<span>AMD 64 + <st1:chmetcnv w:st="on" UnitName="m" SourceValue="512" HasSpace="False" Negative="False" NumberType="1" TCSC="0">512M</st1:chmetcnv> RAM </span>上测试了，<span>2W</span>记录，使用<span>java -Xmx<st1:chmetcnv w:st="on" UnitName="m" SourceValue="64" HasSpace="False" Negative="False" NumberType="1" TCSC="0">64m</st1:chmetcnv> -Xmx<st1:chmetcnv w:st="on" UnitName="m" SourceValue="128" HasSpace="False" Negative="False" NumberType="1" TCSC="0">128m</st1:chmetcnv> </span>参数运行，可以顺利通过。<span><br><br></span>但<span>10W</span>记录，照样完蛋。机器消耗的总内存<span>(</span>物理<span>+</span>交换文件<span>)</span>达到<span>1.4GB </span>后，因为空间不够，自动中止。</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>如果直接插入而不用事务机制呢？</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>--&gt;<br><br></span><span>我每次测试，首先就是默认的自动提交<span>(</span>每语句<span>)</span>，用<span>3.1</span>驱动还是出错。<span><br><br></span>当记录数目小到能正常完成时，自动提交耗时是一次事务的<span>10</span>倍时间（记录不太多时，大于<span>1W</span>，差距缩小到<span>2~3</span>倍）。<span><br><br></span>自动提交<span>:<br>[code]<br>## </span>默认<span><br>D:\Program Files\test\db_test&gt;java InsertTestMysql<br>&lt;&lt;---</span>本页生成耗时<span>[43693]</span>毫秒<span>(43.693</span>秒<span>)---&gt;&gt;<br><br>&lt;&lt;---</span>共插入记录<span>1000</span>条<span>--&gt;&gt;<br>[/code]<br><br></span>一次事务<span>:<br>[code]<br>## </span>控制<span>COMMIT,</span>一次性提交<span><br>D:\Program Files\test\db_test&gt;java InsertTestMysql<br>&lt;&lt;---</span>本页生成耗时<span>[3846]</span>毫秒<span>(3.846</span>秒<span>)---&gt;&gt;<br><br>&lt;&lt;---</span>共插入记录<span>1000</span>条<span>--&gt;&gt;<br>[/code]<br><br><br></span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>没问题啊，。我们每天都通过ｊａｖａ程序插入几十万条数据做测试，都可以的</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>//</span><span>用<span>mysql</span>自己的驱动程序，下面的测试程序插入<span>100000</span>条记录，结果是：<span><br>//&lt;&lt;---</span>本页生成耗时<span>[82781]</span>毫秒<span>(82.781</span>秒<span>)---&gt;&gt;<br>//&lt;&lt;---</span>共插入记录<span>100000</span>条<span>--&gt;&gt;<br>import java.sql.*;<br><br>public class InsertTestMysql {<br>&nbsp; &nbsp; &nbsp; &nbsp; public static void main(String[] args) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; java.util.Date now_start = new java.util.Date();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; long start_time = now_start.getTime();<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int st = 100000;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String db = "com.mysql.jdbc.Driver";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String host = "jdbc:mysql://192.168.2.108/develop";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String user = "whl";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String passwd = "MVu9H370uG";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Connection con = null;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Class.forName(db).newInstance();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } catch (Exception e) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("</span>加载驱动失败<span>:" + db);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; con = DriverManager.getConnection(host, user, passwd);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PreparedStatement pstmt = con.prepareStatement("insert into test (id,txt) values(?,?);");<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int i = 1; i &lt;= st; i++) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pstmt.setInt(1, i);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pstmt.setString(2, "</span>这条记录是第<span>=" + i);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pstmt.executeUpdate();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; con.close();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } catch (Exception e) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(e);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; java.util.Date now_end = new java.util.Date();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; long end_time = now_end.getTime();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; long use_time = end_time - start_time;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("&lt;&lt;---</span>本页生成耗时<span>[" + use_time + "]</span>毫秒<span>("<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + ((double) use_time) / 1000 + "</span>秒<span>)---&gt;&gt;");<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("\n&lt;&lt;---</span>共插入记录<span>" + st + "</span>条<span>--&gt;&gt;");<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>}</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p align=left><span><a href="http://pigdogyourmother.ycool.com/post.1723176.html"><strong><span>MySQL</span></strong><strong><span><span>存储过程资料收集</span></span></strong></a></span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>表<span>A </span></span></strong></p>
<table cellSpacing=1 cellPadding=0 width=542 border=0>
    <tbody>
        <tr>
            <td>
            <table cellPadding=0 width=535 border=0>
                <tbody>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><strong><span>声明</span></strong></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><strong><span>描述</span></strong></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>CREATE PROCEDURE</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>建立一个存放在<span>MySQL</span>数据库的表格的存储过程。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>CREATE FUNCTION</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>建立一个用户自定义的函数，尤其是返回数据的存储过程。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>ALTER PROCEDURE</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>更改用<span>CREATE PROCEDURE </span>建立的预先指定的存储过程，其不会影响相关存储过程或存储功能。<span>.</span></span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>ALTER FUNCTION</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>更改用<span>CREATE FUNCTION </span>建立的预先指定的存储过程，其不会影响相关存储过程或存储功能。<span>.</span></span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>DROP PROCEDURE</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>从<span>MySQL</span>的表格中删除一个或多个存储过程。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>DROP FUNCTION</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>从<span>MySQL</span>的表格中删除一个或多个存储函数。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>SHOW CREATE PROCEDURE</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>返回使用<span>CREATE PROCEDURE </span>建立的预先指定的存储过程的文本。这一声明是<span>SQL:2003</span>规范的一个<span>MySQL</span>扩展。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>SHOW CREATE FUNCTION</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>返回使用<span>CREATE &nbsp;FUNCTION</span>建立的预先指定的存储过程的文本。这一声明是<span>SQL:2003</span>规范的一个<span>MySQL</span>扩展。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>SHOW PROCEDURE STATUS</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>返回一个预先指定的存储过程的特性，包括名称、类型、建立者、建立日期、以及更改日期。这一声明是<span>SQL:2003</span>规范的一个<span>MySQL</span>扩展。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>SHOW FUNCTION STATUS</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>返回一个预先指定的存储函数的特性，包括名称、类型、建立者、建立日期、以及更改日期。这一声明是<span>SQL:2003</span>规范的一个<span>MySQL</span>扩展。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>CALL</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>调用一个使用<span>CREATE PROCEDURE</span>建立的预先指定的存储过程。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>BEGIN ... END</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>包含一组执行的多声明。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>DECLARE</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>用于指定当地变量、环境、处理器，以及指针。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>SET</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>用于更改当地和全局服务器变量的值。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>SELECT ... INTO</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>用于存储显示变量的纵列。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>OPEN</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>用于打开一个指针。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>FETCH</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>使用特定指针来获得下一列。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>CLOSE</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>用于关闭和打开指针。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>IF</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>一个<span>An if-then-else-end if </span>声明。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>CASE ... WHEN</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>一个<span> case</span>声明的结构</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><st1:place w:st="on"><span>LOOP</span></st1:place></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>一个简单的循环结构；可以使用<span>LEAVE </span>语句来退出。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>LEAVE</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>用于退出<span>IF</span>，<span>CASE</span>，<span>LOOP</span>，<span>REPEAT</span>以及<span>WHILE </span>语句。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>ITERATE</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>用于重新开始循环。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>REPEAT</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>在结束时测试的循环。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>WHILE</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>在开始时测试的循环。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>RETURNS</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>返回一个存储过程的值。</span></p>
                        </td>
                    </tr>
                </tbody>
            </table>
            <p align=left></p>
            </td>
        </tr>
    </tbody>
</table>
<p align=left><span>MySQL 5.0</span><span>支持存储过程语句。</span></p>
<p align=left>&nbsp;</p>
<table cellPadding=0 border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><strong><span>一<span>.</span>创建存储过程</span></strong></p>
            <p align=left><span>1.</span><span>基本语法：</span></p>
            <p align=left><span>create&nbsp;procedure&nbsp;sp_name()<br>begin<br>.........<br>end</span></p>
            <p align=left><span>2.</span><span>参数传递</span></p>
            <p align=left><strong><span>二<span>.</span>调用存储过程</span></strong></p>
            <p align=left><span>1.</span><span>基本语法：<span>call&nbsp;sp_name()<br></span>注意：存储过程名称后面必须加括号，哪怕该存储过程没有参数传递</span></p>
            <p align=left><strong><span>三<span>.</span>删除存储过程</span></strong></p>
            <p align=left><span>1.</span><span>基本语法：<span><br>drop&nbsp;procedure&nbsp;sp_name//<br>2.</span>注意事项<span><br>(1)</span>不能在一个存储过程中删除另一个存储过程，只能调用另一个存储过程</span></p>
            <p align=left><strong><span>四<span>.</span>区块，条件，循环</span></strong></p>
            <p align=left><span>1.</span><span>区块定义，常用<span><br>begin<br>......<br>end;<br></span>也可以给区块起别名，如：<span><br>lable:begin<br>...........<br>end&nbsp;lable;<br></span>可以用<span>leave&nbsp;lable;</span>跳出区块，执行区块以后的代码<span><br>2.</span>条件语句</span></p>
            <p align=left><span><span>if</span>&nbsp;</span><span>条件&nbsp;</span><span>then</span><span><br>statement<br></span><span>else</span><span><br>statement<br></span><span>end</span>&nbsp;<span>if</span><span>;</span></p>
            <p align=left><span><br>3.</span><span>循环语句<span><br>(1).while</span>循环</span></p>
            <p align=left><span><span>[label:]</span>&nbsp;<span>WHILE</span><span>&nbsp;expression&nbsp;DO<br><br>statements<br><br></span><span>END</span>&nbsp;<span>WHILE</span>&nbsp;<span>[label]</span><span>&nbsp;;<br></span></span></p>
            <p align=left>&nbsp;</p>
            <p align=left><span>(2).loop</span><span>循环</span></p>
            <p align=left><span><span>[label:]</span><span>&nbsp;<st1:place w:st="on">LOOP</st1:place><br><br>statements<br><br></span><span>END</span><span>&nbsp;LOOP&nbsp;</span><span>[label]</span><span>;</span></span></p>
            <p align=left>&nbsp;</p>
            <p align=left><span>(3).repeat&nbsp;until</span><span>循环</span></p>
            <p align=left><span><span>[label:]</span><span>&nbsp;REPEAT<br><br>statements<br><br>UNTIL&nbsp;expression<br><br></span><span>END</span><span>&nbsp;REPEAT&nbsp;</span><span>[label]</span><span>&nbsp;;</span></span></p>
            <p align=left>&nbsp;</p>
            <p align=left><strong><span>五<span>.</span>其他常用命令</span></strong></p>
            <p align=left><span>1.show&nbsp;procedure&nbsp;status<br></span><span>显示数据库中所有存储的存储过程基本信息，包括所属数据库，存储过程名称，创建时间等<span><br>2.show&nbsp;create&nbsp;procedure&nbsp;sp_name</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
<p align=left><strong><u><span>存储过程创建语法<span>:</span></span></u></strong></p>
<div align=center>
<table cellPadding=0 width="80%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>CREATE PROCEDURE procedure_name ([parameter[,...]) </span></p>
            <p align=left><span>[LANGUAGE SQL] </span></p>
            <p align=left><span>[ [NOT] DETERMINISTIC ] </span></p>
            <p align=left><span>[{CONTAINS SQL|MODIFIES SQL DATA|READS SQL DATA|NO SQL}] </span></p>
            <p align=left><span>[SQL SECURITY {DEFINER|INVOKER} ] </span></p>
            <p align=left><span>[COMMENT comment_string] </span></p>
            <p align=left><span>procedure_statements </span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span><br>&nbsp;<br></span><span>可用<span>SHOW PROCEDURE STATUS </span>或<span> SHOW CREATE PROCEDURE </span>来查看存储过程信息<span><br></span>另，系统表<span>INFORMATION_SCHEMA.ROUTINES</span>也包含了存储过程的一些信息<span><br></span>同样地<span>,</span>函数也可以使用同样方式查看<span>(SHOW FUNCTION STATUS) </span></span></p>
<p align=left><span><br></span><strong><u><span>函数的创建</span></u></strong><span><br>&nbsp;</span></p>
<div align=center>
<table cellPadding=0 width="80%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>CREATE FUNCTION function_name (parameter[,...]) </span></p>
            <p align=left><span>RETURNS datatype </span></p>
            <p align=left><span>[LANGUAGE SQL] </span></p>
            <p align=left><span>[ [NOT] DETERMINISTIC ]</span></p>
            <p align=left><span>[ {CONTAINS SQL | NO SQL | MODIFIES SQL DATA | READS SQL DATA} ] </span></p>
            <p align=left><span>[ SQL SECURITY {DEFINER|INVOKER} ] </span></p>
            <p align=left><span>[ COMMENT comment_string ] </span></p>
            <p align=left><span>语句体<span> </span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span><br></span><span>函数与存储过程基本一样，其区别主要有<span>:<br>1</span>、&nbsp;要使用<span>RETURNS</span>指定返回类型<span><br>2</span>、&nbsp;函数必须返回值<span>,</span>且在语句体中使用<span>RETURN</span>返回<span>(</span>注意<span>:</span>指定返回类型用<span>RETURNS,</span>返回值用<span>RETURN)<br>3</span>、&nbsp;参数不区分<span>IN</span>，<span>OUT</span>，全部为<span>IN</span>类形</span></p>
<p align=left><span><br></span><span>例<span>:<br>CREATE FUNCTION cust_status(in_status CHAR(1))<br>&nbsp;&nbsp;&nbsp; RETURNS VARCHAR(20)<br>BEGIN<br>&nbsp;&nbsp;&nbsp; DECLARE long_status VARCHAR(20);<br>&nbsp;&nbsp;&nbsp; IF in_status = 'O' THEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET long_status='Overdue';<br>&nbsp;&nbsp;&nbsp; ELSEIF in_status = 'U' THEN&nbsp;&nbsp;&nbsp; SET long_status='Up to date';<br>&nbsp;&nbsp;&nbsp; ELSEIF in_status = 'N' THEN&nbsp;&nbsp;&nbsp; SET long_status='New';<br>&nbsp;&nbsp;&nbsp; END IF;<br>&nbsp;&nbsp;&nbsp; RETURN(long_status);<br>END;<br>&nbsp;<br></span>调用<span>:<br>SELECT cust_status('O');<br>&nbsp;<br></span><strong><u>触发器</u></strong><span><br>&nbsp;</span></span></p>
<div align=center>
<table cellPadding=0 width="80%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>CREATE [DEFINER={user|CURRENT_USER}] TRIGGER trigger_name </span></p>
            <p align=left><span>{BEFORE|AFTER} {UPDATE|INSERT|DELETE} </span></p>
            <p align=left><span>ON table_name </span></p>
            <p align=left><span>FOR EACH ROW </span></p>
            <p align=left><span>trigger_statements </span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span><br>&nbsp;<br></span><span>意义<span>:</span>当对表<span>table_name</span>执行<span>update</span>，<span>insert,delete</span>操作之前<span>(before)</span>或之后<span>(after)</span>时触发语句<span>trigger_statements</span>操作</span></p>
<p align=left><span>例<span>:<br>mysql&gt; CREATE TRIGGER account_balance_au<br>&nbsp;AFTER UPDATE ON account_balance FOR EACH ROW<br>BEGIN<br>&nbsp; DECLARE dummy INT;<br>&nbsp; IF NEW.balance&lt;0 THEN<br>&nbsp;&nbsp;&nbsp;&nbsp; SET NEW.balance=NULL;<br>&nbsp; END IF;<br>END<br>&nbsp;<br></span>上述触发器表示<span>:</span>当更新表<span>account_balance</span>之后，如果更新的值<span>balance</span>小于<span>0,</span>则将它改为<span>NULL,<br></span>注<span>:</span>如果为<span>OLD.balance</span>则表示更新前的原值</span></p>
<p>&nbsp;</p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/50062.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2008-10-10 17:46 <a href="http://www.cnitblog.com/szdlinxie/archive/2008/10/10/50062.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件开发项目过程中的风险管理研究</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32146.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Tue, 21 Aug 2007 07:20:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32146.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/32146.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32146.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/32146.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/32146.html</trackback:ping><description><![CDATA[&nbsp;
<table cellSpacing=0 cellPadding=0 width=535 border=0>
    <tbody>
        <tr>
            <td>
            <p align=center><strong><span>软件开发项目过程中的风险管理研究<span>[1]</span></span></strong></p>
            </td>
        </tr>
        <tr>
            <td>
            <p align=center>&nbsp;</p>
            <p align=left><span>软件项目风险是指在软件开发过程中遇到的预算和进度等方面的问题以及这些问题对软件项目的影响。软件项目风险会影响项目计划的实现，如果项目风险变成现实，就有可能影响项目的进度，增加项目的成本，甚至使软件项目不能实现。如果对项目进行风险管理，就可以最大限度的减少风险的发生。但是，目前国内的软件企业不太关心软件项目的风险管理，结果造成软件项目经常性的延期、超过预算，甚至失败。成功的项目管理一般都对项目风险进行了良好的管理。因此任何一个系统开发项目都应将风险管理作为软件项目管理的重要内容。<span> </span></span></p>
            <p align=left><span>　　在项目风险管理中，存在多种风险管理方法与工具，软件项目管理只有找出最适合自己的方法与工具并应用到风险管理中，才能尽量减少软件项目风险，促进项目的成功。</span></p>
            <p align=left><span>　　项目风险管理</span></p>
            <p align=left><span>　　项目风险管理是指为了最好的达到项目的目标，识别、分配、应对项目生命周期内风险的科学与艺术。项目风险管理的目标是使潜在机会或回报最大化，使潜在风险最小化。风险管理涉及的主要过程包括：风险识别，风险量化，风险应对计划制定和风险监控，如图<span>1</span>所示。风险识别在项目的开始时就要进行，并在项目执行中不断进行。就是说，在项目的整个生<span>?</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
<p><span>（<span>1</span>）需求风险<span> </span></span></p>
<p><span>　　<span>①</span>需求已经成为项目基准，但需求还在继续变化；</span></p>
<p><span>　　<span>②</span>需求定义欠佳，而进一步的定义会扩展项目范畴；</span></p>
<p><span>　　<span>③</span>添加额外的需求；</span></p>
<p><span>　　<span>④</span>产品定义含混的部分比预期需要更多的时间；</span></p>
<p><span>　　<span>⑤</span>在做需求中客户参与不够；</span></p>
<p><span>　　<span>⑥</span>缺少有效的需求变化管理过程。</span></p>
<p><span>　　（<span>2</span>）计划编制风险</span></p>
<p><span>　　<span>①</span>计划、资源和产品定义全凭客户或上层领导口头指令，并且不完全一致；</span></p>
<p><span>　　<span>②</span>计划是优化的，是<span>"</span>最佳状态<span>"</span>，但计划不现实，只能算是<span>"</span>期望状态<span>"</span>；</span></p>
<p><span>　　<span>③</span>计划基于使用特定的小组成员，而那个特定的小组成员其实指望不上；</span></p>
<p><span>　　<span>④</span>产品规模<span>(</span>代码行数、功能点、与前一产品规模的百分比<span>)</span>比估计的要大；</span></p>
<p><span>　　<span>⑤</span>完成目标日期提前，但没有相应地调整产品范围或可用资源；</span></p>
<p><span>　　<span>⑥</span>涉足不熟悉的产品领域，花费在设计和实现上的时间比预期的要多。</span></p>
<p><span>　　（<span>3</span>）组织和管理风险</span></p>
<p><span>　　<span>①</span>仅由管理层或市场人员进行技术决策，导致计划进度缓慢，计划时间延长；</span></p>
<p><span>　　<span>②</span>低效的项目组结构降低生产率；</span></p>
<p><span>　　<span>③</span>管理层审查决策的周期比预期的时间长；</span></p>
<p><span>　　<span>④</span>预算削减，打乱项目计划；</span></p>
<p><span>　　<span>⑤</span>管理层作出了打击项目组织积极性的决定；</span></p>
<p><span>　　<span>⑥</span>缺乏必要的规范，导致工作失误与重复工作；</span></p>
<p><span>　　<span>⑦</span>非技术的第三方的工作<span>(</span>预算批准、设备采购批准、法律方面的审查、安全保证等<span>)</span>时间比预期的延长。</span></p>
<p><span>　　（<span>4</span>）人员风险</span></p>
<p><span>　　<span>①</span>作为先决条件的任务<span>(</span>如培训及其他项目<span>)</span>不能按时完成；</span></p>
<p><span>　　<span>②</span>开发人员和管理层之间关系不佳，导致决策缓慢，影响全局；</span></p>
<p><span>　　<span>③</span>缺乏激励措施，士气低下，降低了生产能力；</span></p>
<p><span>　　<span>④</span>某些人员需要更多的时间适应还不熟悉的软件工具和环境；</span></p>
<p><span>　　<span>⑤</span>项目后期加入新的开发人员，需进行培训并逐渐与现有成员沟通，从而使现有成员的工作效率降低；</span></p>
<p><span>　　<span>⑥</span>由于项目组成员之间发生冲突，导致沟通不畅、设计欠佳、接口出现错误和额外的重复工作；</span></p>
<p><span>　　<span>⑦</span>不适应工作的成员没有调离项目组，影响了项目组其他成员的积极性；</span></p>
<p><span>　　<span>⑧</span>没有找到项目急需的具有特定技能的人。</span></p>
<p>&nbsp;</p>
<p><span>（<span>5</span>）开发环境风险<span> </span></span></p>
<p><span>　　<span>①</span>设施未及时到位；</span></p>
<p><span>　　<span>②</span>设施虽到位，但不配套，如没有电话、网线、办公用品等；</span></p>
<p><span>　　<span>③</span>设施拥挤、杂乱或者破损；</span></p>
<p><span>　　<span>④</span>开发工具未及时到位；</span></p>
<p><span>　　<span>⑤</span>开发工具不如期望的那样有效，开发人员需要时间创建工作环境或者切换新的工具；</span></p>
<p><span>　　<span>⑥</span>新的开发工具的学习期比预期的长，内容繁多。</span></p>
<p><span>　　（<span>6</span>）客户风险</span></p>
<p><span>　　<span>①</span>客户对于最后交付的产品不满意，要求重新设计和重做；</span></p>
<p><span>　　<span>②</span>客户的意见未被采纳，造成产品最终无法满足用户要求，因而必须重做；</span></p>
<p><span>　　<span>③</span>客户对规划、原型和规格的审核决策周期比预期的要长；</span></p>
<p><span>　　<span>④</span>客户没有或不能参与规划、原型和规格阶段的审核，导致需求不稳定和产品生产周期的变更；</span></p>
<p><span>　　<span>⑤</span>客户答复的时间<span>(</span>如回答或澄清与需求相关问题的时间<span>)</span>比预期长；</span></p>
<p><span>　　<span>⑥</span>客户提供的组件质量欠佳，导致额外的测试、设计和集成工作，以及额外的客户关系管理工作。</span></p>
<p><span>　　（<span>7</span>）产品风险</span></p>
<p><span>　　<span>①</span>矫正质量低下的不可接受的产品，需要比预期更多的测试、设计和实现工作；</span></p>
<p><span>　　<span>②</span>开发额外的不需要的功能<span>(</span>镀金<span>)</span>，延长了计划进度；</span></p>
<p><span>　　<span>③</span>严格要求与现有系统兼容，需要进行比预期更多的测试、设计和实现工作；</span></p>
<p><span>　　<span>④</span>要求与其他系统或不受本项目组控制的系统相连，导致无法预料的设计、实现和测试工作；</span></p>
<p><span>　　<span>⑤</span>在不熟悉或未经检验的软件和硬件环境中运行所产生的未预料到的问题；</span></p>
<p><span>　　<span>⑥</span>开发一种全新的模块将比预期花费更长的时间；</span></p>
<p><span>　　<span>⑦</span>依赖正在开发中的技术将延长计划进度。<span> </span></span></p>
<p><span>　　（<span>8</span>）设计和实现风险</span></p>
<p><span>　　<span>①</span>设计质量低下，导致重复设计；</span></p>
<span>　　</span><span>②</span><span>一些必要的功能无法使用现有的代码和库实现，开发人员必须使用新的库或者自行开发新的功能</span>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/32146.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2007-08-21 15:20 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32146.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux与Windows CVS服务器配置与使用</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27371.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 21 May 2007 06:12:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27371.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/27371.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27371.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/27371.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/27371.html</trackback:ping><description><![CDATA[&nbsp;
<p align=left><strong><span>Linux</span></strong><strong><span>与<span>Windows CVS</span>服务器配置与使用<span>1</span></span></strong></p>
<p align=left><strong><span>第一部分<span> CVS</span>服务器的配置<span>(</span>以<span>1.10</span>版<span>)</span></span></strong><span> </span></p>
<p align=left><strong><span>1</span></strong><strong><span>、<span> CVS</span>简述与<span>CVS</span>服务器的安装：</span></strong><span> </span></p>
<p align=left><span>CVS</span><span>是目前比较流行与优秀的版本管理与控制工具，它深受大多数开发人员与系统管理的喜爱，同时也是用来管理其它日常文档（如<span>word</span>工作文档之类）的一个强有力的工具。这一部分将对<span>CVS</span>服务器的安装、配置与使用方法进行简单、扼要的介绍，以帮助大家尽快的使用<span>CVS</span>来进行一些版本的管理与控制<span><a href="javascript:;" target=_self><strong><span><span>工作</span></span></strong></a></span>。 </span></p>
<p align=left><strong><span>2</span></strong><strong><span>、<span> CVS</span>服务器的安装</span></strong><span> </span></p>
<p align=left><span>CVS</span><span>服务器版可以从网上的很多地方下载到，也可以到<span>CVS</span>的官方网站进行下载。根据你所使用的系统，下载相应的版本，然后进行安装。因为当前大部分人是在<span><a href="javascript:;" target=_self><strong><span>Linux</span></strong></a></span>下使用<span>CVS</span>服务器进行版本管理，并且<span>Redhat Linux</span>是目前最流行的一个<span>Linux</span>发行版之一，所以本文将主要基于<span>Redhat Linux</span>进行介绍。首先下载<span>CVS</span>服务器的<span>rpm</span>包，当然也可以下载其它方式的包如源程序包，这也就是<span>Linux</span>的一个优点之一。然后采用以下命令进行安装： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>　　<span>rpm -ivh cvs-<st1:chsdate w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year="1899">1.10.8</st1:chsdate>-3.i386.rpm</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><strong><span>3</span></strong><strong><span>、配置<span>/etc/services</span>文件：</span></strong><span> </span></p>
<p align=left><span>安装完之后的第一件事就是要配置<span>CVS</span>服务器的配置文件，使其能正常的工作。首先在<span>services</span>文件中添加<span>cvspserver</span>，使其成为<span>Linux</span>的一种服务也就是<span>cvs</span>服务器例程的入口，配置如下： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>cvspserver 2401/tcp # cvs client/server operations </span></p>
            <p align=left><span>　　<span>cvspserver 2401/udp # cvs client/server operations</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><strong><span>4</span></strong><strong><span>、配置<span>xinetd</span>，用<span>xinetd</span>来启动<span>CVS</span>服务器：</span></strong><span> </span></p>
<p align=left><span>进入到<span>/etc/xinetd.d/</span>目录，然后编辑一个文本文件，名字一定要与<span>/etc/services</span>中的入口名字<span>cvspserver</span>一致，所以这里用<span>cvspserver</span>作为文件名，文件的内容如下所示： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>service cvspserver</span></p>
            <p align=left><span>　　<span>{</span></span></p>
            <p align=left><span>　　<span>disable = no</span></span></p>
            <p align=left><span>　　<span>socket_type = stream</span></span></p>
            <p align=left><span>　　<span>wait = no</span></span></p>
            <p align=left><span>　　<span>user = root</span></span></p>
            <p align=left><span>　　<span>env = HOME=</span></span></p>
            <p align=left><span>　　<span>server = /usr/bin/cvs</span></span></p>
            <p align=left><span>　　<span>server_args = -f --allow -root=/home/cvsroot pserver</span></span></p>
            <p align=left><span>&nbsp;//</span><span>指定认证方式为<span>pserver</span>，注意：<span>-f</span></span></p>
            <p align=left><span>　　<span>}</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>注意：<span>a</span>、<span>service</span>后面的名称一定要和你在<span>/etc/service</span>文件中的<span>cvs</span>服务名称一样。 </span></p>
<p align=left><span>b</span><span>、<span>env = HOME=</span>这一行的目的就是为了解决在执行一些<span>cvs</span>操作时产生的读取<span>/root/.cvsignore</span>文件的错误，上面<span>env</span>那行的意思就是在运行<span>cvs</span>服务的时候将环境变量<span>HOME</span>置空，这样虽然执行<span>cvs</span>的用户是<span>root</span>，但是由于没有了<span>HOME</span>这个环境变量，所以<span>cvs</span>就不会在去读取<span>/root/.cvsignore</span>文件了。 </span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>Linux</span></strong><strong><span>与<span>Windows CVS</span>服务器配置与使用<span>2</span></span></strong></p>
<p align=left><strong><span>5</span></strong><strong><span>、配置<span>CVS</span>用户与<span>cvsroot</span>的属主与属组：</span></strong><span> </span></p>
<p align=left><span>首先建立一个用户组<span>cvs</span>，可以使用<span>groupadd</span>或者<span>addgroup</span>命名，也可以直接编辑<span>/etc/group</span>文件添加这个组，然后添加一个用户<span>cvsroot</span>， 然后修改<span>/etc/passwd</span>文件使<span>cvsroot</span>用户的缺省组是<span>cvs</span>组，而不是<span>cvsroot</span>组（也就是修改）。在<span>/home</span>目录下建立<span>cvsroot</span>目录（也可以在其它你喜欢的目录下建），然后修改<span>/home/cvsroot</span>的属主及属性： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>#chown cvsroot.cvs /home/cvsroot </span></p>
            <p align=left><span>　　<span>#chmod 771 /home/cvsroot</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><strong><span>6</span></strong><strong><span>、<span> vs</span>进行初始化：</span></strong><span> </span></p>
<p align=left><span>安装完<span>CVS</span>服务器之后的另一件重要的事情就是要初始化<span>CVS</span>服务器的根目录，以后创建的<span>CVS</span>项目都将建立在这个目录下，采用的命令如下： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>　　＃<span>cvs -d /home/cvsroot init</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>这样目录<span>/home/cvsroot</span>就成为<span>CVS</span>服务器的根目录，以后创建的目录都将默认的存放在这个目录下。 </span></p>
<p align=left><strong><span>7</span></strong><strong><span>、登录<span>cvs</span>服务器（在<span>Linux</span>或其它<span>Unix</span>系统下进行登录的情况）：</span></strong><span> </span></p>
<p align=left><span>a</span><span>、如果是远程登录，采用以下语法： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>　　<span>#cvs -d :pserver:cvsroot@host:/home/cvsroot login </span></span></p>
            <p align=left><span>CVS password</span><span>：<span>//</span>输入用户<span>cvsroot</span>的口令；</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>如果没有出现其它的任何提示就表示登录成功了，否则要根据提示进行相应的修改。 下面对登录命令的语法进行说明： </span></p>
<p align=left><span>其中，<span>:pserver</span>表示采用<span>pserver</span>方式进行用户登录认证，一般的<span>CVS</span>服务器都采用这种方式，当然也可以采用其它方式，具体参考相应的资料；<span>:cvsroot</span>表示要登录的用户名，只要是<span>cvs</span>组的成员都可以，如：<span>cather</span>；<span>@host</span>表示要登录的服务器，可以是<span>DNS</span>名，也可以是<span>IP</span>地址，如：<span>10.104.1.204</span>；<span>:/home/cvsroot</span>表示<span>CVS</span>在服务器上的目录，也可以是其它目录（由第<span>6</span>中你所指定的用来做<span>init</span>初始化的目录决定）；提示：也可以把<span>export CVSROOT=:pserver:jchuang@192.168.0.8:/home/cvsroot</span>这一句直接写在用户的初始化文件中（如：<span>.bash_profile</span>），这样用户每次登录时，只需输入： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>　　＃<span>cvs login</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>然后输入相应的口令就可以登录到<span>cvs</span>服务器上。 </span></p>
<p align=left><span>b</span><span>、如果是本地登录，可以直接把<span>export CVSROOT=/home/cvsroot</span>这一句写在用户的初始化文件如：<span>.bash_profile</span>中；然后直接 </span></p>
<p align=left><strong><span>8</span></strong><strong><span>、向<span>CVS</span>添加新的项目模块</span></strong><span> </span></p>
<p align=left><span>一般我们都已经有一个或多个项目了，这样我们可以用下面步骤生成一个新的<span>CVS</span>项目。将一个工程文件置于<span>CVs</span>中进行版本控制，在<span>CVS </span>术语中称作导入<span>(import)</span>。从名字上就可以看出，在导入前需要为此作些准备工作。 </span></p>
<p align=left><span>输入操作的基本要求是有个<span>"</span>干净<span>"</span>的目录结构。<span>"</span>干净<span>"</span>的意思是不需要版本控制的文件都被移走了（如编译生成的文件，备份文件等等）。如果工程已经开始一段时间了，这就显得很重要。在目录中也许有些是不打算将其置于版本控制下的文件，但是又想将他们放在这里，这种情况下，你要在输入之前将它们移走，然后再移回来。 </span></p>
<p align=left><span>注意的是<span>CVS </span>认为空目录是不存在的。如果想增加一个既不包含文件又不包含子目录的目录，需要在其下创建一个哑文件。建议你创建一个名为<span> README.txt </span>的文件，其内容为对目录的简要说明。 </span></p>
<p align=left><span>进入到已有项目的目录，比如叫<span> cvstest</span>： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>　　　　<span>$cd cvstest</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>运行命令将项目文件导入到<span>cvs</span>仓库中： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>　　　　<span>$cvs import -m "this is a cvstest project" cvstest v_0_0_1 start</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>说明：<span>import </span>是<span>cvs</span>的命令之一，表示向<span>cvs</span>仓库输入项目文件。 </span></p>
<p align=left><span>-m</span><span>参数后面的字串是描述文本，对项目进行描述，如果不加<span> -m </span>参数，那么<span>cvs</span>会自动运行一个编辑器（一般是<span>vi</span>，但是可以通过修改环境变量<span>EDITOR</span>来改成你喜欢用的编辑器）让你输入信息，<span>cvstest </span>是项目名称（实际上是仓库名，在<span>CVS</span>服务器上会存储在以这个名字命名的仓库里）<span> v_0_0_1</span>是这个分支的总标记．没啥用（或曰不常用）。<span>start </span>是每次<span> import </span>标识文件的输入层次的标记，没啥用。这样我们就在用户指定进行初始化的目录<span>/home/cvsroot</span>下建立了一个名字叫<span>cvstest</span>的<span>CVS</span>模块了，然后，我们可以把这个测试项目的文件删除，试验如何从仓库获取文件这会在后面的客户端文章进行说明。<span>(</span>注：本小节主要引用自<span>http://linuxaid.com.cn</span>何伟平的<span>&#8220;CVS</span>服务器快速指南<span>&#8221;) </span></span></p>
<p align=left><strong><span>9</span></strong><strong><span>、从<span>cvs</span>本地服务器上<span>checkout</span>相应的模块：</span></strong><span> </span></p>
<p align=left><span>a</span><span>、如果是在<span>CVS</span>服务器所在计算机上，可以直接采用如下命令： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>　　<span>#cvs checkout stw</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>这样将把<span>stw</span>项目模块<span>checkout</span>到当前目录下。 </span></p>
<p align=left><span>b</span><span>、如果是在远程运行<span>Linux</span>或其它<span>Unix</span>系统上，在第<span>7</span>中登录之后也可以用上边的命令把相应的项目模块<span>checkout</span>到当前目录下。另外，如果是在<span>windows</span>端进行<span>checkout</span>，可以采用<span>WinCVS</span>，那么还要对<span>WinCVS</span>进行其它的一些配置，下一部分将具体介绍它的配置方法。 </span></p>
<p align=left><strong><span>Linux</span></strong><strong><span>与<span>Windows CVS</span>服务器配置与使用<span>3</span></span></strong></p>
<p align=left><strong><span>第二部分<span> WinCVS</span>的配置与使用方法</span></strong><span> </span></p>
<p align=left><strong><span>1</span></strong><strong><span>、<span> WinCVS</span>简介：</span></strong><span> </span></p>
<p align=left><span>WinCVS</span><span>是<span>CVS</span>的一个客户端软件，它运行在<span>Windows</span>上，用来在<span>Windows</span>上登录<span>CVS</span>服务器，然后进行一些<span>CVS</span>相关的操作与管理。由于当前很多的企业内部都采用<span>Linux/Unix</span>做服务器，而用<span>Windows</span>做客户端，所以，<span>WinCVS</span>与<span>CVS</span>服务器配合使用将组成最强有力的版本控制与管理的系统之一。 </span></p>
<p align=left><strong><span>2</span></strong><strong><span>、<span> WinCVS</span>的下载与安装；</span></strong><span> </span></p>
<p align=left><span>最新的<span>WinCVS</span>可以从<span>http://sourceforge.net/project/showfiles.php?group_id=10072</span>地址下载到，也可以在<span>http://sourceforge.net/project </span>上下载到最新的或其它版本的<span>WinCVS</span>。 </span></p>
<p align=left><span>下载到相应的版本后根据向导进行安装，已经要使用<span>CVS</span>的用户，安装这个<span>WinCVS</span>应该没什么问题吧！ </span></p>
<p align=left><strong><span>3</span></strong><strong><span>、 配置<span>WinCVS</span>：</span></strong><span> </span></p>
<p align=left><span>第一、<span> Authentication</span>：用来配置<span>cvs</span>服务器的认证方式，可以从下拉框中选择其它的认证方式，不过一般只要选择默认的<span>pserver</span>方式就可以，要注意的是必须与<span>cvs</span>服务器配置时所指定的认证方式一致。 </span></p>
<p align=left><span>第二、<span> Path</span>：用来配置<span>cvs</span>在服务器上的主目录路径，也就是服务器上用进行<span>cvs</span>初始化的目录，如：<span>/home/cvsroot</span>。 </span></p>
<p align=left><span>第三、<span> Host Address</span>：用来配置<span>cvs</span>服务器所在服务器的地址，可以是<span>IP</span>地址，也可以是<span>DNS</span>名，如：<span>10.104.1.204</span>。 </span></p>
<p align=left><span>第四、<span> User name</span>：用来配置要使用些<span>WinCVS</span>来登录<span>CVS</span>服务器的用户名，如：<span>cvsyxwu</span>，用户的登录必须由管理员把其添加<span>cvs</span>用户组中； </span></p>
<p align=left><span>第五、<span> CVSROOT</span>：此项一般都不需要用户进行修改，用户在输入上边的几个选项时，系统将自动根据用户的输入生成此项的相应内容。 </span></p>
<p align=left><span>b</span><span>、 全局选项的设置，在上一个界面上选择<span>&#8220;Globals&#8221;</span>此项的配置主要是要注意这几选项： </span></p>
<p align=left><span>第一，<span>Checkout read-only</span>不要选上，否则，<span>checkout</span>出来的源代码将不允许用户进行修改，并且此选项默认是选中的。 </span></p>
<p align=left><span>第二，<span>Prune (remove) empty directories</span>也不要选上，否则，会自动删除空目录。 </span></p>
<p align=left><span>第三，对一般配置没有特殊要求的，把<span>Dirty files support</span>、<span>Supply control when adding</span>与<span>TCP/IP compression</span>选项选中。 </span></p>
<p align=left><strong><span>4</span></strong><strong><span>、 登录服务器：</span></strong><span> </span></p>
<p align=left><span>选择<span>Admin-&gt;login</span>，将出现如下对话框要求用户输入登录口令<span>,</span>输入口令后，选择<span>&#8220;OK&#8221;</span>按钮，如果<span>CVS</span>服务器与<span>WinCVS</span>的配置都没出错的话，将在<span>CVS</span>的状态栏中提示： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>　<span>cvs -z9 -d :pserver:cvsyxwu@10.104.1.204:/home/cvsroot login </span></span></p>
            <p align=left><span>　　<span>Logging in to :pserver:cvsyxwu@10.104.1.204:2401/home/cvsroot</span></span></p>
            <p align=left><span>　　<span>***** CVS exited normally with code 0 *****</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>code 0</span><span>表示正确的登录；而如果出错的话，将是<span>code 1</span>，那么要根据错误的提示进行相应的修改。 </span></p>
<p align=left><strong><span>5</span></strong><strong><span>、 从<span>CVS</span>服务器上<span>check out</span>相应的模块：</span></strong><span> </span></p>
<p align=left><span>第一， 在<span>workspace</span>中的<span>Modules</span>选中要存放<span>checkout</span>模块的目录。 </span></p>
<p align=left><span>第二， 选择<span>Create-&gt;Checkout Modeles</span>，将出现如下对话框。 </span></p>
<p align=left><span>其中，<span>Module name and path on the server</span>就是要存放<span>checkout </span>内容的目录，由用户输入；而<span>Local folder to checkout to</span>就是第一中用户所选择的目录。 </span></p>
<p align=left><strong><span>Linux</span></strong><strong><span>与<span>Windows CVS</span>服务器配置与使用<span>4</span></span></strong></p>
<p align=left><strong><span>6</span></strong><strong><span>、 修改之后把文件提交到<span>CVS</span>服务器</span></strong><span> </span></p>
<p align=left><span>a)</span><span>、只有一个用户对文件进行修改的情况 </span></p>
<p align=left><span>用自己喜欢的编辑器对<span>checkout</span>出来的文件进行修改，修改之后的文件在没有提交之前会是红色的，如下图<span>example.h</span>文件<span>. </span></span></p>
<p align=left><span>选中红色的文件<span>example.h</span>后右击选择<span>&#8220;Commit Selection&#8221;</span>选项，如果没有其它用户也对其进行修改并已经提交到<span>CVS</span>服务器上，一切正常的话将把<span>example.h</span>文件提交到<span>CVS</span>服务器并把图标恢复成原来的颜色。 </span></p>
<p align=left><span>b)</span><span>、两个或两个以上的用户对同一文件的不同部分进行修改的情况 </span></p>
<p align=left><span>这种情况就是如用户<span>A</span>与用户<span>B</span>都<span>checkout</span>了文件<span>example.h</span>，内容如下： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>int callby (int count)</span></p>
            <p align=left><span>　　<span>{</span></span></p>
            <p align=left><span>　　<span>printf("ExcelStor!\n");</span></span></p>
            <p align=left><span>　　<span>}</span></span></p>
            <p align=left><span>　　<span>void main(int argv,char *argc)</span></span></p>
            <p align=left><span>　　<span>{</span></span></p>
            <p align=left><span>　　<span>//added by my cvs</span></span></p>
            <p align=left><span>　　<span>printf("I am Cather\n");</span></span></p>
            <p align=left><span>　　<span>}</span></span></p>
            <p align=left><span>　　<span>int mainexample()</span></span></p>
            <p align=left><span>　　<span>{</span></span></p>
            <p align=left><span>　　<span>printf("OK\n");</span></span></p>
            <p align=left><span>　　<span>}</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>然后用户<span>A</span>修改成如下，并提交到<span>CVS</span>服务器（一般将正常提交）： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>int callby (int count)</span></p>
            <p align=left><span>　　<span>{//add</span></span></p>
            <p align=left><span>　　<span>printf("ExcelStor!\n");</span></span></p>
            <p align=left><span>　　<span>}</span></span></p>
            <p align=left><span>　　<span>void main(int argv,char *argc)</span></span></p>
            <p align=left><span>　　<span>{</span></span></p>
            <p align=left><span>　　<span>//added by my cvs</span></span></p>
            <p align=left><span>　　<span>printf("I am Cather\n");</span></span></p>
            <p align=left><span>　　<span>}</span></span></p>
            <p align=left><span>　　<span>int mainexample()</span></span></p>
            <p align=left><span>　　<span>{//add</span></span></p>
            <p align=left><span>　　<span>printf("OK\n");</span></span></p>
            <p align=left><span>　　<span>}</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>接着用户<span>B</span>修改成如下： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>　<span>int callby (int count)</span></span></p>
            <p align=left><span>　　<span>{//add</span></span></p>
            <p align=left><span>　　<span>printf("ExcelStor!\n");</span></span></p>
            <p align=left><span>　　<span>}</span></span></p>
            <p align=left><span>　　<span>void main(int argv,char *argc)</span></span></p>
            <p align=left><span>　　<span>{</span></span></p>
            <p align=left><span>　　<span>//modified</span></span></p>
            <p align=left><span>　　<span>printf("I am Cather\n");</span></span></p>
            <p align=left><span>　　<span>}</span></span></p>
            <p align=left><span>　　<span>int mainexample()</span></span></p>
            <p align=left><span>　　<span>{//add</span></span></p>
            <p align=left><span>　　<span>printf("OK\n");</span></span></p>
            <p align=left><span>　　<span>}</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>当用户<span>B</span>选择<span>&#8220;Commit Selection&#8221;</span>时将提示： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>cvs server: Up-to-date check failed for `example.h'</span></p>
            <p align=left><span>　　<span>cvs [server aborted]: correct above errors first!</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>此时表明已经有用户对同一个文件<span>example.h</span>进行修改并提交到<span>CVS</span>服务器，这时要先选择<span>&#8220;Update Selection&#8221;</span>对本地<span>example.h</span>与<span>CVS</span>服务器上的<span>example.h</span>文件进行同步与合并，不用选中出现的任何选项，直接选择<span>&#8220;OK&#8221;</span>，这时将显示如下： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>cvs -z9 update example.h (in directory C:\my cvs\STW\src\)</span></p>
            <p align=left><span>　　<span>RCS file: /home/cvsroot/STW/src/example.h,v</span></span></p>
            <p align=left><span>　　<span>retrieving revision 1.5</span></span></p>
            <p align=left><span>　　<span>retrieving revision 1.6</span></span></p>
            <p align=left><span>　　<span>Merging differences between 1.5 and 1.6 into example.h</span></span></p>
            <p align=left><span>　　<span>M example.h </span></span></p>
            <p align=left><span>　　</span></p>
            <p align=left><span>　　<span>***** CVS exited normally with code 0 *****</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>表明用户<span>B</span>与用户<span>A</span>的修改已经合并成功，同时文件<span>example.h</span>的图标也将变成红色，合并后的文件是存放在用户<span>B</span>的本地机上，为了更新到<span>CVS</span>服务器还必须选中<span>example.h</span>并右击选择<span>&#8220;Commit Selection&#8221;</span>才能把用户<span>A</span>与用户<span>B</span>的修改合并后的结果提交到<span>CVS</span>服务器上。注：<span>M</span>表示此文件已经被修改过。 </span></p>
<p align=left><span>c)</span><span>、两个或两个以上的用户对同一个文件的相同部分进行修改的情况 </span></p>
<p align=left><span>这种情况就是如用户<span>A</span>与用户<span>B</span>都下载了文件<span>example.h</span>，内容如下： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>void main(int argv,char *argc)</span></p>
            <p align=left><span>　　<span>{</span></span></p>
            <p align=left><span>　　<span>printf("I am Cather\n");</span></span></p>
            <p align=left><span>　　<span>}</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>然后用户<span>A</span>把文件修改成如下，并提交到<span>CVS</span>服务器（一般将正常提交）： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>void main(int argv,char *argc)</span></p>
            <p align=left><span>　　<span>{</span></span></p>
            <p align=left><span>　　<span>printf("I am Cather\n");</span></span></p>
            <p align=left><span>　　<span>printf("I am Pat\n");</span></span></p>
            <p align=left><span>　　<span>}</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>接着用户<span>B</span>又把文件修改成如下： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>void main(int argv,char *argc)</span></p>
            <p align=left><span>　　<span>{</span></span></p>
            <p align=left><span>　　<span>printf("I am Cather\n");</span></span></p>
            <p align=left><span>　　<span>printf("I love you Cather\n");</span></span></p>
            <p align=left><span>　　<span>}</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>如果用户<span>B</span>这时选择<span>&#8220;Commit Selection&#8221;</span>准备把修改结果提交到<span>CVS</span>服务器，此时将显示如下的错误提示： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>cvs -z9 commit -m "update in 11:20" example.h (in directory C:\my cvs\STW\src\)</span></p>
            <p align=left><span>　　<span>cvs server: Up-to-date check failed for `example.h'</span></span></p>
            <p align=left><span>　　<span>cvs [server aborted]: correct above errors first!</span></span></p>
            <p align=left><span>　　</span></p>
            <p align=left><span>　　<span>***** CVS exited normally with code 1 *****</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>表明用户<span>B</span>的修改与其它用户的修改冲突，这时要先选择<span>&#8220;Update Selection&#8221;</span>，将显示如下提示： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>　<span>cvs -z9 update example.h (in directory C:\my cvs\STW\src\)</span></span></p>
            <p align=left><span>　　<span>RCS file: /home/cvsroot/STW/src/example.h,v</span></span></p>
            <p align=left><span>　　<span>retrieving revision 1.9</span></span></p>
            <p align=left><span>　　<span>retrieving revision 1.10</span></span></p>
            <p align=left><span>　　<span>Merging differences between 1.9 and 1.10 into example.h</span></span></p>
            <p align=left><span>　　<span>rcsmerge: warning: conflicts during merge</span></span></p>
            <p align=left><span>　　<span>cvs server: conflicts found in example.h</span></span></p>
            <p align=left><span>　　<span>C example.h</span></span></p>
            <p align=left><span>　　</span></p>
            <p align=left><span>　　<span>***** CVS exited normally with code 0 *****</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>example.h</span><span>前面的<span>C</span>表示与其它用户的修改有冲突，并且文件的图标会加显示一个<span>&#8220;C&#8221;</span>，双击<span>example.h</span>将显示<span>example.h</span>的内容，如下： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>void main(int argv,char *argc)</span></p>
            <p align=left><span>　　<span>{</span></span></p>
            <p align=left><span>　　<span>printf("I am Yanxi\n");</span></span></p>
            <p align=left><span>　　<span>printf("I am Cather\n");</span></span></p>
            <p align=left><span>　　<span>&lt;&lt;&lt;&lt;&lt;&lt;&lt; example.h</span></span></p>
            <p align=left><span>　　<span>printf("I love you Yanxi,too!\n"); //</span>这部分为你的修改</span></p>
            <p align=left><span>　　<span>=======</span></span></p>
            <p align=left><span>　　<span>printf("I love you Cather!\n"); //</span>这部分为其它用户的修改</span></p>
            <p align=left><span>　　<span>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 1.10</span></span></p>
            <p align=left><span>　　<span>}</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>这时你应该与用户<span>A</span>进行协商以决定最终要怎样修改。比如，可以修改成： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>void main(int argv,char *argc)</span></p>
            <p align=left><span>　　<span>{</span></span></p>
            <p align=left><span>　　<span>printf("I am Yanxi\n");</span></span></p>
            <p align=left><span>　　<span>printf("I am Cather\n");</span></span></p>
            <p align=left><span>　　<span>printf("I love you Yanxi,too!\n"); //</span>这部分为你的修改</span></p>
            <p align=left><span>　　<span>printf("I love you Cather!\n"); //</span>这部分为其它用户的修改</span></p>
            <p align=left><span>　　<span>}</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>然后选择<span>&#8220;Commit Selection&#8221;</span>进行提交，将显示如下的提示信息： </span></p>
<div align=center>
<table cellSpacing=0 cellPadding=0 width=400 border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>cvs -z9 commit -m "update in 11:20" example.h (in directory C:\my cvs\STW\src\)</span></p>
            <p align=left><span>　　<span>Checking in example.h;</span></span></p>
            <p align=left><span>　　<span>/home/cvsroot/STW/src/example.h,v &lt;-- example.h</span></span></p>
            <p align=left><span>　　<span>new revision: 1.11; previous revision: 1.10</span></span></p>
            <p align=left><span>　　<span>done</span></span></p>
            <p align=left><span>　　</span></p>
            <p align=left><span>　　<span>***** CVS exited normally with code 0 *****</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span>表明用户<span>A</span>与用户的修改已经合并成功。这样，向<span>CVS</span>服务器提交文件所会遇到的问题也基本上就是这些，用户要根据所遇到的实际问题进行修改。 </span></p>
<p align=left><strong><span>7</span></strong><strong><span>、 向<span>CVS</span>服务器添加新文件</span></strong><span> </span></p>
<p align=left><span>在本地添加文件后，要提交到服务端。先选中文件，然后点击<span>&#8220;</span>添加按钮<span>&#8221;</span>，添加文件后，再在右键菜单中选择提交命令<span>&#8220;Commit Selection&#8221;</span>即可。选中文件<span>example.h.bak</span>，因为<span>example.h.bak</span>当前不是<span>CVS</span>的文件，此时<span>&#8220;</span>添加按钮<span>&#8221;</span>将由不可选状态变成可选状态，所以<span>Status</span>中显示为<span>&#8220;NonCvs file&#8221;</span>，选择<span>&#8220;</span>添加按钮<span>&#8221;</span>之后<span>example.h.bak</span>图标将变成红色并增加了一个<span>A</span>字母，如下： </span></p>
<p align=left><span>然后选中<span>example.h.bak</span>，右击，选择<span>&#8220;Commit Selection&#8221;</span>把文件<span>example.h.bak</span>提交到<span>CVS</span>服务器上而成为<span>CVS</span>的一个文件。 </span></p>
<p align=left><strong><span>8</span></strong><strong><span>、 结束语</span></strong><span> </span></p>
<p align=left><span>来到这里，你基本上已经能为自己或公司配置一个实用的<span>CVS</span>服务器与<span>WinCVS</span>客户端，配合使用<span>CVS</span>进行系统开发或其它文档的版本管理与控制。 </span></p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/27371.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2007-05-21 14:12 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27371.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java测试规范</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/16/20633.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Sat, 16 Dec 2006 11:40:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/16/20633.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20633.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/16/20633.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20633.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20633.html</trackback:ping><description><![CDATA[
		<div align="center">
				<table style="BACKGROUND: white; WIDTH: 100%; mso-padding-alt: 0cm 0cm 0cm 0cm; mso-cellspacing: 0cm" cellspacing="0" cellpadding="0" width="100%" bgcolor="white" border="0">
						<tbody>
								<tr style="HEIGHT: 27pt">
										<td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 0cm; BORDER-TOP: #d4d0c8; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; HEIGHT: 27pt; BACKGROUND-COLOR: transparent">
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-pagination: widow-orphan" align="center">
														<b>
																<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: red; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">Java测试规范<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:p></o:p></span>
														</b>
												</p>
										</td>
								</tr>
								<tr style="HEIGHT: 16.5pt">
										<td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 0cm; BORDER-TOP: #d4d0c8; PADDING-LEFT: 0cm; BACKGROUND: #e1e1e1; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; HEIGHT: 16.5pt">
										</td>
								</tr>
								<tr style="HEIGHT: 43.5pt">
										<td style="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 0cm; BORDER-TOP: #d4d0c8; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; PADDING-TOP: 0cm; BORDER-BOTTOM: #d4d0c8; HEIGHT: 43.5pt; BACKGROUND-COLOR: transparent" valign="top">
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-pagination: widow-orphan" align="center">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">1、未使用(死)代码 <o:p></o:p></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。存在未使用的私有静态字段<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。带有不必要的修饰符的借口<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。目前没有使用的私有字段<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。未使用的变量<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。无需的参数<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。显示导入的<span lang="EN-US">java.lang包 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。目前没有使用的私有方法<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">2、编码标准 <o:p></o:p></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。一行语句中声明了多种类型的变量<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。物理位置不在一起的同名小组成员 。<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。从一个抽象类库中的构造器调用的抽象方法<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。包括大量<span lang="EN-US">case语句的switch语句 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。除了第一个之外的<span lang="EN-US">main（）函数 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。直接弹出的<span lang="EN-US">Exception类库 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。<span lang="EN-US">catch语句中Exception或者RuntimeException <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。直接弹出的<span lang="EN-US">Error <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。没有在接口中定义的常量<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。长整数应该使用<span lang="EN-US">‘L’代替小写字母‘l’ <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">3、初始化 <o:p></o:p></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。没有显式初始化的静态字段<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。没有显式初始化每个数据成员的构造器<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。编译代码中可能的漏洞<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。存在错误的<span lang="EN-US">case的switch语句 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。程序体为空的<span lang="EN-US">for语句 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。程序体为空的<span lang="EN-US">if语句 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。需要重载的方法<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。应该使用等号代替<span lang="EN-US">== <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。程序体为空的<span lang="EN-US">else语句 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。强制转换为较低精度的主要数据类型<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。在<span lang="EN-US">switch子句中的文本标识 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。<span lang="EN-US">if条件中的变量赋值 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。缺少<span lang="EN-US">default子句中的switch语句 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。存在嵌套赋值<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。比较浮点数<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。循环控制变量在循环内部被突然改变<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。方法参数名称和类成员名称冲突<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。可能与字符串串联混淆的<span lang="EN-US">+操作符 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">4、面向对象编程 <o:p></o:p></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。继承的静态成员函数被隐藏<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。可能嵌套过深的类库<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。继承的实例变量被隐藏<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。被重载<span lang="EN-US">private方法 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。内部的类库不可见或外部的类库不相关<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。某个实列变量为<span lang="EN-US">public或在package中 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。没有在一开始列出的<span lang="EN-US">public或package方法和数据 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。不是<span lang="EN-US">abstract或实现比较通常的接口 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。命名惯例<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。一个类名称不符合标准<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。一个接口名称不符合标准<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。一个列外名称不符合标准<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。一种方法名称不符合标准<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。一个静态字段名称不符合标准<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。一个静态方法名称不符合标准<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。一种方法参数名称不符合标准<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。一个实列字段不符合标准<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。一个本地变量名称不符合标准<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。一个最终静态字段中包含小写字母<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。一个返回布尔值的方法使用<span lang="EN-US">"is"或者"has"前缀 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。一个接口成员字段包含小写字母<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。使用一个非惯例的变量名称<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">5、优化 <o:p></o:p></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。一个<span lang="EN-US">finally模块中存在未关闭的流 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。使用一个<span lang="EN-US">for循环代替System.arrarycopy()拷贝数组 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。存在没有必要的<span lang="EN-US">instanceof <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。存在没有必要的强制变量类型转换<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。可以使用一个缩写的赋值语句<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。常量字符串使用<span lang="EN-US">StringBuffer代替String <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。循环条件过于复杂<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。取反操作符使用过于频繁<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">6、回收 <o:p></o:p></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。<span lang="EN-US">finalize()没有调用super.finally() <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。最终方法的最后模块没有调用<span lang="EN-US">super.finalize() <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。<span lang="EN-US">finalize()被显示调用 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。在将主要类型转换成<span lang="EN-US">String时，使用了不必要的临时变量 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。在应该使用<span lang="EN-US">long[]的位置使用了Date[] <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">7、javadoc注释 <o:p></o:p></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。误用了<span lang="EN-US">Javadoc标签 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。<span lang="EN-US">Javadoc和普通注释之间区分不明显 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">8、线程 <o:p></o:p></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。使用<span lang="EN-US">synchronized，降低了性能 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">9、全局静态分析 <o:p></o:p></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。过度访问<span lang="EN-US">package-private字段 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。过度访问<span lang="EN-US">package-private方法 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。过度访问<span lang="EN-US">package-private类库 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。过度访问<span lang="EN-US">public/protected字段 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。过度访问<span lang="EN-US">public/protected方法 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。过度访问<span lang="EN-US">public/protected类库 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。没有使用全局<span lang="EN-US">package-private字段 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。没有使用全局<span lang="EN-US">package-private方法 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。没有使用全局<span lang="EN-US">package-private类库 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。没有使用全局<span lang="EN-US">public/protected字段 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。没有使用全局<span lang="EN-US">public/protected方法 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。没有使用全局<span lang="EN-US">public/protected类库 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">10、企业版java beans(EJB) <o:p></o:p></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。<span lang="EN-US">bean类库没有定义成为public <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。<span lang="EN-US">bean类库被错误定义成为abstract <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。<span lang="EN-US">bean类库被错误定义成为final <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。<span lang="EN-US">bean类库实现一个ejbCreate()方法 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。<span lang="EN-US">bean类库错误定义finalize方法 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。<span lang="EN-US">ejbCreate()访问控制符没有定义成为public <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。<span lang="EN-US">SessionBean中的ejbCreate()没有返回void <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。定位方法的修饰符没有定义成为<span lang="EN-US">public <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。定位方法的返回类型不是一个主键，也不是主键的类集<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。<span lang="EN-US">ejbPostCreate()有一个非public的访问控制修饰符 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。<span lang="EN-US">ejbPostCreate()没有返回类型void <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">11、杂项 <o:p></o:p></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。成员字段隐藏在成员方法中<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。循环记数器无法递增<span lang="EN-US"><o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。<span lang="EN-US">for循环中没有包含布尔条件 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。存在的<span lang="EN-US">clone()方法没有调用super.clone() <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。<span lang="EN-US">for语句缺少代码模块 <o:p></o:p></span></span>
												</p>
												<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="center">
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">。方法参数得到赋值<span lang="EN-US"><o:p></o:p></span></span>
												</p>
										</td>
								</tr>
						</tbody>
				</table>
		</div>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20633.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-16 19:40 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/16/20633.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2SDK1.5+TOMCAT5.5最详细有效安装及配置</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20524.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 15 Dec 2006 08:34:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20524.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20524.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20524.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20524.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20524.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: J2SDK1.5+TOMCAT5.5																																												最详细有效安装及配置																																																																																																										...&nbsp;&nbsp;<a href='http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20524.html'>阅读全文</a><img src ="http://www.cnitblog.com/szdlinxie/aggbug/20524.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-15 16:34 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20524.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>