<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>用清脆声铸建程序</title>
    <description></description>
    <link>http://hghdo.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>find_by_sql的强大，复杂查询中的不属于model的列一样可以当成model的属性用</title>
        <author>hghdo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hghdo.javaeye.com">hghdo</a>&nbsp;
          链接：<a href="http://hghdo.javaeye.com/blog/179122" style="color:red;">http://hghdo.javaeye.com/blog/179122</a>&nbsp;
          发表时间: 2008年04月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          ﬁnd_by_sql( ) can also be used to create model objects containing derived column data. If you use the as xxx SQL syntax to give derived columns a name in the result set, this name will be used as the name of the attribute.<br /><pre name="code" class="ruby">
items = LineItem.find_by_sql("select *, " + " quantity*unit_price as total_price, " +
" products.title as title " + " from line_items, products " + 
" where line_items.product_id = products.id ")
li = items[0]
puts "#{li.title}: #{li.quantity}x#{li.unit_price} => #{li.total_price}"
</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://hghdo.javaeye.com/blog/179122#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;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Apr 2008 11:59:52 +0800</pubDate>
        <link>http://hghdo.javaeye.com/blog/179122</link>
        <guid>http://hghdo.javaeye.com/blog/179122</guid>
      </item>
      <item>
        <title>rails阶段总结Lighttpd FCG tomcat Rails Timer Service</title>
        <author>hghdo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hghdo.javaeye.com">hghdo</a>&nbsp;
          链接：<a href="http://hghdo.javaeye.com/blog/166852" style="color:red;">http://hghdo.javaeye.com/blog/166852</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          首先是robbin的帖子《在Linux平台上安装和配置Ruby on Rails详解》<br />http://www.javaeye.com/topic/43228?page=1<br />其次是如何在一台服务器上实现rails和j2ee共生《Lighttpd proxy to Tomcat》<br />http://rackerhacker.com/2007/04/05/lighttpd-proxy-to-tomcat/<br />然后是如何在rails的环境下提供后台能够长时间运行的线程，即《[Rails] timer service》<br />http://lists.rubyonrails.org/pipermail/rails/2006-July/056865.html<br /><br />Install Ruby Rails Lighttpd MySQL on Ubuntu or FreeBSD<br />http://wiki.huihoo.com/index.php?title=Install_Ruby_Rails_Lighttpd_MySQL_on_Ubuntu_or_FreeBSD<br /><br />其他的还有robbin的帖子《RoR部署方案深度剖析》<br />http://www.javaeye.com/topic/155542
          <br/><br/>
          <span style="color:red;">
            <a href="http://hghdo.javaeye.com/blog/166852#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;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 10:20:14 +0800</pubDate>
        <link>http://hghdo.javaeye.com/blog/166852</link>
        <guid>http://hghdo.javaeye.com/blog/166852</guid>
      </item>
      <item>
        <title>敏捷的烦恼</title>
        <author>hghdo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hghdo.javaeye.com">hghdo</a>&nbsp;
          链接：<a href="http://hghdo.javaeye.com/blog/135023" style="color:red;">http://hghdo.javaeye.com/blog/135023</a>&nbsp;
          发表时间: 2007年10月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          到今天为止，大概用了3周左右的时间粗略的学习了一下ROR，同时也做了自己的小damo，发现居然我也赶上了敏捷的大潮了。感觉良好自是不用多说。可是随之问题也来了，英雄无用武之地啊。好好的一个ROR，却不知道拿来做什么？真是郁闷！<br />    SAAS的概念不错，我是很想做做这个东西。真是希望能找几个志同道合的朋友一起搞点东西，搞点名堂出来!
          <br/><br/>
          <span style="color:red;">
            <a href="http://hghdo.javaeye.com/blog/135023#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;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 24 Oct 2007 10:24:46 +0800</pubDate>
        <link>http://hghdo.javaeye.com/blog/135023</link>
        <guid>http://hghdo.javaeye.com/blog/135023</guid>
      </item>
      <item>
        <title>为什么各大银行的网上银行都不支持firefox</title>
        <author>hghdo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hghdo.javaeye.com">hghdo</a>&nbsp;
          链接：<a href="http://hghdo.javaeye.com/blog/66343" style="color:red;">http://hghdo.javaeye.com/blog/66343</a>&nbsp;
          发表时间: 2007年03月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          经常用firefox的人一定都有一个感觉就是firefox的确在安区性上要好一些，如果用linux+firefox我想就更安全了！可是各大银行怎么就死也不能支持firefox呢？看看国外的银行，不管大的小的，一定会考虑到各种用户群体，可是我们的大银行呢？他们在做什么，在拼命的做activeX控件，而且之前还看到报道说某行的activeX有严重Bug。。。。汗啊。银行那么有钱就是不肯在基础上下些功夫。<br />看到很多报道都在说鼓励我们的 government 用linux，那银行怎么能不支持呢，这里也能从侧面反映实际情况吧。<br /><br />不过今天在网上看到一个帖子，或许能给linux+firefox的兄弟们一丝安慰(当然也包括我在内)<br /><br /><br /><br />这里转一个帖子，出处<a href="http://www.mrxu.net/2007/03/firefoxlinux.html" target="_blank">http://www.mrxu.net/2007/03/firefoxlinux.html</a><br />用了几年的招行支付卡了，昨天终于狠下心换成浦发的了。<br /><br />就冲支持ff,支持大部分浏览器，不需要向你电脑里装乱七八糟的东西，就冲手机动态密码远比这证书那证书安全的多。<br /><img src="http://farm1.static.flickr.com/153/429177293_e17ae9ae3a_o.jpg" /><br /><br />浦发网上银行动态密码版很简单，你要使用网上银行只需要输入你的查询或者取款密码，浦发会发一条短消息到你的手机上，给你一个6位的随机密码，每次使用都不同。这样，除非能同时得到你的手机和密码，不然就是安全的。而能得到你的手机和密码，那么usbkey或者银行卡估计也不难了。至于数字证书这种储存在电脑上的东西，更本就不存在绝对的安全。<br /><br />浦发银行网上银行简洁而安全，功能却不简单。不论是基本的网上支付，上淘宝缴纳手机费，水电费，买卖基金，操作股票，都能轻松搞定。整个界面也很人性话。登录的时候不需要记忆难记的数字，可以设定登录名，还可以经常更换，这样对于网上支付来说，可以说是更大大的增加了安全系数。<br /><br />当然，浦发银行也多多少少有些缺点，比如：<br /><br />1。虽然网上银行完美支持firefox,但是银行首页http://www.spdb.com.cn，在firefox下还是稍微有些不影响浏览的走样。<br /><br />2。网点相对于四大行要少，虽然每个网点排队的人更少，具体可以在www.spdb.com.cn上查询。<br /><br />3。很多人都说招行营业厅mm比其他行的都漂亮-_____-<br /><br />招行，至少在对待网上银行上，态度和浦发是完全不一样的。<br /><br />为了更安全的网络银行，为了更自主的电脑环境，为了更少麻烦的生活，我放弃了招行，投入了浦发的怀抱<br /><br />浦发
          <br/><br/>
          <span style="color:red;">
            <a href="http://hghdo.javaeye.com/blog/66343#comments" style="color:red;">已有 <strong>21</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;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 29 Mar 2007 11:26:48 +0800</pubDate>
        <link>http://hghdo.javaeye.com/blog/66343</link>
        <guid>http://hghdo.javaeye.com/blog/66343</guid>
      </item>
      <item>
        <title>Tomcat [java.net.SocketException: Too many open files]解决方法</title>
        <author>hghdo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hghdo.javaeye.com">hghdo</a>&nbsp;
          链接：<a href="http://hghdo.javaeye.com/blog/65175" style="color:red;">http://hghdo.javaeye.com/blog/65175</a>&nbsp;
          发表时间: 2007年03月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong>Redhat 帮助文档[http://kbase.redhat.com/faq/FAQ_80_1540.shtm]</strong><br />Issue:<br />How do I set the maximum number of files allowed to be open on a system <br />Resolution:<br />The current setting for maximum number of open files can be viewed with the command:<br /><br />    ulimit -n<br /><br />This number indicates the maximum number of files normal users (i.e. non-root) can have open in a single session. Note that for the root user, ulimit -n will sometimes output 1024 even after following the procedure to increase the maximum number of open files. This won't effect root's ability to open large numbers of files, as only normal users are bound by this value.<br /><br />To increase the maximum number of open files beyond the default of 1024, two changes to the system may be necessary. In these examples, we will increase the maximum number of open files to the arbitrary value of 2048. All changes need to be made by the root user and users will need to log out and log back in before the changes will take effect.<br /><br />   1. Configure the system to accept the desired value for maximum number of open files Check the value in /proc/sys/fs/file-max to see if it is larger than the value needed for the maximum number of open files:<br /><br />      # cat /proc/sys/fs/file-max<br /><br />      If the value isn't large enough, echo an appropriate number into the variable and add the change to /etc/sysctl.conf to make it persistent across reboots. If the number is already larger than the value you wish to use, skip to step 2.<br /><br />      # echo 2048 > /proc/sys/fs/file-max<br /><br />      and edit /etc/sysctl.conf to include the line:<br /><br />      fs.file-max = 2048<br /><br />   2. Set the value for maximum number of open files In the file /etc/security/limits.conf, below the commented line that reads<br /><br />      #&lt;domain>      &lt;type>  &lt;item>         &lt;value><br /><br />      add this line:<br /><br />      * - nofile 2048<br /><br />      This line sets the default number of open file descriptors for every user on the system to 2048. Note that the "nofile" item has two possible limit values under the &lt;type> header: hard and soft. Both types of limits must be set before the change in the maximum number of open files will take effect. By using the "-" character, both hard and soft limits are set simultaneously.<br /><br />      The hard limit represents the maximum value a soft limit may have and the soft limit represents the limit being actively enforced on the system at that time. Hard limits can be lowered by normal users, but not raised and soft limits cannot be set higher than hard limits. Only root may raise hard limits. <br /><br />When increasing file limit descriptors, you may want to simply double the value. For example, if you need to increase the default value of 1024, increase the value to 2048 first. If you need to increase it again, try 4096, etc.<br /><br /><br />==================================================================<br />1。ulimit -a 查看系统目前资源限制的设定。<br />[root@test security]# ulimit -a<br />core file size        (blocks, -c) 0<br />data seg size         (kbytes, -d) unlimited<br />file size             (blocks, -f) unlimited<br />max locked memory     (kbytes, -l) unlimited<br />max memory size       (kbytes, -m) unlimited<br />open files                    (-n) 1024<br />pipe size          (512 bytes, -p) 8<br />stack size            (kbytes, -s) 8192<br />cpu time             (seconds, -t) unlimited<br />max user processes            (-u) 7168<br />virtual memory        (kbytes, -v) unlimited<br />[root@test security]#<br />通过以上命令，我们可以看到open files 的最大数为1024<br />那么我们可以通过一下命令修改该参数的最大值<br />2. ulimit -n 4096<br />[root@test security]# ulimit -n 4096<br />[root@test security]# ulimit -a<br />core file size        (blocks, -c) 0<br />data seg size         (kbytes, -d) unlimited<br />file size             (blocks, -f) unlimited<br />max locked memory     (kbytes, -l) unlimited<br />max memory size       (kbytes, -m) unlimited<br />open files                    (-n) 4096<br />pipe size          (512 bytes, -p) 8<br />stack size            (kbytes, -s) 8192<br />cpu time             (seconds, -t) unlimited<br />max user processes            (-u) 7168<br />virtual memory        (kbytes, -v) unlimited<br /><br />这样我们就修改了系统在同一时间打开文件资源的最大数，基本解决以上问题。<br /><br />另外我们可以通过lsof  -p [进程的 pid]来查看系统当前打开的文件资源，可以了解不同时期系统的文件资源的使用情况，可根据情况进行系统资源的配置。<br />===================================================================<br />从这里学到的linux的命令<br />查看进程所占的文件描述符  lsof -p 390 | wc -l<br />查看系统的各种资源限制或者更改这个限制    ulimit -a
          <br/><br/>
          <span style="color:red;">
            <a href="http://hghdo.javaeye.com/blog/65175#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;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 24 Mar 2007 11:30:02 +0800</pubDate>
        <link>http://hghdo.javaeye.com/blog/65175</link>
        <guid>http://hghdo.javaeye.com/blog/65175</guid>
      </item>
      <item>
        <title>用google趋势对比当前流行java web框架-tapestry,struts,webwork,jsf,wicket</title>
        <author>hghdo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hghdo.javaeye.com">hghdo</a>&nbsp;
          链接：<a href="http://hghdo.javaeye.com/blog/50858" style="color:red;">http://hghdo.javaeye.com/blog/50858</a>&nbsp;
          发表时间: 2007年01月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          [转贴请注明转自javaeye社区 文章链接：http://hghdo.javaeye.com/blog/50858]<br /><br />相信很多人都用过google trends,就是趋势，可以对比不同的关键词在google上的搜索量，以下是一组对比的图片。<br /><br />图注：<br /><strong><span style="font-size: 14pt"><span style="color: green">tapestry -- 绿色</span></span></strong>  <br /><strong><span style="font-size: 14pt"><span style="color: red">struts -- 红色</span></span></strong>  <br /><strong><span style="font-size: 14pt"><span style="color: orange">jsf -- 橙色</span></span></strong>  <br /><strong><span style="font-size: 14pt"><span style="color: blue">webwork -- 蓝色</span></span></strong>  <br /><br />===============================================================<br /><br /><strong><span style="font-size: 14pt">国内2006年的搜索量2006年</span></strong><br /><img src="http://www.google.com/trends/viz?hl=zh-cn&q=webwork,struts,jsf,tapestry&date=2006&geo=CN&graph=weekly_img&sa=N" /><br />===============================================================<br /><br /><br /><strong><span style="font-size: 14pt">国外2006年总体的搜索量</span></strong><br /><img src="http://www.google.com/trends/viz?hl=zh-cn&q=webwork,struts,jsf,tapestry&date=2006&geo=all&graph=weekly_img&sa=N" /><br />===============================================================<br /><br /><br /><strong><span style="font-size: 14pt">美国2006年的搜索量</span></strong><br /><img src="http://www.google.com/trends/viz?hl=zh-cn&q=webwork,struts,jsf,tapestry&date=2006&geo=US&graph=weekly_img&sa=N" /><br />===============================================================<br /><br /><strong><span style="font-size: 14pt">印度2006年的搜索量</span></strong><br />搜索印度的情况，google说：<br /><div class="quote_title">引用</div><div class="quote_div"><span style="font-size: 14pt">您的搜索字词 - tapestry - 搜索量不足，无法显示图表。</span></div><br />比较惊讶!!!!印度如此差劲?<br />==============================================<br /><br /><br /><span style="font-size: 12pt"><br />从上面的图可以清晰看到tapestry在国内真是处境尴尬啊，当然也许在国内用其他引擎尤其是baidu的比较多（大概60%），对这个图的准确性有比较大的影响。所以全当是茶余饭后的小甜点，给大家解个闷！！！排砖的别排我，要拍就拍google，败毒 :D<br /><br />希望大家一起努力把国内的tapestry顶起来！！！！！<br /></span><br />===================================================<br />应要求贴出wicket,tapestry对比<br />蓝色wicket,红色tapestry<br /><strong><span style="font-size: 14pt">全球整体比较</span></strong><br /><img src="http://www.google.com/trends/viz?hl=zh-cn&q=Wicket,tapestry&graph=weekly_img&sa=N" /><br />===============================================================
          <br/><br/>
          <span style="color:red;">
            <a href="http://hghdo.javaeye.com/blog/50858#comments" style="color:red;">已有 <strong>13</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;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 27 Jan 2007 23:40:00 +0800</pubDate>
        <link>http://hghdo.javaeye.com/blog/50858</link>
        <guid>http://hghdo.javaeye.com/blog/50858</guid>
      </item>
      <item>
        <title>vi操作指南</title>
        <author>hghdo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hghdo.javaeye.com">hghdo</a>&nbsp;
          链接：<a href="http://hghdo.javaeye.com/blog/49084" style="color:red;">http://hghdo.javaeye.com/blog/49084</a>&nbsp;
          发表时间: 2007年01月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          进入vi的命令<br />vi filename :打开或新建文件，并将光标置于第一行首<br />vi +n filename ：打开文件，并将光标置于第n行首<br />vi + filename ：打开文件，并将光标置于最后一行首<br />vi +/pattern filename：打开文件，并将光标置于第一个与pattern匹配的串处<br />vi -r filename ：在上次正用vi编辑时发生系统崩溃，恢复filename<br />vi filename....filename ：打开多个文件，依次编辑<br /><br />移动光标类命令<br />h ：光标左移一个字符<br />l ：光标右移一个字符<br />space：光标右移一个字符<br />Backspace：光标左移一个字符<br />k或Ctrl+p：光标上移一行<br />j或Ctrl+n ：光标下移一行<br />Enter ：光标下移一行<br />w或W ：光标右移一个字至字首<br />b或B ：光标左移一个字至字首<br />e或E ：光标右移一个字j至字尾<br />) ：光标移至句尾<br />( ：光标移至句首<br />}：光标移至段落开头<br />{：光标移至段落结尾<br />nG：光标移至第n行首<br />n+：光标下移n行<br />n-：光标上移n行<br />n$：光标移至第n行尾<br />H ：光标移至屏幕顶行<br />M ：光标移至屏幕中间行<br />L ：光标移至屏幕最后行<br />0：（注意是数字零）光标移至当前行首<br />$：光标移至当前行尾<br /><br />屏幕翻滚类命令<br />Ctrl+u：向文件首翻半屏<br />Ctrl+d：向文件尾翻半屏<br />Ctrl+f：向文件尾翻一屏<br />Ctrl＋b；向文件首翻一屏<br />nz：将第n行滚至屏幕顶部，不指定n时将当前行滚至屏幕顶部。<br /><br />插入文本类命令<br />i ：在光标前<br />I ：在当前行首<br />a：光标后<br />A：在当前行尾<br />o：在当前行之下新开一行<br />O：在当前行之上新开一行<br />r：替换当前字符<br />R：替换当前字符及其后的字符，直至按ESC键<br />s：从当前光标位置处开始，以输入的文本替代指定数目的字符<br />S：删除指定数目的行，并以所输入文本代替之<br />ncw或nCW：修改指定数目的字<br />nCC：修改指定数目的行<br /><br />删除命令<br />ndw或ndW：删除光标处开始及其后的n-1个字<br />do：删至行首<br />d$：删至行尾<br />ndd：删除当前行及其后n-1行<br />x或X：删除一个字符，x删除光标后的，而X删除光标前的<br />Ctrl+u：删除输入方式下所输入的文本<br /><br />搜索及替换命令 :<br />/pattern：从光标开始处向文件尾搜索pattern<br />?pattern：从光标开始处向文件首搜索pattern<br />n：在同一方向重复上一次搜索命令<br />N：在反方向上重复上一次搜索命令<br />:s/regexp/replacement/：替换当前行出现的第一个样式<br />:s/regexp/replacement/g：将当前行中所有p1均用p2替代(g,可能就是替代所有的意思吧)<br />:n1,n2s/regexp/replacement/g：将第n1至n2行中所有p1均用p2替代<br />:%s/regexp/replacement/g：将文件中所有p1均用p2替换(%可能代表全文)<br />:%s/regexp/replacement/gc - (c代表confirm)每次替换要求确认<br />:g/regexp/s//replacement/g：将文件中所有p1均用p2替换<br />另外<br /><br />选项设置<br />all：列出所有选项设置情况<br />term：设置终端类型<br />ignorance：在搜索中忽略大小写<br />list：显示制表位(Ctrl+I)和行尾标志（$)<br />number：显示行号<br />report：显示由面向行的命令修改过的数目<br />terse：显示简短的警告信息<br />warn：在转到别的文件时若没保存当前文件则显示NO write信息<br />nomagic：允许在搜索模式中，使用前面不带"\"的特殊字符<br />nowrapscan：禁止vi在搜索到达文件两端时，又从另一端开始<br />mesg：允许vi显示其他用户用write写到自己终端上的信息<br /><br />最后行方式命令<br />：n1,n2 co n3：将n1行到n2行之间的内容拷贝到第n3行下<br />：n1,n2 m n3：将n1行到n2行之间的内容移至到第n3行下<br />：n1,n2 d ：将n1行到n2行之间的内容删除<br />：w ：保存当前文件<br />：e filename：打开文件filename进行编辑<br />：x：保存当前文件并退出<br />：q：退出vi<br />：q!：不保存文件并退出vi<br />：!command：执行shell命令command<br />：n1,n2 w!command：将文件中n1行至n2行的内容作为command的输入并执行之，若不指<br />定n1，n2，则表示将整个文件内容作为command的输入<br />：r!command：将命令command的输出结果放到当前行 。<br /><br />命令 复制操作<br />yy 将当前行的内容放入临时缓冲区<br />nyy 将n行的内容放入临时缓冲区<br />p 将临时缓冲区中的文本放入光标后<br />P 将临时缓冲区中的文本放入光标前<br />"(a-z)nyy 复制n行放入名字为圆括号内的可命名缓冲区，省略n表示当前行<br />"(a-z)ndd 删除n行放入名字为圆括号内的可命名缓冲区，省略n表示当前行<br />"(a-z)p 将名字为圆括号的可命名缓冲区的内容放入当前行后<br />"(a-z)P 将名字为圆括号的可命名缓冲区的内容放入当前行前
          <br/><br/>
          <span style="color:red;">
            <a href="http://hghdo.javaeye.com/blog/49084#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;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 22 Jan 2007 13:48:14 +0800</pubDate>
        <link>http://hghdo.javaeye.com/blog/49084</link>
        <guid>http://hghdo.javaeye.com/blog/49084</guid>
      </item>
      <item>
        <title>[原创]用tapestry4.0.x生成验证码</title>
        <author>hghdo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hghdo.javaeye.com">hghdo</a>&nbsp;
          链接：<a href="http://hghdo.javaeye.com/blog/47876" style="color:red;">http://hghdo.javaeye.com/blog/47876</a>&nbsp;
          发表时间: 2007年01月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          用tapestry4.0.x生成验证码<br /><br />首先写一个从IEngineService派生的类，用来产生需要的验证图片<br /><pre name="code" class="java">
package org.itrun.cnbrn.view.pageclass.system;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.engine.IEngineService;
import org.apache.tapestry.engine.ILink;
import org.apache.tapestry.web.WebSession;
import org.itrun.cnbrn.ConstantVar;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class ValidatorImageService implements IEngineService {

	Log logger=LogFactory.getLog(this.getClass());
	
	private HttpServletResponse response;
	private ServletContext context;
	private String TYPE="jpeg";

    public void setResponse(HttpServletResponse response){
        this.response = response;
    }
    
    public void setContext(ServletContext context){
    	this.context=context;
    }

	public ILink getLink(boolean arg0, Object arg1) {
		return null;
	}

	public String getName() {
		return "validatorImage";
	}

	public void service(IRequestCycle cycle) throws IOException {
		Random random = new Random();
		StringBuffer sb=new StringBuffer();
		for(int i=0;i&lt;4;i++){
			int x=random.nextInt(25);
			x+=65;
			sb.append(String.valueOf((char)x));
			//sb.append(" ");
		}		
		String validateString=sb.toString();		
		WebSession sess=cycle.getInfrastructure().getRequest().getSession(true);
		sess.setAttribute(ConstantVar.VALIDATOR_SESSION_KEY, validateString);
		//画布大小
		int width = 60, height = 20;
		BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
		Graphics g = image.getGraphics();
		// 以下填充背景颜色
		g.setColor(Color.decode("#FFFFFF"));
		g.fillRect(0, 0, width, height);
		//随机产生其他元素，使图象中的认证码不易被其它程序探测到
		g.setColor(getRandColor(160, 200));
		for (int i = 0; i &lt; 300; i++) {
			int x = random.nextInt(width);
			int y = random.nextInt(height);
			int xl = random.nextInt(12);
			int yl = random.nextInt(12);
			g.drawLine(x, y, x + xl, y + yl);
		}
		
		//字的颜色
		g.setColor(Color.decode("#01556B"));
		//写的字的大小
		g.setFont(new Font(null, Font.BOLD, 18));
		//在画布上写字
		g.drawString(validateString, 2, 16);
		g.dispose();
		OutputStream os = response.getOutputStream();
		JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
		encoder.encode(image);
		os.close();
	}
	
	private Color getRandColor(int fc,int bc){//给定范围获得随机颜色
        Random random = new Random();
        if(fc>255) fc=255;
        if(bc>255) bc=255;
        int r=fc+random.nextInt(bc-fc);
        int g=fc+random.nextInt(bc-fc);
        int b=fc+random.nextInt(bc-fc);
        return new Color(r,g,b);
    }
}

</pre><br />==============================<br />hivemodule.xml文件增加以下内容<br /><pre name="code" class="java">
  	&lt;service-point id="ValidatorImageService" interface="org.apache.tapestry.engine.IEngineService">
		&lt;invoke-factory>
             &lt;construct class="org.itrun.cnbrn.view.pageclass.system.ValidatorImageService"/>
		&lt;/invoke-factory>
    &lt;/service-point>

    &lt;contribution configuration-id="tapestry.services.ApplicationServices">
      	&lt;service name="validatorImage" object="service:ValidatorImageService"/>
    &lt;/contribution>
</pre><br />============================<br />在页面上调用<br /><pre name="code" class="java">
&lt;img jwcid="@Any" src="ognl:cnbrnContextPath+'/app?service=validatorImage'" />
</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://hghdo.javaeye.com/blog/47876#comments" style="color:red;">已有 <strong>3</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;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 21 Jan 2007 15:49:00 +0800</pubDate>
        <link>http://hghdo.javaeye.com/blog/47876</link>
        <guid>http://hghdo.javaeye.com/blog/47876</guid>
      </item>
      <item>
        <title>如何向tacos:table中添加checkbox等控件</title>
        <author>hghdo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hghdo.javaeye.com">hghdo</a>&nbsp;
          链接：<a href="http://hghdo.javaeye.com/blog/48514" style="color:red;">http://hghdo.javaeye.com/blog/48514</a>&nbsp;
          发表时间: 2007年01月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在我们使用table的时候可以把table拆成tableview/TableRows/TableValues,这样一来就可以方便的往table中插入我们想插入的各种控件。<br />最近想使用tacos:table，可是发现tacos:table没有被“大卸八块”的功能，有谁做过类似的事情，能不能帮忙提供些思路啊！
          <br/><br/>
          <span style="color:red;">
            <a href="http://hghdo.javaeye.com/blog/48514#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;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 19 Jan 2007 11:46:13 +0800</pubDate>
        <link>http://hghdo.javaeye.com/blog/48514</link>
        <guid>http://hghdo.javaeye.com/blog/48514</guid>
      </item>
      <item>
        <title>和大家讨论T4中的table分页问题</title>
        <author>hghdo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hghdo.javaeye.com">hghdo</a>&nbsp;
          链接：<a href="http://hghdo.javaeye.com/blog/47827" style="color:red;">http://hghdo.javaeye.com/blog/47827</a>&nbsp;
          发表时间: 2007年01月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近作的项目中很多地方都用到了tapestry中的table组件，因为显示的数据量比较大所以采用了按分页抓取后台数据的方法，就是返回实现了IBasicTableModel接口的的数据源给页面上的table作为数据源。<br /><pre name="code" class="java">
	public IBasicTableModel getPersonWithPaging(){
		return new IBasicTableModel(){
			public int getRowCount(){
             System.out.println("执行了很多遍");
				return ...;
			}
		
			public Iterator getCurrentPageRows(int nFirst,int nPageSize,ITableColumn objSortColumn,boolean bSortOrder){
				return ...;

			}
		};
	}

</pre><br /><br />可是在使用中发现当table组件每次抓取页面数据的时候,public int getRowCount()这个方法会执行很多遍，实在是不知道为什么！！！这样的效率岂不是很低？不知道各位tapestry同道是否也遇到了这样的问题！还是我使用的方法有问题呢？<br />欢迎大家讨论与指正！！！
          <br/><br/>
          <span style="color:red;">
            <a href="http://hghdo.javaeye.com/blog/47827#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;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 16 Jan 2007 17:29:00 +0800</pubDate>
        <link>http://hghdo.javaeye.com/blog/47827</link>
        <guid>http://hghdo.javaeye.com/blog/47827</guid>
      </item>
      <item>
        <title>经典正则表达式(希望给自己和大家带来便利，方便查找)</title>
        <author>hghdo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hghdo.javaeye.com">hghdo</a>&nbsp;
          链接：<a href="http://hghdo.javaeye.com/blog/43044" style="color:red;">http://hghdo.javaeye.com/blog/43044</a>&nbsp;
          发表时间: 2007年01月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          经典正则表达式(希望给自己和大家带来便利，方便查找)<br />摘要：收集一些常用的正则表达式。<br />引自：<a href="http://blog.holybbs.com/article.asp?id=284" target="_blank">http://blog.holybbs.com/article.asp?id=284</a><br />另外一篇参考文档(介绍的很系统,推荐阅读)：<a href="http://oo8h.51.net/docs/regular_expression.htm" target="_blank">http://oo8h.51.net/docs/regular_expression.htm</a><br /><br />正则表达式用于字符串处理，表单验证等场合，实用高效，但用到时总是不太把握，以致往往要上网查一番。我将一些常用的表达式收藏在这里，作备忘之用。本贴随时会更新。<br /><br />匹配中文字符的正则表达式： [\u4e00-\u9fa5]<br /><br />匹配双字节字符(包括汉字在内)：[^\x00-\xff]<br /><br />应用：计算字符串的长度（一个双字节字符长度计2，ASCII字符计1）<br /><br />String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}<br /><br />匹配空行的正则表达式：\n[\s| ]*\r<br /><br />匹配HTML标记的正则表达式：/&lt;(.*)>.*&lt;\/\1>|&lt;(.*) \/>/<br /><br />匹配首尾空格的正则表达式：(^\s*)|(\s*$)<br /><br />应用：javascript中没有像vbscript那样的trim函数，我们就可以利用这个表达式来实现，如下：<br /><br />String.prototype.trim = function()<br />{<br />return this.replace(/(^\s*)|(\s*$)/g, "");<br />}<br /><br />利用正则表达式分解和转换IP地址：<br /><br />下面是利用正则表达式匹配IP地址，并将IP地址转换成对应数值的Javascript程序：<br /><br />function IP2V(ip)<br />{<br />re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式<br />if(re.test(ip))<br />{<br />return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1<br />}<br />else<br />{<br />throw new Error("Not a valid IP address!")<br />}<br />}<br /><br />不过上面的程序如果不用正则表达式，而直接用split函数来分解可能更简单，程序如下：<br /><br />var ip="10.100.20.168"<br />ip=ip.split(".")<br />alert("IP值是："+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))<br /><br />匹配Email地址的正则表达式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*<br /><br />匹配网址URL的正则表达式：http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?<br /><br />利用正则表达式去除字串中重复的字符的算法程序：<br /><br />var s="abacabefgeeii"<br />var s1=s.replace(/(.).*\1/g,"$1")<br />var re=new RegExp("["+s1+"]","g")<br />var s2=s.replace(re,"")<br />alert(s1+s2) //结果为：abcefgi<br /><br />我原来在CSDN上发贴寻求一个表达式来实现去除重复字符的方法，最终没有找到，这是我能想到的最简单的实现方法。思路是使用后向引用取出包括重复的字符，再以重复的字符建立第二个表达式，取到不重复的字符，两者串连。这个方法对于字符顺序有要求的字符串可能不适用。<br /><br />得用正则表达式从URL地址中提取文件名的javascript程序，如下结果为page1<br /><br />s="http://www.gzcynet/page1.htm"<br />s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")<br />alert(s)<br /><br />利用正则表达式限制网页表单里的文本框输入内容：<br /><br />用正则表达式限制只能输入中文：onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"<br /><br />用正则表达式限制只能输入全角字符： onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"<br /><br />用正则表达式限制只能输入数字：onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"<br /><br />用正则表达式限制只能输入数字和英文：onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
          <br/><br/>
          <span style="color:red;">
            <a href="http://hghdo.javaeye.com/blog/43044#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;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 04 Jan 2007 16:53:12 +0800</pubDate>
        <link>http://hghdo.javaeye.com/blog/43044</link>
        <guid>http://hghdo.javaeye.com/blog/43044</guid>
      </item>
      <item>
        <title>告别winrar,迎来真正开源的7-zip</title>
        <author>hghdo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hghdo.javaeye.com">hghdo</a>&nbsp;
          链接：<a href="http://hghdo.javaeye.com/blog/43029" style="color:red;">http://hghdo.javaeye.com/blog/43029</a>&nbsp;
          发表时间: 2007年01月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font size="3">&nbsp;&nbsp;&nbsp; 相信大家在日常的生活中都是用rar，的确rar很好用，也很容易使用。可是很多人却不知道rar的版权要求，当然还有很多人都是使用破解了的rar。<br />
在中国破解就像家常便饭一样，同时这不良的习惯也深深地打击了我们的民族软件产业。我也希望能远离盗版但每天还都能使用开源的免费的软件(免费不等于开源)。相信很多人也都是有良知的，也和我一样有同样的想法，因此这里给大家推荐一款优秀的开源解压缩软件</font><font size="4"><font size="3">&ldquo;7-zip&rdquo;</font><br />
中文官方网址:</font>
<h1 style="background-color: rgb(192, 192, 192);"><a href="http://www.7-zip.org/zh-cn/">7-Zip 官方中文首页</a></h1>
<font size="3">&nbsp;&nbsp;&nbsp; 如果你使用tar+bz2的格式压缩，他的压缩效率比rar还要好，而且这两种压缩格式都是开源的，没有协议危险，不想rar格式是受到私有协议保护的，主动权在人家手里(真是不踏实啊)。当然7-zip也能良好的支持winrar的格式，赶快动起手来，使用让你真正放心的软件吧！</font>
          <br/><br/>
          <span style="color:red;">
            <a href="http://hghdo.javaeye.com/blog/43029#comments" style="color:red;">已有 <strong>17</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;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 04 Jan 2007 16:09:55 +0800</pubDate>
        <link>http://hghdo.javaeye.com/blog/43029</link>
        <guid>http://hghdo.javaeye.com/blog/43029</guid>
      </item>
      <item>
        <title>从rpm源文件包中编译自己的rpm安装文件</title>
        <author>hghdo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hghdo.javaeye.com">hghdo</a>&nbsp;
          链接：<a href="http://hghdo.javaeye.com/blog/42652" style="color:red;">http://hghdo.javaeye.com/blog/42652</a>&nbsp;
          发表时间: 2007年01月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font size="3">从源码的rpm包编译被系统的可安装的rpm包使用的命令<br />
<strong>rpmbuild --rebuild xxx.src.rpm</strong><br />
对于redhat的系统build后的包通常会跑到下面的目录，所以别找不到了<br />
<strong>/usr/src/redhat/RPMS/noarch</strong><br />
======================<br />
另外发现2.3以上版本的yum和<strong>64位的CentOS4/rhel4不兼容</strong>，如果要使用yum则把高版本的删除，然后安装2.2x版本的。一般的过程就是下载yum的src.rpm然后自己编译，安装。<br />
<br />
yum的官方下载地址<a href="http://linux.duke.edu/projects/yum/download.ptml">linux.duke.edu/projects/yum/download.ptml</a><br />
<br />
一般下载可以直接用wget命令！</font>
          <br/><br/>
          <span style="color:red;">
            <a href="http://hghdo.javaeye.com/blog/42652#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;">北京: 千橡集团暨校内网诚聘软件研发工程师</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, 01 Jan 2007 14:42:15 +0800</pubDate>
        <link>http://hghdo.javaeye.com/blog/42652</link>
        <guid>http://hghdo.javaeye.com/blog/42652</guid>
      </item>
      <item>
        <title>铁路春运方案到底还有什么意义？[纯转贴]</title>
        <author>hghdo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hghdo.javaeye.com">hghdo</a>&nbsp;
          链接：<a href="http://hghdo.javaeye.com/blog/41775" style="color:red;">http://hghdo.javaeye.com/blog/41775</a>&nbsp;
          发表时间: 2006年12月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;&nbsp; 又是一年春运到，2007年全国铁路春运方案日前已经出台：2007年春运将从明年2月3日开始，到3月14日结束。春节前15天，春节后25天，预计铁路旅客发送量将达1.56亿人，客流高峰将超历年春运。<br />
<br />
&ldquo;春运&rdquo;作为一个社会性概念，在中国可谓妇孺皆知。中国人把&ldquo;回家过年&rdquo;当成了一种人生信念，而这个信念造就了一个庞大的运输市场。所以说，身为中国的运输企业，是有福的；而身为铁路企业，更是有福的。<br />
<br />
但是，在另一方面，身为中国的旅客，却是不幸的。他们不但未能享受到自己创造出的&ldquo;规模效应&rdquo;；相反，他们必须为此付出昂贵的代价&mdash;&mdash;有福的铁路企业胃口 太大，享了规模的福，还要享涨价的福。涨价没有听证会，旅客失去了&ldquo;用手投票&rdquo;的权利；只此一家别无他店，旅客又失去了&ldquo;用脚投票&rdquo;的权利。一听到铁路春 运方案出台，可怜的人们马上条件反射地想到：今年火车票价涨多少？<br />
<br />
所谓春运方案，说白了就是铁路企业对春节期间的市场预测和经营安排。就像其他企业的市场预测和经营安排一样，这只是一个企业内部的事情，与我们原本毫无关 系。我甚至怀疑，这究竟有没有公开的必要？你预计旅客发送量为多少是你自己的事，你安排多少临客也是你自己的事，至于安排春运何时开始又何时结束，更只是 你自己的事。在我看来，铁路企业的春运方案，和街边馒头店的春节销售计划几乎没有区别，都只是一个企业内部概念，而不该是一个社会性概念。<br />
<br />
告诉社会一个有明确起止的春运期，纯属多此一举。首先，春运期是人为想当然的产物，而没有多少科学依据&mdash;&mdash;进入春运期不代表旅客顿时猛增，结束春运期也不 代表旅客骤然减少。其次，让社会知道铁路企业规定的春运期，并不能起到分流旅客、削峰填谷的效果。回家过年是一种非选择性的需要，买票乘车是一种非选择性 的消费。即使没有规定春运期，大家仍然知道大概什么时候出行会更挤，只是知道了也没办法，非得到那个时候方能成行。<br />
<br />
我曾经说过，给春运规定日子，其实也就是给涨价规定日子&mdash;&mdash;在这40天内涨价，被普遍认为是&ldquo;合法&rdquo;的。春运40天，实际就是给运输企业预备的&ldquo;垄断福 利&rdquo;。这大概就是将&ldquo;春运&rdquo;放大成一个社会性概念的唯一价值。在本质上，&ldquo;春运&rdquo;是一个大而虚幻的国民春节出行计划，其中弥漫着浓厚的计划色彩，企图用传 统的计划方式，让个别运输企业主宰国民的出行，这不符合市场经济的要求。<br />
<br />
我们需要回家，但我们不需要&ldquo;春运&rdquo;。&ldquo;春运&rdquo;应该退出公众视野，还原为运输企业内部经营安排的本来面目，不再作为一个社会性概念，赋予行业潜规则以合法性，强行向社会灌输并执行。&ldquo;春运&rdquo;作为一个&ldquo;涨价节&rdquo;的潜规则应该被取消了！
          <br/><br/>
          <span style="color:red;">
            <a href="http://hghdo.javaeye.com/blog/41775#comments" style="color:red;">已有 <strong>11</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;">北京: 千橡集团暨校内网诚聘软件研发工程师</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>Sun, 31 Dec 2006 00:48:53 +0800</pubDate>
        <link>http://hghdo.javaeye.com/blog/41775</link>
        <guid>http://hghdo.javaeye.com/blog/41775</guid>
      </item>
      <item>
        <title>关于html标签的onmouseout事件</title>
        <author>hghdo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hghdo.javaeye.com">hghdo</a>&nbsp;
          链接：<a href="http://hghdo.javaeye.com/blog/41770" style="color:red;">http://hghdo.javaeye.com/blog/41770</a>&nbsp;
          发表时间: 2006年12月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <font size="4"><span style="font-size: 85%;"> 对于一些html容器类型的标签(td,div等)的onmouseout事件的总结<br />
html 容器类型的标签(td,div等)onmouseout事件的处理需要比较特殊的手段。当这些容器内部还有子对象时，如果鼠标进入了这些子对象同样会触发 onmouseout事件！这就是需要特殊处理的原因。而且对于这个问题的解决办法各个浏览器需要编写的代码也不一样。这里总结两种浏览器：臭名昭著的 IE和大名鼎鼎的firefox的代码：<br />
document.getElementById(&quot;tdContainer&quot;).onmouseout=function(theEvent){<br />
var browser=navigator.userAgent;<br />
if (browser.indexOf(&quot;Gecko&quot;)!=-1){<br />
//上面的判断说明浏览器是firefox<br />
if (theEvent.relatedTarget.id==&quot;这里写你的container的id就好&quot;) {<br />
//your code here<br />
}<br />
}else if(browser.indexOf(&quot;Opera&quot;)!=-1){<br />
//上面的判断说明浏览器是opera<br />
}<br />
else {<br />
//什么都不是说明浏览器是IE<br />
if (!this.contains(event.toElement)) {<br />
//your code here<br />
}<br />
}<br />
};<br />
另外注意这段代码的黑体部分。两个event是不一样的theEvent是触发事件时传进来的，这是firefox的方式，而event个人感觉好像是ie的内置对象，这样分析不知道对不对。如果有明白的高人请给与指正</span></font>
          <br/><br/>
          <span style="color:red;">
            <a href="http://hghdo.javaeye.com/blog/41770#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;">北京: 千橡集团暨校内网诚聘软件研发工程师</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, 30 Dec 2006 22:12:01 +0800</pubDate>
        <link>http://hghdo.javaeye.com/blog/41770</link>
        <guid>http://hghdo.javaeye.com/blog/41770</guid>
      </item>
      <item>
        <title>Linux网络设置及双网卡邦定</title>
        <author>hghdo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hghdo.javaeye.com">hghdo</a>&nbsp;
          链接：<a href="http://hghdo.javaeye.com/blog/41600" style="color:red;">http://hghdo.javaeye.com/blog/41600</a>&nbsp;
          发表时间: 2006年12月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="post-body">
<p>设置linux主机的主机名和域名<br />
<strong>/etc/hosts</strong><br />
例子<br />
127.0.0.1 localhost.localdomain localhost<br />
<br />
一般情况下hosts的内容关于主机名(hostname)的定义，每行为一个主机，每行由三部份组成，每个部份由空格隔开。其中#号开头的行做说明，不被系统解释。<br />
<br />
第一部份：网络IP地址；<br />
第二部份：主机名.域名，注意主机名和域名之间有个半角的点，比如 localhost.localdomain<br />
第二部份：主机名(主机名别名） ，其实就是主机名；<br />
<br />
当然每行也可以是两部份，就是主机IP地址和主机名；比如 192.168.1.195 debian <br />
=================================<br />
<br />
设置linux主机的域名解析<br />
<strong>/etc/resolv.conf</strong><br />
例子：(最多设置3个)<br />
nameserver 202.96.134.133<br />
nameserver 202.96.128.143<br />
nameserver 202.96.68.38<br />
<br />
=====================================<br />
设置网卡绑定<br />
首先要编辑的就是网卡配置文件，所在目录如下：<br />
<strong>/etc/sysconfig/network-scripts</strong><br />
绑定配置文件:<strong>ifcfg-bond0</strong>内容如下：<br />
DEVICE=bond0<br />
IPADDR=10.0.0.210<br />
NETMASK=255.255.255.0<br />
BROADCAST=10.0.0.255<br />
NETWORK=10.0.0.0<br />
GATEWAY=10.0.0.1<br />
ONBOOT=yes<br />
TYPE=Ethernet<br />
==============================<br />
网卡的配置文件:<strong>ifcfg-ethx</strong>内容如下：<br />
DEVICE=ethx<br />
ONBOOT=yes<br />
BOOTPROTO=none<br />
#MASTER=bond0<br />
#slave=yes<br />
===============================<br />
这些配置好后要配置<strong>/etc/modprobe.conf</strong>文件，添加如下内容：<br />
alias bond0 bonding<br />
options bond0 miimon=100 mode=0<br />
说明：miimon是用来进行链路监测的。 比如:miimon=100，那么系统每100ms监测一次链路连接状态，如果有一条线路不通就转入另一条线路；mode的值表示工作模式，他共有0，1,2,3四种模式，常用的为0,1两种。<br />
mode=0表示load balancing (round-robin)为负载均衡方式，两块网卡都工作。<br />
mode=1表示fault-tolerance (active-backup)提供冗余功能，工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份.<br />
==================================================<br />
最后编辑<strong>/etc/rc.d/rc.local</strong>文件，添加如下内容：<br />
ifenslave bond0 eth0 eth1</p>
</div>
<span class="post-author"></span>
          <br/><br/>
          <span style="color:red;">
            <a href="http://hghdo.javaeye.com/blog/41600#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;">北京: 千橡集团暨校内网诚聘软件研发工程师</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, 29 Dec 2006 18:11:53 +0800</pubDate>
        <link>http://hghdo.javaeye.com/blog/41600</link>
        <guid>http://hghdo.javaeye.com/blog/41600</guid>
      </item>
      <item>
        <title>在postgres中如何启用plpgsql[linux环境下]</title>
        <author>hghdo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hghdo.javaeye.com">hghdo</a>&nbsp;
          链接：<a href="http://hghdo.javaeye.com/blog/41595" style="color:red;">http://hghdo.javaeye.com/blog/41595</a>&nbsp;
          发表时间: 2006年12月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          createlang installs a procedural language into a PostgreSQL database.<br />
<br />
Usage:<br />
createlang [OPTION]... LANGNAME [DBNAME]<br />
<br />
Options:<br />
-d, --dbname=DBNAME database to install language in<br />
-e, --echo show the commands being sent to the server<br />
-l, --list show a list of currently installed languages<br />
-h, --host=HOSTNAME database server host or socket directory<br />
-p, --port=PORT database server port<br />
-U, --username=USERNAME user name to connect as<br />
-W, --password prompt for password<br />
--help show this help, then exit<br />
--version output version information, then exit
          <br/><br/>
          <span style="color:red;">
            <a href="http://hghdo.javaeye.com/blog/41595#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;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 29 Dec 2006 18:05:56 +0800</pubDate>
        <link>http://hghdo.javaeye.com/blog/41595</link>
        <guid>http://hghdo.javaeye.com/blog/41595</guid>
      </item>
      <item>
        <title>主键关联(双向one-to-one)的保存顺序？？？</title>
        <author>hghdo</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hghdo.javaeye.com">hghdo</a>&nbsp;
          链接：<a href="http://hghdo.javaeye.com/blog/28850" style="color:red;">http://hghdo.javaeye.com/blog/28850</a>&nbsp;
          发表时间: 2006年10月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          查看了很多文档，如果要在双向one-to-one关联时实现对关联表的延迟加载，就需要在主表的one-to-one节点上加<strong>constrained="ture"</strong> lazy="proxy".如下配置<br />user---->address<br /><br />user(作为主表)<br />字段<br />id VARCHAR(32) not null,<br />constraint PK_USER primary key (id)<br />映射文件片段<br />.....<br />&lt;one-to-one name="address" <strong>constrained="true"</strong> class="test.Address" cascade="all" fetch="select" lazy="proxy"/><br />.....<br />＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br />address(作为关联表)<br />字段<br />user_id VARCHAR(32) not null,<br />constraint PK_ADDRESS primary key (user_id)<br />........<br />alter table address<br />add constraint FK_ADDRESS_REFERENCE_USER foreign key (user_id)<br />references user (id)<br />on delete restrict on update restrict;<br />映射文件片段<br />.....<br />&lt;id name="userId" type="java.lang.String"><br />&lt;column name="user_id" length="32" /><br />&lt;generator class="foreign" ><br />&lt;param name="property">user&lt;/param><br />&lt;/generator><br />&lt;/id><br />&lt;one-to-one name="user" class="test.user" constrained="true"/><br />........<br />在这样的配置下可以实现在加载user的时候延时加载address,因为user的one-to-one中有constrained="ture"。<br /><br />可是这样就有另外一个问题<br />当插入新的user和address时发生约束违例<br />......<br />User u=new User();<br />Address add=new Address();<br />u.setAddress(add);<br />add.setUser(u);<br />session.save(u);<br />......<br />查看log发现在保存的时候是先保存address，这时候address字段中的user_id索引用的user还没有保存，所以发生约束违例，如果是先保存user表就应该不会发生这种问题。<br />在这样的配置下(即在user表的配置中存在constrained="true"的前提下)，如何让hibernate先保存user表呢？？？？<br />============================<br />这个帖子应该被移到新手区吗？是因为我的分不够还是因为别的原因？<br />如果版主大人有时间把这个帖子放到新手区，那就顺便帮忙解答一下疑问吧！！
          <br/><br/>
          <span style="color:red;">
            <a href="http://hghdo.javaeye.com/blog/28850#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;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 20 Oct 2006 17:04:46 +0800</pubDate>
        <link>http://hghdo.javaeye.com/blog/28850</link>
        <guid>http://hghdo.javaeye.com/blog/28850</guid>
      </item>
  </channel>
</rss>