<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>程序员便利贴</title>
	<atom:link href="http://www.appfen.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.appfen.com</link>
	<description>方便又实用的程序员宝典</description>
	<lastBuildDate>Tue, 15 May 2012 04:20:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Java调用SQL Server的存储过程详解</title>
		<link>http://www.appfen.com/2012/java-sql-server-procedure.html</link>
		<comments>http://www.appfen.com/2012/java-sql-server-procedure.html#comments</comments>
		<pubDate>Tue, 15 May 2012 04:20:05 +0000</pubDate>
		<dc:creator>木木</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[存储过程]]></category>

		<guid isPermaLink="false">http://www.appfen.com/?p=430</guid>
		<description><![CDATA[　　1使用不带参数的存储过程 　　1 　　{call procedure-name} 　　作为实例，在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程： 　　CREATE PROCEDURE GetContactFormalNames 　　AS BEGIN SELECT TOP 10 Title + &#8216; &#8216; + FirstName + &#8216; &#8216; + LastName AS FormalName 　　FROM Person.Contact END 　　此存储过程返回单个结果集，其中包含一列数据(由 Person.Contact 表中前十个联系人的称呼、名称和姓氏组成)。 　　在下面的实例中，将向此函数传递 AdventureWorks 示例数据库的打开连接，然后使用 executeQuery 方法调用 GetContactFormalNames 存储过程。 　　public static void executeSprocNoParams(Connection con) 　　…{ 　　try …{ 　　Statement stmt = [...]<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fsql-yuju-cunchu-guocheng.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-sql-server-procedure.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">统计SQL语句和存储过程</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fsql-set-quoted_identifier_abort.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-sql-server-procedure.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">SQL存储过程中的几个常见设定</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-sql.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-sql-server-procedure.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java防止SQL注入的几个途径</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fyouhua-sql.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-sql-server-procedure.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">优化SQL查询：如何写出高性能SQL语句</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>　　1使用不带参数的存储过程</p>
<p>　　1</p>
<p>　　{call procedure-name}</p>
<p>　　作为实例，在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程：</p>
<p>　　CREATE PROCEDURE GetContactFormalNames</p>
<p>　　AS BEGIN SELECT TOP 10 Title + &#8216; &#8216; + FirstName + &#8216; &#8216; + LastName AS FormalName</p>
<p>　　FROM Person.Contact END</p>
<p>　　此存储过程返回单个结果集，其中包含一列数据(由 Person.Contact 表中前十个联系人的称呼、名称和姓氏组成)。</p>
<p>　　在下面的实例中，将向此函数传递 AdventureWorks 示例数据库的打开连接，然后使用 executeQuery 方法调用 GetContactFormalNames 存储过程。</p>
<p>　　public static void executeSprocNoParams(Connection con)</p>
<p>　　…{</p>
<p>　　try …{</p>
<p>　　Statement stmt = con.createStatement();</p>
<p>　　ResultSet rs = stmt.executeQuery(“{call dbo.GetContactFormalNames}”);</p>
<p>　　while (rs.next())</p>
<p>　　…{</p>
<p>　　System.out.println(rs.getString(“FormalName”));</p>
<p>　　}</p>
<p>　　rs.close();</p>
<p>　　stmt.close();</p>
<p>　　}</p>
<p>　　catch (Exception e)</p>
<p>　　…{</p>
<p>　　e.printStackTrace();</p>
<p>　　}</p>
<p>　　}</p>
<p>　　2使用带有输入参数的存储过程</p>
<p>　　使用 JDBC 驱动程序调用带参数的存储过程时，必须结合 SQLServerConnection 类的 prepareCall 方法使用 call SQL 转义序列。带有 IN 参数的 call 转义序列的语法如下所示：</p>
<p>　　{call procedure-name[([parameter][,[parameter]]…)]}</p>
<p>　　构造 call 转义序列时，请使用 ?(问号)字符来指定 IN 参数。此字符充当要传递给该存储过程的参数值的占位符。可以使用 SQLServerPreparedStatement 类的 setter 方法之一为参数指定值。可使用的 setter 方法由 IN 参数的数据类型决定。</p>
<p>　　向 setter 方法传递值时，不仅需要指定要在参数中使用的实际值，还必须指定参数在存储过程中的序数位置。例如，如果存储过程包含单个 IN 参数，则其序数值为 1.如果存储过程包含两个参数，则第一个序数值为 1,第二个序数值为 2.</p>
<p>　　作为如何调用包含 IN 参数的存储过程的实例，使用 SQL Server 2005 AdventureWorks 示例数据库中的 uspGetEmployeeManagers 存储过程。此存储过程接受名为 EmployeeID 的单个输入参数(它是一个整数值)，然后基于指定的 EmployeeID 返回雇员及其经理的递归列表。下面是调用此存储过程的 Java 代码：</p>
<p>　　public static void executeSprocInParams(Connection con)</p>
<p>　　…{</p>
<p>　　try …{</p>
<p>　　PreparedStatement pstmt = con.prepareStatement(“{call dbo.uspGetEmployeeManagers(？)}”);</p>
<p>　　pstmt.setInt(1, 50);</p>
<p>　　ResultSet rs = pstmt.executeQuery();</p>
<p>　　while (rs.next())</p>
<p>　　…{</p>
<p>　　System.out.println(“EMPLOYEE:”);</p>
<p>　　System.out.println(rs.getString(“LastName”) + “, ” + rs.getString(“FirstName”));</p>
<p>　　System.out.println(“MANAGER:”);</p>
<p>　　System.out.println(rs.getString(“ManagerLastName”) + “, ” + rs.getString(“ManagerFirstName”));</p>
<p>　　System.out.println();</p>
<p>　　}</p>
<p>　　rs.close();</p>
<p>　　pstmt.close();</p>
<p>　　}</p>
<p>　　catch (Exception e)</p>
<p>　　…{</p>
<p>　　e.printStackTrace();</p>
<p>　　}</p>
<p>　　}</p>
<p>　　3使用带有输出参数的存储过程</p>
<p>　　使用 JDBC 驱动程序调用此类存储过程时，必须结合 SQLServerConnection 类的 prepareCall 方法使用 call SQL 转义序列。带有 OUT 参数的 call 转义序列的语法如下所示：</p>
<p>　　{call procedure-name[([parameter][,[parameter]]…)]}</p>
<p>　　构造 call 转义序列时，请使用 ?(问号)字符来指定 OUT 参数。此字符充当要从该存储过程返回的参数值的占位符。要为 OUT 参数指定值，必须在运行存储过程前使用 SQLServerCallableStatement 类的 registerOutParameter 方法指定各参数的数据类型。</p>
<p>　　使用 registerOutParameter 方法为 OUT 参数指定的值必须是 java.sql.Types 所包含的 JDBC 数据类型之一，而它又被映射成本地 SQL Server 数据类型之一。有关 JDBC 和 SQL Server 数据类型的详细信息，请参阅了解 JDBC 驱动程序数据类型。</p>
<p>　　当您对于 OUT 参数向 registerOutParameter 方法传递一个值时，不仅必须指定要用于此参数的数据类型，而且必须在存储过程中指定此参数的序号位置或此参数的名称。例如，如果存储过程包含单个 OUT 参数，则其序数值为 1;如果存储过程包含两个参数，则第一个序数值为 1,第二个序数值为 2.</p>
<p>　　作为实例，在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程： 根据指定的整数 IN 参数 (employeeID)，该存储过程也返回单个整数 OUT 参数 (managerID)。根据 HumanResources.Employee 表中包含的 EmployeeID,OUT 参数中返回的值为 ManagerID.</p>
<p>　　在下面的实例中，将向此函数传递 AdventureWorks 示例数据库的打开连接，然后使用 execute 方法调用 GetImmediateManager 存储过程：</p>
<p>　　public static void executeStoredProcedure(Connection con)</p>
<p>　　…{</p>
<p>　　try …{</p>
<p>　　CallableStatement cstmt = con.prepareCall(“{call dbo.GetImmediateManager(？, ?)}”);</p>
<p>　　cstmt.setInt(1, 5);</p>
<p>　　cstmt.registerOutParameter(2, java.sql.Types.INTEGER);</p>
<p>　　cstmt.execute();</p>
<p>　　System.out.println(“MANAGER ID: ” + cstmt.getInt(2));</p>
<p>　　}</p>
<p>　　catch (Exception e)</p>
<p>　　…{</p>
<p>　　e.printStackTrace();</p>
<p>　　}</p>
<p>　　}</p>
<p>　　本示例使用序号位置来标识参数。或者，也可以使用参数的名称(而非其序号位置)来标识此参数。下面的代码示例修改了上一个示例，以说明如何在 Java 应用程序中使用命名参数。请注意，这些参数名称对应于存储过程的定义中的参数名称： 11x16CREATE PROCEDURE GetImmediateManager</p>
<p>　　@employeeID INT,</p>
<p>　　@managerID INT OUTPUT AS BEGIN SELECT @managerID = ManagerID</p>
<p>　　FROM HumanResources.Employee</p>
<p>　　WHERE EmployeeID = @employeeID END</p>
<p>　　存储过程可能返回更新计数和多个结果集。Microsoft SQL Server 2005 JDBC Driver 遵循 JDBC 3.0 规范，此规范规定在检索 OUT 参数之前应检索多个结果集和更新计数。也就是说，应用程序应先检索所有 ResultSet 对象和更新计数，然后使用 CallableStatement.getter 方法检索 OUT 参数。否则，当检索 OUT 参数时，尚未检索的 ResultSet 对象和更新计数将丢失。</p>
<p>　　4 使用带有返回状态的存储过程</p>
<p>　　使用 JDBC 驱动程序调用这种存储过程时，必须结合 SQLServerConnection 类的 prepareCall 方法使用 call SQL 转义序列。返回状态参数的 call 转义序列的语法如下所示：</p>
<p>　　{[?=]call procedure-name[([parameter][,[parameter]]…)]}</p>
<p>　　构造 call 转义序列时，请使用 ?(问号)字符来指定返回状态参数。此字符充当要从该存储过程返回的参数值的占位符。要为返回状态参数指定值，必须在执行存储过程前使用 SQLServerCallableStatement 类的 registerOutParameter 方法指定参数的数据类型。</p>
<p>　　此外，向 registerOutParameter 方法传递返回状态参数值时，不仅需要指定要使用的参数的数据类型，还必须指定参数在存储过程中的序数位置。对于返回状态参数，其序数位置始终为 1,这是因为它始终是调用存储过程时的第一个参数。尽管 SQLServerCallableStatement 类支持使用参数的名称来指示特定参数，但您只能对返回状态参数使用参数的序号位置编号。</p>
<p>　　作为实例，在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程：</p>
<p>　　CREATE PROCEDURE CheckContactCity</p>
<p>　　(@cityName CHAR(50))</p>
<p>　　AS BEGIN IF ((SELECT COUNT(*)</p>
<p>　　FROM Person.Address</p>
<p>　　WHERE City = @cityName) > 1)</p>
<p>　　RETURN 1 ELSE RETURN 0 END</p>
<p>　　该存储过程返回状态值 1 或 0,这取决于是否能在表 Person.Address 中找到 cityName 参数指定的城市。</p>
<p>　　在下面的实例中，将向此函数传递 AdventureWorks 示例数据库的打开连接，然后使用 execute 方法调用 CheckContactCity 存储过程：</p>
<p>　　public static void executeStoredProcedure(Connection con)</p>
<p>　　…{</p>
<p>　　try …{</p>
<p>　　CallableStatement cstmt = con.prepareCall(“{? = call dbo.CheckContactCity(？)}”);</p>
<p>　　cstmt.registerOutParameter(1, java.sql.Types.INTEGER);</p>
<p>　　cstmt.setString(2, “Atlanta”);</p>
<p>　　cstmt.execute();</p>
<p>　　System.out.println(“RETURN STATUS: ” + cstmt.getInt(1));</p>
<p>　　}</p>
<p>　　cstmt.close();</p>
<p>　　catch (Exception e)</p>
<p>　　…{</p>
<p>　　e.printStackTrace();</p>
<p>　　}</p>
<p>　　}</p>
<p>　　5 使用带有更新计数的存储过程</p>
<p>　　使用 SQLServerCallableStatement 类构建对存储过程的调用之后，可以使用 execute 或 executeUpdate 方法中的任意一个来调用此存储过程。executeUpdate 方法将返回一个 int 值，该值包含受此存储过程影响的行数，但 execute 方法不返回此值。如果使用 execute 方法，并且希望获得受影响的行数计数，则可以在运行存储过程后调用 getUpdateCount 方法。</p>
<p>　　作为实例，在 SQL Server 2005 AdventureWorks 示例数据库中创建以下表和存储过程：</p>
<p>　　CREATE TABLE TestTable</p>
<p>　　(Col1 int IDENTITY,</p>
<p>　　Col2 varchar(50)，</p>
<p>　　Col3 int);</p>
<p>　　CREATE PROCEDURE UpdateTestTable</p>
<p>　　@Col2 varchar(50)，</p>
<p>　　@Col3 int AS BEGIN UPDATE TestTable</p>
<p>　　SET Col2 = @Col2, Col3 = @Col3 END;</p>
<p>　　在下面的实例中，将向此函数传递 AdventureWorks 示例数据库的打开连接，并使用 execute 方法调用 UpdateTestTable 存储过程，然后使用 getUpdateCount 方法返回受存储过程影响的行计数。</p>
<p>　　public static void executeUpdateStoredProcedure(Connection con)</p>
<p>　　…{</p>
<p>　　try …{</p>
<p>　　CallableStatement cstmt = con.prepareCall(“{call dbo.UpdateTestTable(？, ?)}”);</p>
<p>　　cstmt.setString(1, “A”);</p>
<p>　　cstmt.setInt(2, 100);</p>
<p>　　cstmt.execute();</p>
<p>　　int count = cstmt.getUpdateCount();</p>
<p>　　cstmt.close();</p>
<p>　　System.out.println(“ROWS AFFECTED: ” + count);</p>
<p>　　}</p>
<p>　　catch (Exception e)</p>
<p>　　…{</p>
<p>　　e.printStackTrace();</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fsql-yuju-cunchu-guocheng.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-sql-server-procedure.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">统计SQL语句和存储过程</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fsql-set-quoted_identifier_abort.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-sql-server-procedure.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">SQL存储过程中的几个常见设定</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-sql.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-sql-server-procedure.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java防止SQL注入的几个途径</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fyouhua-sql.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-sql-server-procedure.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">优化SQL查询：如何写出高性能SQL语句</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.appfen.com/2012/java-sql-server-procedure.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hibernate只取出需要用到的列</title>
		<link>http://www.appfen.com/2012/hibernate-select-row.html</link>
		<comments>http://www.appfen.com/2012/hibernate-select-row.html#comments</comments>
		<pubDate>Mon, 14 May 2012 01:16:08 +0000</pubDate>
		<dc:creator>木木</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://www.appfen.com/?p=385</guid>
		<description><![CDATA[今天下班后，回家的路上，在思考网站的优化问题。 这个问题几年以来一直存在，但是都没找到解决方法，曾经也许找过，但是未果。 存在问题：首页、列表等页面，取出的list，存在大量的冗余数据。 我用代码举例说明一下，例如列表页取出某个产品的list，HQL代码如下： Java代码 1. String hql = “from Product p where p.valid=:valid order by&#8230;&#8230;.”; 这段代码返回的list中，list的每一条，都会保存Product对象的所有的内容。 然而，列表页真正需要用到的，只有name（产品名称） publishTime（发布时间）……等等很少量的数据。像一些诸如产品规格、 的。 但是用不到，却取出来了，并且保存在返回的list里，于是就会增加不必要的内存开销，增加服务器的压力。 那么有什么办法能让list中的每一条数据，仅仅取出需要用到的呢？答案当然是有的，今天百度了一下， 找到如下的解决方案： 写道 SELECT new xxx.xxx.xxx.xx.User(t.id, t.username) FROM User t; 然后在User 使用查询列id,username做一个构造函数，不过仅限于hibernate3以上版本 举一反三，解决方案有了，呵呵。 Java代码 1. String hql = “select new Product(p.id, p.name, p.image) from Product p where p.valid=:v alid order by&#8230;&#8230;.”; 这样查询出来的是Product对象，而不是Object[]对象，结果比较满意。<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fhibernate-cache.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fhibernate-select-row.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Hibernate的缓存机制(一级缓存)</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fhibernate-sql-zhuru.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fhibernate-select-row.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Hibernate防SQL注入的的方法</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fstruts-hibernate-page.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fhibernate-select-row.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Struts+hibernate实现分页</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fspring-hibernate-struts2-youque.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fhibernate-select-row.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Spring Hibernate Struts2的优缺点</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>今天下班后，回家的路上，在思考网站的优化问题。 这个问题几年以来一直存在，但是都没找到解决方法，曾经也许找过，但是未果。</p>
<p>存在问题：首页、列表等页面，取出的list，存在大量的冗余数据。 我用代码举例说明一下，例如列表页取出某个产品的list，HQL代码如下：</p>
<p>Java代码</p>
<p>1. String hql = “from Product p where p.valid=:valid order by&#8230;&#8230;.”;</p>
<p>这段代码返回的list<Product>中，list的每一条，都会保存Product对象的所有的内容。</p>
<p>然而，列表页真正需要用到的，只有name（产品名称）</p>
<p>publishTime（发布时间）……等等很少量的数据。像一些诸如产品规格、</p>
<p>的。 但是用不到，却取出来了，并且保存在返回的list里，于是就会增加不必要的内存开销，增加服务器的压力。</p>
<p>那么有什么办法能让list<Product>中的每一条数据，仅仅取出需要用到的呢？答案当然是有的，今天百度了一下， 找到如下的解决方案：</p>
<p>写道</p>
<p>SELECT new xxx.xxx.xxx.xx.User(t.id, t.username) FROM User t; 然后在User 使用查询列id,username做一个构造函数，不过仅限于hibernate3以上版本</p>
<p>举一反三，解决方案有了，呵呵。</p>
<p>Java代码</p>
<p>1. String hql = “select new Product(p.id, p.name, p.image) from Product p where p.valid=:v alid order by&#8230;&#8230;.”;</p>
<p>这样查询出来的是Product对象，而不是Object[]对象，结果比较满意。</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fhibernate-cache.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fhibernate-select-row.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Hibernate的缓存机制(一级缓存)</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fhibernate-sql-zhuru.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fhibernate-select-row.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Hibernate防SQL注入的的方法</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fstruts-hibernate-page.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fhibernate-select-row.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Struts+hibernate实现分页</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fspring-hibernate-struts2-youque.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fhibernate-select-row.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Spring Hibernate Struts2的优缺点</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.appfen.com/2012/hibernate-select-row.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java多线程notify和notifyall的区别</title>
		<link>http://www.appfen.com/2012/java-thread-notify-notifyall.html</link>
		<comments>http://www.appfen.com/2012/java-thread-notify-notifyall.html#comments</comments>
		<pubDate>Mon, 14 May 2012 01:14:08 +0000</pubDate>
		<dc:creator>木木</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Java多线程]]></category>
		<category><![CDATA[notify]]></category>
		<category><![CDATA[notifyall]]></category>

		<guid isPermaLink="false">http://www.appfen.com/?p=427</guid>
		<description><![CDATA[当一个线程进入wait之后，就必须等其他线程notify/notifyall,使用notifyall，可以唤醒 所有处于wait状态的线程，使其重新进入锁的争夺队列中，而notify只能唤醒一个。注意,任何时候只有一个线程可以获得锁，也就是说只有一个线程可以运行synchronized 中的代码，notifyall只是让处于wait的线程重新拥有锁的争夺权，但是只会有一个获得锁并执行。 那么notify和notifyall在效果上又什么实质区别呢？ 主要的效果区别是notify用得不好容易导致死锁，例如下面提到的例子。 public synchronized void put(Object o) { while (buf.size()==MAX_SIZE) { wait(); // called if the buffer is full (try/catch removed for brevity) } buf.add(o); notify(); // called in case there are any getters or putters waiting } public synchronized Object get() { // Y: this is where C2 tries to acquire [...]<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-codeing-jianyi.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-thread-notify-notifyall.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">JAVA代码编写的30条建议</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-mixed-code.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-thread-notify-notifyall.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java各种乱码问题处理办法</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-get-directory.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-thread-notify-notifyall.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java获取当前目录的简易方法</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-transfer-sql-server-process.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-thread-notify-notifyall.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java调用SQL Server的存储过程详解</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>当一个线程进入wait之后，就必须等其他线程notify/notifyall,使用notifyall，可以唤醒<br />
所有处于wait状态的线程，使其重新进入锁的争夺队列中，而notify只能唤醒一个。注意,任何时候只有一个线程可以获得锁，也就是说只有一个线程可以运行synchronized 中的代码，notifyall只是让处于wait的线程重新拥有锁的争夺权，但是只会有一个获得锁并执行。</p>
<p>那么notify和notifyall在效果上又什么实质区别呢？<br />
主要的效果区别是notify用得不好容易导致死锁，例如下面提到的例子。</p>
<pre class="brush:java">
public synchronized void put(Object o) {

    while (buf.size()==MAX_SIZE) {

        wait(); // called if the buffer is full (try/catch removed for brevity)

    }

    buf.add(o);

    notify(); // called in case there are any getters or putters waiting

}

public synchronized Object get() {

    // Y: this is where C2 tries to acquire the lock (i.e. at the beginning of the method)

    while (buf.size()==0) {

        wait(); // called if the buffer is empty (try/catch removed for brevity)

        // X: this is where C1 tries to re-acquire the lock (see below)

    }

    Object o = buf.remove(0);

    notify(); // called if there are any getters or putters waiting

    return o;

}
</pre>
<p>所以除非你非常确定notify没有问题，大部分情况还是是用notifyall。</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-codeing-jianyi.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-thread-notify-notifyall.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">JAVA代码编写的30条建议</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-mixed-code.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-thread-notify-notifyall.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java各种乱码问题处理办法</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-get-directory.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-thread-notify-notifyall.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java获取当前目录的简易方法</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-transfer-sql-server-process.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-thread-notify-notifyall.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java调用SQL Server的存储过程详解</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.appfen.com/2012/java-thread-notify-notifyall.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用友NC二次开发中常用的方法</title>
		<link>http://www.appfen.com/2012/yonyou-nc-function.html</link>
		<comments>http://www.appfen.com/2012/yonyou-nc-function.html#comments</comments>
		<pubDate>Sat, 12 May 2012 08:39:47 +0000</pubDate>
		<dc:creator>木木</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[nc二次开发]]></category>
		<category><![CDATA[用友ERP]]></category>
		<category><![CDATA[用友nc]]></category>

		<guid isPermaLink="false">http://www.appfen.com/?p=425</guid>
		<description><![CDATA[//取得单据号(从NC取,服务器端) String billNo = new nc.bs.trade.business.HYPubBO(). getBillNo(ISYYSBilltype.CTRLDDEPT_BGT_BILL, parentVo.getPk_corp(), null, null); // 设置单据号 //取得单据号(从NC取,客户端) return HYPubBO_Client.getBillNo(getUIControl().getBillType(), _getCorp().getPrimaryKey(), null, null); //在UI中设置按钮状态 getButtonManager().getButton(nc.ui.trade.button.IBillButton.Add).setEnabled(false); //取系统参数 从 pub_sysinit 表取 “select pk_sysinit, pk_corp, sysinit, sysindex, initcode, initname, makedate, value, editflag, controlflag, remark, defaultvalue, valuelist, stateflag, domainflag, paratype, groupcode,groupname,mainflag,mutexflag,showflag,jzflag,valuetype,sysflag,checkclass,editclass,dataclass,pkvalue,afterclass from v_pub_sysinit where initcode = &#8216;” + paraCode + “&#8216; and pk_corp = [...]<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fyongyou-nc-2-kaifa.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fyonyou-nc-function.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">用友nc二次开发常见问题</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fsoftware-development-word.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fyonyou-nc-function.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">软件开发中常见英文缩写</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2F10x-developers.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fyonyou-nc-function.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">如何成为“10倍效率”开发者</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-familiar-words.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fyonyou-nc-function.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java开发常用英语单词表</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>//取得单据号(从NC取,服务器端)<br />
String billNo = new nc.bs.trade.business.HYPubBO().<br />
getBillNo(ISYYSBilltype.CTRLDDEPT_BGT_BILL, parentVo.getPk_corp(), null, null); // 设置单据号</p>
<p>//取得单据号(从NC取,客户端)<br />
return HYPubBO_Client.getBillNo(getUIControl().getBillType(), _getCorp().getPrimaryKey(), null, null);</p>
<p>//在UI中设置按钮状态<br />
getButtonManager().getButton(nc.ui.trade.button.IBillButton.Add).setEnabled(false);</p>
<p>//取系统参数<br />
从 pub_sysinit 表取<br />
“select pk_sysinit, pk_corp, sysinit, sysindex, initcode, initname, makedate, value, editflag, controlflag, remark, defaultvalue, valuelist, stateflag, domainflag, paratype, groupcode,groupname,mainflag,mutexflag,showflag,jzflag,valuetype,sysflag,checkclass,editclass,dataclass,pkvalue,afterclass from v_pub_sysinit where  initcode = &#8216;” + paraCode + “&#8216; and pk_corp = ? order by sysindex “;<br />
select * from pub_sysinit where initcode=&#8217;SYYS601&#8242;;</p>
<p>//刷新页面上的数据<br />
SuperVO[] queryVos = queryHeadVOs(str_sqlwhere);  </p>
<p>//查询数据<br />
updateBuffer(queryVos);<br />
//修改缓存<br />
((nc.ui.trade.treemanage.BillTreeManageUI) getBillUI()).setListHeadData(getBufferData().getAllHeadVOsFromBuffer());</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fyongyou-nc-2-kaifa.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fyonyou-nc-function.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">用友nc二次开发常见问题</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fsoftware-development-word.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fyonyou-nc-function.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">软件开发中常见英文缩写</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2F10x-developers.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fyonyou-nc-function.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">如何成为“10倍效率”开发者</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-familiar-words.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fyonyou-nc-function.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java开发常用英语单词表</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.appfen.com/2012/yonyou-nc-function.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用反射复制一个JavaBean的对象</title>
		<link>http://www.appfen.com/2012/copy-javabean.html</link>
		<comments>http://www.appfen.com/2012/copy-javabean.html#comments</comments>
		<pubDate>Sat, 12 May 2012 08:25:45 +0000</pubDate>
		<dc:creator>木木</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaBean]]></category>
		<category><![CDATA[Java反射机制]]></category>

		<guid isPermaLink="false">http://www.appfen.com/?p=423</guid>
		<description><![CDATA[package com.java.study; import java.io.Serializable; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class ReflectTester { public Object copy(Object object) throws IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { Class classType = object.getClass();//获得对象的类型 System.out.println("Class:" + classType.getName()); //通过默认的构造函数创建一个新的对象 Object objectCopy = classType.getConstructor(new Class[] {}). newInstance(new Object[] {}); //获得对象的所有属性 Field fields[] = classType.getDeclaredFields(); for(int i = 0; i < fields.length; [...]<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-reflective.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fcopy-javabean.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">学习Java的反射机制</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-codeing-jianyi.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fcopy-javabean.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">JAVA代码编写的30条建议</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-mixed-code.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fcopy-javabean.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java各种乱码问题处理办法</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-content.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fcopy-javabean.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">JAVA容器类解析</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<pre class="brush:java">
package com.java.study;

import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class ReflectTester {
	public Object copy(Object object) throws IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
		Class classType = object.getClass();//获得对象的类型
		System.out.println("Class:" + classType.getName());

		//通过默认的构造函数创建一个新的对象
		Object objectCopy = classType.getConstructor(new Class[] {}).
		newInstance(new Object[] {});

		//获得对象的所有属性
		Field fields[] = classType.getDeclaredFields();

	    for(int i = 0; i < fields.length; i++) {
	    	Field field = fields[i];

	    	String fieldName = field.getName();
	    	String firstLetter = fieldName.substring(0,1).toUpperCase();
	    	//获得和属性对应的getXXX（）方法的名字
	    	String getMethodName = "get" + firstLetter + fieldName.substring(1);
	    	//获得和属性对应的setXXX()方法的名字
	    	String setMethodName = "set" + firstLetter + fieldName.substring(1);

	    	//获得和属性对应的getXXX()方法
	    	Method getMethod = classType.getMethod(getMethodName, new Class[]{});
	    	//获得和属性对应的setXXX()方法
	    	Method setMethod = classType.getMethod(setMethodName, new Class[]{field.getType()});

	    	//调用原对象的getXXX()方法
	    	Object value = getMethod.invoke(object, new Object[]{});
	    	System.out.println(fieldName + ":" + value);
	    	//调用复制对象的setXXX()方法
	    	setMethod.invoke(objectCopy, new Object[]{value});
	    }
	    return objectCopy;

	}

	public static void main(String[] args) throws IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
		Customer1 customer = new Customer1("tom",21);
		customer.setId(new Long(1));

		Customer1 customerCopy = (Customer1) new ReflectTester().copy(customer);
		System.out.println("Copy information:" + customerCopy.getName()+ ""
				+customerCopy.getAge());
	}

}

class Customer1 implements Serializable {

	private Long id;
	private String name;
	private int age;

	public Customer1() {}
	public Customer1(String name, int age){
		this.name = name;
		this.age = age;
	}

	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
}
</pre>
<p>代码中有一个Customer1的JavaBean,通过反射复制了一个Customer1类的对象，为customerCopy，程序中的new Class[] { }是一种快捷方式，获得方法的引用。[]中用来放参数，｛｝里面可以放置方法的返回类型。new Class[] { }相当于new class("构造函数参数").newinstance.</p>
<p>//调用原对象的getXXX()方法<br />
      Object value = getMethod.invoke(object, new Object[]{});<br />
      System.out.println(fieldName + ":" + value);</p>
<p>用来获得特定对象的特定方法。</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-reflective.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fcopy-javabean.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">学习Java的反射机制</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-codeing-jianyi.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fcopy-javabean.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">JAVA代码编写的30条建议</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-mixed-code.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fcopy-javabean.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java各种乱码问题处理办法</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-content.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fcopy-javabean.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">JAVA容器类解析</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.appfen.com/2012/copy-javabean.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java各种乱码问题处理办法</title>
		<link>http://www.appfen.com/2012/java-mixed-code.html</link>
		<comments>http://www.appfen.com/2012/java-mixed-code.html#comments</comments>
		<pubDate>Sat, 12 May 2012 02:54:02 +0000</pubDate>
		<dc:creator>木木</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Java乱码]]></category>
		<category><![CDATA[Jsp乱码]]></category>

		<guid isPermaLink="false">http://www.appfen.com/?p=419</guid>
		<description><![CDATA[一、jsp页面间传值中文乱码问题解决办法 name: b.jsp页面内容： 现象：中文乱码,比如“？？？？？？” 解决方法如下： 方法一： 1. 在b.jsp中把pageEncoding=”GB2312&#8243;改为pageEncoding=”ISO885Array-1&#8243; 虽然这样b.jsp页面显示的内容还是乱码，但是不是那种“？？？？？？”的乱码，而是一些特殊字符 2. 然后在浏览器中查看菜单中修改成GB2312的编码，这时乱码就显示中文了。 3. 但是这种方法是不可行的。 方法二：( 已经验证可行) 1. 在b.jsp中把String name=request.getParameter(“name”);修改为 String name=new String(request.getParameter(“name”).getBytes(“ISO-885Array-1&#8243;),”GB2312&#8243;); 2. 这时再在页面上显示，则就是中文了。 方法三： 1. 有人说修改get/post的传值方式,但是这是有前提的,如果只是把get方式修改成post方式,页面结果还是乱码! 2. 前提你必须配置了过滤器,若果你只是配置了过滤器,则传值方式必须是:post方式才不是乱码,如果是get方式照样是乱码! 3. 过滤器的配置,我想大家都能有,我就不说了 方法四: 1. 有人说配置tomcat的配置文件server.xml里这句： 加上这句：URIEncoding=”GB2312&#8243; 2. 虽然可以但是有前提的,若果你过滤器没有配置,则只是配置了server.xml文件,这样只有在表单是get传值时候才可以!当是post方式时,照样是乱码! *这时我们就可以看出在tomcat5中的post与get传值方式是不一样的* *有人要问有没有一种方法让传值使用get方式或post方式都好用呢,下面就是我推荐的方法五* 方法五: 1. 其实很简单,就是同时实现方法三又实现方法四! 2. 就是先配置过滤器,又配置server.xml文件,都设置成GB2312的编码 3. 这样无论是post还是get方式的表单传值,中文都不会是乱码! 二、severlet 返回页面的中文乱码问题解决办法 response.setContentType(“text/html;charset=utf-8&#8243;); request.setCharacterEncoding(“utf-8&#8243;); (注：顺序不可变) 三、ajax 中文参数乱码问题解决办法 比如var result=”张凯“; 因该参数包括着<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-get-directory.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-mixed-code.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java获取当前目录的简易方法</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-thread-notify-notifyall.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-mixed-code.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java多线程notify和notifyall的区别</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-codeing-jianyi.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-mixed-code.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">JAVA代码编写的30条建议</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-content.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-mixed-code.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">JAVA容器类解析</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p><strong>一、jsp页面间传值中文乱码问题解决办法</strong><br />
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%><br />
<for m act ion="b.jsp"><br />
    name:<in put type=text name=name><br />
    <in put type=submit><br />
</for m><br />
b.jsp页面内容：<br />
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%><br />
<%<br />
 String name=request.getParameter("name");<br />
%><br />
<body><br />
    <%=name%><br />
</body><br />
现象：中文乱码,比如“？？？？？？”<br />
解决方法如下：<br />
方法一：<br />
1. 在b.jsp中把pageEncoding=”GB2312&#8243;改为pageEncoding=”ISO885Array-1&#8243;<br />
虽然这样b.jsp页面显示的内容还是乱码，但是不是那种“？？？？？？”的乱码，而是一些特殊字符<br />
2. 然后在浏览器中查看菜单中修改成GB2312的编码，这时乱码就显示中文了。<br />
3. 但是这种方法是不可行的。<br />
方法二：( 已经验证可行)<br />
1. 在b.jsp中把String name=request.getParameter(“name”);修改为<br />
String name=new String(request.getParameter(“name”).getBytes(“ISO-885Array-1&#8243;),”GB2312&#8243;);<br />
2. 这时再在页面上显示，则就是中文了。<br />
方法三：<br />
1. 有人说修改get/post的传值方式,但是这是有前提的,如果只是把get方式修改成post方式,页面结果还是乱码!<br />
2. 前提你必须配置了过滤器,若果你只是配置了过滤器,则传值方式必须是:post方式才不是乱码,如果是get方式照样是乱码!<br />
3. 过滤器的配置,我想大家都能有,我就不说了<br />
方法四:<br />
1. 有人说配置tomcat的配置文件server.xml里这句：<br />
<Connector URIEncoding="GB2312"<br />
               port="8080" maxHttpHeaderSize="81Array2"<br />
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"<br />
               enableLookups="false" redirectPort="8443" acceptCount="100"<br />
               connectionTimeout="20000" disableUploadTimeout="true" /><br />
加上这句：URIEncoding=”GB2312&#8243;<br />
2. 虽然可以但是有前提的,若果你过滤器没有配置,则只是配置了server.xml文件,这样只有在表单是get传值时候才可以!当是post方式时,照样是乱码!<br />
*这时我们就可以看出在tomcat5中的post与get传值方式是不一样的*<br />
*有人要问有没有一种方法让传值使用get方式或post方式都好用呢,下面就是我推荐的方法五*<br />
方法五:<br />
1. 其实很简单,就是同时实现方法三又实现方法四!<br />
2. 就是先配置过滤器,又配置server.xml文件,都设置成GB2312的编码<br />
3. 这样无论是post还是get方式的表单传值,中文都不会是乱码!</p>
<p><strong>二、severlet 返回页面的中文乱码问题解决办法</strong><br />
response.setContentType(“text/html;charset=utf-8&#8243;);<br />
request.setCharacterEncoding(“utf-8&#8243;);<br />
(注：顺序不可变)</p>
<p><strong>三、ajax 中文参数乱码问题解决办法</strong><br />
   比如var result=”张凯<CN=张凯/OU=公司领导/OU=公司本部/O=Geph>“;<br />
因该参数包括着<,中文等字符,所以在ajax传输该参数时需要 encodeURI(result)来两次编码，后台用URLDecoder.decode(cityName, "utf-8");来解码</p>
<p>这个可以解决传递中文参数乱码问题。</p>
<p><strong>四、Struts2文件下载时，如果所下载的文件名是中文时，就会出现乱码。</strong><br />
解决办法如下：<br />
步奏1：修改fileName属性的set方法<br />
public void setFileName(String fileName)<br />
throws UnsupportedEncodingException {<br />
this.fileName = new String(fileName.getBytes(“ISO8859-1&#8243;), “utf-8&#8243;);<br />
}<br />
步骤2：在getInputStream（）方法中加上下面一句<br />
ServletActionContext.getResponse().setHeader(“Content-Disposition”,”attachment;fileName=”+java.net.URLEncoder.encode(fileName, “UTF<br />
 注：目前只整理了这些，还有待增加完善</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-get-directory.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-mixed-code.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java获取当前目录的简易方法</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-thread-notify-notifyall.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-mixed-code.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java多线程notify和notifyall的区别</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-codeing-jianyi.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-mixed-code.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">JAVA代码编写的30条建议</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-content.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-mixed-code.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">JAVA容器类解析</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.appfen.com/2012/java-mixed-code.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serializable接口做什么用的？</title>
		<link>http://www.appfen.com/2012/java-io-serializable.html</link>
		<comments>http://www.appfen.com/2012/java-io-serializable.html#comments</comments>
		<pubDate>Thu, 10 May 2012 03:16:37 +0000</pubDate>
		<dc:creator>木木</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Serializable]]></category>

		<guid isPermaLink="false">http://www.appfen.com/?p=417</guid>
		<description><![CDATA[一个对象序列化的接口，一个类只有实现了Serializable接口，它的对象才是可序列化的。因此如果要序列化某些类的对象，这些类就必须实现Serializable接口。而实际上，Serializable是一个空接口，没有什么具体内容，它的目的只是简单的标识一个类的对象可以被序列化。 什么情况下需要序列化 a）当你想把的内存中的对象写入到硬盘的时候； b）当你想用套接字在网络上传送对象的时候； c）当你想通过RMI传输对象的时候； 再稍微解释一下:a)比如说你的内存不够用了，那计算机就要将内存里面的一部分对象暂时的保存到硬盘中，等到要用的时候再读入到内存中，硬盘的那部分存储空间就是所谓的虚拟内存。在比如过你要将某个特定的对象保存到文件中，我隔几天在把它拿出来用，那么这时候就要实现Serializable接口； b)在进行java的Socket编程的时候，你有时候可能要传输某一类的对象，那么也就要实现Serializable接口；最常见的你传输一个字符串，它是JDK里面的类，也实现了Serializable接口，所以可以在网络上传输。 c)如果要通过远程的方法调用（RMI）去调用一个远程对象的方法，如在计算机A中调用另一台计算机B的对象的方法，那么你需要通过JNDI服务获取计算机B目标对象的引用，将对象从B传送到A，就需要实现序列化接口。<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p><strong>一个对象序列化的接口，一个类只有实现了Serializable接口，它的对象才是可序列化的。因此如果要序列化某些类的对象，这些类就必须实现Serializable接口。而实际上，Serializable是一个空接口，没有什么具体内容，它的目的只是简单的标识一个类的对象可以被序列化。</strong></p>
<p>什么情况下需要序列化<br />
a）当你想把的内存中的对象写入到硬盘的时候；<br />
b）当你想用套接字在网络上传送对象的时候；<br />
c）当你想通过RMI传输对象的时候；<br />
再稍微解释一下:a)比如说你的内存不够用了，那计算机就要将内存里面的一部分对象暂时的保存到硬盘中，等到要用的时候再读入到内存中，硬盘的那部分存储空间就是所谓的虚拟内存。在比如过你要将某个特定的对象保存到文件中，我隔几天在把它拿出来用，那么这时候就要实现Serializable接口；<br />
b)在进行java的Socket编程的时候，你有时候可能要传输某一类的对象，那么也就要实现Serializable接口；最常见的你传输一个字符串，它是JDK里面的类，也实现了Serializable接口，所以可以在网络上传输。<br />
c)如果要通过远程的方法调用（RMI）去调用一个远程对象的方法，如在计算机A中调用另一台计算机B的对象的方法，那么你需要通过JNDI服务获取计算机B目标对象的引用，将对象从B传送到A，就需要实现序列化接口。</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.appfen.com/2012/java-io-serializable.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>详解jdk命令</title>
		<link>http://www.appfen.com/2012/java-jdk-instruct.html</link>
		<comments>http://www.appfen.com/2012/java-jdk-instruct.html#comments</comments>
		<pubDate>Thu, 10 May 2012 01:03:42 +0000</pubDate>
		<dc:creator>木木</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jdk命令]]></category>

		<guid isPermaLink="false">http://www.appfen.com/?p=413</guid>
		<description><![CDATA[1、java.exe: 运行java程序。 2、javac.exe: 编译的Java程序，生成.class文件 3、javaw.exe： 功能: 跟java命令相对的，可以运行.class文件,主要用来执行图形界面的java程序运行java命令时，会出现并保持一个console窗口,程序中的信息可以通过System.out在console内输出，而运行javaw，开始时会出现console，当主程序调用之后，console就会消失； javaw 大多用来运行GUI程序 4、javah 功能说明： C 头文件和 Stub 文件生成器。javah 从 Java 类生成 C 头文件和 C 源文件。这些文件提供了连接胶合，使 Java 和 C 代码可进行交互。 语法： javah [ 命令选项 ] fully-qualified-classname. . . javah_g [ 命令选项 ] fully-qualified-classname. . . 5、javap 功能说明： Java 类文件解析器。 语法： javap [ 命令选项 ] class. . . 补充说明： javap [...]<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fmssql-mysql-oracle.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-jdk-instruct.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">MSSQL MYSQL ORACLE一些常用的命令</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p><strong>1、java.exe:</strong><br />
运行java程序。 </p>
<p><strong>2、javac.exe:</strong><br />
编译的Java程序，生成.class文件 </p>
<p><strong>3、javaw.exe： </strong><br />
功能:<br />
    跟java命令相对的，可以运行.class文件,主要用来执行图形界面的java程序运行java命令时，会出现并保持一个console窗口,程序中的信息可以通过System.out在console内输出，而运行javaw，开始时会出现console，当主程序调用之后，console就会消失； javaw 大多用来运行GUI程序</p>
<p><strong>4、javah</strong><br />
功能说明：<br />
    C 头文件和 Stub 文件生成器。javah 从 Java 类生成 C 头文件和 C 源文件。这些文件提供了连接胶合，使 Java 和 C 代码可进行交互。<br />
语法：<br />
javah [ 命令选项 ] fully-qualified-classname. . .<br />
javah_g [ 命令选项 ] fully-qualified-classname. . .</p>
<p><strong>5、javap</strong><br />
功能说明：<br />
    Java 类文件解析器。<br />
语法： javap [ 命令选项 ] class. . .<br />
补充说明：<br />
    javap 命令用于解析类文件。其输出取决于所用的选项。若没有使用选项，javap 将输出传递给它的类的 public 域及方法。javap 将其输出到标准输出设备上。 </p>
<p><strong>6.jdb.exe</strong><br />
功能：Java的一个命令行调试环境，既可在本地，也可在与远程的解释器的一次对话中执行。<br />
用法：<br />
jdb于本地机器中可用如下的命令启动：<br />
C:\>jdb classname<br />
当你使用-debug选项开始一个Java例程时， 必须提供给Jdb 一个密码， 这样 Jdb才能开始运转起来。下表包含了所有jdb命令。 </p>
<p><strong>7、javaws.exe</strong><br />
功能:Java应用程序高速缓存查看器.<br />
用法:具有图形界面,可以直接进行操作.</p>
<p><strong>8、jconsole.exe</strong><br />
功能:<br />
    J2SE监测和管理控制台&#8212;一个同JMX兼容的监测Java虚拟机的图形工具。其能够监视当地或者远程的Java虚拟机。<br />
    Java监视和管理控制台,JConsole使用JVM的可扩展性Java管理扩展(JMX)工具来提供关于运行于Java平台的应用程序的性能和资源消耗的信息。<br />
    在J2SE 5.0软件中，你需要启动使用-Dcom.sun.management.jmxremote选项监控的应用程序。注意：在Java SE 6软件中，不再有这一要求。当启动该应用程序时，不需要特定的命令行选项。<br />
    在生产系统中的应用,JConsole启动一个在被观察的Java程序的JVM内部的JMX代理。运行另外一部分代码仅有一点极微弱的影响-但是影响很小。<br />
　　另外，尽管JConsole在监视本地应用程序的开发和快速原型开发中很有用，但在实际的应用系统中不推荐使用。理由是，JConsole本身也消耗大量的系统资源。我们推荐的方法是用远程监控来把JConsole应用程序与被监控的系统加以隔离。因此,对于应用系统来说,以远程模式使用JConsole更好些。对于安全的远程监控来说,可以使用安全选项。<br />
用法:具有图形界面,可直接操作,查看摘要、内存、线程、类、MBean,VM的信息。</p>
<p><strong>9、jps.exe</strong><br />
功能:<br />
    java虚拟机进程状态工具&#8212;在目标系统上列出装备有HotSpot Java的虚拟机<br />
    启动了 Java 进程时，请使用 jps 工具来通过键入 jps 标识其 JVM。它向您提供一个正在运行的 Java 进程的列表，这些进程以其 JVM 作为 ID。<br />
    jps相当于Solaris进程工具ps。更多的信息，请参考《jps-Java Virtual Machine Process Status Tool》。不象”pgrep java”或”ps -ef | grep java”，jps并不使用应用程序名来查找JVM实例。因此，它查找所有的Java应用程序，包括即使没有使用java执行体的那种（例如，定制的启动器）。另外，jps仅查找当前用户的Java进程，而不是当前系统中的所有进程。</p>
<p>用法:<br />
usage: jps [-help]<br />
       jps [-q] [-mlvV] [<hostid>]<br />
Definitions:<br />
    <hostid>:      <hostname>[:
<port>]</p>
<p><strong>10、jstat.exe</strong><br />
功能:<br />
    JVM监控工具,java虚拟机统计监视工具&#8212;附加到一个装备了HotSpot的java虚拟机上来采集并且记录性能统计情况<br />
    jstat显示一个测量（instrumented）Java HotSpot虚拟机的性能统计信息（请参考《jstat-Java Virtual Machine Statistics Monitoring Tool》）。有关于性能计数器的更详细的信息请参考《Code sample-jvmstat 3.0》。</p>
<p><strong>11、jstatd.exe</strong><br />
功能:<br />
    java虚拟机的jstat守护程序&#8212;启动一个RMI服务器程序来监视各个HotSpot java虚拟机的创建和中止。并且提供了一个访问远程监视工具接入的接口。<br />
    jstatd是一个Java远程方法调用(RMI)服务器应用程序-它监控测量Java HotSpot虚拟机的创建和终止并且提供一个接口来允许远程监控工具依附到运行于本地主机的JVM（请参考《jstatd-Virtual Machine jstat Daemon》）。<br />
　　在应用系统中的使用<br />
　　jps及其它jvmstat实用程序都使用极为轻量级的观察机制。由JVM分配一小部分共享内存，而性能计数器也是从这部分内存中分配的。JVM子系统基于其感兴趣的事件更新性能计数器。客户端工具仅仅负责异步地从共享内存段中进行读取。因此，总的来说，使用jvmstat进行监控的效果是很小的。 </p>
<p><strong>12-14、kinit.exe,klist.exe,ktab.exe</strong><br />
功能:Java安全管理工具</p>
<p><strong>15、native2ascii.exe</strong><br />
功能说明：<br />
    将含有本地编码字符（既非 Latin1 又非 Unicode 字符）的文件转换为 Unicode 编码字符的文件。<br />
语法：<br />
native2ascii [options] [inputfile [outputfile]]<br />
补充说明：<br />
Java 编译器和其它 Java 工具只能处理含有 Latin-1 和/或 Unicode 编码（udddd 记号）字符的文件。native2ascii 将含有其它字符编码的文件转换成含 Latin-1 和/或 Unicode 编码字符的文件。若省略 outputfile，则使用标准输出设备输出。此外，如果也省略 inputfile，则使用标准输入设备输入。<br />
命令选项<br />
-reverse 执行相反的操作：将含 Latin-1 和/或 Unicode 编码字符的文件转换成含本地编码字符的文件。<br />
-encoding[encoding_name] 指定转换过程使用的编码名称。缺省的编码从系统属性 file.encoding 中得到。 </p>
<p><strong>16、ordb.exe</strong><br />
用法：orbd <选项><br />
其中，<选项> 包括：<br />
-port             启动 ORBD 的激活端口，缺省值为 1049 (可选)<br />
-defaultdb         ORBD 文件的目录，缺省值为 “./orb.db” (可选)<br />
-serverid         ORBD 的服务器标识符，缺省值为 1 (可选)<br />
-ORBInitialPort     初始端口（必需）<br />
-ORBInitialHost     初始主机名称（必需） </p>
<p>欢迎使用 Java IDL 服务器工具<br />
请在提示处输入命令 </p>
<p><strong>17、idlj编译器用法：</strong><br />
java com.sun.tools.corba.se.idl.toJavaPortable.Compile [选项] <idl 文件><br />
其中，<idl 文件> 是包含 IDL 定义的文件的名称，而[选项] 是以下所列选项的任一组合。这些选项是可选的并且可以以任意顺序显示；<idl 文件> 是必须的并且必须显示在最后。</p>
<p><strong> 18、tnameserv.exe</strong><br />
功能:提供命名服务的接口<br />
用法:详见:http://java.sun.com/j2se/1.5.0/docs/tooldocs/#idl </p>
<p><strong>19、rmic</strong><br />
功能说明：<br />
rmic 为远程对象生成 stub 和 skeleton。<br />
语法：<br />
rmic [ options ] package-qualified-class-name(s)</p>
<p><strong>20、rmid</strong></p>
<p>功能说明：<br />
rmid 启动激活系统守护进程，以便能够在 Java 虚拟机上注册和激活对象。<br />
语法：<br />
rmid [-port port] [-log dir] </p>
<p><strong>21、rmiregistry</strong><br />
功能说明：<br />
rmiregistry 命令可在当前主机的指定端口上启动远程对象注册服务程序。<br />
语法：<br />
rmiregistry [port]</p>
<p><strong> 22、packager.exe</strong><br />
功能:对象包装程序.<br />
用法:具有图形界面与操作菜单.</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fmssql-mysql-oracle.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-jdk-instruct.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">MSSQL MYSQL ORACLE一些常用的命令</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fspring-3-mvc-process.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-jdk-instruct.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">图解Spring 3.x MVC 整体流程</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.appfen.com/2012/java-jdk-instruct.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java调用SQL Server的存储过程详解</title>
		<link>http://www.appfen.com/2012/java-transfer-sql-server-process.html</link>
		<comments>http://www.appfen.com/2012/java-transfer-sql-server-process.html#comments</comments>
		<pubDate>Thu, 10 May 2012 01:00:57 +0000</pubDate>
		<dc:creator>木木</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[存储过程]]></category>

		<guid isPermaLink="false">http://www.appfen.com/?p=411</guid>
		<description><![CDATA[1使用不带参数的存储过程 　　使用 JDBC 驱动程序调用不带参数的存储过程时，必须使用 call SQL 转义序列。不带参数的 call 转义序列的语法如下所示： 　　 以下是引用片段： {call procedure-name} 　　作为实例，在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程： 　　 以下是引用片段： CREATE PROCEDURE GetContactFormalNames 　　AS 　　BEGIN 　　 SELECT TOP 10 Title + &#8216; &#8216; + FirstName + &#8216; &#8216; + LastName AS FormalName 　　 FROM Person.Contact 　　END 此存储过程返回单个结果集，其中包含一列数据(由 Person.Contact 表中前十个联系人的称呼、名称和姓氏组成)。 　　在下面的实例中，将向此函数传递 AdventureWorks 示例数据库的打开连接，然后使用 executeQuery 方法调用 [...]<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-codeing-jianyi.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-transfer-sql-server-process.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">JAVA代码编写的30条建议</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-thread-notify-notifyall.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-transfer-sql-server-process.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java多线程notify和notifyall的区别</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fsql-set-quoted_identifier_abort.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-transfer-sql-server-process.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">SQL存储过程中的几个常见设定</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fsql-yuju-cunchu-guocheng.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-transfer-sql-server-process.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">统计SQL语句和存储过程</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p><strong>1使用不带参数的存储过程</strong><br />
　　使用 JDBC 驱动程序调用不带参数的存储过程时，必须使用 call SQL 转义序列。不带参数的 call 转义序列的语法如下所示：<br />
　　<br />
以下是引用片段：<br />
{call procedure-name}</p>
<p>　　作为实例，在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程：<br />
　　<br />
以下是引用片段：<br />
CREATE PROCEDURE GetContactFormalNames<br />
　　AS<br />
　　BEGIN<br />
　　 SELECT TOP 10 Title + &#8216; &#8216; + FirstName + &#8216; &#8216; + LastName AS FormalName<br />
　　 FROM Person.Contact<br />
　　END<br />
此存储过程返回单个结果集，其中包含一列数据(由 Person.Contact 表中前十个联系人的称呼、名称和姓氏组成)。</p>
<p>　　在下面的实例中，将向此函数传递 AdventureWorks 示例数据库的打开连接，然后使用 executeQuery 方法调用 GetContactFormalNames 存储过程。</p>
<p>以下是引用片段：<br />
　　public static void executeSprocNoParams(Connection con) &#8230;{<br />
　　 try &#8230;{<br />
　　 Statement stmt = con.createStatement();<br />
　　ResultSet rs = stmt.executeQuery(“{call dbo.GetContactFormalNames}”);<br />
　　<br />
　　 while (rs.next()) &#8230;{<br />
　System.out.println(rs.getString(“FormalName”));<br />
　　}<br />
　　rs.close();<br />
　　stmt.close();<br />
　 }<br />
　　catch (Exception e) &#8230;{<br />
　　e.printStackTrace();<br />
　　}<br />
　　}</p>
<p><strong>　　2使用带有输入参数的存储过程</strong><br />
　　使用 JDBC 驱动程序调用带参数的存储过程时，必须结合 SQLServerConnection 类的 prepareCall 方法使用 call SQL 转义序列。带有 IN 参数的 call 转义序列的语法如下所示：<br />
　　<br />
以下是引用片段：<br />
{call procedure-name[([parameter][,[parameter]]&#8230;)]}</p>
<p>　　构造 call 转义序列时，请使用 ?(问号)字符来指定 IN 参数。此字符充当要传递给该存储过程的参数值的占位符。可以使用 SQLServerPreparedStatement 类的 setter 方法之一为参数指定值。可使用的 setter 方法由 IN 参数的数据类型决定。<br />
　　向 setter 方法传递值时，不仅需要指定要在参数中使用的实际值，还必须指定参数在存储过程中的序数位置。例如，如果存储过程包含单个 IN 参数，则其序数值为 1。如果存储过程包含两个参数，则第一个序数值为 1，第二个序数值为 2。<br />
　　作为如何调用包含 IN 参数的存储过程的实例，使用 SQL Server 2005 AdventureWorks 示例数据库中的 uspGetEmployeeManagers 存储过程。此存储过程接受名为 EmployeeID 的单个输入参数(它是一个整数值)，然后基于指定的 EmployeeID 返回雇员及其经理的递归列表。下面是调用此存储过程的 Java 代码：<br />
　　</p>
<p>以下是引用片段：<br />
　　public static void executeSprocInParams(Connection con) &#8230;{<br />
　　 try &#8230;{<br />
　　 PreparedStatement pstmt = con.prepareStatement(“{call dbo.uspGetEmployeeManagers(?)}”);<br />
　　 pstmt.setInt(1, 50);<br />
　　 ResultSet rs = pstmt.executeQuery();<br />
　　 while (rs.next()) &#8230;{<br />
　　 System.out.println(“EMPLOYEE:”);<br />
　　 System.out.println(rs.getString(“LastName”) + “, ” + rs.getString(“FirstName”));<br />
　　 System.out.println(“MANAGER:”);<br />
　　 System.out.println(rs.getString(“ManagerLastName”) + “, ” + rs.getString(“ManagerFirstName”));<br />
　　 System.out.println();<br />
　　 }<br />
　　 rs.close();<br />
　　 pstmt.close();<br />
　　 }<br />
　　 catch (Exception e) &#8230;{<br />
　　 e.printStackTrace();<br />
　　 }<br />
　　}</p>
<p><strong>　　3使用带有输出参数的存储过程</strong><br />
　　使用 JDBC 驱动程序调用此类存储过程时，必须结合 SQLServerConnection 类的 prepareCall 方法使用 call SQL 转义序列。带有 OUT 参数的 call 转义序列的语法如下所示：<br />
　　<br />
以下是引用片段：<br />
{call procedure-name[([parameter][,[parameter]]&#8230;)]}</p>
<p>　　构造 call 转义序列时，请使用 ?(问号)字符来指定 OUT 参数。此字符充当要从该存储过程返回的参数值的占位符。要为 OUT 参数指定值，必须在运行存储过程前使用 SQLServerCallableStatement 类的 registerOutParameter 方法指定各参数的数据类型。<br />
　　使用 registerOutParameter 方法为 OUT 参数指定的值必须是 java.sql.Types 所包含的 JDBC 数据类型之一，而它又被映射成本地 SQL Server 数据类型之一。有关 JDBC 和 SQL Server 数据类型的详细信息，请参阅了解 JDBC 驱动程序数据类型。<br />
　　当您对于 OUT 参数向 registerOutParameter 方法传递一个值时，不仅必须指定要用于此参数的数据类型，而且必须在存储过程中指定此参数的序号位置或此参数的名称。例如，如果存储过程包含单个 OUT 参数，则其序数值为 1;如果存储过程包含两个参数，则第一个序数值为 1，第二个序数值为 2。<br />
　　作为实例，在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程： 根据指定的整数 IN 参数 (employeeID)，该存储过程也返回单个整数 OUT 参数 (managerID)。根据 HumanResources.Employee 表中包含的 EmployeeID，OUT 参数中返回的值为 ManagerID。<br />
　　在下面的实例中，将向此函数传递 AdventureWorks 示例数据库的打开连接，然后使用 execute 方法调用 GetImmediateManager 存储过程：</p>
<p>以下是引用片段：<br />
　　public static void executeStoredProcedure(Connection con) &#8230;{<br />
　　 try &#8230;{<br />
　　 CallableStatement cstmt = con.prepareCall(“{call dbo.GetImmediateManager(?, ?)}”);<br />
　　 cstmt.setInt(1, 5);<br />
　　 cstmt.registerOutParameter(2, java.sql.Types.INTEGER);<br />
　　 cstmt.execute();<br />
　　 System.out.println(“MANAGER ID: ” + cstmt.getInt(2));<br />
　　 }<br />
　　 catch (Exception e) &#8230;{<br />
　　 e.printStackTrace();<br />
　　 }<br />
　　}<br />
本示例使用序号位置来标识参数。或者，也可以使用参数的名称(而非其序号位置)来标识此参数。下面的代码示例修改了上一个示例，以说明如何在 Java 应用程序中使用命名参数。请注意，这些参数名称对应于存储过程的定义中的参数名称： CREATE PROCEDURE GetImmediateManager</p>
<p>　　<br />
以下是引用片段：<br />
 @employeeID INT,<br />
　　 @managerID INT OUTPUT<br />
　　AS<br />
　　BEGIN<br />
　　 SELECT @managerID = ManagerID<br />
　　 FROM HumanResources.Employee<br />
　　 WHERE EmployeeID = @employeeID<br />
　　END<br />
　　存储过程可能返回更新计数和多个结果集。Microsoft SQL Server 2005 JDBC Driver 遵循 JDBC 3.0 规范，此规范规定在检索 OUT 参数之前应检索多个结果集和更新计数。也就是说，应用程序应先检索所有 ResultSet 对象和更新计数，然后使用 CallableStatement.getter 方法检索 OUT 参数。否则，当检索 OUT 参数时，尚未检索的 ResultSet 对象和更新计数将丢失。</p>
<p>　<strong>　4 使用带有返回状态的存储过程</strong><br />
　　使用 JDBC 驱动程序调用这种存储过程时，必须结合 SQLServerConnection 类的 prepareCall 方法使用 call SQL 转义序列。返回状态参数的 call 转义序列的语法如下所示：<br />
　<br />
以下是引用片段：<br />
　{[?=]call procedure-name[([parameter][,[parameter]]&#8230;)]}<br />
　　构造 call 转义序列时，请使用 ?(问号)字符来指定返回状态参数。此字符充当要从该存储过程返回的参数值的占位符。要为返回状态参数指定值，必须在执行存储过程前使用 SQLServerCallableStatement 类的 registerOutParameter 方法指定参数的数据类型。</p>
<p>　　此外，向 registerOutParameter 方法传递返回状态参数值时，不仅需要指定要使用的参数的数据类型，还必须指定参数在存储过程中的序数位置。对于返回状态参数，其序数位置始终为 1，这是因为它始终是调用存储过程时的第一个参数。尽管 SQLServerCallableStatement 类支持使用参数的名称来指示特定参数，但您只能对返回状态参数使用参数的序号位置编号。<br />
　　作为实例，在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程：<br />
　　<br />
以下是引用片段：<br />
CREATE PROCEDURE CheckContactCity<br />
　　 (@cityName CHAR(50))<br />
　　AS<br />
　　BEGIN<br />
　　 IF ((SELECT COUNT(*)<br />
　　 FROM Person.Address<br />
　　 WHERE City = @cityName) > 1)<br />
　　 RETURN 1<br />
　　ELSE<br />
　　 RETURN 0<br />
　　END<br />
　　该存储过程返回状态值 1 或 0，这取决于是否能在表 Person.Address 中找到 cityName 参数指定的城市。</p>
<p>　　在下面的实例中，将向此函数传递 AdventureWorks 示例数据库的打开连接，然后使用 execute 方法调用 CheckContactCity 存储过程：<br />
　<br />
以下是引用片段：<br />
　public static void executeStoredProcedure(Connection con) &#8230;{<br />
　　 try &#8230;{<br />
　　 CallableStatement cstmt = con.prepareCall(“{? = call dbo.CheckContactCity(?)}”);<br />
　　 cstmt.registerOutParameter(1, java.sql.Types.INTEGER);<br />
　　 cstmt.setString(2, “Atlanta”);<br />
　　 cstmt.execute();<br />
　　 System.out.println(“RETURN STATUS: ” + cstmt.getInt(1));<br />
　　 }<br />
　　 cstmt.close();<br />
　　 catch (Exception e) &#8230;{<br />
　　 e.printStackTrace();<br />
　　 }<br />
　　}<br />
　<strong>　5 使用带有更新计数的存储过程</strong></p>
<p>　　使用 SQLServerCallableStatement 类构建对存储过程的调用之后，可以使用 execute 或 executeUpdate 方法中的任意一个来调用此存储过程。executeUpdate 方法将返回一个 int 值，该值包含受此存储过程影响的行数，但 execute 方法不返回此值。如果使用 execute 方法，并且希望获得受影响的行数计数，则可以在运行存储过程后调用 getUpdateCount 方法。<br />
　　作为实例，在 SQL Server 2005 AdventureWorks 示例数据库中创建以下表和存储过程：<br />
　　<br />
以下是引用片段：<br />
CREATE TABLE TestTable<br />
　　 (Col1 int IDENTITY,<br />
　　 Col2 varchar(50),<br />
　　 Col3 int);<br />
　　<br />
　　CREATE PROCEDURE UpdateTestTable<br />
　　 @Col2 varchar(50),<br />
　　 @Col3 int<br />
　　AS<br />
　　BEGIN<br />
　　 UPDATE TestTable<br />
　　 SET Col2 = @Col2, Col3 = @Col3<br />
　　END;<br />
在下面的实例中，将向此函数传递 AdventureWorks 示例数据库的打开连接，并使用 execute 方法调用 UpdateTestTable 存储过程，然后使用 getUpdateCount 方法返回受存储过程影响的行计数。<br />
以下是引用片段：<br />
public static void executeUpdateStoredProcedure(Connection con) &#8230;{<br />
　　 try &#8230;{<br />
　　 CallableStatement cstmt = con.prepareCall(“{call dbo.UpdateTestTable(?, ?)}”);<br />
　　 cstmt.setString(1, “A”);<br />
　　 cstmt.setInt(2, 100);<br />
　　 cstmt.execute();<br />
　　 int count = cstmt.getUpdateCount();<br />
　　 cstmt.close();<br />
　　<br />
　　 System.out.println(“ROWS AFFECTED: ” + count);<br />
　　 }<br />
　　 catch (Exception e) &#8230;{<br />
　　 e.printStackTrace();</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-codeing-jianyi.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-transfer-sql-server-process.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">JAVA代码编写的30条建议</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-thread-notify-notifyall.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-transfer-sql-server-process.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java多线程notify和notifyall的区别</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fsql-set-quoted_identifier_abort.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-transfer-sql-server-process.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">SQL存储过程中的几个常见设定</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fsql-yuju-cunchu-guocheng.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-transfer-sql-server-process.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">统计SQL语句和存储过程</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.appfen.com/2012/java-transfer-sql-server-process.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAVA代码编写的30条建议</title>
		<link>http://www.appfen.com/2012/java-codeing-jianyi.html</link>
		<comments>http://www.appfen.com/2012/java-codeing-jianyi.html#comments</comments>
		<pubDate>Tue, 08 May 2012 04:41:18 +0000</pubDate>
		<dc:creator>木木</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JAVA]]></category>

		<guid isPermaLink="false">http://www.appfen.com/?p=409</guid>
		<description><![CDATA[(1) 类名首字母应该大写。字段、方法以及对象（句柄）的首字母应小写。对于所有标识符，其中包含的所有单词都应紧靠在一起，而且大写中间单词的首字母。例如： ThisIsAClassName thisIsMethodOrFieldName 若在定义中出现了常数初始化字符，则大写static final基本类型标识符中的所有字母。这样便可标志出它们属于编译期的常数。 Java包（Package）属于一种特殊情况：它们全都是小写字母，即便中间的单词亦是如此。对于域名扩展名称，如com，org，net或者edu等，全部都应小写（这也是Java 1.1和Java 1.2的区别之一）。 (2) 为了常规用途而创建一个类时，请采取”经典形式”，并包含对下述元素的定义： equals() hashCode() toString() clone()（implement Cloneable） implement Serializable (3) 对于自己创建的每一个类，都考虑置入一个main()，其中包含了用于测试那个类的代码。为使用一个项目中的类，我们没必要删除测试代码。若进行了任何形式的改动，可方便地返回测试。这些代码也可作为如何使用类的一个示例使用。 (4) 应将方法设计成简要的、功能性单元，用它描述和实现一个不连续的类接口部分。理想情况下，方法应简明扼要。若长度很大，可考虑通过某种方式将其分割成较短的几个方法。这样做也便于类内代码的重复使用（有些时候，方法必须非常大，但它们仍应只做同样的一件事情）。 (5) 设计一个类时，请设身处地为客户程序员考虑一下（类的使用方法应该是非常明确的）。然后，再设身处地为管理代码的人考虑一下（预计有可能进行哪些形式的修改，想想用什么方法可把它们变得更简单）。 (6) 使类尽可能短小精悍，而且只解决一个特定的问题。下面是对类设计的一些建议： ■一个复杂的开关语句：考虑采用”多形”机制 ■数量众多的方法涉及到类型差别极大的操作：考虑用几个类来分别实现 ■许多成员变量在特征上有很大的差别：考虑使用几个类 (7) 让一切东西都尽可能地”私有”&#8211;private。可使库的某一部分”公共化”（一个方法、类或者一个字段等等），就永远不能把它拿出。若强行拿出，就可能破坏其他人现有的代码，使他们不得不重新编写和设计。若只公布自己必须公布的，就可放心大胆地改变其他任何东西。在多线程环境中，隐私是特别重要的一个因素&#8211;只有private字段才能在非同步使用的情况下受到保护。 (8) 谨惕”巨大对象综合症”。对一些习惯于顺序编程思维、且初涉OOP领域的新手，往往喜欢先写一个顺序执行的程序，再把它嵌入一个或两个巨大的对象里。根据编程原理，对象表达的应该是应用程序的概念，而非应用程序本身。 (9) 若不得已进行一些不太雅观的编程，至少应该把那些代码置于一个类的内部。 (10) 任何时候只要发现类与类之间结合得非常紧密，就需要考虑是否采用内部类，从而改善编码及维护工作（参见第14章14.1.2小节的”用内部类改进代码”）。 (11) 尽可能细致地加上注释，并用javadoc注释文档语法生成自己的程序文档。 (12) 避免使用”魔术数字”，这些数字很难与代码很好地配合。如以后需要修改它，无疑会成为一场噩梦，因为根本不知道”100&#8243;到底是指”数组大小”还是”其他全然不同的东西”。所以，我们应创建一个常数，并为其使用具有说服力的描述性名称，并在整个程序中都采用常数标识符。这样可使程序更易理解以及更易维护。 (13) 涉及构建器和异常的时候，通常希望重新丢弃在构建器中捕获的任何异常&#8211;如果它造成了那个对象的创建失败。这样一来，调用者就不会以为那个对象已正确地创建，从而盲目地继续。 (14) 当客户程序员用完对象以后，若你的类要求进行任何清除工作，可考虑将清除代码置于一个良好定义的方法里，采用类似于cleanup()这样的名字，明确表明自己的用途。除此以外，可在类内放置一个boolean（布尔）标记，指出对象是否已被清除。在类的finalize()方法里，请确定对象已被清除，并已丢弃了从RuntimeException继承的一个类（如果还没有的话），从而指出一个编程错误。在采取象这样的方案之前，请确定finalize()能够在自己的系统中工作（可能需要调用System.runFinalizersOnExit(true)，从而确保这一行为）。 (15) 在一个特定的作用域内，若一个对象必须清除（非由垃圾收集机制处理），请采用下述方法：初始化对象；若成功，则立即进入一个含有finally从句的try块，开始清除工作。 (16) 若在初始化过程中需要覆盖（取消）finalize()，请记住调用super.finalize()（若Object属于我们的直接超类，则无此必要）。在对finalize()进行覆盖的过程中，对super.finalize()的调用应属于最后一个行动，而不应是第一个行动，这样可确保在需要基础类组件的时候它们依然有效。 (17) 创建大小固定的对象集合时，请将它们传输至一个数组（若准备从一个方法里返回这个集合，更应如此操作）。这样一来，我们就可享受到数组在编译期进行类型检查的好处。此外，为使用它们，数组的接收者也许并不需要将对象”造型”到数组里。 (18) 尽量使用interfaces，不要使用abstract类。若已知某样东西准备成为一个基础类，那么第一个选择应是将其变成一个interface（接口）。只有在不得不使用方法定义或者成员变量的时候，才需要将其变成一个abstract（抽象）类。接口主要描述了客户希望做什么事情，而一个类则致力于（或允许）具体的实施细节。 (19) 在构建器内部，只进行那些将对象设为正确状态所需的工作。尽可能地避免调用其他方法，因为那些方法可能被其他人覆盖或取消，从而在构建过程中产生不可预知的结果（参见第7章的详细说明）。 [...]<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-thread-notify-notifyall.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-codeing-jianyi.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java多线程notify和notifyall的区别</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-mixed-code.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-codeing-jianyi.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java各种乱码问题处理办法</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-transfer-sql-server-process.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-codeing-jianyi.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java调用SQL Server的存储过程详解</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-get-directory.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-codeing-jianyi.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java获取当前目录的简易方法</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>(1) 类名首字母应该大写。字段、方法以及对象（句柄）的首字母应小写。对于所有标识符，其中包含的所有单词都应紧靠在一起，而且大写中间单词的首字母。例如：<br />
ThisIsAClassName<br />
thisIsMethodOrFieldName<br />
若在定义中出现了常数初始化字符，则大写static final基本类型标识符中的所有字母。这样便可标志出它们属于编译期的常数。<br />
Java包（Package）属于一种特殊情况：它们全都是小写字母，即便中间的单词亦是如此。对于域名扩展名称，如com，org，net或者edu等，全部都应小写（这也是Java 1.1和Java 1.2的区别之一）。 </p>
<p>(2) 为了常规用途而创建一个类时，请采取”经典形式”，并包含对下述元素的定义： </p>
<p>equals()<br />
hashCode()<br />
toString()<br />
clone()（implement Cloneable）<br />
implement Serializable </p>
<p>(3) 对于自己创建的每一个类，都考虑置入一个main()，其中包含了用于测试那个类的代码。为使用一个项目中的类，我们没必要删除测试代码。若进行了任何形式的改动，可方便地返回测试。这些代码也可作为如何使用类的一个示例使用。 </p>
<p>(4) 应将方法设计成简要的、功能性单元，用它描述和实现一个不连续的类接口部分。理想情况下，方法应简明扼要。若长度很大，可考虑通过某种方式将其分割成较短的几个方法。这样做也便于类内代码的重复使用（有些时候，方法必须非常大，但它们仍应只做同样的一件事情）。 </p>
<p>(5) 设计一个类时，请设身处地为客户程序员考虑一下（类的使用方法应该是非常明确的）。然后，再设身处地为管理代码的人考虑一下（预计有可能进行哪些形式的修改，想想用什么方法可把它们变得更简单）。<br />
(6) 使类尽可能短小精悍，而且只解决一个特定的问题。下面是对类设计的一些建议：<br />
■一个复杂的开关语句：考虑采用”多形”机制<br />
■数量众多的方法涉及到类型差别极大的操作：考虑用几个类来分别实现<br />
■许多成员变量在特征上有很大的差别：考虑使用几个类 </p>
<p>(7) 让一切东西都尽可能地”私有”&#8211;private。可使库的某一部分”公共化”（一个方法、类或者一个字段等等），就永远不能把它拿出。若强行拿出，就可能破坏其他人现有的代码，使他们不得不重新编写和设计。若只公布自己必须公布的，就可放心大胆地改变其他任何东西。在多线程环境中，隐私是特别重要的一个因素&#8211;只有private字段才能在非同步使用的情况下受到保护。 </p>
<p>(8) 谨惕”巨大对象综合症”。对一些习惯于顺序编程思维、且初涉OOP领域的新手，往往喜欢先写一个顺序执行的程序，再把它嵌入一个或两个巨大的对象里。根据编程原理，对象表达的应该是应用程序的概念，而非应用程序本身。 </p>
<p>(9) 若不得已进行一些不太雅观的编程，至少应该把那些代码置于一个类的内部。 </p>
<p>(10) 任何时候只要发现类与类之间结合得非常紧密，就需要考虑是否采用内部类，从而改善编码及维护工作（参见第14章14.1.2小节的”用内部类改进代码”）。 </p>
<p>(11) 尽可能细致地加上注释，并用javadoc注释文档语法生成自己的程序文档。 </p>
<p>(12) 避免使用”魔术数字”，这些数字很难与代码很好地配合。如以后需要修改它，无疑会成为一场噩梦，因为根本不知道”100&#8243;到底是指”数组大小”还是”其他全然不同的东西”。所以，我们应创建一个常数，并为其使用具有说服力的描述性名称，并在整个程序中都采用常数标识符。这样可使程序更易理解以及更易维护。 </p>
<p>(13) 涉及构建器和异常的时候，通常希望重新丢弃在构建器中捕获的任何异常&#8211;如果它造成了那个对象的创建失败。这样一来，调用者就不会以为那个对象已正确地创建，从而盲目地继续。 </p>
<p>(14) 当客户程序员用完对象以后，若你的类要求进行任何清除工作，可考虑将清除代码置于一个良好定义的方法里，采用类似于cleanup()这样的名字，明确表明自己的用途。除此以外，可在类内放置一个boolean（布尔）标记，指出对象是否已被清除。在类的finalize()方法里，请确定对象已被清除，并已丢弃了从RuntimeException继承的一个类（如果还没有的话），从而指出一个编程错误。在采取象这样的方案之前，请确定finalize()能够在自己的系统中工作（可能需要调用System.runFinalizersOnExit(true)，从而确保这一行为）。 </p>
<p>(15) 在一个特定的作用域内，若一个对象必须清除（非由垃圾收集机制处理），请采用下述方法：初始化对象；若成功，则立即进入一个含有finally从句的try块，开始清除工作。 </p>
<p>(16) 若在初始化过程中需要覆盖（取消）finalize()，请记住调用super.finalize()（若Object属于我们的直接超类，则无此必要）。在对finalize()进行覆盖的过程中，对super.finalize()的调用应属于最后一个行动，而不应是第一个行动，这样可确保在需要基础类组件的时候它们依然有效。 </p>
<p>(17) 创建大小固定的对象集合时，请将它们传输至一个数组（若准备从一个方法里返回这个集合，更应如此操作）。这样一来，我们就可享受到数组在编译期进行类型检查的好处。此外，为使用它们，数组的接收者也许并不需要将对象”造型”到数组里。 </p>
<p>(18) 尽量使用interfaces，不要使用abstract类。若已知某样东西准备成为一个基础类，那么第一个选择应是将其变成一个interface（接口）。只有在不得不使用方法定义或者成员变量的时候，才需要将其变成一个abstract（抽象）类。接口主要描述了客户希望做什么事情，而一个类则致力于（或允许）具体的实施细节。 </p>
<p>(19) 在构建器内部，只进行那些将对象设为正确状态所需的工作。尽可能地避免调用其他方法，因为那些方法可能被其他人覆盖或取消，从而在构建过程中产生不可预知的结果（参见第7章的详细说明）。 </p>
<p>(20) 对象不应只是简单地容纳一些数据；它们的行为也应得到良好的定义。 </p>
<p>(21) 在现成类的基础上创建新类时，请首先选择”新建”或”创作”。只有自己的设计要求必须继承时，才应考虑这方面的问题。若在本来允许新建的场合使用了继承，则整个设计会变得没有必要地复杂。 </p>
<p>(22) 用继承及方法覆盖来表示行为间的差异，而用字段表示状态间的区别。一个非常极端的例子是通过对不同类的继承来表示颜色，这是绝对应该避免的：应直接使用一个”颜色”字段。 </p>
<p>(23) 为避免编程时遇到麻烦，请保证在自己类路径指到的任何地方，每个名字都仅对应一个类。否则，编译器可能先找到同名的另一个类，并报告出错消息。若怀疑自己碰到了类路径问题，请试试在类路径的每一个起点，搜索一下同名的.class文件。 </p>
<p>(24) 在Java 1.1 AWT中使用事件”适配器”时，特别容易碰到一个陷阱。若覆盖了某个适配器方法，同时拼写方法没有特别讲究，最后的结果就是新添加一个方法，而不是覆盖现成方法。然而，由于这样做是完全合法的，所以不会从编译器或运行期系统获得任何出错提示&#8211;只不过代码的工作就变得不正常了。 </p>
<p>(25) 用合理的设计方案消除”伪功能”。也就是说，假若只需要创建类的一个对象，就不要提前限制自己使用应用程序，并加上一条”只生成其中一个”注释。请考虑将其封装成一个”独生子”的形式。若在主程序里有大量散乱的代码，用于创建自己的对象，请考虑采纳一种创造性的方案，将些代码封装起来。 </p>
<p>(26) 警惕”分析瘫痪”。请记住，无论如何都要提前了解整个项目的状况，再去考察其中的细节。由于把握了全局，可快速认识自己未知的一些因素，防止在考察细节的时候陷入”死逻辑”中。 </p>
<p>(27) 警惕”过早优化”。首先让它运行起来，再考虑变得更快&#8211;但只有在自己必须这样做、而且经证实在某部分代码中的确存在一个性能瓶颈的时候，才应进行优化。除非用专门的工具分析瓶颈，否则很有可能是在浪费自己的时间。性能提升的隐含代价是自己的代码变得难于理解，而且难于维护。 </p>
<p>(28) 请记住，阅读代码的时间比写代码的时间多得多。思路清晰的设计可获得易于理解的程序，但注释、细致的解释以及一些示例往往具有不可估量的价值。无论对你自己，还是对后来的人，它们都是相当重要的。如对此仍有怀疑，那么请试想自己试图从联机Java文档里找出有用信息时碰到的挫折，这样或许能将你说服。 </p>
<p>(29) 如认为自己已进行了良好的分析、设计或者实施，那么请稍微更换一下思维角度。试试邀请一些外来人士&#8211;并不一定是专家，但可以是来自本公司其他部门的人。请他们用完全新鲜的眼光考察你的工作，看看是否能找出你一度熟视无睹的问题。采取这种方式，往往能在最适合修改的阶段找出一些关键性的问题，避免产品发行后再解决问题而造成的金钱及精力方面的损失。 </p>
<p>(30) 良好的设计能带来最大的回报。简言之，对于一个特定的问题，通常会花较长的时间才能找到一种最恰当的解决方案。但一旦找到了正确的方法，以后的工作就轻松多了，再也不用经历数小时、数天或者数月的痛苦挣扎。我们的努力工作会带来最大的回报（甚至无可估量）。而且由于自己倾注了大量心血，最终获得一个出色的设计方案，成功的快感也是令人心动的。坚持抵制草草完工的诱惑&#8211;那样做往往得不偿失 </p>
<p>(3) 对于自己创建的每一个类，都考虑置入一个main()，其中包含了用于测试那 个类的代码。为使用一个项目中的类，我们没必要删除测试代码。若进行了任 何形式的改动，可方便地返回测试。这些代码也可作为如何使用类的一个示例 使用。 </p>
<p>this is absolutly bad! </p>
<p>(4) 应将方法设计成简要的、功能性单元，用它描述和实现一个不连续的类接 口部分。理想情况下，方法应简明扼要。若长度很大，可考虑通过某种方式将 其分割成较短的几个方法。这样做也便于类内代码的重复使用（有些时候，方 法必须非常大，但它们仍应只做同样的一件事情）。 </p>
<p>(5) 设计一个类时，请设身处地为客户程序员考虑一下（类的使用方法应该是 非常明确的）。然后，再设身处地为管理代码的人考虑一下（预计有可能进行 哪些形式的修改，想想用什么方法可把它们变得更简单）。<br />
(6) 使类尽可能短小精悍，而且只解决一个特定的问题。下面是对类设计的一 些建议：<br />
■一个复杂的开关语句：考虑采用”多形”机制<br />
■数量众多的方法涉及到类型差别极大的操作：考虑用几个类来分别实现<br />
■许多成员变量在特征上有很大的差别：考虑使用几个类 </p>
<p>(7) 让一切东西都尽可能地”私有”&#8211;private。可使库的某一部分”公共化”（一个 方法、类或者一个字段等等），就永远不能把它拿出。若强行拿出，就可能破 坏其他人现有的代码，使他们不得不重新编写和设计。若只公布自己必须公布 的，就可放心大胆地改变其他任何东西。在多线程环境中，隐私是特别重要的 一个因素&#8211;只有private字段才能在非同步使用的情况下受到保护。 </p>
<p>not necessary , pretotect or package level also fine in most case </p>
<p>(8) 谨惕”巨大对象综合症”。对一些习惯于顺序编程思维、且初涉OOP领域的新 手，往往喜欢先写一个顺序执行的程序，再把它嵌入一个或两个巨大的对象 里。根据编程原理，对象表达的应该是应用程序的概念，而非应用程序本身。 </p>
<p>(9) 若不得已进行一些不太雅观的编程，至少应该把那些代码置于一个类的内 部。 </p>
<p>(10) 任何时候只要发现类与类之间结合得非常紧密，就需要考虑是否采用内部 类，从而改善编码及维护工作（参见第14章14.1.2小节的”用内部类改进代 码”）。 </p>
<p>(11) 尽可能细致地加上注释，并用javadoc注释文档语法生成自己的程序文档。 </p>
<p>(12) 避免使用”魔术数字”，这些数字很难与代码很好地配合。如以后需要修改 它，无疑会成为一场噩梦，因为根本不知道”100&#8243;到底是指”数组大小”还是”其 他全然不同的东西”。所以，我们应创建一个常数，并为其使用具有说服力的描 述性名称，并在整个程序中都采用常数标识符。这样可使程序更易理解以及更 易维护。 </p>
<p>(13) 涉及构建器和异常的时候，通常希望重新丢弃在构建器中捕获的任何异常- -如果它造成了那个对象的创建失败。这样一来，调用者就不会以为那个对象已 正确地创建，从而盲目地继续。 </p>
<p>(14) 当客户程序员用完对象以后，若你的类要求进行任何清除工作，可考虑将 清除代码置于一个良好定义的方法里，采用类似于cleanup()这样的名字，明确 表明自己的用途。除此以外，可在类内放置一个boolean（布尔）标记，指出 对象是否已被清除。在类的finalize()方法里，请确定对象已被清除，并已丢弃 了从RuntimeException继承的一个类（如果还没有的话），从而指出一个编程 错误。在采取象这样的方案之前，请确定finalize()能够在自己的系统中工作 （可能需要调用System.runFinalizersOnExit(true)，从而确保这一行为）。 </p>
<p>(15) 在一个特定的作用域内，若一个对象必须清除（非由垃圾收集机制处 理），请采用下述方法：初始化对象；若成功，则立即进入一个含有finally从 句的try块，开始清除工作。 </p>
<p>(16) 若在初始化过程中需要覆盖（取消）finalize()，请记住调用 super.finalize()（若Object属于我们的直接超类，则无此必要）。在对finalize() 进行覆盖的过程中，对super.finalize()的调用应属于最后一个行动，而不应是第 一个行动，这样可确保在需要基础类组件的时候它们依然有效。 </p>
<p>(17) 创建大小固定的对象集合时，请将它们传输至一个数组（若准备从一个方 法里返回这个集合，更应如此操作）。这样一来，我们就可享受到数组在编译 期进行类型检查的好处。此外，为使用它们，数组的接收者也许并不需要将对 象”造型”到数组里。 </p>
<p>(18) 尽量使用interfaces，不要使用abstract类。若已知某样东西准备成为一个 基础类，那么第一个选择应是将其变成一个interface（接口）。只有在不得不 使用方法定义或者成员变量的时候，才需要将其变成一个abstract（抽象） 类。接口主要描述了客户希望做什么事情，而一个类则致力于（或允许）具体 的实施细节。 </p>
<p>they are total diffrent , </p>
<p>(19) 在构建器内部，只进行那些将对象设为正确状态所需的工作。尽可能地避 免调用其他方法，因为那些方法可能被其他人覆盖或取消，从而在构建过程中 产生不可预知的结果（参见第7章的详细说明）。 </p>
<p>(20) 对象不应只是简单地容纳一些数据；它们的行为也应得到良好的定义。 </p>
<p>(21) 在现成类的基础上创建新类时，请首先选择”新建”或”创作”。只有自己的设 计要求必须继承时，才应考虑这方面的问题。若在本来允许新建的场合使用了 继承，则整个设计会变得没有必要地复杂。 </p>
<p>(22) 用继承及方法覆盖来表示行为间的差异，而用字段表示状态间的区别。一 个非常极端的例子是通过对不同类的继承来表示颜色，这是绝对应该避免的： 应直接使用一个”颜色”字段。 </p>
<p>(23) 为避免编程时遇到麻烦，请保证在自己类路径指到的任何地方，每个名字 都仅对应一个类。否则，编译器可能先找到同名的另一个类，并报告出错消 息。若怀疑自己碰到了类路径问题，请试试在类路径的每一个起点，搜索一下 同名的.class文件。 </p>
<p>classpath is not that simple </p>
<p>(24) 在Java 1.1 AWT中使用事件”适配器”时，特别容易碰到一个陷阱。若覆盖了 某个适配器方法，同时拼写方法没有特别讲究，最后的结果就是新添加一个方 法，而不是覆盖现成方法。然而，由于这样做是完全合法的，所以不会从编译 器或运行期系统获得任何出错提示&#8211;只不过代码的工作就变得不正常了。 </p>
<p>(25) 用合理的设计方案消除”伪功能”。也就是说，假若只需要创建类的一个对 象，就不要提前限制自己使用应用程序，并加上一条”只生成其中一个”注释。 请考虑将其封装成一个”独生子”的形式。若在主程序里有大量散乱的代码，用 于创建自己的对象，请考虑采纳一种创造性的方案，将些代码封装起来。 </p>
<p>(26) 警惕”分析瘫痪”。请记住，无论如何都要提前了解整个项目的状况，再去 考察其中的细节。由于把握了全局，可快速认识自己未知的一些因素，防止在 考察细节的时候陷入”死逻辑”中。 </p>
<p>(27) 警惕”过早优化”。首先让它运行起来，再考虑变得更快&#8211;但只有在自己必须 这样做、而且经证实在某部分代码中的确存在一个性能瓶颈的时候，才应进行 优化。除非用专门的工具分析瓶颈，否则很有可能是在浪费自己的时间。性能 提升的隐含代价是自己的代码变得难于理解，而且难于维护。 </p>
<p>but know early and design better at first is always necesary, or else<br />
you die </p>
<p>(28) 请记住，阅读代码的时间比写代码的时间多得多。思路清晰的设计可获得 易于理解的程序，但注释、细致的解释以及一些示例往往具有不可估量的价 值。无论对你自己，还是对后来的人，它们都是相当重要的。如对此仍有怀 疑，那么请试想自己试图从联机Java文档里找出有用信息时碰到的挫折，这样 或许能将你说服。 </p>
<p>(29) 如认为自己已进行了良好的分析、设计或者实施，那么请稍微更换一下思 维角度。试试邀请一些外来人士&#8211;并不一定是专家，但可以是来自本公司其他 部门的人。请他们用完全新鲜的眼光考察你的工作，看看是否能找出你一度熟 视无睹的问题。采取这种方式，往往能在最适合修改的阶段找出一些关键性的 问题，避免产品发行后再解决问题而造成的金钱及精力方面的损失。 </p>
<p>(30) 良好的设计能带来最大的回报。简言之，对于一个特定的问题，通常会花 较长的时间才能找到一种最恰当的解决方案。但一旦找到了正确的方法，以后 的工作就轻松多了，再也不用经历数小时、数天或者数月的痛苦挣扎。我们的 努力工作会带来最大的回报（甚至无可估量）。而且由于自己倾注了大量心 血，最终获得一个出色的设计方案，成功的快感也是令人心动的。坚持抵制草 草完工的诱惑&#8211;那样做往往得不偿失。</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-thread-notify-notifyall.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-codeing-jianyi.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java多线程notify和notifyall的区别</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-mixed-code.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-codeing-jianyi.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java各种乱码问题处理办法</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-transfer-sql-server-process.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-codeing-jianyi.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java调用SQL Server的存储过程详解</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-get-directory.html&from=http%3A%2F%2Fwww.appfen.com%2F2012%2Fjava-codeing-jianyi.html">
                        <font size="-1"  style="line-height: 1.65em; font-size: 12px !important;">Java获取当前目录的简易方法</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.appfen.com/2012/java-codeing-jianyi.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

