<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>绿雪湖</title>
    <description></description>
    <link>http://lvxuehu.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>java 调用mysql客户端导入，导出数据</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/209736" style="color:red;">http://lvxuehu.javaeye.com/blog/209736</a>&nbsp;
          发表时间: 2008年06月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近遇到一个需求要在linux下用java调用mysql客户端远程登陆mysql服务器，从客户端机器导入mysql脚本，从mysql服务器端导出表中的数据。以下是用到的主要方法：<br /><br /><pre name="code" class="java"> 
   /**
    * 导入数据
     * @param  脚本的地址和名称
    * @return 是否成功
     */
    public static boolean importDb(String filepath) {
        boolean flag=true;
        System.out.println("filepaht = " + filepaht); //脚本地址

        String[]   cmd = {"cat "+filepaht+"| /usr/mysql/bin/mysql -uroot -p123456 --default-character-set=gbk -h142.16.254.2 test"};
        try {
            Process process = Runtime.getRuntime().exec(
                     new String[]{
                        "sh",
                        "-c",
                        cmd[0]});
            BufferedReader inputBufferedReader = new BufferedReader(
                    new InputStreamReader(process.getInputStream()));
            String line = null;
            while ((line = inputBufferedReader.readLine()) != null) {
                System.out.println(line);
            }
            try {
                process.waitFor();
            } catch (InterruptedException e) {
                flag=false;
                e.printStackTrace();
            }

        } catch (IOException e) {
            flag=false;
            e.printStackTrace();
        }
        return flag;
    }</pre><br /><br /><br />  <pre name="code" class="java">
    /**
    * 导出数据
     * @param sql:要执行的查询语句
     *@param filename：生成的文件地址和文件名
     * @return 是否成功
     */
    public static boolean exportDb(String sql,String filename) {
        boolean flag=true;
//        System.out.println("filename = " + filename);


        String[]   cmd = {"/usr/mysql/bin/mysql -uroot -p123456 --default-character-set=gbk -h142.16.254.2 test -e\""+sql+"\" > "+filename};
         System.out.println("cmd[0] = " + cmd[0]);
        try {
            Process process = Runtime.getRuntime().exec(
                     new String[]{
                        "sh",
                        "-c",
                        cmd[0]});
            BufferedReader inputBufferedReader = new BufferedReader(
                    new InputStreamReader(process.getInputStream()));
            String line = null;
            while ((line = inputBufferedReader.readLine()) != null) {
                System.out.println(line);
            }
            try {
                process.waitFor();
            } catch (InterruptedException e) {
                flag=false;
                e.printStackTrace();
            }

        } catch (IOException e) {
            flag=false;
            e.printStackTrace();
        }
        return flag;
    }</pre><br /><br /><br />服务器段mysql要加入登陆客户端机器的ip和权限；<br />文件夹要设置读写权限。
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/209736#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 30 Jun 2008 13:29:16 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/209736</link>
        <guid>http://lvxuehu.javaeye.com/blog/209736</guid>
      </item>
      <item>
        <title>ActionScript 3.0 Cookbook 中文版.pdf</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/183335" style="color:red;">http://lvxuehu.javaeye.com/blog/183335</a>&nbsp;
          发表时间: 2008年04月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          ActionScript 3.0 Cookbook 中文版 PDF
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/183335#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 16 Apr 2008 13:03:43 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/183335</link>
        <guid>http://lvxuehu.javaeye.com/blog/183335</guid>
      </item>
      <item>
        <title>两个免费的Flash Chart</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/182739" style="color:red;">http://lvxuehu.javaeye.com/blog/182739</a>&nbsp;
          发表时间: 2008年04月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          这段时间一直在弄flash的报表，在网上找到两个免费的Flash chart，功能比较强，能够直接在项目中使用。<br /><br />1.amchart<br />  官方地址：<a href="http://www.amcharts.com/" target="_blank">http://www.amcharts.com/</a><br />  截图：<br /><img src="http://lvxuehu.javaeye.com/upload/picture/pic/11929/48f47ead-35c1-3e74-8085-f4ade2946b69.jpg " /><br /><img src="http://lvxuehu.javaeye.com/upload/picture/pic/11937/757f410e-f996-3519-8a7e-87bedfdd0d9f.jpg " /><br /><img src="http://lvxuehu.javaeye.com/upload/picture/pic/11939/e537743d-0586-319a-8c6f-42bc3b59eabd.jpg " /><br /><img src="http://lvxuehu.javaeye.com/upload/picture/pic/11941/8042dbbc-e2ac-3320-870e-6e9d997014d8.jpg " /><br /><img src="http://lvxuehu.javaeye.com/upload/picture/pic/11943/3105e6dc-cb72-3ce9-b7e7-7f260cd152aa.jpg " /><br /><br />amchart是免费的flash chart组件。<br /><br /><br />2.open flash chart<br />  官方地址：<a href="http://teethgrinder.co.uk/open-flash-chart/" target="_blank">http://teethgrinder.co.uk/open-flash-chart/</a><br /><br />截图：<br /><img src="http://lvxuehu.javaeye.com/upload/picture/pic/11951/c0074563-801a-34e2-ac75-dddf5eca8ccb.jpg " /><br /><img src="http://lvxuehu.javaeye.com/upload/picture/pic/11953/a0db02cf-1750-3f51-b0a9-cc7bceccc327.jpg " /><br /><img src="http://lvxuehu.javaeye.com/upload/picture/pic/11955/a748cfed-8dd0-348e-a3a6-96779b613973.jpg " /><br /><br />open flash chart 不但是免费的，而且是开源的，你可以下载它的源代码，进行修改；
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/182739#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 14 Apr 2008 23:38:38 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/182739</link>
        <guid>http://lvxuehu.javaeye.com/blog/182739</guid>
      </item>
      <item>
        <title>Flex中设置LineChart中LineSeries的起始位置</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/180193" style="color:red;">http://lvxuehu.javaeye.com/blog/180193</a>&nbsp;
          发表时间: 2008年04月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在Flex LineChart中的默认的x轴是从0开始的，如果你的数据线起始位置是比较大的，那么在图表中会有很长一段位置是空白的,如下图所示：<br /><img src=" http://lvxuehu.javaeye.com/upload/picture/pic/11359/344e9d9b-4f7d-3393-8fdd-ade240ae2099.gif " /><br /><br />如果要使线的起始位置变为非0开始，可以添加一下代码设置：<br /><pre name="code" class="java">
&lt;mx:LineChart .....

            &lt;mx:verticalAxis>
                &lt;mx:LinearAxis baseAtZero="false" />
            &lt;/mx:verticalAxis>

            &lt;mx:series>
                .....
            &lt;/mx:series>
        &lt;/mx:LineChart>
</pre><br /><br /><br />设置后生成的图表如下：<br /><img src=" http://lvxuehu.javaeye.com/upload/picture/pic/11361/cca25cf7-2039-383d-a67d-ac096c807708.gif  " />
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/180193#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 07 Apr 2008 17:19:07 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/180193</link>
        <guid>http://lvxuehu.javaeye.com/blog/180193</guid>
      </item>
      <item>
        <title>在Flex3中设置Accordion下Canvas label 的文字样式</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/179913" style="color:red;">http://lvxuehu.javaeye.com/blog/179913</a>&nbsp;
          发表时间: 2008年04月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在Flex3中要设置Accordion下Canvas label 的文字样式，不能直接通过在Accordion或者Canvas 中设置fontSize来设置文字大小，必须在Accordion中设置headerStyleName的样式来控制Canvas label 的文字大小，比如：<br /><br /><pre name="code" class="java">
&lt;mx:Style>
    	.accordion {
	   font-size:12px;
	}
&lt;/mx:Style>

&lt;mx:Accordion headerStyleName="accordion">
     &lt;mx:Canvas label="图表数据" width="100%" height="100%">
  .......
    .......
</pre><br /><br /><br />这样就能设置 “图表数据”文字的大小为12px；
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/179913#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 06 Apr 2008 22:50:49 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/179913</link>
        <guid>http://lvxuehu.javaeye.com/blog/179913</guid>
      </item>
      <item>
        <title>清除windows网上邻居的登陆帐号密码</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/173376" style="color:red;">http://lvxuehu.javaeye.com/blog/173376</a>&nbsp;
          发表时间: 2008年03月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp; 如果登陆过某台winodws的网上邻居共享，而且是用帐号登陆，在第一次登陆时如果选择了记住密码，那么以后再登陆那台服务器的共享就不用输入帐号和密码了；</p><p>如果想用别的帐号登陆那台服务器的共享，就在&ldquo;运行&rdquo;里输入：control keymgr.dll</p><p>弹出一个窗口，选择窗口中的帐号，删除就行了；</p>
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/173376#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 18 Mar 2008 13:49:44 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/173376</link>
        <guid>http://lvxuehu.javaeye.com/blog/173376</guid>
      </item>
      <item>
        <title>linux 下查看文件内容的几个方法</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/172797" style="color:red;">http://lvxuehu.javaeye.com/blog/172797</a>&nbsp;
          发表时间: 2008年03月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>linux下查看文件内容的几种命令如下：</p><p>&nbsp;</p><p><strong>cat</strong>：由第一行开始显示文件所有内容；</p><p><strong>tac</strong>：从最后一行开始显示文件的所有内容，注意 tac 与cat 写法正好相反；</p><p>&nbsp;</p><p>cat [-n]&nbsp; 文件名</p><p>-n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示时，连行号一起显示到屏幕</p><p>&nbsp;tac&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文件名</p><p>&nbsp;</p><p><strong>more</strong>：一页一页的显示文件内容，只能向后翻页；</p><p><strong>less</strong>：也是一页一页显示文件内容，但是可以通过键盘上的【pagedown】，【pageup】控制向后，向前翻页；</p><p>&nbsp;</p><p>more 文件名</p><p>less 文件名</p><p>在less打开的文件中，通过输入：</p><p>&ldquo;/word&rdquo;&nbsp;&nbsp;&nbsp; 在文件中查找word这个字符串；</p><p>q：退出less画面；</p><p>&nbsp;</p><p>&nbsp;</p><p><strong>head</strong>：显示一个文件的前几行；</p><p><strong>tail</strong>：显示一个文件的后几行；</p><p>&nbsp;</p><p>head [-n number]</p><p>tail [-n number]</p><p>&nbsp;</p><p>number：要是显示的行数；</p><p>&nbsp;</p><p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/172797#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 16 Mar 2008 22:59:25 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/172797</link>
        <guid>http://lvxuehu.javaeye.com/blog/172797</guid>
      </item>
      <item>
        <title>一个Flex+Jsp+Mysql实现的增删查改例子</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/167701" style="color:red;">http://lvxuehu.javaeye.com/blog/167701</a>&nbsp;
          发表时间: 2008年03月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          这是一个Flex+Jsp+Mysql实现的增删查改例子，是在学习Flex技术时做的一个测试。<br />代码的结构不是很好，但可以实现基本的操作功能。希望对想学习Flex技术的人有所帮助。<br />先看看截图：<br /><img src="http://lvxuehu.javaeye.com/upload/picture/pic/8754/0a3a2b17-9be4-3bc9-ac7f-e209766b8ac3.gif" /><br />修改数据：<br /><img src="http://lvxuehu.javaeye.com/upload/picture/pic/8752/eb89650d-1a03-30a2-8fe6-f8aaec606e27.gif" /><br />添加数据：<br /><img src="http://lvxuehu.javaeye.com/upload/picture/pic/8750/32f653f0-2483-3c13-90c3-fe4544faffe6.gif" /><br /><br />Flex端说明：<br />Flex的IDE用的是FlexBuilder3。<br />Flex与Jsp的通信是用的HTTPService<br /><br />Jsp端说明：<br />Java程序是在Idea7.0，IDE的字符集设置成UTF-8调试通过的;<br /><br />在工程文件夹中有一个readme.txt文件。里面有一些说明和建表的语句；<br /><br /><br />web服务器端说明：<br />web服务器用的是：Tomcat5.5.20<br />如果出现中文乱码，请检查tomcat安装目录conf下的server.xml配置是否符合一下条件：<br />&lt;Connector port="8080" maxHttpHeaderSize="8192"<br />               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"<br />               enableLookups="false" redirectPort="8443" acceptCount="100"<br />               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK" /><br />  在这个后面添加 URIEncoding="GBK";<br />  <br />数据库说明：<br />   数据库用的是mysql4.1（mysql5应该也没有问题），建数据库时用的是UTF-8字符集，建表也是UTF-8字符集格式；
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/167701#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 04 Mar 2008 14:33:00 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/167701</link>
        <guid>http://lvxuehu.javaeye.com/blog/167701</guid>
      </item>
      <item>
        <title>Flex 的 scale-9 图片处理</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/166952" style="color:red;">http://lvxuehu.javaeye.com/blog/166952</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Flex支持使用scale-9定义植入的图片。scale-9可以让你定义在一个图片上独立分割9个区域。这九个区域是由穿过图片两条水平线和两条竖线定义的，这样，图片的每条边会被分割成三个区域。如果图片有一些特殊的边，用普通的样式无法呈现，或者图片有圆角，scale-9可以使图片缩放的时候更加清晰。如果处理得好，可以看到图片缩放是甚至不会有明显的模糊感。很多时候我们用来这个方法来制作可以变尺寸的按钮，而这些按钮美工设计得美仑美奂，如果只是用美工的设计原稿图片来做按钮，当尺寸没有变化时效果非常好，但是当按钮的尺寸发生变化时，可能按钮会变得很丑。<br /><br /><br />如下图：<br /><br /><img src="http://lvxuehu.javaeye.com/upload/picture/pic/8716/c4efbd5a-0055-35a7-b726-8d3e54abc539.gif?1204526834" /><br /><br />在mxml中的代码如下：<br /><br />    <pre name="code" class="java">&lt;mx:Script>

      &lt;![CDATA[

            [Embed(source="slice_9_grid.gif", 

                scaleGridTop="5", scaleGridBottom="25", 

                scaleGridLeft="7", scaleGridRight="60")]

            [Bindable]

            public var imgCls:Class;            

        ]]&gt;
   &lt;/mx:Script>
</pre>    <br /><br />这样引用图片就不会因为程序的放大和缩小而使图片伸缩。图片只会伸缩图片上标记为“伸缩部分”的地方。
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/166952#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 14:49:18 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/166952</link>
        <guid>http://lvxuehu.javaeye.com/blog/166952</guid>
      </item>
      <item>
        <title>org.apache.commons.lang.StringUtils 的应用</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/166947" style="color:red;">http://lvxuehu.javaeye.com/blog/166947</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">import org.apache.commons.lang.StringUtils;
/**
 * Created by IntelliJ IDEA.
 * User: lly
 * Date: 2006-11-16
 * Time: 11:01:36
 * 
 * 　一个带输入框的窗体，用户在此输入框内输入许可证密钥。您希望允许输入1110-JAVA格式的密钥。您必须进行以下操作：
 * 
 * 1.检查是否为空字符串。
 * 2.忽略空格。
 * 3.密钥区分大小写。
 * 4.用&ldquo;-&rdquo;标记分隔密钥字符串，然后检查第一部分是否全部是数字，第二部分包含的字符是否只来自有效字符集&ldquo;J&rdquo;、&ldquo;A&rdquo;、&ldquo;V&rdquo;、&ldquo;A&rdquo;。
 * 5.两个部分均应有四个字符。
 * 6.第一部分的第四个数字应该是&ldquo;0&rdquo;。
 */
public class StringUtilsTest {
    /**
     * Check if the key is valid
     *
     * @param key license key value
     * @return true if key is valid, false otherwise.
     */
    public static boolean checkLicenseKey(String key) {
        //checks if empty or null
        if (StringUtils.isBlank(key)) {
            return false;
        }
        //delete all white space
        key = StringUtils.deleteWhitespace(key);
        //Split String using the - separator
        String[] keySplit = StringUtils.split(key, "-");
        //check lengths of whole and parts
        if (keySplit.length != 2 || keySplit[0].length() != 4 || keySplit[1].length() != 4) {
            return false;
        }
        //Check if first part is numeric
        if (!StringUtils.isNumeric(keySplit[0])) {
            return false;
        }
        //Check if second part contains only
        //the four characters 'J', 'A', 'V' and 'A'
        if (! StringUtils.containsOnly(keySplit[1],new char[]{'J', 'A', 'V', 'A'})) {
            return false;
        }
        //Check if the fourth character
        //in the first part is a '0'
        if (StringUtils.indexOf(keySplit[0], '0') != 3) {
            return false;
        }
        //If all conditions are fulfilled, key is valid.
        return true;
    }
    public static void main(String[] args) {
        String pass = "1110-JAVA";
        System.out.println("this.clone().equals()checkLicenseKey(pass) = " + StringUtilsTest.checkLicenseKey(pass));
    }
}</pre>引用于：<a href="http://dev2dev.bea.com.cn/techdoc/2005071902.html" target="_blank">http://dev2dev.bea.com.cn/techdoc/2005071902.html</a>
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/166947#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 14:40:07 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/166947</link>
        <guid>http://lvxuehu.javaeye.com/blog/166947</guid>
      </item>
      <item>
        <title>Java 浮点数精确计算 BigDecimal的用法</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/166946" style="color:red;">http://lvxuehu.javaeye.com/blog/166946</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>如果我们编译运行下面这个程序会看到什么？<br />public&nbsp;class&nbsp;Test{<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String&nbsp;args[]){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(0.05+0.01);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(1.0-0.42);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(4.015*100);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(123.3/100);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />};<br />你没有看错！结果确实是<br />0.060000000000000005<br />0.5800000000000001<br />401.49999999999994<br />1.2329999999999999<br />Java中的简单浮点数类型float和double不能够进行运算。不光是Java，在其它很多编程语言中也有这样的问题。在大多数情况下，计算的结果是准确的，但是多试几次（可以做一个循环）就可以试出类似上面的错误。现在终于理解为什么要有BCD码了。<br />这个问题相当严重，如果你有9.999999999999元，你的计算机是不会认为你可以购买10元的商品的。<br />在有的编程语言中提供了专门的货币类型来处理这种情况，但是Java没有。现在让我们看看如何解决这个问题。<br />&nbsp;<br />四舍五入<br />我们的第一个反应是做四舍五入。Math类中的round方法不能设置保留几位小数，我们只能象这样（保留两位）：<br />public&nbsp;double&nbsp;round(double&nbsp;value){<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Math.round(value*100)/100.0;<br />}<br />非常不幸，上面的代码并不能正常工作，给这个方法传入4.015它将返回4.01而不是4.02，如我们在上面看到的<br />4.015*100=401.49999999999994<br />因此如果我们要做到精确的四舍五入，不能利用简单类型做任何运算<br />java.text.DecimalFormat也不能解决这个问题：<br />System.out.println(new&nbsp;java.text.DecimalFormat(&quot;0.00&quot;).format(4.025));<br />输出是4.02<br />&nbsp;<br />BigDecimal<br />在《Effective&nbsp;Java》这本书中也提到这个原则，float和double只能用来做科学计算或者是工程计算，在商业计算中我们要用java.math.BigDecimal。BigDecimal一共有4个够造方法，我们不关心用BigInteger来够造的那两个，那么还有两个，它们是：<br />BigDecimal(double&nbsp;val)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Translates&nbsp;a&nbsp;double&nbsp;into&nbsp;a&nbsp;BigDecimal.&nbsp;<br />BigDecimal(String&nbsp;val)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Translates&nbsp;the&nbsp;String&nbsp;repre&nbsp;sentation&nbsp;of&nbsp;a&nbsp;BigDecimal&nbsp;into&nbsp;a&nbsp;BigDecimal.<br />上面的API简要描述相当的明确，而且通常情况下，上面的那一个使用起来要方便一些。我们可能想都不想就用上了，会有什么问题呢？等到出了问题的时候，才发现上面哪个够造方法的详细说明中有这么一段：<br />Note:&nbsp;the&nbsp;results&nbsp;of&nbsp;this&nbsp;constructor&nbsp;can&nbsp;be&nbsp;somewhat&nbsp;unpredictable.&nbsp;One&nbsp;might&nbsp;assume&nbsp;that&nbsp;new&nbsp;BigDecimal(.1)&nbsp;is&nbsp;exactly&nbsp;equal&nbsp;to&nbsp;.1,&nbsp;but&nbsp;it&nbsp;is&nbsp;actually&nbsp;equal&nbsp;to&nbsp;.1000000000000000055511151231257827021181583404541015625.&nbsp;This&nbsp;is&nbsp;so&nbsp;because&nbsp;.1&nbsp;cannot&nbsp;be&nbsp;represented&nbsp;exactly&nbsp;as&nbsp;a&nbsp;double&nbsp;(or,&nbsp;for&nbsp;that&nbsp;matter,&nbsp;as&nbsp;a&nbsp;binary&nbsp;fraction&nbsp;of&nbsp;any&nbsp;finite&nbsp;length).&nbsp;Thus,&nbsp;the&nbsp;long&nbsp;value&nbsp;that&nbsp;is&nbsp;being&nbsp;passed&nbsp;in&nbsp;to&nbsp;the&nbsp;constructor&nbsp;is&nbsp;not&nbsp;exactly&nbsp;equal&nbsp;to&nbsp;.1,&nbsp;appearances&nbsp;nonwithstanding.&nbsp;<br />The&nbsp;(String)&nbsp;constructor,&nbsp;on&nbsp;the&nbsp;other&nbsp;hand,&nbsp;is&nbsp;perfectly&nbsp;predictable:&nbsp;new&nbsp;BigDecimal(&quot;.1&quot;)&nbsp;is&nbsp;exactly&nbsp;equal&nbsp;to&nbsp;.1,&nbsp;as&nbsp;one&nbsp;would&nbsp;expect.&nbsp;Therefore,&nbsp;it&nbsp;is&nbsp;generally&nbsp;recommended&nbsp;that&nbsp;the&nbsp;(String)&nbsp;constructor&nbsp;be&nbsp;used&nbsp;in&nbsp;preference&nbsp;to&nbsp;this&nbsp;one.<br />原来我们如果需要精确计算，非要用String来够造BigDecimal不可！在《Effective&nbsp;Java》一书中的例子是用String来够造BigDecimal的，但是书上却没有强调这一点，这也许是一个小小的失误吧。<br />&nbsp;<br />解决方案<br />现在我们已经可以解决这个问题了，原则是使用BigDecimal并且一定要用String来够造。<br />但是想像一下吧，如果我们要做一个加法运算，需要先将两个浮点数转为String，然后够造成BigDecimal，在其中一个上调用add方法，传入另一个作为参数，然后把运算的结果（BigDecimal）再转换为浮点数。你能够忍受这么烦琐的过程吗？下面我们提供一个工具类Arith来简化操作。它提供以下静态方法，包括加减乘除和四舍五入：<br />public&nbsp;static&nbsp;double&nbsp;add(double&nbsp;v1,double&nbsp;v2)<br />public&nbsp;static&nbsp;double&nbsp;sub(double&nbsp;v1,double&nbsp;v2)<br />public&nbsp;static&nbsp;double&nbsp;mul(double&nbsp;v1,double&nbsp;v2)<br />public&nbsp;static&nbsp;double&nbsp;div(double&nbsp;v1,double&nbsp;v2)<br />public&nbsp;static&nbsp;double&nbsp;div(double&nbsp;v1,double&nbsp;v2,int&nbsp;scale)<br />public&nbsp;static&nbsp;double&nbsp;round(double&nbsp;v,int&nbsp;scale)<br />附录<br />源文件Arith.java：<br />import&nbsp;java.math.BigDecimal;<br />/**<br />&nbsp;*&nbsp;由于Java的简单类型不能够精确的对浮点数进行运算，这个工具类提供精<br />&nbsp;*&nbsp;确的浮点数运算，包括加减乘除和四舍五入。<br />&nbsp;*/<br />public&nbsp;class&nbsp;Arith{<br />&nbsp;&nbsp;&nbsp;&nbsp;//默认除法运算精度<br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;final&nbsp;int&nbsp;DEF_DIV_SCALE&nbsp;=&nbsp;10;<br />&nbsp;&nbsp;&nbsp;&nbsp;//这个类不能实例化<br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;Arith(){<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/**<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;提供精确的加法运算。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;v1&nbsp;被加数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;v2&nbsp;加数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;两个参数的和<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;double&nbsp;add(double&nbsp;v1,double&nbsp;v2){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigDecimal&nbsp;b1&nbsp;=&nbsp;new&nbsp;BigDecimal(Double.toString(v1));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigDecimal&nbsp;b2&nbsp;=&nbsp;new&nbsp;BigDecimal(Double.toString(v2));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;b1.add(b2).doubleValue();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;/**<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;提供精确的减法运算。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;v1&nbsp;被减数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;v2&nbsp;减数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;两个参数的差<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;double&nbsp;sub(double&nbsp;v1,double&nbsp;v2){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigDecimal&nbsp;b1&nbsp;=&nbsp;new&nbsp;BigDecimal(Double.toString(v1));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigDecimal&nbsp;b2&nbsp;=&nbsp;new&nbsp;BigDecimal(Double.toString(v2));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;b1.subtract(b2).doubleValue();<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/**<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;提供精确的乘法运算。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;v1&nbsp;被乘数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;v2&nbsp;乘数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;两个参数的积<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;double&nbsp;mul(double&nbsp;v1,double&nbsp;v2){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigDecimal&nbsp;b1&nbsp;=&nbsp;new&nbsp;BigDecimal(Double.toString(v1));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigDecimal&nbsp;b2&nbsp;=&nbsp;new&nbsp;BigDecimal(Double.toString(v2));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;b1.multiply(b2).doubleValue();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/**<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;提供（相对）精确的除法运算，当发生除不尽的情况时，精确到<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;小数点以后10位，以后的数字四舍五入。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;v1&nbsp;被除数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;v2&nbsp;除数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;两个参数的商<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;double&nbsp;div(double&nbsp;v1,double&nbsp;v2){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;div(v1,v2,DEF_DIV_SCALE);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/**<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;提供（相对）精确的除法运算。当发生除不尽的情况时，由scale参数指<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;定精度，以后的数字四舍五入。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;v1&nbsp;被除数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;v2&nbsp;除数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;scale&nbsp;表示表示需要精确到小数点以后几位。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;两个参数的商<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;double&nbsp;div(double&nbsp;v1,double&nbsp;v2,int&nbsp;scale){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(scale&lt;0){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;IllegalArgumentException(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;The&nbsp;scale&nbsp;must&nbsp;be&nbsp;a&nbsp;positive&nbsp;integer&nbsp;or&nbsp;zero&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigDecimal&nbsp;b1&nbsp;=&nbsp;new&nbsp;BigDecimal(Double.toString(v1));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigDecimal&nbsp;b2&nbsp;=&nbsp;new&nbsp;BigDecimal(Double.toString(v2));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/**<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;提供精确的小数位四舍五入处理。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;v&nbsp;需要四舍五入的数字<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;scale&nbsp;小数点后保留几位<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;四舍五入后的结果<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;double&nbsp;round(double&nbsp;v,int&nbsp;scale){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(scale&lt;0){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;IllegalArgumentException(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;The&nbsp;scale&nbsp;must&nbsp;be&nbsp;a&nbsp;positive&nbsp;integer&nbsp;or&nbsp;zero&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigDecimal&nbsp;b&nbsp;=&nbsp;new&nbsp;BigDecimal(Double.toString(v));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigDecimal&nbsp;one&nbsp;=&nbsp;new&nbsp;BigDecimal(&quot;1&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />};</p><p>&nbsp;</p><p>转载至:<a href="http://chongtianpig.netbei.com/51976.shtml">http://chongtianpig.netbei.com/51976.shtml</a></p>
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/166946#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 14:38:43 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/166946</link>
        <guid>http://lvxuehu.javaeye.com/blog/166946</guid>
      </item>
      <item>
        <title>提交iframe中的表单</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/166945" style="color:red;">http://lvxuehu.javaeye.com/blog/166945</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天写了一个提交信息的jsp页面，页面的结构是这样的：<br /><br />    index.jsp:主页面，其中有一个iframe，id=subject，还有一个图片的的按钮；<br /><br />   subject.jsp提交意见的页面；其中有一个form表单，id为from1；<br /><br />   我现在index中的图片按钮中提交subject页面中的form1表单。开始我是这么写的：<br /><br />   document.getElementById("subject").document.forms[0].submit();<br /><br />  或者document.getElementById("subject").document.forms['form1'].submit();<br /><br /> 总是不能成功，后来改成了如下形式：<br /><br /> window.frames['subject'].document.form1.submit();  就可以了。
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/166945#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 14:38:02 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/166945</link>
        <guid>http://lvxuehu.javaeye.com/blog/166945</guid>
      </item>
      <item>
        <title>xml 中的几个转意符号</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/166943" style="color:red;">http://lvxuehu.javaeye.com/blog/166943</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在xml中想放入一个html代码，其中出现了点问题，html中有 &quot;&lt;&quot; , &quot;&gt;&quot; 符号，放在xml会出错的，要用xml转意符号： <p><table class="ex" cellspacing="0" border="1" width="50%"><tbody><tr><td>&amp;lt;</td><td>&lt;</td><td>less than</td></tr><tr><td>&amp;gt;</td><td>&gt;</td><td>greater than</td></tr><tr><td>&amp;amp;</td><td>&amp;</td><td>ampersand&nbsp;</td></tr><tr><td>&amp;apos;</td><td>'</td><td>apostrophe</td></tr><tr><td>&amp;quot;</td><td>&quot;</td><td>quotation mark</td></tr></tbody></table></p><p>比如xml如下 </p><p>&lt;html&gt;&lt;input type=&quot;text&quot; name=&quot;name&quot; size=&quot;10&quot;/&gt;&lt;/html&gt;要写成</p><p>&lt;html&gt;&amp;lt;input type=&quot;text&quot; name=&quot;name&quot; size=&quot;10&quot;/&amp;gt;&lt;/html&gt;</p><p>注意：那个&ldquo;；&rdquo;不能掉了；</p>
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/166943#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 14:37:12 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/166943</link>
        <guid>http://lvxuehu.javaeye.com/blog/166943</guid>
      </item>
      <item>
        <title>javaScript 比较日期大小的函数(转)</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/166942" style="color:red;">http://lvxuehu.javaeye.com/blog/166942</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">function compareDate(DateOne,DateTwo)
{ 

var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ("-"));
var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ("-")+1);
var OneYear = DateOne.substring(0,DateOne.indexOf ("-"));

var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ("-"));
var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ("-")+1);
var TwoYear = DateTwo.substring(0,DateTwo.indexOf ("-"));

if (Date.parse(OneMonth+"/"+OneDay+"/"+OneYear) >
Date.parse(TwoMonth+"/"+TwoDay+"/"+TwoYear))
{
return true;
}
else
{
return false;
}

}</pre><br /><br /> <br /><br />举例：<br />alert(compareDate(''2004-12-01'',''2004-05-02'''));<br />目前知支持年－月－日这样的格式<br /><br />引用链接：http://bbs.zhupao.com/archiver/board29/topic80023.html
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/166942#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 14:35:44 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/166942</link>
        <guid>http://lvxuehu.javaeye.com/blog/166942</guid>
      </item>
      <item>
        <title>从mysql中导出数据</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/166940" style="color:red;">http://lvxuehu.javaeye.com/blog/166940</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          测试数据名：test，其中有一个表loginuser；<br />mysqldump.exe 在mysql\bin下。<br />在提示符状态下输入一下命令：<br /><br />以root用户的权限导出整个数据库：mysqldump test >/back.txt -u root -p  加上“/”，那么导出的<br /><br />back.txt就在根目录中，比如：c:\下；<br /><br />以root用户的权限导出数据库中的一张表：mysqldump test loginuser >/back.txt -u root -p<br /><br />以上命令不用-u root -p部分也行，以上命令会导出CREATE,INSERT命令；如果只想要CREATE命令，用如<br /><br />下命令：<br />mysqldump -d test -d loginuser >/back.txt<br /><br />如果只想导出insert命名，用如下命令：<br />mysqldump -t test -t loginuser >/back.txt <br /><br />以文本形式导出一个表的内容<br />在mysql>输入：select * from loginuser into outfile "\back.txt"; 生成的back.txt文件在mysql安装<br /><br />的根目录下；<br /><br /> <br /><br />我们有一个库为 <br />phptest，其中有一个表为driver。现在要把driver卸成文件。执行命令： <br />mysql> use phptest; <br />Database Changed <br />mysql> select * from driver into outfile 'a.txt'; <br />Query OK, 22 rows affected (0.05 sec) <br />　　上面就可以完成将表driver从数据库中卸到a.txt文件中。注意文件名要加单 <br />引号。 <br />那么这个文件在哪 <br />呢？在mysql目录下有一个data目录，它即是数据库文件所放的地方。每个库在单 <br />独占一 <br />个子目录，所以 <br />phptest的目录为c:\mysql\data\phptest(注意：我的mysql安装在c:\mysql下)。 <br />好，现 <br />在我们进去，a.txt <br />就是它。打开这个文件，可能是： <br />1 Mika Hakinnen 1 <br />2 David Coulthard 1 <br />3 Michael Schumacher 2 <br />4 Rubens Barrichello 2 <br />... <br />　　可能还有很多记录。每个字段之间是用制表符分开的(\t)。那么我们可以修 <br />改输出 <br />文件名的目录，以便 <br />放在指定的位置。如'a.txt'可以改成'./a.txt'或'/a.txt'。其中'./a.txt'放在 <br />c:\my <br />sql\data目录下了， <br />而'/a.txt'文件则放在c:\目录下了。所以select命令认为的当前目录是数据库的 <br />存放目 <br />录，这里是 <br />c:\mysql\data。 <br />　　使用select命令还可以指定卸出文件时，字段之间的分隔字符，转义字符， <br />包括字 <br />符，及记录行分隔字 <br />符。列在下面： <br />FIELDS <br />TERMINATED BY '\t' <br />[OPTIONALLY] ENCLOSED BY '' <br />ESCAPED BY '\\' <br />LINES <br />TERMINATED BY '\n' <br />TERMINATED 表示字段分隔 <br />[OPTIONALLY] ENCLOSED 表示字段用什么字符包括起来，如果使用了OPTIONALLY <br />则只有 <br />CHAR和VERCHAR <br />被包括 <br />ESCAPED 表示当需要转义时用什么作为转义字符 <br />LINES TERMINATED 表示每行记录之间用什么分隔 <br />　　上面列的是缺省值，而且这些项都是可选的，不选则使用缺省值。可以根据 <br />需要进 <br />行修改。给出一个例 <br />子如下： <br />mysql> select * from driver into outfile 'a.txt' fields terminated by  <br />',' en <br />closed by '"'; <br />Query OK, 22 rows affected (0.06 sec) <br />　　结果可能如下： <br />"1","Mika","Hakinnen","1" <br />"2","David","Coulthard","1" <br />"3","Michael","Schumacher","2" <br />"4","Rubens","Barrichello","2" <br />... <br />　　可以看到每个字段都用','进行了分隔，且每个字段都用'"'包括了起来。注 <br />意，行 <br />记录分隔符可以是 <br />一个字符串，请大家自行测试。不过，如果输出文件在指定目录下如果存在的话 <br />就会报 <br />错，先删除再测 <br />试即可。
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/166940#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 14:33:57 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/166940</link>
        <guid>http://lvxuehu.javaeye.com/blog/166940</guid>
      </item>
      <item>
        <title>mysql常用命令</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/166939" style="color:red;">http://lvxuehu.javaeye.com/blog/166939</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一、连接MySQL。 <br /><br />格式： mysql -h主机地址 -u用户名 －p用户密码 <br /><br />1、例1：连接到本机上的MYSQL。 <br /><br />　　首先在打开 DOS 窗口，然后进入目录 mysql\bin，再键入命令mysql -u root -p，回车后提示你输密码，如果刚安装好 MySQL，超级用户 root 是没有密码的，故直接回车即可进入到 MySQL 中了，MySQL 的提示符是：mysql> <br /><br />2、例2：连接到远程主机上的 MySQL。<br /><br />　　假设远程主机的IP为：110.110.110.110，用户名为root，密码为abcd123。则键入以下命令： <br /><br />mysql -h 110.110.110.110 -u root -p abcd123 <br /><br />（注:u与root可以不用加空格，其它也一样） <br /><br />3、退出 MySQL 命令： quit 或 exit （回车） <br /><br />二、修改密码。 <br /><br />格式：mysqladmin -u用户名 -p password  新密码 <br /><br />1、例1：给root加个密码ab12。首先在DOS下进入目录mysqlbin，然后键入以下命令 <br /><br />mysqladmin -u root -password ab12 <br /><br />注：因为开始时root没有密码，所以-p旧密码一项就可以省略了。 <br /><br />2、例2：再将root的密码改为djg345。 <br /><br />mysqladmin -u root -p password djg345 <br /><br />三、增加新用户。<br /><br />（注意：和上面不同，下面的因为是 MySQL 环境中的命令，所以后面都带一个分号作为命令结束符） <br /><br />格式：grant select on 数据库.* to 用户名@登录主机 identified by "密码" <br /><br />例1、增加一个用户 test1 密码为 abc，让他可以在任何主机上登录，并对所有数据库有查询、插入、修改、删除的权限。首先用以 root 用户连入 MySQL，然后键入以下命令： <br /><br />grant select, insert, update, delete on *.* to test1@"%" Identified by "abc"; <br /><br />但例1增加的用户是十分危险的，你想如某个人知道test1的密码，那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了，解决办法见例2。 <br /><br />例2、增加一个用户test2密码为abc,让他只可以在localhost上登录，并可以对数据库 mydb进行查询、插入、修改、删除的操作（localhost指本地主机，即MYSQL数据库所在的那台主机），这样用户即使用知道test2的密码，他也无法从internet上直接访问数据库，只能通过MYSQL主机上的web页来访问了。 <br /><br />grant select, insert, update,delete on mydb.* to test2@localhost identified by "abc"; <br /><br />　　如果你不想test2有密码，可以再打一个命令将密码消掉。 <br /><br />grant select, insert, update, delete on mydb.* to test2@localhost identified by ""; <br /><br />　　在上篇我们讲了登录、增加用户、密码更改等问题。下篇我们来看看MYSQL中有关数据库方面的操作。注意：你必须首先登录到MYSQL中，以下操作都是在MYSQL的提示符下进行的，而且每个命令以分号结束。 <br /><br />一、操作技巧 <br /><br />1、如果你打命令时，回车后发现忘记加分号，你无须重打一遍命令，只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打，完后用分号作结束标志就OK。 <br /><br />2、你可以使用光标上下键调出以前的命令。但以前我用过的一个MYSQL旧版本不支持。我现在用的是mysql-3.23.27-beta-win。 <br /><br />二、显示命令 <br /><br />1、显示数据库列表。 <br /><br />show databases; <br /><br />　　刚开始时才两个数据库：mysql 和 test。mysql 库很重要它里面有 MySQL 的系统信息，我们改密码和新增用户，实际上就是用这个库进行操作。 <br /><br />2、显示库中的数据表： <br /><br />use mysql; //打开库，学过 FOXBASE 的一定不会陌生吧 <br /><br />show tables; <br /><br />3、显示数据表的结构： <br /><br />describe 表名; <br /><br />4、建库： <br /><br />create database 库名; <br /><br />5、建表： <br /><br />use 库名;<br /><br />create table 表名 (字段设定列表);<br /><br />6、删库和删表: <br /><br />drop database 库名; <br /><br />drop table 表名;<br /><br />7、将表中记录清空： <br /><br />delete from 表名; <br /><br />8、显示表中的记录： <br /><br />select * from 表名;
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/166939#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 14:32:57 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/166939</link>
        <guid>http://lvxuehu.javaeye.com/blog/166939</guid>
      </item>
      <item>
        <title>在MySQL查询结果集中得到记录行号（转）</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/166937" style="color:red;">http://lvxuehu.javaeye.com/blog/166937</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          如果需要在查询语句返回的列中包含一列表示该条记录在整个结果集中的行号， ISO SQL:2003 标准提出的方法是提供 ROW_NUMBER() / RANK() 函数。 Oracle 中可以使用标准方法（8i版本以上），也可以使用非标准的 ROWNUM ； MS SQL Server 则在 2005 版本中提供了 ROW_NUMBER() 函数；但在 MySQL 中似乎还没有这样的系统自带功能。虽然 LIMIT 可以很方便的对返回的结果集数量和位置进行过滤，但过滤出来的记录的行号却没办法被 SELECT 到。据说 MySQL 是早就想增加这个功能了，但我是还没找到。<br /><br />解决方法是通过预定义用户变量来实现：<br /><br />set @mycnt = 0;<br />select (@mycnt := @mycnt + 1) as ROWNUM , othercol from tblname order by othercol;<br /><br />这样查询出来的结果集中 ROWNUM 就保存了行编号信息。这个行编号信息的某种用途在于当你需要根据需要对数据按照某种规则排序并取出排序之后的某一行数据，并且希望知道这行数据在之前排序中的位置时就用得着了。比如：<br /><br />set @mycnt = 0;<br />select * from (<br />    select (@mycnt := @mycnt + 1) as ROWNUM , othercol <br />     from tblname order by othercol<br />) as A where othercol=OneKeyID;<br /><br /><br />注意：以上语句在mysql4中只能执行：<br /><br />select * from (<br />    select (@mycnt := @mycnt + 1) as ROWNUM , othercol <br />     from tblname order by othercol<br />)<br /><br />不能执行：<br /><br />set @mycnt = 0;<br />select * from (<br />    select (@mycnt := @mycnt + 1) as ROWNUM , othercol <br />     from tblname order by othercol<br />) as A where othercol=OneKeyID;<br /><br />在mysql5中可以执行整条语句；<br /><br />当然你也可以通过创建临时表的方法把查询结果写到某个拥有 auto_increment 字段的临时表中再做查询，但考虑到临时表在 MySQL master / slave 模式下可能产生的问题，用这样临时用户定义变量的方式来计算查询结果集每一行对应的行号还是更为简洁 -- 除非你愿意在 PHP 或其他语言脚本中对返回的整个结果集再作处理。
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/166937#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 14:32:12 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/166937</link>
        <guid>http://lvxuehu.javaeye.com/blog/166937</guid>
      </item>
      <item>
        <title>Tomcat 5.5.20配置JNDI数据源</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/166935" style="color:red;">http://lvxuehu.javaeye.com/blog/166935</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在tomcat的conf/server.xml中的&lt;GlobalNamingResources>元素中添加如下内容：<br /><br />&lt;GlobalNamingResources><br /><br />&lt;Resource<br />    name="jdbc/sqlservertest"<br />    auth="Container"<br />    type="javax.sql.DataSource"<br />    maxActive="100"<br />    maxIdle="45"<br />    username="sa"<br />    maxWait="180"<br />    driverClassName="net.sourceforge.jtds.jdbc.Driver"<br />    password="123456"<br />    url="jdbc:jtds:sqlserver://localhost:1433/test" <br />    removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"<br />    testOnReturn="true" testWhileIdle="true"/><br /><br />&lt;Resource<br />    name="jdbc/mysqltest"<br />    auth="Container"<br />    type="javax.sql.DataSource"<br />    maxActive="100"<br />    maxIdle="45"<br />    username="root"<br />    maxWait="180"<br />    driverClassName="com.mysql.jdbc.Driver"<br />    password="123456"<br />    url="jdbc:mysql://localhost:3306/test" <br />    removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"<br />    testOnReturn="true" testWhileIdle="true"/> <br /><br />&lt;/GlobalNamingResources><br /><br />以上配置了两个全局数据源，一个叫jdbc/sqlservertest，是SQLServer2000的，一个叫：jdbc/mysqltest，是mysql的<br /><br /><br />然后在web程序中写一个jsp：内容如下<br />&lt;%@page import="java.util.*,javax.naming.*,java.sql.*,javax.sql.*" %><br />&lt;%@page contentType="text/html;charset=BIG5"%><br />&lt;%<br />    Context ctx = new InitialContext();<br />    String strLookup = "java:comp/env/jdbc/mysqltest2";<br />    DataSource ds =(DataSource) ctx.lookup(strLookup);<br />    Connection con = ds.getConnection();<br />    if (con != null){<br />        out.print("success");<br />    }else{<br />        out.print("failure");<br />    }<br />%><br /><br /><br />然后将做个web工程发布到tomcat下；我用了两种方式发布：一种是war包的方式，一种是在server.xml中添加一个Context；<br />下面分别说说两种发布方式的区别：<br /><br />war包方式：<br />如果要用war包方式发布web应用程序，又要使用JNDI数据源的话，要在你的web工程的META-INF文件夹下设置web项目的Context内容：<br />&lt;?xml version="1.0" encoding="UTF-8"?><br />&lt;Context path="/test"><br />    &lt;ResourceLink global="jdbc/mysqltest" name="jdbc/mysqltest2" type="javax.sql.DataSource"/><br />&lt;/Context><br /><br />global:就是tomcat的server.xml中配置的全局数据源名称。<br />name：就是你的web项目中要用的那个那个数据源的名称：也就是jsp中写的那个mysqltest2名称；<br /><br /><br />在server.xml中添加context的方式：<br />直接在server.xml中的&lt;host>&lt;/host>中添加如下内容：<br />&lt;Context path="/test" docBase="c:/test" debug="0" reloadable="true"><br />       &lt;ResourceLink global="jdbc/mysqltest" name="jdbc/huodong2" type="javax.sql.DataSource"/><br />&lt;/Context>
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/166935#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 14:30:52 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/166935</link>
        <guid>http://lvxuehu.javaeye.com/blog/166935</guid>
      </item>
      <item>
        <title>mysql 的事务处理</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/166934" style="color:red;">http://lvxuehu.javaeye.com/blog/166934</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          如果要用mysql的事务处理，mysql的表类型必须是：INNODB 和 BDB 两种类型的表；<br /><br />比如有一个表表名为：demoTableName<br /><br />用show create table demoTableName，可以查看demoTableName表的表类型；<br /><br />结果为：<br /><br />CREATE TABLE `demoTableName` (<br />`id` int(11) default NULL,<br />`name` varchar(50) default NULL<br />) ENGINE=MyISAM DEFAULT CHARSET=latin1;<br /><br />可以看到表的类型是：MyISAM ，这个表是不支持事务的；要修改这个表的类型，可以直接修改<br /><br />执行：ALTER TABLE demoTableName TYPE=INNODB;  就行了；
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/166934#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 14:30:03 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/166934</link>
        <guid>http://lvxuehu.javaeye.com/blog/166934</guid>
      </item>
      <item>
        <title>Struts中格式化输出</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/166933" style="color:red;">http://lvxuehu.javaeye.com/blog/166933</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在Structs中&lt;bean:write name="" property="" format=""/>中,format可以用来格式化输出,如 format="0.00%",如果是0.152,那么输出的就是15.2%,如果改成format="RMB:000.00" 原来的值是100,那么输出的就是RMB:100.00.
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/166933#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 14:28:48 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/166933</link>
        <guid>http://lvxuehu.javaeye.com/blog/166933</guid>
      </item>
      <item>
        <title>log4j的配置</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/166932" style="color:red;">http://lvxuehu.javaeye.com/blog/166932</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong>log4j.properties </strong><p>### 可以给log配置取个名字,在后面就可以用这个名字配置log;</p><p>### 比如我要配置两个log,名字分别为:consoteLog,fileLog</p><p>### log4j 对日志的输出定义了级别,共有6个级别,分别是:<strong>fatal,error,warn,info,debug,trace</strong> ###<br />### 其中fatal的级别最高,trace的级别最低,只有当它的输出日志的级别大于或等于为日志器配置的日志级别时 ###<br />### 这个级别的日志才可以输出,比如你的日志的级别是info,那么只有大于info级别的fatal,error,warn,info 的 ###<br />### 信息才会输出.下面的两个日志的级别分别为:DEBUG,WARN,名称为 consoteLog,fileLog</p><p><strong>log4j.rootLogger=DEBUG,consoteLog <br />log4j.rootLogger=WARN,fileLog</strong><br /><br />### 设置 consoteLog 的输出地为ConsoleAppender(控制台) ##<br />### 设置 fileLog 的输出地是到文件（文件大小到达指定尺寸的时候产生一个新的文件）##<br />### 其他可供选择的输出方式为:org.apache.log4j.FileAppender(文件) ##<br />### org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件) ##<br />### org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件) ##<br />### org.apache.log4j.WriterAppender(将日志消息以流的格式发送到任意指定的地方) ## </p><p><strong>log4j.appender.consoteLog=org.apache.log4j.ConsoleAppender<br />log4j.appender.fileLog=org.apache.log4j.RollingFileAppender</strong></p><p><br />### 指定fileLog日志文件输出的位置 ## <br /><strong>log4j.appender.fileLog.File=E:\\fileLog.log</strong> <br />### 指定fileLog日志文件的大小##<br /><strong>log4j.appender.fileLog.MaxFileSize=500KB </strong><br /><br />### 设置consoteLog的输出布局格式PatterLayout,(可以灵活地指定布局模式）## <br />### 其他可供选择的布局格式: org.apache.log4j.HTMLLayout(HTML表格形式布局) ##<br />### org.apache.log4j.SimpleLayout (包含日志消息的级别和信息字符串) ##<br />### org.apache.log4j.TTCCLayout (包含日志产生的时间,线程和类别等信息)</p><p><strong>log4j.appender.consoteLog.layout=org.apache.log4j.PatternLayout<br />log4j.appender.fileLog.layout=org.apache.log4j.PatternLayout</strong><br /><br />### 配置日志输出的格式##<br /><br /><strong>log4j.appender.consoteLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n <br />log4j.appender.fileLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n </strong></p><p>下面说说怎么在实际的工程里启动log4j了,首先不管是在tomcat里还是在IDE里,要把<strong>log4j.jar</strong>包放在lib下,<br />在tomcat中就放在你的web工程的 <strong>WEB-INF/lib</strong> 中,在IDE中就用工程的包向导(一般在工程的属性中)将包引入到工程中就行了;<br />在Tomcat做服务器时把 <strong>log4j.properties</strong> 文件放在你的工程的<strong> WEB-INF/classes/</strong>下,在IDE(ecilpse,idea)中放在src/下<br />如果你的工程用了<strong>Hibernate,Spring,ibatis</strong>的话,基本上就不用进行其他设置了,因为在这些项目中,当web服务器启动时都默认会启动日志的<br />(如果有log4j.properties,和log4j.jar的,并且放在正确的位置的话);<br />如果你要在IDE中把项目当成应用程序来调试,又想看见日志的话(在out中),在你的应用程序的<strong>main</strong>方法中写上:</p><p><strong>Log log=LogFactory.getLog(main.class);<br />BasicConfigrator.configure();</strong></p><p>这个你就可以在<strong>ecilpse</strong>的输出窗口中看见日志了;</p>
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/166932#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 14:27:32 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/166932</link>
        <guid>http://lvxuehu.javaeye.com/blog/166932</guid>
      </item>
      <item>
        <title>Spring 从Tomcat5 中移植到Resin2中不能初始化ApplicationContext</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/166931" style="color:red;">http://lvxuehu.javaeye.com/blog/166931</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天我将一个IBatis+Spring+Struts的web工程从Tocmat5中移植到Resin2中，本来在Tomcat5中可以运行的Web项目，在Resin中就不能初始化Spring的ApplicationContext了，导致web不能启动。后来就Spring的applicationContext.xml中的Context的初始化方式由：<br /><br />&lt;servlet> <br />&lt;servlet-name>context&lt;/servlet-name> <br />&lt;servlet-class>org.springframework.web.context.ContextLoaderServlet&lt;/servlet-class> <br />&lt;load-on-startup>1&lt;/load-on-startup> <br />&lt;/servlet> <br />改为：<br /><br />&lt;listener> <br />&lt;listener-class>org.springframework.web.context.ContextLoaderListener&lt;/listener-class> <br />&lt;/listener> <br />就可以了。
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/166931#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 14:25:46 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/166931</link>
        <guid>http://lvxuehu.javaeye.com/blog/166931</guid>
      </item>
      <item>
        <title>JNDI tomcat5 Mysql5 中文乱码</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/166928" style="color:red;">http://lvxuehu.javaeye.com/blog/166928</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;&lt;GlobalNamingResources&gt; <p>&nbsp;&nbsp;&nbsp; &lt;!-- Test entry for demonstration purposes --&gt;<br />&nbsp;&nbsp;&nbsp; &lt;Environment name=&quot;simpleValue&quot; type=&quot;java.lang.Integer&quot; value=&quot;30&quot;/&gt;<br />&nbsp;&nbsp;&nbsp; &lt;!-- Editable user database that can also be used by<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UserDatabaseRealm to authenticate users --&gt;<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;Resource name=&quot;UserDatabase&quot; auth=&quot;Container&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type=&quot;org.apache.catalina.UserDatabase&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; description=&quot;User database that can be updated and saved&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; factory=&quot;org.apache.catalina.users.MemoryUserDatabaseFactory&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pathname=&quot;conf/tomcat-users.xml&quot; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Resource<br />&nbsp;&nbsp;&nbsp; name=&quot;jdbc/huodong&quot;<br />&nbsp;&nbsp;&nbsp; auth=&quot;Container&quot;<br />&nbsp;&nbsp;&nbsp; type=&quot;javax.sql.DataSource&quot;<br />&nbsp;&nbsp;&nbsp; maxActive=&quot;5&quot;<br />&nbsp;&nbsp;&nbsp; maxIdle=&quot;3&quot;<br />&nbsp;&nbsp;&nbsp; username=&quot;root&quot;<br />&nbsp;&nbsp;&nbsp; maxWait=&quot;180&quot;<br />&nbsp;&nbsp;&nbsp; driverClassName=&quot;org.gjt.mm.mysql.Driver&quot;<br />&nbsp;&nbsp;&nbsp; password=&quot;&quot;<br />&nbsp;&nbsp;&nbsp;<span style="color: #ff0000"> url=&quot;jdbc:mysql://localhost:3306/myDb?useUnicode=true&amp;amp;characterEncoding=GBK&quot;</span><br />&nbsp;&nbsp;&nbsp; removeAbandoned=&quot;true&quot; removeAbandonedTimeout=&quot;5&quot; logAbandoned=&quot;true&quot;<br />&nbsp;&nbsp;&nbsp; testOnReturn=&quot;true&quot; testWhileIdle=&quot;true&quot;/&gt;<br />&nbsp;&nbsp; <br />&nbsp; &lt;/GlobalNamingResources&gt;</p><p>注意：<span style="color: #ff0000">url=&quot;jdbc:mysql://localhost:3306/myDb?useUnicode=true<span style="color: #0000ff">&amp;amp;</span>characterEncoding=GBK&quot;</span></p><p><span style="color: #ff0000">不要写成：url=&quot;jdbc:mysql://localhost:3306/myDb?useUnicode=true<span style="color: #0000ff">&amp;</span>characterEncoding=GBK&quot;</span></p><p><span style="color: #ff0000">注意：<strong><span style="color: #000080">&amp;amp;&nbsp; </span></strong>是<strong><span style="color: #000080">&amp;</span></strong> 的转义字符；在xml中写成上面那个，在java代码中写成下面的写法；</span></p><p><span style="color: #ff0000">否则报:</span></p><p><span style="color: #ff0000"><span style="color: #000000">Parse Fatal Error at line 213 column 91: The reference to entity &quot;characterEncoding&quot; must end with the ';' delimiter.<br />org.xml.sax.SAXParseException: The reference to entity &quot;characterEncoding&quot; must<br />end with the ';' delimiter.<br />at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Un<br />known Source)</span><br /></span></p><p>还要在tomcat的 conf/server.xml 中修改如下类容：</p><p>&lt;Connector port=&quot;80&quot; maxHttpHeaderSize=&quot;8192&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxThreads=&quot;150&quot; minSpareThreads=&quot;25&quot; maxSpareThreads=&quot;75&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enableLookups=&quot;false&quot; redirectPort=&quot;8443&quot; acceptCount=&quot;100&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionTimeout=&quot;20000&quot; disableUploadTimeout=&quot;true&quot; <span style="color: #ff0000"><strong>URIEncoding=&quot;GBK&quot;/</strong></span>&gt;</p><p>红色部分是添加的类容</p>
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/166928#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 14:23:18 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/166928</link>
        <guid>http://lvxuehu.javaeye.com/blog/166928</guid>
      </item>
      <item>
        <title>解决JSP+TOMCAT5+Mysql5中文乱码问题注意事项</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/166927" style="color:red;">http://lvxuehu.javaeye.com/blog/166927</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我以前遇到tomcat＋mysql5中文乱码时都是去网上找解决办法，解决了后就不去深究原因，现在我总结一下： <p>&nbsp; 1：关于</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Url = &quot;jdbc:mysql://localhost:3306/test?useUnicode=true<span style="color: #ff0000">&amp;</span>characterEncoding=UTF-8&quot;</p><p>与&nbsp;&nbsp;&nbsp; Url = &quot;jdbc:mysql://localhost:3306/test?useUnicode=true<span style="color: #ff0000">&amp;amp;</span>characterEncoding=UTF-8&quot;</p><p>写法的要注意的地方，&amp;amp; 是 &amp; 的转义符号，两种写法都是正确的，只是下面的写法用在xml配置文件中，而上面的用在java代码中。</p><p>2.查看客户端发送给服务器的SQL使用什么编码</p><p>如果你的jsp或者java代码发送给mysql的中文是乱码，你可以运行一下下面的代码，看看客户端发送给服务器的SQL使用什么编码；</p><p>private static String ClassName = &quot;org.gjt.mm.mysql.Driver&quot;;<br />private static String Url = &quot;jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8&quot;;<br />private static String UserName = &quot;root&quot;;<br />private static String PassWord = &quot;&quot;;</p><p>Connection con = null;<br />&nbsp;try {<br />&nbsp;&nbsp;&nbsp;&nbsp; Class.forName(ClassName).newInstance();<br />&nbsp;&nbsp;&nbsp;&nbsp; con = DriverManager.getConnection(Url, UserName, PassWord);<br />&nbsp;} catch (Exception e) {<br />&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br />&nbsp;}<br />&nbsp;<br />ResultSet rs = con.createStatement().executeQuery(&quot;SHOW VARIABLES LIKE 'character_set_%'&quot;);<br />&nbsp;&nbsp; while(rs.next()){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(rs.getString(1) +&quot;,&quot;+ rs.getString(2));<br />&nbsp;&nbsp; }<br />rs.close();<br />con.close();</p><p><br />没有配置characterEncoding=utf-8之前，我使用的是 Url = &quot;jdbc:mysql://localhost:3306/test;<br />这样的配置。结果用select()方法查询结果如下：</p><p>character_set_client,latin1<br />character_set_connection,latin1<br />character_set_database,utf8<br />character_set_filesystem,binary<br />character_set_results,<br />character_set_server,latin1<br />character_set_system,utf8<br />character_sets_dir,/usr/local/mysql-standard-5.0.27-Linux-i686/share/mysql/charsets/</p><p><br />注意第一行就可以了，可见使用的是latin1。<br />而latin1本身就无法表示汉字，经过这个编码打包的SQL语句发给Server，Server也用Latin1解析也无法还原。<br />所以，我总是写乱码到DB。<br />而配置了配置characterEncoding=utf-8之后，<br />执行select(),结果：</p><p>character_set_client,utf8<br />character_set_connection,utf8<br />character_set_database,utf8<br />character_set_filesystem,binary<br />character_set_results,<br />character_set_server,latin1<br />character_set_system,utf8<br />character_sets_dir,/usr/local/mysql-standard-5.0.27-linux-i686/share/mysql/charsets/<br />第一行为utf-8，SQL将用UTF8打包给Server，Server也用Client配置的UTF8<br />解析。</p><p><br />部分类容来自&nbsp;- <a href="http://www.master8.czm.cn/data/2007/0308/article_5458.htm">http://www.master8.czm.cn/data/2007/0308/article_5458.htm</a></p>
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/166927#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 14:21:27 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/166927</link>
        <guid>http://lvxuehu.javaeye.com/blog/166927</guid>
      </item>
      <item>
        <title>安装 SQL Server2000,VisualStudion.NET 2003文件挂起错误解决办法</title>
        <author>lvxuehu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lvxuehu.javaeye.com">lvxuehu</a>&nbsp;
          链接：<a href="http://lvxuehu.javaeye.com/blog/166926" style="color:red;">http://lvxuehu.javaeye.com/blog/166926</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &ldquo;以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机。&rdquo;<br />　　接着按照提示重启计算机，再安装，仍然出现同样的提示。再网上查找相关资料，得知是安装程序在先前的安装过程中在系统注册表留下某些信息，导致不能安装。于是经过多次试，发现删除掉如下键值信息即可安装：<br />　　在运行窗口输入regedit，打开注册表编辑器，在<span style="color: #ff0000">HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager</span>中找到PendingFileRenameOperations，删除该键值，关闭注册表编辑器。重新安装SQL Server 2000，哈哈，久违的安装界面终于浮出水面了。<br />　　这个键值是安装程序暂挂项目，只要找到对应的应用程序清除掉就行了。
          <br/>
          <span style="color:red;">
            <a href="http://lvxuehu.javaeye.com/blog/166926#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 14:19:21 +0800</pubDate>
        <link>http://lvxuehu.javaeye.com/blog/166926</link>
        <guid>http://lvxuehu.javaeye.com/blog/166926</guid>
      </item>
  </channel>
</rss>