<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>尚氏学堂</title>
    <description></description>
    <link>http://shang.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>linux防火墙设置</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/251274" style="color:red;">http://shang.javaeye.com/blog/251274</a>&nbsp;
          发表时间: 2008年10月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          设置方法有3：<br />1、安装完RHLE5完，重启进入初始化后设置：<br />选择防火墙，复远FTP、SSH、Telnet，并在其他端口中把要用的端口加进去，协议类型为TCP/UDP<br /><br />2、用命令行配置<br />[root@VMhost ~]setup<br />防火墙-->定制-->其他端口中输入9111:tcp，设置完后确定退出。<br /><br />3、在x窗口中设置<br />系统-->管理-->安全级别和防火墙进行设置。
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/251274#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 10 Oct 2008 14:06:41 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/251274</link>
        <guid>http://shang.javaeye.com/blog/251274</guid>
      </item>
          <item>
        <title>远程telnet问题的处理</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/251269" style="color:red;">http://shang.javaeye.com/blog/251269</a>&nbsp;
          发表时间: 2008年10月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          安装了Red Hat Linux 5 Enterprise经常会遇到远程telnet连不上问题，如下所示：<br />错误信息:<br />getnameinfo: localhost: Success<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Temporary failure in name resolution: Illegal seek<br />在网上似乎没有准确有效的解决办法，现给出两种解决途径：<br />解决办法：<br />以root用户登陆后<br />方法1、最简单、最有效的办法：<br />[root@vmhost root]vi /etc/nsswitch.conf<br />找到hosts: files <span style="color: red">dns</span><br />将红色的dns删除，保存即可。<br /><br />方法2、编辑host文件<br />[root@vmhost root]vi /etc/hosts<br />把要访问telnet的客户端的IP和主机名加进去,并保存退出,然后重启xinted服务
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/251269#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 10 Oct 2008 13:48:49 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/251269</link>
        <guid>http://shang.javaeye.com/blog/251269</guid>
      </item>
          <item>
        <title>制作Linux RPM包</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/246696" style="color:red;">http://shang.javaeye.com/blog/246696</a>&nbsp;
          发表时间: 2008年09月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          制作Linux RPM包<br /><br />RPM是Redhat Package Manage的缩写。透过RPM的管理,使用者可以把Source Code包装成一种Source和Binary的档案形式。利用它,我们可以用Binary的档案进行安装,用 Source 的档案形式重新整理包装。许多Linux爱好者对安装RPM包比较熟悉,但对如何在Linux下制作RPM包不甚了解,因此,我将通过实例,讲解如何在 Linux下制作RPM包。 <br /><br />1. 最初要求 <br />为了创建RPM,你需要RPM要编译的源代码、一个rpmrc文件(设置一些RPM的缺省值并控制它的行为),以及一个spec文件(控制包的建立过程)。这里假定已有其它的开发环境(gcc、make、install、vi等),而且你的源代码已经编译成功。 <br /><br />2. 制作流程 <br />1)确定/etc/rpmrc(也可能是/usr/lib/rpm/rpmrc)已经正确设定。rpmrc文件控制几乎所有RPM的行为。如果你 想重载一个或多个全局设置,可以在~/.rpmrc文件中包含你的定制。可以使用rpm--showrc来显示RPM的当前设置。大多数情况下， rpmrc 文件的设置不需要改变。 <br /><br />2)取回所建造的源代码并放入正确的目录中。 <br /><br />3)编写spec文件。 <br /><br />4)使用rpm -ba 来构造整个程式套件。 <br /><br />3.应用举例 <br />现在以Lynx实用程序来介绍构造RPM包的整个过程。Lynx是在文本方式下的Web浏览器,可以从ftp://www.slcc.edu/pub/lynx/取得。 <br /><br />1)得到lynx源代码。 <br /><br />2)lynx-2.8.spec文件的详细编写方法略。 <br /><br />3)使用RPM来构造包。 <br /><br />按照rpmrc文件的缺省设置,应该把lynx-2.8.spec文件放入SPECS/目录下,然后执行: <br /><br />rpm -ba lynx-2.8.spec <br /><br />其中-b 表示prep、compile、install，并build出一份binary RPM包。-a 表示执行所有的build动作,即还要build 出一份source code RPM包。 <br /><br />如果一切顺利的话,可以在RPMS/目录下找到lynx-2.8-4.i386.rpm文件。可以执行: <br /><br />rpm -qpl lynx-2.8-4.i386.rpm <br /><br />来观察RPM 包中是否包含了要求的所有文件。 <br /><br />为了测试它的正确性,可以拷贝此文件到另一台机器上,并执行: <br /><br />rpm -ivh lynx-2.8-4.i386.rpm <br /><br />进行安装测试。 <br /><br />一旦测试成功,就可以上载你的大作,享受成功的喜悦。 <br /><br />制作RPM包需要开发人员做很多工作。比如不仅要懂得c/c++编程,而且还要能熟练掌握像make、autoconf、diff、patch、 tar、install等工具的使用并能编写spec文件。但从长远来看,应用RPM，在软件包的维护和方便性方面使得开发者受益。
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/246696#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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>Thu, 25 Sep 2008 15:04:37 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/246696</link>
        <guid>http://shang.javaeye.com/blog/246696</guid>
      </item>
          <item>
        <title>rpm包制作与安装</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/246694" style="color:red;">http://shang.javaeye.com/blog/246694</a>&nbsp;
          发表时间: 2008年09月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在/usr/src/redhat/SOURCES下新建一个hellow目录，mv以上三个文件到里面 <br /><br />字串9<br /><br /><br />然后tar –czvf hellow-0.1-1.tar.gz hellow <br /><br />字串1<br /><br /><br /><br />搞定后就可以进入rpm包制作的关键步骤了――写一个spec，如果你对spec没有任何了解也不要紧，简单来说，它就是一个rpm包的信息列表和生成指南。 字串3 <br /><br />在/usr/src/redhat/SPECS下vi 一个hellow-0.1-1.spec，以下是我的spec的内容： 字串2 <br /><br />Summary: the First RPM of Howard 字串3 Name: hellow 字串6 Version: 0.1 字串5 Release: 1 字串4 Vendor:Ace soft (howard_ace@hotmail.com ) 字串1 License: Share 字串1 Group: Applications/Text 字串4 Source0:hellow-0.1-1.tar.gz 字串7 #Patch0:hellow-0.1-1.patch
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/246694#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 25 Sep 2008 15:02:24 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/246694</link>
        <guid>http://shang.javaeye.com/blog/246694</guid>
      </item>
          <item>
        <title>vsftpd</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/246693" style="color:red;">http://shang.javaeye.com/blog/246693</a>&nbsp;
          发表时间: 2008年09月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          下载地址:http://download.chinaunix.net/download/0001000/19.shtml
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/246693#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 25 Sep 2008 14:59:55 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/246693</link>
        <guid>http://shang.javaeye.com/blog/246693</guid>
      </item>
          <item>
        <title>xx.tar.bz2; xx.tar.gz文件的压缩和解压方法</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/246691" style="color:red;">http://shang.javaeye.com/blog/246691</a>&nbsp;
          发表时间: 2008年09月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="font-size: medium">解压缩 xxx.tar.gz<br /><span style="color: red">tar -zxvf xxx.tar.gz</span> <br /><br />解压缩 xxx.tar.bz2<br /><span style="color: red">tar -jxvf xxx.tar.bz2</span> <br /><br />压缩aaa bbb目录为xxx.tar.gz<br /><span style="color: red">tar -zcvf xxx.tar.gz aaa bbb </span><br /><br />压缩aaa bbb目录为xxx.tar.bz2<br /><span style="color: red">tar -jcvf xxx.tar.bz2 aaa bbb</span></span>
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/246691#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 25 Sep 2008 14:57:27 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/246691</link>
        <guid>http://shang.javaeye.com/blog/246691</guid>
      </item>
          <item>
        <title>liunx下vi命令详解 </title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/246686" style="color:red;">http://shang.javaeye.com/blog/246686</a>&nbsp;
          发表时间: 2008年09月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          vi编辑器是所有Unix及Linux系统下标准的编辑器，它的强大不逊色于任何最新的文本编辑器，这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本，vi编辑器是完全相同的，因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器，学会它后，您将在Linux的世界里畅行无阻。 <br />1、vi的基本概念 <br />　　基本上vi可以分为三种状态，分别是命令模式（command mode）、插入模式（Insert mode）和底行模式（last line mode），各模式的功能区分如下： <br />1) 命令行模式command mode） <br />　　控制屏幕光标的移动，字符、字或行的删除，移动复制某区段及进入Insert mode下，或者到 last line mode。 <br />2) 插入模式（Insert mode） <br />　　只有在Insert mode下，才可以做文字输入，按「ESC」键可回到命令行模式。 <br />3) 底行模式（last line mode） <br />　　将文件保存或退出vi，也可以设置编辑环境，如寻找字符串、列出行号……等。 <br />不过一般我们在使用时把vi简化成两个模式，就是将底行模式（last line mode）也算入命令行模式command mode）。 <br />2、vi的基本操作 <br />a) 进入vi <br />　　在系统提示符号输入vi及文件名称后，就进入vi全屏幕编辑画面： <br />　　　$ vi myfile <br />　　不过有一点要特别注意，就是您进入vi之后，是处于「命令行模式（command mode）」，您要切换到「插入模式（Insert mode）」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标，结果电脑一直哔哔叫，把自己气个半死，所以进入vi后，先不要乱动，转换到「插入模式（Insert mode）」再说吧！ <br />b) 切换至插入模式（Insert mode）编辑文件 <br />　　在「命令行模式（command mode）」下按一下字母「i」就可以进入「插入模式（Insert mode）」，这时候你就可以开始输入文字了。 <br />c) Insert 的切换 <br />　　您目前处于「插入模式（Insert mode）」，您就只能一直输入文字，如果您发现输错了字！想用光标键往回移动，将该字删除，就要先按一下「ESC」键转到「命令行模式（command mode）」再删除文字。 <br />d) 退出vi及保存文件 <br />　　在「命令行模式（command mode）」下，按一下「：」冒号键进入「Last line mode」，例如： <br />: w filename （输入 「w filename」将文章以指定的文件名filename保存） <br />: wq (输入「wq」，存盘并退出vi) <br />: q! (输入q!， 不存盘强制退出vi) <br />3、命令行模式（command mode）功能键 <br />1）. 插入模式 <br />　　按「i」切换进入插入模式「insert mode」，按“i”进入插入模式后是从光标当前位置开始输入文件； <br />　　按「a」进入插入模式后，是从目前光标所在位置的下一个位置开始输入文字； <br />　　按「o」进入插入模式后，是插入新的一行，从行首开始输入文字。 <br />2）. 从插入模式切换为命令行模式 <br />　　按「ESC」键。 <br />3）. 移动光标 <br />　　vi可以直接用键盘上的光标来上下左右移动，但正规的vi是用小写英文字母「h」、「j」、「k」、「l」，分别控制光标左、下、上、右移一格。 <br />　　按「ctrl」+「b」：屏幕往“后”移动一页。 <br />　　按「ctrl」+「f」：屏幕往“前”移动一页。 <br />　　按「ctrl」+「u」：屏幕往“后”移动半页。 <br />　　按「ctrl」+「d」：屏幕往“前”移动半页。 <br />　　按数字「0」：移到文章的开头。 <br />　　按「G」：移动到文章的最后。 <br />　　按「$」：移动到光标所在行的“行尾”。 <br />　　按「^」：移动到光标所在行的“行首” <br />　　按「w」：光标跳到下个字的开头 <br />　　按「e」：光标跳到下个字的字尾 <br />　　按「b」：光标回到上个字的开头 <br />　　按「#l」：光标移到该行的第#个位置，如：5l,56l。 <br />4）. 删除文字 <br />　　「x」：每按一次，删除光标所在位置的“后面”一个字符。 <br />　　「#x」：例如，「6x」表示删除光标所在位置的“后面”6个字符。 <br />　　「X」：大写的X，每按一次，删除光标所在位置的“前面”一个字符。 <br />　　「#X」：例如，「20X」表示删除光标所在位置的“前面”20个字符。 <br />　　「dd」：删除光标所在行。 <br />　　「#dd」：从光标所在行开始删除#行 <br />5）. 复制 <br />　　「yw」：将光标所在之处到字尾的字符复制到缓冲区中。 <br />　　「#yw」：复制#个字到缓冲区 <br />　　「yy」：复制光标所在行到缓冲区。 <br />　　「#yy」：例如，「6yy」表示拷贝从光标所在的该行“往下数”6行文字。 <br />　　「p」：将缓冲区内的字符贴到光标所在位置。注意：所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。 <br />6）. 替换 <br />　　「r」：替换光标所在处的字符。 <br />　　「R」：替换光标所到之处的字符，直到按下「ESC」键为止。 <br />7）. 回复上一次操作 <br />　　「u」：如果您误执行一个命令，可以马上按下「u」，回到上一个操作。按多次“u”可以执行多次回复。 <br />8）. 更改 <br />　　「cw」：更改光标所在处的字到字尾处 <br />　　「c#w」：例如，「c3w」表示更改3个字 <br />9）. 跳至指定的行 <br />　　「ctrl」+「g」列出光标所在行的行号。 <br />　　「#G」：例如，「15G」，表示移动光标至文章的第15行行首。 <br />4、Last line mode下命令简介 <br />　　在使用「last line mode」之前，请记住先按「ESC」键确定您已经处于「command mode」下后，再按「：」冒号即可进入「last line mode」。 <br />A) 列出行号 <br />　「set nu」：输入「set nu」后，会在文件中的每一行前面列出行号。 <br />B) 跳到文件中的某一行 <br />　「#」：「#」号表示一个数字，在冒号后输入一个数字，再按回车键就会跳到该行了，如输入数字15，再回车，就会跳到文章的第15行。 <br />C) 查找字符 <br />　「/关键字」：先按「/」键，再输入您想寻找的字符，如果第一次找的关键字不是您想要的，可以一直按「n」会往后寻找到您要的关键字为止。 <br />　「?关键字」：先按「?」键，再输入您想寻找的字符，如果第一次找的关键字不是您想要的，可以一直按「n」会往前寻找到您要的关键字为止。 <br />D) 保存文件 <br />　「w」：在冒号输入字母「w」就可以将文件保存起来。 <br />E) 离开vi <br />　「q」：按「q」就是退出，如果无法离开vi，可以在「q」后跟一个「!」强制离开vi。 <br />　「qw」：一般建议离开时，搭配「w」一起使用，这样在退出的时候还可以保存文件。 <br />5、vi命令列表 <br />1、下表列出命令模式下的一些键的功能： <br />h <br />左移光标一个字符 <br />l <br />右移光标一个字符 <br />k <br />光标上移一行 <br />j <br />光标下移一行 <br />^ <br />光标移动至行首 <br />0 <br />数字“0”，光标移至文章的开头 <br />G <br />光标移至文章的最后 <br />$ <br />光标移动至行尾 <br />Ctrl+f <br />向前翻屏 <br />Ctrl+b <br />向后翻屏 <br />Ctrl+d <br />向前翻半屏 <br />Ctrl+u <br />向后翻半屏 <br />i <br />在光标位置前插入字符 <br />a <br />在光标所在位置的后一个字符开始增加 <br />o <br />插入新的一行，从行首开始输入 <br />ESC <br />从输入状态退至命令状态 <br />x <br />删除光标后面的字符 <br />#x <br />删除光标后的＃个字符 <br />X <br />(大写X)，删除光标前面的字符 <br />#X <br />删除光标前面的#个字符 <br />dd <br />删除光标所在的行 <br />#dd <br />删除从光标所在行数的#行 <br />yw <br />复制光标所在位置的一个字 <br />#yw <br />复制光标所在位置的#个字 <br />yy <br />复制光标所在位置的一行 <br />#yy <br />复制从光标所在行数的#行 <br />p <br />粘贴 <br />u <br />取消操作 <br />cw <br />更改光标所在位置的一个字 <br />#cw <br />更改光标所在位置的#个字 <br />2、下表列出行命令模式下的一些指令 <br />w filename <br />储存正在编辑的文件为filename <br />wq filename <br />储存正在编辑的文件为filename，并退出vi <br />q! <br />放弃所有修改，退出vi <br />set nu <br />显示行号 <br />/或? <br />查找，在/后输入要查找的内容 <br />n <br />与/或?一起使用，如果查找的内容不是想要找的关键字，按n或向后（与/联用）或向前（与?联用）继续查找，直到找到为止。 <br />对于第一次用vi，有几点注意要提醒一下： <br />1、用vi打开文件后，是处于「命令行模式（command mode）」，您要切换到「插入模式（Insert mode）」才能够输入文字。切换方法：在「命令行模式（command mode）」下按一下字母「i」就可以进入「插入模式（Insert mode）」，这时候你就可以开始输入文字了。 <br />2、编辑好后，需从插入模式切换为命令行模式才能对文件进行保存，切换方法：按「ESC」键。 <br />3、保存并退出文件：在命令模式下输入:wq即可！（别忘了wq前面的:）
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/246686#comments" style="color:red;">已有 <strong>2</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 25 Sep 2008 14:45:17 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/246686</link>
        <guid>http://shang.javaeye.com/blog/246686</guid>
      </item>
          <item>
        <title>痛苦的记忆：关于VMware安装RedHat linux9后无法连接局域网或Internet的问题</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/240205" style="color:red;">http://shang.javaeye.com/blog/240205</a>&nbsp;
          发表时间: 2008年09月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1、linux在启动检测硬件网络时会显示eth0网卡检测失败(如图1)是很多初学者遇到的问题，也是困扰了我很久问题，我们在安装时选择的DHCP动态分配IP，但在虚拟机上安装红帽9时却不能如你所愿，需要以root用户登陆后手动配置网络才行，按图1中间所示图进去配置。<br /><span style="color: red">(此步操作非常重要)</span><br />2、	点开始|系统设置|网络，选择设备选项卡列表下的eth0，将IP策略改为手动配置，设置一个局域网中未用的IP，子网掩码和网关跟本机的一样，设置完后保存(见图2)。<br />3、	设置DNS，看一下本机的DNS，并设置主DNS和第二、第三DNS,(见附图2)。<br /> <span style="color: red">(此步操作非常重要)</span><br />4、	配置完后选项中eth0记着一定要激活，并注销下即可。再次启动自检时如图1下图所示网卡检测OK。<br /><span style="color: red">(此步操作非常重要)</span>
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/240205#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 10 Sep 2008 14:36:52 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/240205</link>
        <guid>http://shang.javaeye.com/blog/240205</guid>
      </item>
          <item>
        <title>Rose建模</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/222734" style="color:red;">http://shang.javaeye.com/blog/222734</a>&nbsp;
          发表时间: 2008年08月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          IBM Rational Rose
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/222734#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 01 Aug 2008 13:40:59 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/222734</link>
        <guid>http://shang.javaeye.com/blog/222734</guid>
      </item>
          <item>
        <title>EA建模</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/222733" style="color:red;">http://shang.javaeye.com/blog/222733</a>&nbsp;
          发表时间: 2008年08月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          EA建模(Enterprise Architect)<br /><br />下载地址：<br />http://www.onlinedown.net/soft/6503.htm<br />http://www.skycn.com/soft/11910.html
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/222733#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 01 Aug 2008 13:39:52 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/222733</link>
        <guid>http://shang.javaeye.com/blog/222733</guid>
      </item>
          <item>
        <title>润乾报表</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/219779" style="color:red;">http://shang.javaeye.com/blog/219779</a>&nbsp;
          发表时间: 2008年07月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          强大的数据报表<br />见:http://www.runqian.com.cn/
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/219779#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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>Sat, 26 Jul 2008 11:57:42 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/219779</link>
        <guid>http://shang.javaeye.com/blog/219779</guid>
      </item>
          <item>
        <title>ExtJS</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/219778" style="color:red;">http://shang.javaeye.com/blog/219778</a>&nbsp;
          发表时间: 2008年07月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          ExtJS是Web界面非常强大的工具
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/219778#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 26 Jul 2008 11:50:36 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/219778</link>
        <guid>http://shang.javaeye.com/blog/219778</guid>
      </item>
          <item>
        <title>相关子查询与非相关子查询</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/219776" style="color:red;">http://shang.javaeye.com/blog/219776</a>&nbsp;
          发表时间: 2008年07月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          子查询：嵌套在其他查询中的查询称之。<br />子查询又称内部，而包含子查询的语句称之外部查询（又称主查询）。<br />所有的子查询可以分为两类，即相关子查询和非相关子查询<br />1>非相关子查询是独立于外部查询的子查询，子查询总共执行一次，执行完毕后将值传递给外部查询。<br />2>相关子查询的执行依赖于外部查询的数据，外部查询执行一行，子查询就执行一次。<br />故非相关子查询比相关子查询效率高<br /><br /><strong>--<em>非相关子查询</em></strong><br />SELECT EMPNO, LASTNAME<br />　　　　FROM EMPLOYEE<br />　　　　WHERE WORKDEPT = 'A00'<br />　　　　　AND SALARY > (SELECT AVG(SALARY)<br />　　　　　　　　　　　　　 FROM EMPLOYEE<br />　　　　　　　　　　　　　 WHERE WORKDEPT = 'A00')<br /><br /><strong>--<em>相关子查询</em></strong><br />SELECT E1.EMPNO, E1.LASTNAME, E1.WORKDEPT<br />　　　　FROM EMPLOYEE E1<br />　　　　WHERE SALARY > (SELECT AVG(SALARY)<br />　　　　　　　　　　　　　 FROM EMPLOYEE E2<br />　　　　　　　　　　　　　 WHERE E2.WORKDEPT = E1.WORKDEPT)<br />　　　　ORDER BY E1.WORKDEPT
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/219776#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 26 Jul 2008 11:41:58 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/219776</link>
        <guid>http://shang.javaeye.com/blog/219776</guid>
      </item>
          <item>
        <title>Java经典程序</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/175432" style="color:red;">http://shang.javaeye.com/blog/175432</a>&nbsp;
          发表时间: 2008年03月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1、写出程序运行结果<br />public class Test{<br />&nbsp;&nbsp; static boolean foo(char c){<br />&nbsp;&nbsp;&nbsp; System.out.println(c);<br />&nbsp;&nbsp;&nbsp; return true;<br />&nbsp;&nbsp; }<br />&nbsp;&nbsp; public static void main(String[] args){<br />&nbsp;&nbsp;&nbsp;&nbsp; int i=0;<br />&nbsp;&nbsp;&nbsp;&nbsp; for(foo('A');foo('B')&amp;&amp;(i&lt;2);foo('C')){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foo('D');<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp; }<br />}<br />-----------------<br />结果：<br />A<br />B<br />D<br />C<br />B<br />D<br />C<br />B<br />-----------------<br />2.写出程序运行结果<br />import java.lang.StringBuffer;<br />public class Test2{<br />public static void stringReplace(String str){<br />str = str.replace('j','i');<br />}<br />public static void bufferReplace(StringBuffer sbf){<br />sbf = sbf.append("C");<br />}<br />public static void main(String args[]){<br />String strText=new String("java");<br />StringBuffer sbfText = new StringBuffer("java");<br />stringReplace(strText);<br />bufferReplace(sbfText);<br />System.out.println(strText+sbfText);<br />}<br />}<br />----------------------<br />运行结果：javajavaC<br />----------------------<br />3、现有程序如下，写出程序运行结果：<br />class A<br />{<br />	int a =1;<br />	double d=2.0;<br />	void show(){<br />		System.out.println("Class A:a="+a+"\td="+d);<br />	}<br />}<br /><br />class B extends A<br />{<br />	float a=3.0f;<br />	String d="Java program.";<br />	void show(){<br />		super.show();<br />		System.out.println("Class B:a="+a+"\td="+d);<br />	}<br /><br />	public static void main(String[] args){<br />		//A a = new A();<br />		//a.show();<br />		A b = new B();<br />		b.show();<br />		System.out.println(b.a);<br />	}<br />}<br />--------------------------------------------<br />①若在应用程序的main方法中有以下语句：<br />A a = new A();<br />a.show();<br />结果是：<br />②若在应用程序的main方法中定义类B的对象b；<br />A b = new B();<br />b.show();<br />System.out.println(b.a);<br />结果是：<br />--------------------------------------------<br />4、若应用程序的main方法中，定义字符串数组f和s：分别表示扑克牌的牌面值和花<br /><br />色；定义52个元素的Card类型数组deck，用来存放4个花色的52张牌。如下所示：<br />String number[] = <br /><br />{"A","2","3","4","5","6","7","8","9","10","J","Q","K"};<br />String color[] = {"黑桃","红桃","梅花","方块"};<br /><br />Card deck = new Card[52];<br /><br />Card类的源码如下：<br />class Card{<br />private String face;<br />private String suit;<br />	public Card(String f,String s){<br />		face = f;<br />		suit = s;<br />	}<br />	<br />	protected String getSuit(){<br />		return suit;<br />	}<br />	<br />	protected String getFace(){<br />		return face;<br />	}<br /><br />	public String toString(){<br />		return face + "of" +suit;<br />	}<br />}<br />①用Card类的构造方法给deck数组的52张牌赋值，要求黑红梅方，从大到小的顺<br /><br />序存放<br />②编写模拟洗牌的程序，把数组deck中的扑克牌随机打乱存放顺序
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/175432#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 24 Mar 2008 14:48:48 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/175432</link>
        <guid>http://shang.javaeye.com/blog/175432</guid>
      </item>
          <item>
        <title>J2EE的核心API与组件</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/169360" style="color:red;">http://shang.javaeye.com/blog/169360</a>&nbsp;
          发表时间: 2008年03月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          J2EE的核心API与组件<br /><br />J2EE平台由一整套服务（Services）、应用程序接口（APIs）和协议构成，它对开发基<br />于Web的多层应用提供了功能支持，下面对J2EE中的13种核心技术规范：JDBC, JNDI, EJBs, RMI, JSP, Java servlets, XML, JMS, Java IDL, JTS, JTA, JavaMail 和 JAF。<br /><br />1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDBC(Java Database Connectivity)：<br />JDBC API为访问不同的数据库提供了一种统一的途径，象ODBC一样，JDBC对开发者屏蔽<br />了一些细节问题，另外，JDCB对数据库的访问也具有平台无关性。 <br />2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JNDI(Java Name and Directory Interface)：<br />JNDI API被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源<br />如DNS和LDAP，本地文件系统，或应用服务器中的对象。 <br />3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EJB(Enterprise JavaBean):<br />J2EE技术之所以赢得某体广泛重视的原因之一就是EJB。它们提供了一个框架来开发和实<br />施分布式商务逻辑，由此很显著地简化了具有可伸缩性和高度复杂的企业级应用的开发<br />。EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用。容器负责提供公用的<br />服务，例如目录服务、事务管理、安全性、资源缓冲池以及容错性。但这里值得注意的<br />是，EJB并不是实现J2EE的唯一途径。正是由于J2EE的开放性，使得有的厂商能够以一种<br />和EJB平行的方式来达到同样的目的。 <br />4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RMI(Remote Method Invoke):<br />正如其名字所表示的那样，RMI协议调用远程对象上方法。它使用了序列化方式在客户端<br />和服务器端传递数据。RMI是一种被EJB使用的更底层的协议。 <br />5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Java IDL/CORBA:<br />在Java IDL的支持下，开发人员可以将Java和CORBA集成在一起。他们可以创建Java对象<br />并使之可在CORBA ORB中展开, 或者他们还可以创建Java类并作为和其它ORB一起展开的C<br />ORBA对象的客户。后一种方法提供了另外一种途径，通过它Java可以被用于将你的新的<br />应用和旧的系统相集成。 <br />6.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JSP(Java Server Pages):<br />JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对<br />这些Java代码进行处理，然后将生成的HTML页面返回给客户端的浏览器。 <br />7.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Java Servlet:<br />Servlet是一种小型的Java程序，它扩展了Web服务器的功能。作为一种服务器端的应用<br />，当被请求时开始执行，这和CGI Perl脚本很相似。Servlet提供的功能大多与JSP类似<br />，不过实现的方式不同。JSP通常是大多数HTML代码中嵌入少量的Java代码，而servlets<br />全部由Java写成并且生成HTML。 <br />8.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XML(Extensible Markup Language):<br />XML是一种可以用来定义其它标记语言的语言。它被用来在不同的商务过程中共享数据。<br />XML的发展和Java是相互独立的，但是，它和Java具有的相同目标正是平台独立性。通过<br />将Java和XML的组合，您可以得到一个完美的具有平台独立性的解决方案。 <br />9.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JMS(Java Message Service):<br />MS是用于和面向消息的中间件相互通信的应用程序接口(API)。它既支持点对点的域，有<br />支持发布/订阅(publish/subscribe)类型的域，并且提供对下列类型的支持：经认可的<br />消息传递,事务型消息的传递，一致性消息和具有持久性的订阅者支持。JMS还提供了另<br />一种方式来对您的应用与旧的后台系统相集成。 <br />10.&nbsp;&nbsp; JTA(Java Transaction Architecture):<br />JTA定义了一种标准的API，应用系统由此可以访问各种事务监控。 <br />11.&nbsp;&nbsp; JTS(Java Transaction Service):<br />JTS是CORBA OTS事务监控的基本的实现。JTS规定了事务管理器的实现方式。该事务管理<br />器是在高层支持Java Transaction API (JTA)规范，并且在较底层实现OMG OTS <br />specification的Java映像。JTS事务管理器为应用服务器、资源管理器、独立的应用以<br />及通信资源管理器提供了事务服务。 <br />12.&nbsp;&nbsp; JavaMail:<br />JavaMail是用于存取邮件服务器的API，它提供了一套邮件服务器的抽象类。不仅支持SM<br />TP服务器，也支持IMAP服务器。<br />13.&nbsp;&nbsp; JAF(JavaBeans Activation Framework):<br />JavaMail利用JAF来处理MIME编码的邮件附件。MIME的字节流可以被转换成Java对象，或<br />者转换自Java对象。大多数应用都可以不需要直接使用JAF。
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/169360#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 08 Mar 2008 15:45:53 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/169360</link>
        <guid>http://shang.javaeye.com/blog/169360</guid>
      </item>
          <item>
        <title>组件的行为和动画效果</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/169319" style="color:red;">http://shang.javaeye.com/blog/169319</a>&nbsp;
          发表时间: 2008年03月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          事件 <br /><br />引用<br /><br />触发器名称 对应事件名称 事件描述 <br />addedEffect added 当组件被添加到容器时触发 <br />createCompleteEffect createComplete 当组件完成绘制时触发 <br />focusInEffect focusIn 当组件获得光标焦点时触发 <br />focusOutEffect focusOut 当组件失去光标焦点时触发 <br />hideEffect hide 当组件变成不可见时触发 <br />showEffect show 当组件变成可见时触发 <br />mouseDownEffect mouseDown 当鼠标在组件上按下时触发 <br />mouseUpEffect mouseUp 当鼠标在组件上松开时触发 <br />rollOverEffect rollOver 当鼠标移动到组件上时触发 <br />moveEffect move 当组件被移动时触发 <br />resizeEffect resize 当组件改变大小时触发 <br /><br /><br />Effect中 <br /><br />引用<br /><br />&lt;mx:AnimateProperty>可实现拉伸效果 <br />&lt;mx:Blur>模糊效果 <br />&lt;mx:Dissolve>实现淡出淡入效果,与&lt;mx:Fade>相似 <br />&lt;mx:Glow>外发光效果 <br />&lt;mx:Iris>以矩形方式出现或消失 <br />&lt;mx:Move>移动效果 <br />&lt;mx:Parallel>多种效果叠加 <br />&lt;mx:Pause>停止 mx.effects.easing.Bounce.easeOut可产生弹动效果 <br />&lt;mx:Resize>改变大小 <br />&lt;mx:Rotate>旋转角度 <br />&lt;mx:SoundEffect>声音效果 <br />&lt;mx:WipeDown>从上往下消失或出现 <br />&lt;mx:WipeLeft>从右往左消失或出现 <br />&lt;mx:WipeRight>从左往右消失或出现 <br />&lt;mx:WipeUp>从下往上消失或出现 <br />&lt;mx:Zoom>放大或缩小 <br />&lt;/mx:Transition>不同state切换时的过渡效果 <br />Charts(统计) <br />&lt;mx:AreaChart>是一种以面积作为表示方式 <br />&lt;mx:AxisRenderer>是一种轴图,股票交易常以这种方式表示 <br />&lt;mx:BarChart>是柱状图 <br />&lt;mx:BubbleChart>气泡图 <br />&lt;mx:CandlestickChart>一种比较有趣的图,”涨”跟”跌”的颜色会不一样 <br />&lt;mx:CategoryAxis>跟AxisRenderer很像 <br />&lt;mx:ColumnChart>跟&lt;mx:BarChart>很像 <br />&lt;mx:DateTimeAxis>以日期为轴的折线图 <br />&lt;mx:GridLines>多条线图 <br />&lt;mx:HLOCChart>跟AxisRenderer很像 <br />&lt;mx:Legend>图例,离散的点 <br />&lt;mx:LinearAxis>Axis系列 <br />&lt;mx:LineChart>折线图 <br />&lt;mx:LogAxis>Axis系列 <br />&lt;mx:PieChart>饼图 <br />&lt;mx:PlotChart>跟Legend很像
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/169319#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 08 Mar 2008 13:21:55 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/169319</link>
        <guid>http://shang.javaeye.com/blog/169319</guid>
      </item>
          <item>
        <title>Hibernate主键生成方式</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/169318" style="color:red;">http://shang.javaeye.com/blog/169318</a>&nbsp;
          发表时间: 2008年03月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          经常使用hibernate来自动生成主键，在业务处理中，用得最多的就是自动生成UUID作为主键，但不具备业务主键，这样可以非常准确的保证主键的唯一性，但一个很大的缺点就是hibernate的关联，非主键关联处理起来很烦心，特别上次处理非主键一对一，烦心到死。还有一个用的比较多的生成算法就是Assigned ，如果主键由自己在程序中生成的话一般都是用这个主键。<br />在网上浏览了一些关于hibernate主键生成算法的说明，摘录如下<br /><br />主键产生器的可选项说明： <br />1) Assigned <br />&nbsp;&nbsp;&nbsp;&nbsp; 主键由外部程序负责生成，无需Hibernate参与。 <br /><br />2) hilo <br />&nbsp;&nbsp;&nbsp;&nbsp; 通过hi/lo 算法实现的主键生成机制，需要额外的数据库表保存主键生成历史状态。 <br /><br />3) seqhilo <br />&nbsp;&nbsp;&nbsp;&nbsp; 与hilo 类似，通过hi/lo 算法实现的主键生成机制，只是主键历史状态保存在Sequence中，适用于支持Sequence的数据库，如Oracle。 <br /><br />4) increment <br />&nbsp;&nbsp;&nbsp;&nbsp; 主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量，以保存着当前的最大值，之后每次需要生成主键的时候将此值加1作为主键。 <br />　　这种方式可能产生的问题是：如果当前有多个实例访问同一个数据库，那么由于各个实例各自维护主键状态，不同实例可能生成同样的主键，从而造成主键重复异常。因此，如果同一数据库有多个实例访问，此方式必须避免使用。 <br /><br />5) identity <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 采用数据库提供的主键生成机制。如DB2、SQL Server、MySQL中的主键生成机制。 <br /><br />6) sequence <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 采用数据库提供的sequence 机制生成主键。如Oralce 中的Sequence。 <br /><br />7) native <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由Hibernate根据底层数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式。 <br /><br />8) uuid.hex <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由Hibernate基于128 位唯一值产生算法生成16 进制数值（编码后以长度32 的字符串表示）作为主键。 <br /><br />9) uuid.string <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 与uuid.hex 类似，只是生成的主键未进行编码（长度16）。在某些数据库中可能出现问题（如PostgreSQL）。 <br /><br />10) foreign <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用外部表的字段作为主键。 <br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 一般而言，利用uuid.hex式生成主键将提供最好的性能和数据库平台适应性。 <br />&nbsp;&nbsp;&nbsp;&nbsp; 另外由于常用的数据库，如Oracle、DB2、SQLServer、MySql 等，都提供了易用的主键生成机制（Auto-Increase 字段或者Sequence）。我们可以在数据库提供的主键生成机制上，采用generator-class=native的主键生成方式。不过值得注意的是，一些数据库提供的主键生成机制在效率上未必最佳，大量并发insert数据时可能会引起表之间的互锁。 <br />&nbsp;&nbsp;&nbsp;&nbsp; 数据库提供的主键生成机制，往往是通过在一个内部表中保存当前主键状态（如对于自增型主键而言，此内部表中就维护着当前的最大值和递增量），之后每次插入数据会读取这个最大值，然后加上递增量作为新记录的主键，之后再把这个新的最大值更新回内部表中，这样，一次Insert操作可能导致数据库内部多次表读写操作，同时伴随的还有数据的加锁解锁操作，这对性能产生了较大影响。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; 因此，对于并发Insert要求较高的系统，推荐采用uuid.hex 作为主键生成机制。 <br />&nbsp;&nbsp;&nbsp;&nbsp; 如果需要采用定制的主键产生算法，则在此处配置主键生成器，主键生成器必须实现net.sf.hibernate.id.IdentifierGenerator 接口。
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/169318#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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>Sat, 08 Mar 2008 13:11:44 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/169318</link>
        <guid>http://shang.javaeye.com/blog/169318</guid>
      </item>
          <item>
        <title>Java对象序列化</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/169317" style="color:red;">http://shang.javaeye.com/blog/169317</a>&nbsp;
          发表时间: 2008年03月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          java对象序列化2008-01-21 18:11所谓对象序列化就是将对象的状态转换成字节流，以后可以通过这些值再生成相同状态的对象。这个过程也可以通过网络实现，可以先在Windows机器上创建一个对象，对其序列化，然后通过网络发给一台Unix机器，然后在那里准确无误地重新"装配"。像RMI、Socket、JMS、EJB它们中的一种，彼此为什么能够传递Java对象，当然都是对象序列化机制的功劳。&nbsp;&nbsp; <br />java对象序列化机制一般来讲有两种用途：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.Java的JavaBeans: Bean的状态信息通常是在设计时配置的,Bean的状态信息必须被存起来，以便当程序运行时能恢复这些状态信息,这需要将对象的状态保存到文件中，而后能够通过读入对象状态来重新构造对象，恢复程序状态。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.RMI允许象在本机上一样操作远程机器上的对象;或使用套接字在网络上传送对象的程序来说，这些都是需要实现serializaiton机制的。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们通过让类实现java.io.Serializable 接口可以将类序列化。这个接口是一个制造者（marker）接口。也就是说，对于要实现它的类来说，该接口不需要实现任何方法。它主要用来通知Java虚拟机(JVM)，需要将一个对象序列化。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于这个，有几点我们需要明确：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1).并非所有类都可以序列化，在cmd下，我们输入serialver java.net.Socket，可以得到socket是否可序列化的信息，实际上socket是不可序列化的。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2).java有很多基础类已经实现了serializable接口，比如string,vector等。但是比如hashtable就没有实现serializable接口。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将对象读出或者写入流的主要类有两个: ObjectOutputStream与ObjectInputStream 。ObjectOutputStream 提供用来将对象写入输出流的writeObject方法， ObjectInputStream提供从输入流中读出对象的readObject方法。使用这些方法的对象必须已经被序列化的。也就是说，必须已经实现Serializable接口。如果你想writeobject一个hashtable对象，那么，会得到一个异常。<br /><br /><br />序列化的过程就是对象写入字节流和从字节流中读取对象。将对象状态转换成字节流之后，可以用java.io包中的各种字节流类将其保存到文件中，管道到另一线程中或通过网络连接将对象数据发送到另一主机。对象序列化功能非常简单、强大，在RMI、Socket、JMS、EJB都有应用。对象序列化问题在网络编程中并不是最激动人心的课题，但却相当重要，具有许多实用意义。<br /><br />对象序列化可以实现分布式对象。主要应用例如：RMI要利用对象序列化运行远程主机上的服务，就像在本地机上运行对象时一样。 <br />java对象序列化不仅保留一个对象的数据，而且递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中，可以保存在文件中或在网络连接上传递。利用对象序列化可以进行对象的“深复制”，即复制对象本身及引用的对象本身。序列化一个对象可能得到整个对象序列。 <br />&nbsp;&nbsp;&nbsp;&nbsp; java序列化比较简单，通常不需要编写保存和恢复对象状态的定制代码。实现java.io.Serializable接口的类对象可以转换成字节流或从字节流恢复，不需要在类中增加任何代码。只有极少数情况下才需要定制代码保存或恢复对象状态。这里要注意：不是每个类都可序列化，有些类是不能序列化的，例如涉及线程的类与特定JVM有非常复杂的关系。<br /><br />序列化机制：<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 序列化分为两大部分：序列化和反序列化。序列化是这个过程的第一部分，将数据分解成字节流，以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示，有时还要恢复数据。恢复数据要求有恢复数据的对象实例。ObjectOutputStream中的序列化过程与字节流连接，包括对象类型和版本信息。反序列化时，JVM用头信息生成对象实例，然后将对象字节流中的数据复制到对象数据成员中。下面我们分两大部分来阐述：<br /><br />处理对象流：<br />（序列化过程和反序列化过程）<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; java.io包有两个序列化对象的类。ObjectOutputStream负责将对象写入字节流，ObjectInputStream从字节流重构对象。<br />&nbsp;&nbsp;&nbsp;&nbsp; 我们先了解ObjectOutputStream类吧。ObjectOutputStream类扩展DataOutput接口。<br />writeObject()方法是最重要的方法，用于对象序列化。如果对象包含其他对象的引用，则writeObject()方法递归序列化这些对象。每个ObjectOutputStream维护序列化的对象引用表，防止发送同一对象的多个拷贝。（这点很重要）由于writeObject()可以序列化整组交叉引用的对象，因此同一ObjectOutputStream实例可能不小心被请求序列化同一对象。这时，进行反引用序列化，而不是再次写入对象字节流。<br />下面，让我们从例子中来了解ObjectOutputStream这个类吧。<br /><br /><br />// 序列化 today's date 到一个文件中. <br />&nbsp;&nbsp;&nbsp; FileOutputStream f = new FileOutputStream("tmp"); <br />&nbsp;&nbsp;&nbsp; ObjectOutputStream s = new ObjectOutputStream(f); <br />&nbsp;&nbsp;&nbsp;&nbsp; s.writeObject("Today"); <br />&nbsp;&nbsp;&nbsp;&nbsp; s.writeObject(new Date()); <br />&nbsp;&nbsp;&nbsp;&nbsp; s.flush(); <br />&nbsp;&nbsp;&nbsp;&nbsp; 现在，让我们来了解ObjectInputStream这个类。它与ObjectOutputStream相似。它扩展DataInput接口。ObjectInputStream中的方法镜像DataInputStream中读取Java基本数据类型的公开方法。readObject()方法从字节流中反序列化对象。每次调用readObject()方法都返回流中下一个Object。对象字节流并不传输类的字节码，而是包括类名及其签名。readObject()收到对象时，JVM装入头中指定的类。如果找不到这个类，则readObject()抛出ClassNotFoundException,如果需要传输对象数据和字节码，则可以用RMI框架。ObjectInputStream的其余方法用于定制反序列化过程。<br />例子如下：<br /><br /><br />//从文件中反序列化 string 对象和 date 对象 <br />&nbsp;&nbsp;&nbsp; FileInputStream in = new FileInputStream("tmp"); <br />&nbsp;&nbsp;&nbsp; ObjectInputStream s = new ObjectInputStream(in); <br />&nbsp;&nbsp;&nbsp; String today = (String)s.readObject(); <br />&nbsp;&nbsp;&nbsp; Date date = (Date)s.readObject(); <br />定制序列化过程:<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 序列化通常可以自动完成，但有时可能要对这个过程进行控制。java可以将类声明为serializable，但仍可手工控制声明为static或transient的数据成员。<br />例子：一个非常简单的序列化类。<br /><br /><br />public class simpleSerializableClass implements Serializable{ <br />&nbsp;&nbsp;&nbsp; String sToday="Today:"; <br />&nbsp;&nbsp;&nbsp; transient Date dtToday=new Date(); <br />} <br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 序列化时，类的所有数据成员应可序列化除了声明为transient或static的成员。将变量声明为transient告诉JVM我们会负责将变元序列化。将数据成员声明为transient后，序列化过程就无法将其加进对象字节流中，没有从transient数据成员发送的数据。后面数据反序列化时，要重建数据成员（因为它是类定义的一部分），但不包含任何数据，因为这个数据成员不向流中写入任何数据。记住，对象流不序列化static或transient。我们的类要用writeObject()与readObject()方法以处理这些数据成员。使用writeObject()与readObject()方法时，还要注意按写入的顺序读取这些数据成员。<br />关于如何使用定制序列化的部分代码如下：<br /><br /><br />//重写writeObject()方法以便处理transient的成员。 <br />public void writeObject(ObjectOutputStream outputStream) throws IOException{ <br />&nbsp;&nbsp;&nbsp;&nbsp; outputStream.defaultWriteObject();//使定制的writeObject()方法可以 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 利用自动序列化中内置的逻辑。 <br />&nbsp;&nbsp;&nbsp;&nbsp; outputStream.writeObject(oSocket.getInetAddress()); <br />&nbsp;&nbsp;&nbsp;&nbsp; outputStream.writeInt(oSocket.getPort()); <br />} <br />//重写readObject()方法以便接收transient的成员。 <br />private void readObject(ObjectInputStream inputStream) throws IOException,ClassNotFoundException{ <br />&nbsp;&nbsp;&nbsp;&nbsp; inputStream.defaultReadObject();//defaultReadObject()补充自动序列化 <br />&nbsp;&nbsp;&nbsp; InetAddress oAddress=(InetAddress)inputStream.readObject(); <br />&nbsp;&nbsp;&nbsp; int iPort =inputStream.readInt(); <br />&nbsp;&nbsp;&nbsp;&nbsp; oSocket = new Socket(oAddress,iPort); <br />&nbsp;&nbsp;&nbsp;&nbsp; iID=getID(); <br />&nbsp;&nbsp;&nbsp;&nbsp; dtToday =new Date(); <br />} <br /><br /><br />完全定制序列化过程:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 如果一个类要完全负责自己的序列化，则实现Externalizable接口而不是Serializable接口。Externalizable接口定义包括两个方法writeExternal()与readExternal()。利用这些方法可以控制对象数据成员如何写入字节流.类实现Externalizable时，头写入对象流中，然后类完全负责序列化和恢复数据成员，除了头以外，根本没有自动序列化。这里要注意了。声明类实现Externalizable接口会有重大的安全风险。writeExternal()与readExternal()方法声明为public，恶意类可以用这些方法读取和写入对象数据。如果对象包含敏感信息，则要格外小心。这包括使用安全套接或加密整个字节流。到此为至，我们学习了序列化的基础部分知识。
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/169317#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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>Sat, 08 Mar 2008 13:09:21 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/169317</link>
        <guid>http://shang.javaeye.com/blog/169317</guid>
      </item>
          <item>
        <title>取掉四则混合运算中的注释，并输出式子</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/169075" style="color:red;">http://shang.javaeye.com/blog/169075</a>&nbsp;
          发表时间: 2008年03月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          public class Test5	{<br />	public static void main(String[] args){<br />		String str="(1.9/*3C6*/+(20+41)/*AA*//(25*11/*BB*/)-3)*2+3/2/*00*/";<br />		//条件:"/*[[0-9][A-Z][0-9]][[A-Z][A-Z]][[0-9][0-9]]*/";<br />		String ss="(/\\p{Punct}[A-Z][A-Z]\\p{Punct}/)|(/\\p{Punct}[0-9][A-Z][0-9]\\p{Punct}/)|(/\\p{Punct}[0-9][0-9]\\p{Punct}/)";<br />		String[]strSpl= str.split(ss);	<br />		System.out.println("式子是:"+str);<br />		StringBuffer sbf = new StringBuffer();<br />			for(int i=0;i&lt;strSpl.length;i++){		<br />				System.out.println("截取后的字符串"+i+"是:"+strSpl[i]);<br />				sbf.append(strSpl[i]);		<br />			}<br />		String result = sbf.toString();<br />		System.out.println("最后的式子是:"+sbf);<br />		//System.out.println("最后的结果是:"+Float.valueOf(result));<br />	}<br />}
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/169075#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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>Fri, 07 Mar 2008 15:24:09 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/169075</link>
        <guid>http://shang.javaeye.com/blog/169075</guid>
      </item>
          <item>
        <title>递归算法</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/165972" style="color:red;">http://shang.javaeye.com/blog/165972</a>&nbsp;
          发表时间: 2008年02月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          用递归实现文件目录列表:<br />File dir = new File("d:\\java\project");<br />public void directory(File dir){<br />&nbsp; String[] fileList = dir.list();<br />&nbsp; String&nbsp; dirPath = new dir.getAbsolutePath();<br /><br />&nbsp; for(int&nbsp; i=0;i&lt;file.length;i++){ <br />&nbsp;&nbsp;&nbsp; File file = new File(dirPath+"\\"+fileList[i]);<br />&nbsp;&nbsp;&nbsp; if(file.isFile){&nbsp; //递归判断条件，是一个文件就打出来<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(file.getName());<br />&nbsp;&nbsp;&nbsp;&nbsp; }else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; directory(file); //否则就再调用方法,即递归<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp; }<br />}<br /><br /><br />递归的其他应用：<br />①文件目录列表<br />②字母顺序颠倒<br />③汉诺塔<br />③快速排序
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/165972#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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>Thu, 28 Feb 2008 22:53:37 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/165972</link>
        <guid>http://shang.javaeye.com/blog/165972</guid>
      </item>
          <item>
        <title>文件输入输出I/O</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/165947" style="color:red;">http://shang.javaeye.com/blog/165947</a>&nbsp;
          发表时间: 2008年02月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          File主要用于在磁盘上读写文件<br />1、在程序中,用File和JFileChoose让用户定义或者指定一个文件<br />2、在文件中，用FileOutputStream和FileInputStream读写字节<br />3、在文件中，用DataOutputStream和DataInputStream读写原始数据类型值<br />4、在文件中，用PrintWriter和BufferedReader读写对象<br />5、在文件中，用ObjectOutputStream和ObjectInputStream读写对象<br />文件输入输出中常见对象的方法如下：<br />File对象的几个常用方法:<br />①exists():文件是否存在<br />②isFile():判断是否是文件还是目录（真为文件，假为目录）<br />③list()：文件列表，需用String filename[]接受<br />④length()：检测文件大小<br /><br />FileOutputStream对象的方法：<br />①outStream.write(字节数组名或数组);<br />②outStream.close();<br /><br />FileInputStream对象的方法：<br />①inStream.read(字节数组名或数组);<br />②inStream.close();<br /><br />DataOutputStream对象的方法<br />①各种基本数据类型：outDataStream.writeInt()/writeLong()/writeFloat()/writeDouble()/writeChar()/writeBoolean()等<br />②outDataStream.close()<br />DataInputStream对象的方法:<br />①各种基本数据类型：inDataStream.readInt()/readLong()/readFloat()/readDouble()/readChar()/readBoolean()等<br />②inDataStream.close();<br /><br />PrintWriter对象的方法：<br />①print()<br />②println()<br /><br />ObjectOutputStream对象的方法<br />①outObjectStream.writeObject()/其他跟DataOutputStream对象的方法一样<br />②outObjectStream.close()<br /><br />ObjectInputStream对象的方法<br />①inObjectStream.readObject()<br />②inObjectStream.close()<br /><br />文件输入输出步骤：<br />一、低级文件操作：<br />	1、输出<br />	File outFile = new File("sample.txt");<br />	FileOutputStream outStream = new FileOutputStream(outFile);<br />	byte[] byteArray = {10,20,30};<br />	outStream.write(byteArray );<br />	outStream.close();<br />	2、输入<br />	File inFile = new File("sample.txt");<br />	FileInputStream inStream = new FileInputStream(inFile);<br />	int fileSize = (int)inFile.length();<br />	byte[] byteArray = new byte[fileSize ];<br />	inStream.read(byteArray);<br />	inStream.close;<br /><br />	<br />二、高级文件操作<br />	（1）基本数据类型操作<br />	1、输出<br />	File outFile = new File("sample.txt");<br />	FileOutputStream outFileStream = new FileOutputStream(outFile);<br />	DataOutputStream outDataStream = new DataOutputStream(outFileStream);<br />	outDataStream.writeInt()/writeChar()/...;<br />	outDataStream.close();<br />	2、输入<br />	File inFile = new File("sample.txt");<br />	FileInputStream inFileStream = new FileInputStream(inFile);<br />	DataInputStream inDataStream = new DataInputStream(inFileStream);<br />	inDataStream.readInt()/readChar()/...;<br />	inDataStream.close();<br />	<br /><br />	(2)字符串数据类型操作<br />	1、输出<br />	File outFile = new File("sample.txt");<br />	FileOutputStream outFileStream = new FileOutputStream(outFile);<br />	PrintWriter outStream = new PrintWriter(outFileStream);<br />	outStream.println("hello");<br />	outStream.close();<br /><br />	2、输入<br />	File inFile = new File("sample.txt");<br />	FileReader fileReader = new FileReader(inFile);<br />	BufferedReader bufReader = new BufferedReader(fileReader);<br />	String str = bufReader.readLine();<br />	再进行各种类型转换<br />	如：int i = Integer.parseInt(str);<br />	bufReader.close();<br />三、对象的输入和输出<br />前提：定义对象的类要实现序列化(implements Serializable)<br />	1、输出<br />	File outFile = new File("sample.txt");<br />	FileOutputStream outFileStream = new FileOutputStream(outFile);<br />	ObjectOutputStream outObjectStream = new ObjectOutputStream(outFileStream);<br />	产生一对象例：Person person = new Person("zhangsan",21,"male");<br />	outObjectStream.writeObject(person);<br />	outObjectStream.close();<br /><br />	2、输入<br />	File inFile = new File("sample.txt");<br />	FileInputStream inFileStream = new FileInputStream(inFile);<br />	ObjectInputStream inObjectStream = new ObjectInputStream(inFileStream);<br />	//用一个对象接受:<br />	Person person;<br />	person = inObjectStream.readObject();<br />	inObjectStream.close();
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/165947#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 28 Feb 2008 19:43:24 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/165947</link>
        <guid>http://shang.javaeye.com/blog/165947</guid>
      </item>
          <item>
        <title>搜索和排序</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/165739" style="color:red;">http://shang.javaeye.com/blog/165739</a>&nbsp;
          发表时间: 2008年02月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          搜索分：线性搜索（普通的搜索）和二分搜索；<br />排序分：选择排序、冒泡排序、堆排序。<br />二分搜索：<br />public int binarySearch(int[] number,int searchValue){<br />	int low=0,<br />	high=number.length-1,<br />	mid=(low+high)/2;<br /><br />	while(low&lt;=high &amp;&amp; number[mid] != searchValue){<br />		System.out.println(mid);<br />		if(number[mid]&lt;searchValue){<br />			low=mid+1;<br />		}else{<br />			high=mid-1;<br />		}<br />		mid=(low+high)/2;<br />	}<br />	if(low>high){<br />		System.out.println("NoSuch");<br />	}<br />	return mid;<br />}<br /><br />冒泡排序：<br />public void bubbleSort(int[] number){<br />	int temp,bottom,i;<br />	boolean exchanged=true;<br />	bottom = number.legth-1;<br />	while(changed){<br />		exchanged=false;<br />		for(i=0;i&lt;bottom;i++){<br />			if(number[i]>number[i+1]){<br />				temp=number[i];<br />				number[i]=number[i+1];<br />				number[i+1]=temp;<br />				exchange=true;<br />			}<br />		}<br />	bottom--;<br />	}<br />}
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/165739#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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>Thu, 28 Feb 2008 14:15:55 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/165739</link>
        <guid>http://shang.javaeye.com/blog/165739</guid>
      </item>
          <item>
        <title>正则表达式</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/164950" style="color:red;">http://shang.javaeye.com/blog/164950</a>&nbsp;
          发表时间: 2008年02月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          正则表达式的一般格式：/正则表达式/<br />注：其中位于“/”定界符之间的部分就是将要在目标对象中进行匹配的模式<br />规则：<br />①较为常用的元字符包括： “+”， “*”，以及 “?”。<br />“+”元字符规定其前导字符必须在目标对象中连续出现一次或多次。<br />“*”元字符规定其前导字符必须在目标对象中出现零次或连续多次。<br />“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次。<br /> . ：用于匹配除换行符之外的所有字符。<br /><br /><br />\b 匹配一个单词边界，也就是指单词和空格间的位置。例如， 'er\b' 可以匹配"never" 中的 'er'，但不能匹配 "verb" 中的 'er'。 <br />\B 匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er'，但不能匹配 "never" 中的 'er'。 <br />\cx 匹配由x指明的控制字符。例如， \cM 匹配一个 Control-M 或回车符。 x 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的 'c' 字符。 <br />\d 匹配一个数字字符。等价于 [0-9]。 <br />\D 匹配一个非数字字符。等价于 [^0-9]。 <br />\f 匹配一个换页符。等价于 \x0c 和 \cL。 <br />\n 匹配一个换行符。等价于 \x0a 和 \cJ。 <br />\r 匹配一个回车符。等价于 \x0d 和 \cM。 <br />\s 匹配任何空白字符，包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 <br />\S 匹配任何非空白字符，除单个空格符之外的所有字符。等价于 [^ \f\n\r\t\v]。 <br />\t 匹配一个制表符。等价于 \x09 和 \cI。 <br />\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。 <br />\w 匹配匹配字母，数字或下划线字符。等价于'[A-Za-z0-9_]'。 <br />\W 匹配所有与\w不匹配的字符。等价于 '[^A-Za-z0-9_]'。 <br />\xn 匹配 n，其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如， '\x41' 匹配 "A"。'\x041' 则等价于 '\x04' &amp; "1"。正则表达式中可以使用 ASCII 编码。. <br />\num 匹配 num，其中 num 是一个正整数。对所获取的匹配的引用。例如，'(.)\1' 匹配两个连续的相同字符。 <br />\n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式，则 n 为后向引用。否则，如果 n 为八进制数字 (0-7)，则 n 为一个八进制转义值。 <br />\nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式，则 nm 为后向引用。如果 \nm 之前至少有 n 个获取，则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足，若 n 和 m 均为八进制数字 (0-7)，则 \nm 将匹配八进制转义值 nm。 <br />\nml 如果 n 为八进制数字 (0-3)，且 m 和 l 均为八进制数字 (0-7)，则匹配八进制转义值 nml。 <br />\un 匹配 n，其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如， \u00A9 匹配版权符号 (?)。 <br /><br />/\s+/ 上述正则表达式可以用于匹配目标对象中的一个或多个空格字符。 <br />/\d000/　多用于财务。<br />\cx 匹配由x指明的控制字符。例如， \cM 匹配一个 Control-M 或回车符。 x 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的 'c' 字符。<br /><br />②重复次数X{N}:X重复N次数<br />x{n} n 是一个非负整数。匹配确定的 n 次。<br />x{n,} n 是一个非负整数。至少匹配 n 次。	'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'<br />x{n,m} m 和 n 均为非负整数，其中n &lt;= m。最少匹配 n 次且最多匹配 m 次。 'o{0,1}' 等价于 'o?'<br />③范围选择[]：<br />指定某一个范围而不局限于具体的字符。例如： <br />/[A-Z]/　　上述正则表达式将会与从A到Z范围内任何一个大写字母相匹配。<br />/[a-z]/　　上述正则表达式将会与从a到z范围内任何一个小写字母相匹配。 <br />/[0-9]/ 　上述正则表达式将会与从0到9范围内任何一个数字相匹配。 <br />/([a-z][A-Z][0-9])+/　　上述正则表达式将会与任何由字母和数字组成的字符串，<br />/[^A-C]/　上述字符串将会与目标对象中除A，B，和C之外的任何字符相匹配<br />④ 较为常用的定位符包括： “^”, “$”, “\b” 以及 “\B”。<br />“^”定位符规定匹配模式必须出现在目标字符串的开头<br />“$”定位符规定匹配模式必须出现在目标对象的结尾<br />“\b”定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一<br />“\B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内，即匹配对象既不能作为目标字符串的开头，也不能作为目标字符串的结尾。<br />⑤全部和其一<br />全部：/([a-z][A-Z][0-9])+/　　上述正则表达式将会与任何由字母和数字组成的字符串<br />其一：xx/(ab|cd)/			只能选择ab或者cd<br /><br /><br />正则表达式的优先级：<br />可以从左至右并按照一个优先级顺序来求值。优先级如下：<br />1．\ 转义符<br />2．(), (?:), (?=), [] 圆括号和方括号<br />3．*, +, ?, {n}, {n,}, {n,m} 限定符<br />4．^, $, \anymetacharacter 位置和顺序<br />5．|“或”操作 &amp;&amp;并且
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/164950#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 26 Feb 2008 03:18:15 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/164950</link>
        <guid>http://shang.javaeye.com/blog/164950</guid>
      </item>
          <item>
        <title>HTML中两个外部文件的导入</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/164915" style="color:red;">http://shang.javaeye.com/blog/164915</a>&nbsp;
          发表时间: 2008年02月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong>1、外部CSS文件的导入:</strong><br />&lt;link ref="stylesheet" type="text/css" href="mycss.css"/><br /><br /><strong>2、外部JS文件的导入:</strong><br />&lt;script type="text/javascript" src="myjs.js">&lt;/script>
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/164915#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 25 Feb 2008 22:48:49 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/164915</link>
        <guid>http://shang.javaeye.com/blog/164915</guid>
      </item>
          <item>
        <title>JS面向对象编程</title>
        <author>shang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shang.javaeye.com">shang</a>&nbsp;
                    链接：<a href="http://shang.javaeye.com/blog/164911" style="color:red;">http://shang.javaeye.com/blog/164911</a>&nbsp;
          发表时间: 2008年02月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          OOP In JS
          <br/><br/>
          <span style="color:red;">
            <a href="http://shang.javaeye.com/blog/164911#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 25 Feb 2008 22:40:37 +0800</pubDate>
        <link>http://shang.javaeye.com/blog/164911</link>
        <guid>http://shang.javaeye.com/blog/164911</guid>
      </item>
      </channel>
</rss>