<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>善待人生，笑对生活...</title>
    <description>善待人生，笑对生活……</description>
    <link>http://dogstar.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>交换机 路由器和集线器的区别</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/201836" style="color:red;">http://dogstar.javaeye.com/blog/201836</a>&nbsp;
          发表时间: 2008年06月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          交换机 路由器和集线器的区别<br /><br />集线器-------集线器也叫Hub，工作在物理层（最底层），没有相匹配的软件系统，是纯硬件设备。集线器主要用来连接计算机等网络终端。<br /><br />集线器为共享式带宽，连接在集线器上的任何一个设备发送数据时，其他所有设备必须等待，此设备享有全部带宽，通讯完毕，再由其他设备使用带宽。正因此，集线器连接了一个冲突域的网络。所有设备相互交替使用，就好象大家一起过一根独木桥一样。<br /><br />集线器不能判断数据包的目的地和类型，所以如果是广播数据包也依然转发，而且所有设备发出数据以广播方式发送到每个接口，这样集线器也连接了一个广播域的网络。<br /><br />交换机-------交换机Switch，工作在数据链路层（第二层），稍微高端一点的交换机都有一个操作系统来支持。和集线器一样主要用于连接计算机等网络终端设备。<br /><br />交换机比集线器更加先进，允许连接在交换机上的设备并行通讯，好比高速公路上的汽车并行行使一般，设备间通讯不会再发生冲突，因此交换机打破了冲突域，交换机每个接口是一个冲突域，不会与其他接口发生通讯冲突。<br /><br />并且有系统的交换机可以记录MAC地址表，发送的数据不会再以广播方式发送到每个接口，而是直接到达目的接口，节省了接口带宽。但是交换机和集线器一样不能判断广播数据包，会把广播发送到全部接口，所以交换机和集线器一样连接了一个广播域网络。<br /><br />高端一点的交换机不仅可以记录MAC地址表，还可以划分VLAN（虚拟局域网）来隔离广播，但是VLAN间也同样不能通讯。要使VLAN间能够通讯，必须有三层设备介入。<br /><br />路由器-------路由器Router，工作在网络层（第三层），所有的路由器都有自己的操作系统来维持，并且需要人员调试，否则不能工作。路由器没有那么多接口，主要用来进行网络与网络的连接。<br /><br />简单的说路由器把数据从一个网络发送到另一个网络，这个过程就叫路由。路由器不仅能像交换机一样隔离冲突域，而且还能检测广播数据包，并丢弃广播包来隔离广播域，有效的扩大了网络的规模。<br /><br />在路由器中记录着路由表，路由器以此来转发数据，以实现网络间的通讯。路由器的介入可以使交换机划分的VLAN实现互相通讯。<br /><br />总结：<br /><br />集线器：纯硬件、用于连接网络终端、不能打破冲突域和广播域。<br /><br />交换机：拥有软件系统、用于连接网络终端、能够打破冲突域，但是不能分割广播域。<br /><br />路由器：拥有软件系统、用于连接网络、可以打破冲突域也可以分割广播域，是连接大型网络的比备设备
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/201836#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 10 Jun 2008 16:41:25 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/201836</link>
        <guid>http://dogstar.javaeye.com/blog/201836</guid>
      </item>
      <item>
        <title>scala学习笔记1</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/182673" style="color:red;">http://dogstar.javaeye.com/blog/182673</a>&nbsp;
          发表时间: 2008年04月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最早接触ruby时,从网上找一些资料看,零零碎碎,由于没有实际的使用动力,一直没有深入.有些点也没有理解.后来,工作需要深入学习js.js断断续续使用了两年.对js的了解也由浅入深.特别是接触了scheme,erlang等以后.了解到"披着c外衣的lisp"的含义.回过头来,看ruby,一切忽然开朗.同样的openclass,但多了一等公民的函数.<br /><br />扯了半天,回到主题.大家多看看fp语言,全当拓宽视野 :).对编写代码帮助很大.<br /><br />那就先从jvm的fp,scala开始吧 .<br />1.安装  scala http://www.scala-lang.org/downloads/index.html 下载下来的是一个jar安装文件 java -jar xxxxx.jar即可安装<br /><br />2.下载 eclipse插件 http://www.scala-lang.org/downloads/scala-plugin/. 直接eclipse install.<br />  安装成功的话,eclipse的scala环境就搭建完毕.<br /><br />3.写一个helloword程序,测试一下吧:<br />new scala project -> new scala Object <br /><pre name="code" class="java">
object HelloWorld {

        def main(args: Array[String]){
                println("hello,world")
         }
}
</pre><br /><br />then run as scala Application. 顺利的话,我们就会看到 "hello,world" 输出了.<br />(摘抄自附件的programming in scala. 日后会参考概述写点学习心得奉上.敬请关注. :))<br /><br /><br />4.参考资料 : 如附件
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/182673#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 14 Apr 2008 18:22:00 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/182673</link>
        <guid>http://dogstar.javaeye.com/blog/182673</guid>
      </item>
      <item>
        <title>我们这一代人  ---转</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/177357" style="color:red;">http://dogstar.javaeye.com/blog/177357</a>&nbsp;
          发表时间: 2008年03月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          咱们这一代人，比我大5岁一直到比我小5岁的所有人，也就是80后的人，赶上人口高峰，竞争非常激烈，说白了就是美国的婴儿潮。这是历史规律，谁也没办法，主席也没办法。<br /><br />婴儿潮的特点，就是这批人从出生到死，一辈子竞争都非常激烈，好工作不好找，好学校需要玩儿命的考。美国的情况大家已经看到了，那整整一代人这一辈子就是这样的。日本也是。那种一般聪明水平的人，如果他是95年生的，那么可以考上八中；如果他是85年生的，那么考三十五中都够呛。事实就是这样，不赖个人不努力，只赖自己生的时代不好。<br /><br />因此，现在找工作，我觉得最为重要的一点，就是等你40-50岁的时候，你还能不能有个可靠的饭碗，有没有竞争的实力。确实就是这样。现在找工作，具体的起薪以及工作岗位其实相对来说都无所谓，关键是你的这种选择能不能让你40-50岁的时候，在同龄的这群人里面依然具有竞争力，甚至具有比现在更大的竞争力。咱们的父母这一代可能还好一些，50多岁下岗了还能当个售票员，而等到咱们那会儿可能情况会更糟的。因此不能跟现在的40-50岁，父母这个年龄段的人群去比。　<br /><br />那么应该怎么选择？答案其实不难，第一，选准一个行业，一直做下去，这样逐渐你在这个行业里面越来越值钱。我这个"行业"指的是大行业划分，比如我 24岁开始做基金分析员，30岁改行做了证券研究，这都算金融口，这样就可以。但是不能说24岁开始做电子仪器，30岁改行做粮油交易，这俩八杆子打不着，进了粮油行业之后你永远比别人落后10年，再聪明也不能获得最佳的竞争实力。<br /><br />第二，选一个今后能够基业长青的行业领域。就是说这个行业今后肯定还需要这么多人，不会让你出现结构性失业。例如银行、国防、农业等等（当然指的都是高级的）这些，虽然有的看起来薪水和地位都不高，人都不愿意去，但是等到你40-50岁的时候，你身处这些行业的价值就都体现出来了，那时很多其他人看着你眼红，他们也进不去了。你最幸福。<br /><br />第三，选一个技术含量高的领域，不要选司机、厨师、初级财会人员这种虽然符合前面两条，但是什么也积累不起来、随便谁都能顶你的职业。<br /><br />因此，如下几种地方是要格外慎重选择的：<br /><br />1，房地产。不用多讲，10年后房地产需求大量下降、价格大量下降，所有行内人全失业。<br /><br />2，外企。很多同学被外企的刚毕业时给你的高薪所吸引，并希望进去后呆到40岁左右能变成外企or行业内的领导人。但是要看到，能变成领导人的人还是少数，大多数年轻人进去之后等到40岁左右，会被当时招进来的更加年轻的、廉价的劳动力所代替。于是外企会无情地把你踢开，你就只好转到民营企业里去继续干了，收入和地位会一下子下来很多，甚至你就找不到地方可去了。<br /><br />3，不做实质性工作的公务员以及事业单位人员。这些地方很闲，不累，收入不错且稳定，因此成为大家竞争的热点，归根结蒂还是一个懒字在起作用。如果你想一想你做这种喝茶水、看报纸的工作做到40岁，赶上人事调整，你还能去干什么。即使不失业，多半情况下也只能拿最低档次的工资，一直到退休。<br /><br />4，所谓的"管理培训生"。名字起的很好听，说起来也不错，其实意思就是进了企业没有你的岗，先漂一段时间，两年后如果表现不错，给你个岗位开始从头干起，不行的话两年后踢出去，因为我只跟你签了两年合同，踢你你也没法说什么。现实中很多名企的"管培"就是在这么运作的。所以索性这样，倒还真不如刚一进去就在一个具体的岗位上开始干起来，专业越做越棒，做到最后谁也没法顶你，你是最有经验的。例如硕士期间就主攻数字整流器的研究，毕业后到一个企业中专门做数字整流器的岗位上一直做下去，可能30岁之前你的收入、地位相对较低，但50岁的时候你就是最香的，而且这会儿谁羡慕你也只能是干羡慕，谁也没法顶你了。<br /><br />大家不要以为50岁离自己还远，事实上从硕士一入学甚至更早就要开始有一定策划和准备。咱们这一代人我刚才说过了，一辈子从生到死都是一直的激烈竞争，而且这帮人还飞到美国去，在异国他乡展开第二战场，搞的美国现在也是鸡飞狗跳。因此，一开始的路线选择，如果选对了，一下子就能甩开一大堆和自己一样聪明、一样勤奋但是在职业生涯、社会现实认识方面犯糊涂的同龄人。清华里面这方面的糊涂人为数是不少的。<br />当然，这就意味着自己年轻的时候会很辛苦，比别人多学很多东西，在自己的专业领域上花更多的时间、钻的更深、更费脑子。如果你不怕辛苦，那么你后半辈子就可以很幸福；否则，如果现在当个很清闲的公务员开始养老，那么后患无穷。眼光一定要放长远。<br /><br />有的人可能说：等咱们50岁的时候，没准儿社会变了、就业-市场-生活行情变了，一切都变了。我先走一步算一步吧，车到山前必有路。这种心理很多人都有，但是事实上是很难说的，因为毕竟这么多80后的人头已经生出来了，一张张嘴都张开了等着吃饭。美国、日本的婴儿潮那一代赶上了那么多经济危机、动乱、萧条、政局动荡或者国家兴旺发达的历史事件，其人口太多、特定年龄段的人失业率高、就业困难的现状和大趋势仍旧难以改变。
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/177357#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><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><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Mar 2008 17:02:59 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/177357</link>
        <guid>http://dogstar.javaeye.com/blog/177357</guid>
      </item>
      <item>
        <title>oracle 解锁</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/159193" style="color:red;">http://dogstar.javaeye.com/blog/159193</a>&nbsp;
          发表时间: 2008年01月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          招数1:<br /><pre name="code" class="java">
查看被锁的表：   
  select   p.spid,c.object_name,b.session_id,b.oracle_username,b.os_user_name   from   v$process   p,v$session   a,   v$locked_object   b,all_objects   c   where   p.addr=a.paddr   and   a.process=b.process   and   c.object_id=b.object_id   
   
  解锁：   
  alter   system     kill   session   '146';(其中146为锁住的进程号)
</pre><br /><br />招数2:<br /><pre name="code" class="java">
SELECT   sn.username, m.SID,sn.SERIAL#, m.TYPE,
         DECODE (m.lmode,
                 0, 'None',
                 1, 'Null',
                 2, 'Row Share',
                 3, 'Row Excl.',
                 4, 'Share',
                 5, 'S/Row Excl.',
                 6, 'Exclusive',
                 lmode, LTRIM (TO_CHAR (lmode, '990'))
                ) lmode,
         DECODE (m.request,
                 0, 'None',
                 1, 'Null',
                 2, 'Row Share',
                 3, 'Row Excl.',
                 4, 'Share',
                 5, 'S/Row Excl.',
                 6, 'Exclusive',
                 request, LTRIM (TO_CHAR (m.request, '990'))
                ) request,
         m.id1, m.id2
    FROM v$session sn, v$lock m
   WHERE (sn.SID = m.SID AND m.request != 0)         --存在锁请求，即被阻塞
      OR (    sn.SID = m.SID                         --不存在锁请求，但是锁定的对象被其他会话请求锁定
          AND m.request = 0
          AND lmode != 4
          AND (id1, id2) IN (
                        SELECT s.id1, s.id2
                          FROM v$lock s
                         WHERE request != 0 AND s.id1 = m.id1
                               AND s.id2 = m.id2)
         )
ORDER BY id1, id2, m.request;

alter system kill session '91';
alter system kill session '144,633';
alter system kill session '91,21';
alter system kill session '112,5772';
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/159193#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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, 24 Jan 2008 20:11:00 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/159193</link>
        <guid>http://dogstar.javaeye.com/blog/159193</guid>
      </item>
      <item>
        <title>css</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/120707" style="color:red;">http://dogstar.javaeye.com/blog/120707</a>&nbsp;
          发表时间: 2007年09月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          很好的一篇文章，前段时间在某个blog上看到的，转到了自己的blog上了，感觉写的很不错！希望对大家有帮助！ <br /><br />一.使用css缩写<br /><br />使用缩写可以帮助减少你CSS文件的大小，更加容易阅读。css缩写的主要规则请参看《常用css缩写语法总结》，这里就不展开描述。<br /><br />二.明确定义单位，除非值为0<br /><br />忘记定义尺寸的单位是CSS新手普遍的错误。在HTML中你可以只写width=100，但是在CSS中，你必须给一个准确的单位，比如：width:100px width:100em。只有两个例外情况可以不定义单位：行高和0值。除此以外，其他值都必须紧跟单位，注意，不要在数值和单位之间加空格。<br /><br />三.区分大小写<br /><br />当在XHTML中使用CSS，CSS里定义的元素名称是区分大小写的。为了避免这种错误，我建议所有的定义名称都采用小写。<br /><br />class和id的值在HTML和XHTML中也是区分大小写的，如果你一定要大小写混合写，请仔细确认你在CSS的定义和XHTML里的标签是一致的。<br /><br />四.取消class和id前的元素限定<br /><br />当你写给一个元素定义class或者id，你可以省略前面的元素限定，因为ID在一个页面里是唯一的，class可以在页面中多次使用。你限定某个元素毫无意义。例如：<br /><br />div#id1{}可以写成#id1{}<br /><br />这样可以节省一些字节。<br /><br />五.默认值<br /><br />通常padding的默认值为0，background-color的默认值是transparent。但是在不同的浏览器默认值可能不同。如果怕有冲突，可以在样式表一开始就先定义所有元素的margin和padding值都为0，象这样：<br /><br />六.不需要重复定义可继承的值<br /><br />CSS中，子元素自动继承父元素的属性值，象颜色、字体等，已经在父元素中定义过的，在子元素中可以直接继承，不需要重复定义。但是要注意，浏览器可能用一些默认值覆盖你的定义。<br /><br />七.最近优先原则<br /><br />如果对同一个元素的定义有多种，以最接近(最小一级)的定义为最优先，例如有这么一段代码<br /><br />Update: Lorem ipsum dolor set<br /><br />在CSS文件中，你已经定义了元素p，又定义了一个classupdate<br /><br />八.多重class定义<br /><br />一个标签可以同时定义多个class。例如：我们先定义两个样式，第一个样式背景为"http://www.28600.com/article1/#"666；第二个样式有10 px的边框。<br /><br />.one{width:200px;background:"http://www.28600.com/article1/#"666;}<br /><br />.two{border:10px solid "http://www.28600.com/article1/#"F00;}<br /><br />在页面代码中，我们可以这样调用:<br /><br />&lt;div class=one two>&lt;/div><br /><br />这样最终的显示效果是这个div既有"http://www.28600.com/article1/#"666的背景，也有10px的边框。是的，这样做是可以的，你可以尝试一下。<br /><br />九.使用子选择器(descendant selectors)<br /><br />CSS初学者不知道使用子选择器是影响他们效率的原因之一。子选择器可以帮助你节约大量的class定义。我们来看下面这段代码：<br /><br />&lt;div id=subnav><br /><br />&lt;ul><br /><br />&lt;li class=subnavitem> &lt;a href="http://www.28600.com/article1/#" class=subnavitem>Item 1&lt;/a>&lt;/li>><br /><br />&lt;li class=subnavitemselected> &lt;a href="http://www.28600.com/article1/#" class=subnavitemselected> Item 1&lt;/a> &lt;/li><br /><br />&lt;li class=subnavitem> &lt;a href="http://www.28600.com/article1/#" class=subnavitem> Item 1&lt;/a> &lt;/li><br /><br />&lt;/ul><br /><br />&lt;/div><br /><br />这段代码的CSS定义是：<br /><br />div#subnav ul { /* Some styling */ }<br /><br />div#subnav ul li.subnavitem { /* Some styling */ }<br /><br />div#subnav ul li.subnavitem a.subnavitem { /* Some styling */ }<br /><br />div#subnav ul li.subnavitemselected { /* Some styling */ }<br /><br />div#subnav ul li.subnavitemselected a.subnavitemselected { /* Some styling */ }<br /><br />你可以用下面的方法替代上面的代码<br /><br />&lt;ul id=subnav><br /><br />&lt;li> &lt;a href="http://www.28600.com/article1/#>" Item 1&lt;/a> &lt;/li><br /><br />&lt;li class=sel> &lt;a href="http://www.28600.com/article1/#>" Item 1&lt;/a> &lt;/li><br /><br />&lt;li> &lt;a href="http://www.28600.com/article1/#>" Item 1&lt;/a> &lt;/li><br /><br />&lt;/ul><br /><br />样式定义是：<br /><br />#subnav { /* Some styling */ }<br /><br />#subnav li { /* Some styling */ }<br /><br />#subnav a { /* Some styling */ }<br /><br />#subnav .sel { /* Some styling */ }<br /><br />#subnav .sel a { /* Some styling */ }<br /><br />用子选择器可以使你的代码和CSS更加简洁、更加容易阅读。<br /><br />十.不需要给背景图片路径加引号<br /><br />为了节省字节，我建议不要给背景图片路径加引号，因为引号不是必须的。例如：<br /><br />background:url(images/***.gif) #333;<br /><br />可以写为:<br /><br />background:url(images/***.gif) #333;<br /><br />如果你加了引号，反而会引起一些浏览器的错误。<br /><br />十一.组选择器(Group selectors)<br /><br />当一些元素类型、class或者id都有共同的一些属性，你就可以使用组选择器来避免多次的重复定义。这可以节省不少字节。<br /><br />例如：定义所有标题的字体、颜色和margin，你可以这样写：<br /><br />h1,h2,h3,h4,h5,h6 {<br /><br />font-family:Lucida Grande,Lucida,Arial,Helvetica,sans-serif;<br /><br />color:#333;<br /><br />margin:1em 0;<br /><br />}<br /><br />如果在使用时，有个别元素需要定义独立样式，你可以再加上新的定义，可以覆盖老的定义，例如：<br /><br />h1 { font-size:2em; }<br /><br />h2 { font-size:1.6em; }<br /><br />十二.用正确的顺序指定链接的样式<br /><br />当你用CSS来定义链接的多个状态样式时，要注意它们书写的顺序，正确的顺序是：:link :visited :hover :active。抽取第一个字母是LVHA，你可以记忆成LoVe HAte(喜欢讨厌)。为什么这么定义，可以参考Eric Meyer的《Link Specificity》。<br /><br />如果你的用户需要用键盘来控制，需要知道当前链接的焦点，你还可以定义:focus属性。:focus属性的效果也取决与你书写的位置，如果你希望聚焦元素显示:hover效果，你就把:focus写在:hover前面；如果你希望聚焦效果替代:hover效果，你就把:focus放在:hover后面。<br /><br />十三.清除浮动<br /><br />一个非常常见的CSS问题，定位使用浮动的时候，下面的层被浮动的层所覆盖，或者层里嵌套的子层超出了外层的范围。<br /><br />通常的解决办法是在浮动层后面添加一个额外元素，例如一个div或者一个br，并且定义它的样式为clear: both。这个办法有一点牵强，幸运的是还有一个好办法可以解决，参看这篇文章《How To Clear Floats Without Structural Markup》(注：本站将尽快翻译此文)。<br /><br />上面2种方法可以很好解决浮动超出的问题，但是如果当你真的需要对层或者层里的对象进行clear的时候怎么办？一种简单的方法就是用overflow属性，这个方法最初的发表在《Simple Clearing of Floats》，又在《Clearance》和《Super simple clearing floats》中被广泛讨论。<br /><br />上面那一种clear方法更适合你，要看具体的情况，这里不再展开论述。另外关于float的应用，一些优秀的文章已经说得很清楚，推荐你阅读：《Floatutorial》、《Containing Floats》和《Float Layouts》<br /><br />十四.横向居中(centering)<br /><br />这是一个简单的技巧，但是值得再说一遍，因为我看见太多的新手问题都是问这个：CSS如何横向居中？你需要定义元素的宽，并且定义横向的margin，如果你的布局包含在一个层(容器)中，就象这样：<br /><br />&lt;!-- 你的布局这里开始 --><br /><br />你可以这样定义使它横向居中：<br /><br />#wrap {<br /><br />width:760px; /* 修改为你的层的宽度 */<br /><br />margin:0 auto;<br /><br />}<br /><br />但是IE5/Win不能正确显示这个定义，我们采用一个非常有用的技巧来解决：用text-align属性。就象这样：<br /><br />body {<br /><br />text-align:center;<br /><br />}<br /><br />#wrap {<br /><br />width:760px; /* 修改为你的层的宽度 */<br /><br />margin:0 auto;<br /><br />text-align:left;<br /><br />}<br /><br />第一个body的text-align:center; 规则定义IE5/Win中body的所有元素居中(其他浏览器只是将文字居中) ，第二个text-align:left;是将#warp中的文字居左。<br /><br />十五.导入(Import)和隐藏CSS<br /><br />因为老版本浏览器不支持CSS，一个通常的做法是使用@import技巧来把CSS隐藏起来。例如：<br /><br />@import url(main.css);<br /><br />然而，这个方法对IE4不起作用，这让我很是头疼了一阵子。后来我用这样的写法：<br /><br />@import main.css;<br /><br />这样就可以在IE4中也隐藏CSS了，呵呵，还节省了5个字节呢。想了解@import语法的详细说明，可以看这里《centricle’s css filter chart》<br /><br />十六.针对IE的优化<br /><br />有些时候，你需要对IE浏览器的bug定义一些特别的规则，这里有太多的CSS技巧(hacks)，我只使用其中的两种方法，不管微软在即将发布的IE7 beta版里是否更好的支持CSS，这两种方法都是最安全的。<br /><br />1.注释的方法<br /><br />(a)在IE中隐藏一个CSS定义，你可以使用子选择器(child selector):<br /><br />html>body p {<br /><br />/* 定义内容 */<br /><br />}<br /><br />(b)下面这个写法只有IE浏览器可以理解(对其他浏览器都隐藏)<br /><br />* html p {<br /><br />/* declarations */<br /><br />}<br /><br />(c)还有些时候，你希望IE/Win有效而IE/Mac隐藏，你可以使用反斜线技巧：<br /><br />/* */<br /><br />* html p {<br /><br />declarations<br /><br />}<br /><br />/* */<br /><br />2.条件注释(conditional comments)的方法<br /><br />另外一种方法，我认为比CSS Hacks更加经得起考验就是采用微软的私有属性条件注释(conditional comments)。用这个方法你可以给IE单独定义一些样式，而不影响主样式表的定义。就象这样：<br /><br />&lt;!--[if IE]><br /><br />&lt;link rel=stylesheet type=text/css href="http://www.28600.com/article1/ie.css" /><br /><br />&lt;![endif]--><br /><br />十七.调试技巧：层有多大？<br /><br />当调试CSS发生错误，你就要象排版工人，逐行分析CSS代码。我通常在出问题的层上定义一个背景颜色，这样就能很明显看到层占据多大空间。有些人建议用border，一般情况也是可以的，但问题是，有时候border 会增加元素的尺寸，border-top和boeder-bottom会破坏纵向margin的值，所以使用background更加安全些。<br /><br />另外一个经常出问题的属性是outline。outline看起来象boeder，但不会影响元素的尺寸或者位置。只有少数浏览器支持outline属性，我所知道的只有Safari、OmniWeb、和Opera。<br /><br />十八.CSS代码书写样式<br /><br />在写CSS代码的时候，对于缩进、断行、空格，每个人有每个人的书写习惯。在经过不断实践后，我决定采用下面这样的书写样式：<br /><br />selector1,<br /><br />selector2 {<br /><br />property:;<br /><br />}<br /><br />当使用联合定义时，我通常将每个选择器单独写一行，这样方便在CSS文件中找到它们。在最后一个选择器和大括号{之间加一个空格，每个定义也单独写一行，分号直接在属性值后，不要加空格。<br /><br />我习惯在每个属性值后面都加分号，虽然规则上允许最后一个属性值后面可以不写分号，但是如果你要加新样式时容易忘记补上分号而产生错误，所以还是都加比较好。<br /><br />最后，关闭的大括号}单独写一行。<br /><br />空格和换行有助与阅读。<br />文章引用自：http://blog.ykwin.com/blog/user2/166/archives/2006/1877.html
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/120707#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</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, 05 Sep 2007 17:28:40 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/120707</link>
        <guid>http://dogstar.javaeye.com/blog/120707</guid>
      </item>
      <item>
        <title>10条途径迅速提高你的生活</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/120539" style="color:red;">http://dogstar.javaeye.com/blog/120539</a>&nbsp;
          发表时间: 2007年09月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          许多问题的造成其实并不是因为我们自己运气差或者别人有意为之。事实上，这些问题往往是由我们自己的坏习惯产生的。这里列出了十个习惯希望能够帮助你摆脱这些自己造成的麻烦又没必要的烦恼：<br /><br />   1. 不要过早下结论。过早下结论会通过两条途径为你制造麻烦。第一是，你会认为自己已经了解所有的事情的发展，所以不再重视这件事情，而按照自己假设的发展方式操作事情。可惜人类并不是一种会算命的种类，所以大部分的假设都是错误的，这样也导致的事情常常失败；第二是，你会猜测别人的想法并且会做出假设，同样的，这些假设通常也是错误的。而且这些愚蠢的假设也导致了你与他人的关系被破坏。<br />   2. 不要小题大做。很多人因为一些小挫折的刺激而做出过激的反应。小题大做使人变得紧张兮兮，产生过多的忧虑。<br />   3. 不要发明规则。过分的使用”应该”和”应当”是没必要的。这些词除了让你感到紧张外，不会有任何用处。为什么？因为当你使用这些发明的规则时，你会变得受约束和有孩子气的命令口气。而当你试图将这些规则强加于他人时，只会让别人对你产生厌恶的情绪（霸权，自以为是的）<br />   4. 避免给他人扣帽子。对别人否定的评价也会限制你对他的看法和想法。所以，避免预先给别人扣帽子，说不定你就可以发现别人其他不同一般的地方。<br />   5. 别做完美主义者。生活并非十全十美的。若寻找一个完美的工作职位，却永远找不到它，而一些看起来好的也并非那么好。追求完美主义是一种精神基本，它会摧毁你的一切快乐并且建立一堆你不可能实现的目标。<br />   6. 不要过分概括。一两次的挫折并不意味着永远失败，几次成功也不能说明你是一个天才。一件事——好或坏——或者二或三件事并不代表永久的趋势。一件事的成败就是它的成败，不要过分夸大其失败的教训和成功的经验。<br />   7. 不要怀疑别人在讨论自己。大部分的人，包括你的朋友和同事，在99%的时间内并没有讨论你或者考虑你。很多职位的同事和邻居甚至都不会认识你。别人对你的态度冷热大部分都非私人的想法。不断地怀疑别人在讨论自己只会让你多疑和痛苦。<br />   8. 不要总凭直觉判断。你的直觉并不是总是一个正确的指示器，因为你只觉得会这样，但”觉得”并不说明这就就会是正确的。未来并不会因为你的直觉感觉会这样而改变。感觉可能是真的，但不一定是对的。<br />   9. 不要让生活拖垮你，学着乐观一些。如果你期盼有坏事发生，想必常常都真的发生了。一个消极的人对于事物的看法都是扭曲的，他会发现世界是灰暗的，到处都是污点。换个方向想，如果你尝试去寻找一些积极的事情，你也一定会发现它们的。<br />  10. 不要沉迷于过去不可自拔。这是我认为这是最重要的一点：放开那些已经过去的事情，继续你的生活。很多的愤怒、沮丧、痛苦和绝望都是因为沉迷于过去的伤害和问题而造成的。你把这些已经过去的事情看得越重要，你的生活也就越沉重，你也更难从伤害中摆脱。不要尝试与这些过去的事件争斗，因为它们已经过去了，所以放开手，往前走。
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/120539#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 05 Sep 2007 09:39:35 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/120539</link>
        <guid>http://dogstar.javaeye.com/blog/120539</guid>
      </item>
      <item>
        <title>Spring--quartz 结合</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/116131" style="color:red;">http://dogstar.javaeye.com/blog/116131</a>&nbsp;
          发表时间: 2007年08月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="xml">	
&lt;bean id="sendMessageTimetask" class="com.taobao.keno.biz.core.timetask.impl.SendMessageTimetask" />
	
	&lt;bean id="sendOrderMessage" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		&lt;property name="targetObject">&lt;ref bean="sendMessageTimetask"/>&lt;/property>
		&lt;property name="targetMethod">&lt;value>sendOrderMessage&lt;/value>&lt;/property>
	&lt;/bean>
	
    &lt;bean id="sendOrderMessageTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
		&lt;property name="jobDetail">&lt;ref bean="cronOrderMessage"/>&lt;/property>
		&lt;property name="cronExpression">&lt;value>*/25 * * * * ?&lt;/value>&lt;/property>
	&lt;/bean>
	
    &lt;bean id="messageScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		&lt;property name="triggers">
			&lt;list>						
				&lt;ref local="sendOrderMessageTrigger"/>
				&lt;ref local="cronUnFreezeBailTrigger"/>
			&lt;/list>
		&lt;/property>
		&lt;property name="autoStartup">&lt;value>false&lt;/value>&lt;/property>
		&lt;property name="schedulerName">&lt;value>messageScheduler&lt;/value>&lt;/property>
	&lt;/bean>
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/116131#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><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><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 24 Aug 2007 10:19:10 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/116131</link>
        <guid>http://dogstar.javaeye.com/blog/116131</guid>
      </item>
      <item>
        <title>Spring--quartz中cronExpression配置说明</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/116130" style="color:red;">http://dogstar.javaeye.com/blog/116130</a>&nbsp;
          发表时间: 2007年08月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Spring--quartz中cronExpression<br /><br /><pre name="code" class="java">
字段 	  	允许值 	  	允许的特殊字符
秒 	  	0-59 	  	, - * /
分 	  	0-59 	  	, - * /
小时 	  	0-23 	  	, - * /
日期 	  	1-31 	  	, - * ? / L W C
月份 	  	1-12 或者 JAN-DEC 	  	, - * /
星期 	  	1-7 或者 SUN-SAT 	  	, - * ? / L C #
年（可选） 	  	留空, 1970-2099 	  	, - * /
</pre><br /><br /><br />The '*' character is used to specify all values. For example, "*" in the minute field means "every minute".<br />“*”字符被用来指定所有的值。如：”*“在分钟的字段域里表示“每分钟”。<br />The '?' character is allowed for the day-of-month and day-of-week fields. It is used to specify 'no specific value'. This is useful when you need to specify something in one of the two fileds, but not the other. See the examples below for clarification.<br />“?”字符只在日期域和星期域中使用。它被用来指定“非明确的值”。当你需要通过在这两个域中的一个来指定一些东西的时候，它是有用的。看下面的例子你就会明白。<br />月份中的日期和星期中的日期这两个元素时互斥的一起应该通过设置一个问号(?)来表明不想设置那个字段<br /><br />The '-' character is used to specify ranges For example "10-12" in the hour field means "the hours 10, 11 and 12".<br />“-”字符被用来指定一个范围。如：“10-12”在小时域意味着“10点、11点、12点”。<br /><br />The ',' character is used to specify additional values. For example "MON,WED,FRI" in the day-of-week field means "the days Monday, Wednesday, and Friday".<br />“,”字符被用来指定另外的值。如：“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”.<br /><br />The '/' character is used to specify increments. For example "0/15" in the seconds field means "the seconds 0, 15, 30, and 45". And "5/15" in the seconds field means "the seconds 5, 20, 35, and 50". Specifying '*' before the '/' is equivalent to specifying 0 is the value to start with. Essentially, for each field in the expression, there is a set of numbers that can be turned on or off. For seconds and minutes, the numbers range from 0 to 59. For hours 0 to 23, for days of the month 0 to 31, and for months 1 to 12. The "/" character simply helps you turn on every "nth" value in the given set. Thus "7/6" in the month field only turns on month "7", it does NOT mean every 6th month, please note that subtlety.<br /><br />The 'L' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "last", but it has different meaning in each of the two fields. For example, the value "L" in the day-of-month field means "the last day of the month" - day 31 for January, day 28 for February on non-leap years. If used in the day-of-week field by itself, it simply means "7" or "SAT". But if used in the day-of-week field after another value, it means "the last xxx day of the month" - for example "6L" means "the last friday of the month". When using the 'L' option, it is important not to specify lists, or ranges of values, as you'll get confusing results.<br /><br />L是‘last’的省略写法可以表示day-of-month和day-of-week域，但在两个字段中的意思不同，例如day-of-month域中表示一个月的最后一天，<br />如果在day-of-week域表示‘7’或者‘SAT’，如果在day-of-week域中前面加上数字，它表示一个月的最后几天，例如‘6L’就表示一个月的最后一个<br />星期五，<br /><br />The 'W' character is allowed for the day-of-month field. This character is used to specify the weekday (Monday-Friday) nearest the given day. As an example, if you were to specify "15W" as the value for the day-of-month field, the meaning is: "the nearest weekday to the 15th of the month". So if the 15th is a Saturday, the trigger will fire on Friday the 14th. If the 15th is a Sunday, the trigger will fire on Monday the 16th. If the 15th is a Tuesday, then it will fire on Tuesday the 15th. However if you specify "1W" as the value for day-of-month, and the 1st is a Saturday, the trigger will fire on Monday the 3rd, as it will not 'jump' over the boundary of a month's days. The 'W' character can only be specified when the day-of-month is a single day, not a range or list of days<br />.<br />The 'L' and 'W' characters can also be combined for the day-of-month expression to yield 'LW', which translates to "last weekday of the month".<br /><br />The '#' character is allowed for the day-of-week field. This character is used to specify "the nth" XXX day of the month. For example, the value of "6#3" in the day-of-week field means the third Friday of the month (day 6 = Friday and "#3" = the 3rd one in the month). Other examples: "2#1" = the first Monday of the month and "4#5" = the fifth Wednesday of the month. Note that if you specify "#5" and there is not 5 of the given day-of-week in the month, then no firing will occur that month.<br /><br />The 'C' character is allowed for the day-of-month and day-of-week fields. This character is short-hand for "calendar". This means values are calculated against the associated calendar, if any. If no calendar is associated, then it is equivalent to having an all-inclusive calendar. A value of "5C" in the day-of-month field means "the first day included by the calendar on or after the 5th". A value of "1C" in the day-of-week field means "the first day included by the calendar on or after sunday".<br />关于cronExpression的介绍:<br /><br /><pre name="code" class="java">　
字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年（可选） 留空, 1970-2099 , - * /
表达式意义
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
每天早上6点
0 6 * * *
每两个小时
0 */2 * * *
晚上11点到早上8点之间每两个小时，早上八点
0 23-7/2，8 * * *
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * 1-3
1月1日早上4点
0 4 1 1 *
</pre><br /><br />quartz的高级特性不仅如此<br />1 数据库存储<br />2 集群支持<br />3 数据库持久化任务，trigger<br />4 trigger 的停止，运行<br />5 任务的任意添加<br />6 比corntrigger 更详尽的任务安排<br />7 线程的内部数据交换[quote]
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/116130#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</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, 24 Aug 2007 10:18:04 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/116130</link>
        <guid>http://dogstar.javaeye.com/blog/116130</guid>
      </item>
      <item>
        <title>firefox recommend</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/109124" style="color:red;">http://dogstar.javaeye.com/blog/109124</a>&nbsp;
          发表时间: 2007年08月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          just show pic below
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/109124#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 05 Aug 2007 12:23:53 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/109124</link>
        <guid>http://dogstar.javaeye.com/blog/109124</guid>
      </item>
      <item>
        <title>干眼症治疗</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/99335" style="color:red;">http://dogstar.javaeye.com/blog/99335</a>&nbsp;
          发表时间: 2007年07月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          你长时间在电脑前工作、长时间看电视吗？别让眼睛太过疲劳，引起眼睛干涩、视力下降，甚至患上干眼症。<br /><br />干眼症是近年来眼科相当常见的疾病，患者有年轻化的趋势，但这问题也相当容易被人们所忽略。<br /><br />李金龙医师说，造成干眼症的原因多种，主要有两种：其一为眼内的泪液道狭窄或者液道阻塞，致使泪水流出减少而眼干。其二为长期使用电脑，电脑荧光屏所放射出来的辐射加上眼内血液循环急促，引起眼内灼热而蒸发泪水，日久成干眼症。<br /><br />喝茶提高视力<br /><br />他说：“当眼睛出现干燥无泪时，会出现几种症状，例如目涩、目累、目痒、目痛、目胀、畏风和畏光等，统称为‘干眼综合症’。”<br /><br />李医师说：“目前已知能够补救的方法就是多喝茶，特别是喝优质的绿茶、乌龙茶或是铁观音。因为茶叶含有丰富的胡萝卜素，它被人体吸收后，能够迅速转化为维生素A。而维生素A不但能够合成视紫红质，使到眼睛视物清楚。同时，只要喝茶一个月，白血球的数量就会上升。因此，经常接触电脑荧光屏的人，必须养成每天喝茶的习惯。这不但能够消除电脑发出的辐射对人体造血机能的伤害，还能够预防干眼症和提高视力。”<br /><br />中药材可防干眼症<br /><br />李金龙医师说，长期使用电脑的人，日久之后会出现眼睛干涩、疲劳等毛病，可用中国成都中医院眼科专家龚玉春老中医治疗专症的经验方，名为“益气聪明汤”。方药组成如下：<br /><br />青箱子5钱　　党参3钱　　黄芪3钱<br />蔓京子5钱　　赤芍3钱　　升麻2钱<br />灸甘草1钱　　陈皮3钱　　葛根8钱<br />牛蒡子3钱　　杭菊3钱　　枸杞3钱<br /><br />维生素A与干眼症<br /><br />李金龙医师说，缺乏维生素A也会造成干眼症。他说：“因为缺乏维生素A会阻碍粘液的产生，促使泪液无法与角膜表面紧密的接触而造成干眼症。”<br /><br />李医师说，中医认为，食疗可以增加眼睛内的维生素A，因而可以防止干眼之外，一可以达到明目的效果。他说：“例如，马来族长期吃辣椒，所以他们少患干眼症和近视，这可证明多吃辣椒有助于眼睛的明亮。”<br /><br />针灸治疗<br /><br />李医师说，如果是因为泪液道狭窄或者液道阻塞引起的干眼症，可以采用针灸治疗，名为“泪三针”。针刺其泪道和泪腺部分，分别为上目通穴及泪管穴等三穴。针刺后可使泪腺分泌增多，泪管因加重收缩力而使泪管通畅。<br /><br />其他预防之道<br /><br />除了食疗、多喝茶及中药预防之外，干眼症另有以下预防方法：<br /><br />·养成多眨眼的习惯：眨眼不足够，会破坏泪液层的完整性，加重干眼症症状。<br /><br />·不要太靠近电脑：眼睛与电脑荧幕间保持一定的距离。<br /><br />·避免在强烈的灯光下工作：避免将电脑终端机靠放窗口，电脑荧幕前加装减少反光的护目镜，以免增加眼睛的负担。<br /><br />·不要持续使用电脑超过2小时：每当使用电脑达2小时，可休息15分钟后再继续。<br /><br />·保持电脑荧幕的清晰：若有闪烁，勿继续使用。
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/99335#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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, 09 Jul 2007 09:56:37 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/99335</link>
        <guid>http://dogstar.javaeye.com/blog/99335</guid>
      </item>
      <item>
        <title>再别手机</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/96521" style="color:red;">http://dogstar.javaeye.com/blog/96521</a>&nbsp;
          发表时间: 2007年07月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一到周末，既高兴又害怕。高兴的是可以休息一下。害怕的是无聊的在家发呆不知道干什么，更怕的是，老婆一到周末就嫌在家无聊。我心里最近很烦，一大堆事情在脑子翻腾。<br /><br />今天冷战一天，晚上矛盾爆发，发脾气的我，最终有意无意的把手机给摔了，啪的作响。<br />别了手机，别了我的坏脾气...<br /><br />以后再不能这样了
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/96521#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 01 Jul 2007 22:05:37 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/96521</link>
        <guid>http://dogstar.javaeye.com/blog/96521</guid>
      </item>
      <item>
        <title>rails命令，copy from internet</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/54235" style="color:red;">http://dogstar.javaeye.com/blog/54235</a>&nbsp;
          发表时间: 2007年02月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">
一.铁道
1.1 创建一个Rails应用程序
 $ rails app_name
 可选项:
 -d, database=xxx 指定安装一个数据库(mysql oracle postgresql sqlite2 sqlite3 ), 默认情况下是数据库
 -r, ruby-path= 指定Ruby的安装路径,如果没有指定，scripts使用env去找Ruby
 -f, freeze (冻结)freezes Rails在vendor/rails目录
 
1.2 API Documentation
 $ gem_server
 启动一个WEBrick服务器。这时候你可以通过Http://localhost:8808/ 打开浏览器去查看rails API文档
 
1.3 Rake
 rake db:fixtures:load
  # 载入fixtures到当前环境的数据库
  # 载入指定的fixtures使用FIXTURES=x,y
 rake db:migrate
 # 迁移数据库通过在db/migrate目录下的脚本.可以指定版本号通过VERSION=x
 rake db:schema:dump
 # 创建一个db/schema.rb文件，通过AR能过够支持任何数据库去使用
 rake db:schema:load
 # 再入一个schema.rb文件进数据库
 rake db:sessions:clear
 # 清空sessions表
 rake db:sessions:create
 # 用CGI::Session::ActiveRecordStore创建一个sessions表为用户
 rake db:structure:dump
 # 导出数据库结构为一个SQL文件
 rake db:test:clone
 # 重新创建一个测试数据库从当前环境数据库中
 rake db:test:clone_structure
 # 重新创建测试数据库从开发模式数据库
 rake db:test:prepare
 # 准备测试数据库并在入schema
 rake db:test:purge
 # 清空测试数据库
 rake doc:app
 # 创建HTML文件的API Documentation
 rake doc:clobber_app
 # 删除Documentation
 rake doc:clobber_plugins
 # 删除 plugin Documentation
 rake doc:clobber_rails
 # 删除Documentation
 rake doc:plugins
 # 产生Documation为所有安装的plugins
 rake doc:rails
 # 创建HTML文件的API Documentation
 rake doc:reapp
 # 强制重新创建HTML文件的API Documentation
 rake doc:rerails
 # 强制重新创建HTML文件的API Documentation
 rake log:clear
 # 清空目录log/下的所有日志文件
 rake rails:freeze:edge
 # Lock this application to latest Edge Rails. Lock a specific revision with REVISION=X
 rake rails:freeze:gems
 # Lock this application to the current gems (by unpacking them into vendor/rails)
 rake rails:unfreeze
 # Unlock this application from freeze of gems or edge and return to a fluid use of system gems
 rake rails:update
 # Update both scripts and public/javascripts from Rails
 rake rails:update:javascripts
 # Update your javascripts from your current rails install
 rake rails:update:scripts
 # Add new scripts to the application script/ directory
 rake stats
 # Report code statistics (KLOCs, etc) from the application
 rake test
 # Test all units and functionals
 rake test:functionals
  # Run tests for functionalsdb:test:prepare
 rake test:integration
 # Run tests for integrationdb:test:prepare
 rake test:plugins
 # Run tests for pluginsenvironment
 rake test:recent
 # Run tests for recentdb:test:prepare
 rake test:uncommitted
 # Run tests for uncommitteddb:test:prepare
 rake test:units
 # Run tests for unitsdb:test:prepare
 rake tmp:cache:clear
 # 清空tmp/cache目录下的所有文件
 rake tmp:clear
 # 清空session, cache, 和socket文件从tmp/目录
 rake tmp:create
 # 为sessions, cache, and sockets创建tmp/目录
 rake tmp:sessions:clear
 # 清空所有在tmp/sessions目录下的文件
 rake tmp:sockets:clear
 # 清空所有在tmp/sessions 目录下的ruby_sess.* 文件
 
1.4 Scripts
 script/about
 # 输出当前环境信息
 script/breakpointer
 # 启动断点server
 script/console
 # 启动交换式的Rails控制台
 script/destroy
 # 删除通过generators创建的文件
 script/generate
 # -> generators
 script/plugin
 # -> Plugins
 script/runner
 # 执行一个任务在rails上下文中
 script/server
 # 启动开发模式服务器http://localhost:3000
 //以下几个不知道怎么去使用
 script/performance/profiler
 script/performance/benchmarker
 script/process/reaper
 script/process/spawner
 
1.5 Generators
 ruby script/generate model ModelName
 ruby script/generate controller ListController show edit
 ruby script/generate scaffold ModelName ControllerName
 ruby script/generate migration AddNewTable
 ruby script/generate plugin PluginName
 ruby script/generate mailer Notification lost_password signup
 ruby script/generate web_service ServiceName api_one api_two
 ruby script/generate integration_test TestName
 ruby script/generate session_migration
 可选项:
 -p, --pretend Run but do not make any changes.
 -f, --force Overwrite files that already exist.
 -s, --skip Skip files that already exist.
 -q, --quiet Suppress normal output.
 -t, --backtrace Debugging: show backtrace on errors.
 -h, --help Show this help message.
 -c, --svn Modify files with subversion. (Note: svn must be in path) 
 
1.6 Plugins
 script/plugin discover
 # discover plugin repositories
 script/plugin list
 # list all available plugins
 script/plugin install where
 # install the a€wherea€? plugin
 script/plugin install -x where
 # install where plugin as SVN external
 script/plugin install http://invisible.ch/projects/plugins/where
 script/plugin update
 # update installed plugins
 script/plugin source
 # add a source repository
 script/plugin unsource
 # removes a source repository
 script/plugin sources
 # lists source repositories

</pre>
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/54235#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 13 Feb 2007 15:19:35 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/54235</link>
        <guid>http://dogstar.javaeye.com/blog/54235</guid>
      </item>
      <item>
        <title>migration 资料  copy from internet</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/54233" style="color:red;">http://dogstar.javaeye.com/blog/54233</a>&nbsp;
          发表时间: 2007年02月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">
migration好像是rails 1.0出的功能,到底它是什么什么东东?用来干吗的?且听下面分解.

migration是一种分布环境下的数据库同步功能,它提供了: 1.独立于特定SQL的schema描述(当然是用ruby DSL啦).目前除了DB2外别的主流商用和开源数据库都被支持.(IBM真衰).显然,这种数据库独立的schema描述不可能包括数据库特定的细节, 所以在生产环境中需要再行调试优化. 2.schema和数据内容版本控制.我不是DBA啊(虽然曾经想过干这个),不知道有什么别的工具可以做数据库版本控制. 3.基于版本控制的分布式数据库同步.

先来说说基于ruby DSL的schema描述巴,打打基础. 如果rails项目中的数据库已经设计配置好了,可以执行rake db:schema:dump(这是Rails1.1的rake新语法，以前是rake db_schema_dump) 然后会生成db/schema.rb文件.打开一看,基本结构类似这样的:

 

ActiveRecord::Schema.define(:version => 5) do

  create_table "choices",:id => false, :force => true do |t|

    t.column "name", :string,, :limit => 30, :default => 'idiolt'

    t.column "content", :text, :limit => 100

    t.column "question_id", :integer, :null => false

  end

...

:version以后用了migrate才会看见,现在应该是空的,先不管这个. 如你所见这个表定义非常直观.需要说明的几个选项.

:force代表强制覆盖,默认false后面执行db:schema:load把表结构导回数据库的时候如果表已经存在由这个选项决定是否覆盖. :id参数默认为true,也就是按照rails约定每个表自动建立id字段作为主键.false的话意思是你自己在schema中建立主键. :limit和:default不用解释了吧. :null也没啥好解释的,false代表着SQL里的NOT NULL

你们已经看到db:schema:load了,恭喜,现在哪怕你不关心版本控制和分布式同步这些 "遥远的事". 你也可以从容在各种不同数据库直接移植表结构了.这可是DBA都头疼的事呢. 只要改一下database.yml的配置再执行rake db:schema:load就可以了.

现在来说说版本控制和同步.数据库毕竟不是代码,除了schema外还有数据的.像上面这样 load导进去的话会覆盖掉所有的数据. 所以我们需要找一个对数据影响最小的方法来更新数据库. 这部分需要做些手工操作了: script/generate migration XXX 建立一个migration版本,这个操作会在db/migration下产生nnn_XXX.rb文件. 同时 generate model的时候也会顺带产生nnn_create_XXX.rb文件. 内容类似:

 

class CreatePortfolios &lt; ActiveRecord::Migration

  def self.up

    create_table :portfolios do |t|

      t.column :name, :string

    end

  end

  def self.down

    drop_table :portfolios

  end

end

up方法定义这个版本该做什么,down定义怎么回滚版本. 这里up里面创建了一个表, 方法和上面schema.rb里的一样. 除此外更常用的是对字段和索引的修改方法, 如 add_column/rename_column/change_column等,详见api文档. 除了对表结构的修改,还可以做任何对数据的修改. 比如导入数据常用的先删掉index,然后再导入, 最后再重建index.

定义好了migration后,我们可以执行rake db:migrate更新到最高的版本,或者指定回滚到某个版本: rake db:migrate version=n. migration自动根据当前版本判定该从哪回滚到哪. 在分布环境下,同步代码后只要执行一下就能保证数据库状态也是最新版本.

engine/plugin也能使用migration,比如login engine,在不破坏用户已有数据库内容的条件下添加新的所需数据内容.

另外需要注意的是每次使用migration后,db/schema.rb都会被刷新,所有手工对这个文件的修改都会丢失.

migration默认是不支持外键的，原因是一部分数据库如MySQL ISAM和SQLite不支持外键，同时外键也会给Rails的test fixture导入数据造成麻烦（这个好像有个很麻烦的解决办法）。不过还是有个插件提供了外键的导出(rake db:schema:dump)和导入(rake db:schema:load)（可惜migration中无法正常使用）。

</pre>
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/54233#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><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><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 13 Feb 2007 15:13:26 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/54233</link>
        <guid>http://dogstar.javaeye.com/blog/54233</guid>
      </item>
      <item>
        <title>上海--西安 可能有票转让</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/53892" style="color:red;">http://dogstar.javaeye.com/blog/53892</a>&nbsp;
          发表时间: 2007年02月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          【【【【【<br />------已删去------------<br />】】】】】<br /><br />--------------------更新--------------------------<br /><br /><br />刚才联系的结果是没有13号的，只有16号的了。所以，就不能转让了。<br />给你们留一个电话：13120815345 。他这里可能有票。
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/53892#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><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, 12 Feb 2007 09:40:32 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/53892</link>
        <guid>http://dogstar.javaeye.com/blog/53892</guid>
      </item>
      <item>
        <title>黄牛出来</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/52322" style="color:red;">http://dogstar.javaeye.com/blog/52322</a>&nbsp;
          发表时间: 2007年02月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          过年回家买火车票真难。有人认识黄牛乎？<br /><br />预购2.12~2.15号火车票两张。上海到西安，最好是硬卧，最好不是临时客车。<br /><br />代办费从优...<br /><br /><br />和我相同境遇的xdjm们，出出主意。
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/52322#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 05 Feb 2007 16:47:11 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/52322</link>
        <guid>http://dogstar.javaeye.com/blog/52322</guid>
      </item>
      <item>
        <title>本地安装rails</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/50386" style="color:red;">http://dogstar.javaeye.com/blog/50386</a>&nbsp;
          发表时间: 2007年01月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          由于rails对各个gem包有先后的以来关系，如下：<br /><br />gem install activesupport-1.3.1.gem<br />gem install activerecord-1.14.4.gem<br />gem install actionpack-1.12.5.gem<br />gem install actionmailer-1.2.5.gem<br />gem install actionwebservice-1.1.6.gem<br />gem install rake-0.7.1.gem<br />gem install rails-1.1.6.gem<br />运行 rails -v 显示版本号，表示安装成功。<br /><br /><br /><br />在WINDOWS下配置RadRails<br />[ 2007-01-11 11:44:36 | 作者: Admin ]<br />: | |<br />From RadRails go to Window > Preferences > Ruby > Installed Interpreters. Click the "Add" button. For "Interpreter Name" just put "Ruby" (name doesn't really matter). For the path put the path to your "ruby.exe" file. On my machine this path is "c:\ruby\bin\ruby.exe". Your path may be different depending on where you installed ruby.<br /><br />Now on to rails and rake.<br /><br />For rails goto Window > Preferences > Rails > Configuration. For the "rails path" you need to specify the complete path to the "rails" program (the "rails.cmd" file will not work). There should be a file in your ruby\bin directory called "rails" (no file extension) and there will also be a file called "rails.cmd". You want the "rails" file. My complete path looks like this "C:\ruby\bin\rails" (you will need to include the path AND the "rails" file not just c:\ruby\bin). The most common mistake I've seen is people setting the path to the rails.cmd file. This won't work.<br /><br />For rake goto Window > Preferences > Rails > Configuration. For the "rake path" you need to specify the complete path to the "rake" program (the "rake.bat" or "rake.cmd" files will not work). There should be a file in your ruby\bin directory called "rake" (no file extension) and there will also be a file called "rake.cmd" and "rake.bat". You want the "rake" file. My complete path looks like this "C:\ruby\bin\rake" (you will need to include the path AND the "rake" file not just c:\ruby\bin). The most common mistake I've seen is people setting the path to the rake.bat or rake.cmd files. This won't work. If you don't have a file in your ruby/bin directory called "rake" try to do a "gem update rake" or "gem install rake" from the command line and that should fix it.<br /><br />Want to make RI and RDOC work?<br /><br />Goto Window > Preferences > Ruby > Ri/Rdoc. For RI put in something like "C:\ruby\bin\ri" (again, not the .bat file, just the plain Jane "ri" file) and for Rdoc put in something like "C:\ruby\bin\rdoc".<br /><br />For those of you using mongrel and wanting to use mongrel servers within RadRails, you will need to specify the path to "mongrel_rails". Goto Window > Preferences > Rails > Configuration. My "mongrel path" looks like this "C:\ruby\bin\mongrel_rails". As with rake and rails, you do NOT want the "mongrel_rails.cmd" file.<br /><br />附：<br />RadRails地址： http://www.radrails.org<br />RadRails运行需要Java Runtime Environment，可以到 http://www.java.com 下载。
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/50386#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 25 Jan 2007 15:42:35 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/50386</link>
        <guid>http://dogstar.javaeye.com/blog/50386</guid>
      </item>
      <item>
        <title>再回归</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/48903" style="color:red;">http://dogstar.javaeye.com/blog/48903</a>&nbsp;
          发表时间: 2007年01月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          因为眼睛问题，在家休息了一段时间。由于双鱼座的原因，天生就爱多想。最后，自己掉进了自己挖的陷阱里，不能自拔。越陷越深。。。<br /><br />幸亏，身边有女朋友陪伴。给我了莫大的鼓励和帮助。当然，还有朋友。非常感谢你们在忙碌的时候对我的打扰仍然宽宏大量，生活不易，友情不易。<br /><br />我悄悄的说，我胡汉山又回来了。带着些许无奈，和成长。。。<br /><br />最后，还要对我的女朋友说声抱歉。我在这么多年里，一直做的不够称职。希望你的坚强可以胜过我，呵呵。
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/48903#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><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><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 21 Jan 2007 13:40:14 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/48903</link>
        <guid>http://dogstar.javaeye.com/blog/48903</guid>
      </item>
      <item>
        <title>干眼症</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/41179" style="color:red;">http://dogstar.javaeye.com/blog/41179</a>&nbsp;
          发表时间: 2006年12月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          昨天请假就医。缘由：眼睛干涩疼痛。<br /><br />诊断结果：干眼症 还比较严重<br /><br />药方： <br /><br /> 艾唯多 -- 萘敏维滴眼液<br /> 贝复舒 -- 重组牛碱性成纤维细胞生长因子滴眼液<br /><br /><br /><br />网络上搜到：干眼症 不好治疗。<br /><br />怎么办？有谁有经验，介绍一下。<br /><br />现在正在辞职，准备休息几个月看看。不能为了钱，瞎了眼睛。。。<br /><br />各位兄弟姐妹有好办法的,给个方子,谢谢.
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/41179#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><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><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 28 Dec 2006 14:05:08 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/41179</link>
        <guid>http://dogstar.javaeye.com/blog/41179</guid>
      </item>
      <item>
        <title>web技术资料url</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/38656" style="color:red;">http://dogstar.javaeye.com/blog/38656</a>&nbsp;
          发表时间: 2006年12月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近在做C# 的一个rssreader，找xpath,xml,xstl的资料，找到这么个地方，还不错。大家可以看看：<br /><a href="http://www.w3pop.com/tech/" target="_blank">http://www.w3pop.com/tech/</a>
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/38656#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 12 Dec 2006 10:52:15 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/38656</link>
        <guid>http://dogstar.javaeye.com/blog/38656</guid>
      </item>
      <item>
        <title>连着加班</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/36417" style="color:red;">http://dogstar.javaeye.com/blog/36417</a>&nbsp;
          发表时间: 2006年11月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近脑子一直在高负荷的运转。连着加了几天班，都是12点左右才回家。身体特别难受，有点想吐。真想转行了算了，可其他行业是不是就会好些呢?
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/36417#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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, 29 Nov 2006 00:13:09 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/36417</link>
        <guid>http://dogstar.javaeye.com/blog/36417</guid>
      </item>
      <item>
        <title>C#.net</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/36066" style="color:red;">http://dogstar.javaeye.com/blog/36066</a>&nbsp;
          发表时间: 2006年11月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近工作中用到了.net。由于项目比较紧，就在网上搜到了一篇通过对比java学习C#的文章，觉得不错，比较快速的掌握了C#。<br /><br />以附件形式记录下来。
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/36066#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><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><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 26 Nov 2006 22:34:23 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/36066</link>
        <guid>http://dogstar.javaeye.com/blog/36066</guid>
      </item>
      <item>
        <title>狼或狮子?</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/35567" style="color:red;">http://dogstar.javaeye.com/blog/35567</a>&nbsp;
          发表时间: 2006年11月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          　上帝把两群羊放在草原上，一群在南，一群在北。上帝还给羊群找了两种天敌，一种是狮子，一种是狼。上帝对羊群说:“如果你们要狼，就给一只，任它随意咬你们。如果你们要狮子，就给两头，你们可以在两头狮子中任选一头，还可以随时更换。”<br /><br />　　这道题的问题就是：如果你也在羊群中，你是选狼还是选狮子？
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/35567#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</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, 23 Nov 2006 10:46:19 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/35567</link>
        <guid>http://dogstar.javaeye.com/blog/35567</guid>
      </item>
      <item>
        <title>扔下谁？</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/35539" style="color:red;">http://dogstar.javaeye.com/blog/35539</a>&nbsp;
          发表时间: 2006年11月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在一个充气不足的热气球上，载着三位科学家。<br /><br /><br />   第一位是环保专家，他的研究可以拯救无数人，使人们免于因环境污染而面临死亡的厄运。<br />   第二位是核专家，他有能力防止全球性的核战争，使地球免于遭受灭亡的绝境。<br />   第三位是粮食专家，他能在不毛之地，运用专业知识成功地种植食物，使几千万人脱离饥荒的命运。<br /><br /><br />  此刻，热气球即将坠毁，必须丢出一个人以减轻载重，使其余两人得以存活，请问，该丢下那位科学家？原因？<br /><br />来自英国一份著名报纸的高额奖金征答活动。答案后告知。。
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/35539#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 22 Nov 2006 22:49:16 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/35539</link>
        <guid>http://dogstar.javaeye.com/blog/35539</guid>
      </item>
      <item>
        <title>办公室寓言</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/35471" style="color:red;">http://dogstar.javaeye.com/blog/35471</a>&nbsp;
          发表时间: 2006年11月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          办公室寓言一：<br /><br />一只乌鸦坐在树上，整天无所事事。<br /><br />一只小兔子看见乌鸦，就问：“我能象你一样整天坐在那里，什么事也不干吗？”<br /><br />乌鸦答道：“当然啦，为什么不呢？”<br /><br />于是，兔子便坐在树下，开始休息。<br /><br />突然，一只狐狸出现了。狐狸跳向兔子……并把它给吃了。<br /><br /> <br /><br />寓意：要想坐在那里什么也不干，你必须坐（做）得非常非常高。<br /><br /> <br /><br />办公室寓言二：<br /><br />一只火鸡和一头公牛在聊天。<br /><br />“我非常想到那棵树顶上去，”火鸡叹口气道，“但是我没有那份力气。”<br /><br />“这样啊，那你为什么不吃点我的粪便呢？”公牛答道，“那里面充满了营养。”<br /><br />火鸡吃了一团牛粪，发现它真的使自己有力气到达树的第一个分叉处。<br /><br />第二天，在吃了更多的牛粪以后，火鸡到达了树的第二个分叉处。<br /><br />最终，两星期后，火鸡非常骄傲地站在了树的顶端。<br /><br />但不幸的是，没多久，它就被一个农夫盯上了，<br /><br />并且农夫非常利索地就将火鸡射了下来。<br /><br /> <br /><br />寓意：牛粪（狗屎运）也许能使你抵达顶峰，但它不能使你永远呆在那儿。<br /><br /> <br /><br />办公室寓言三：<br /><br />一只小鸟正在飞往南方过冬的途中。<br /><br />天气太冷了，小鸟冻僵了，从天上掉下来，跌在一大片农田里。<br /><br />它躺在田里的时候，一只母牛走了过来，而且拉了一泡屎在它身上。<br /><br />冻僵的小鸟躺在牛屎堆里，发掘牛粪真是太温暖了。牛粪让它慢慢缓过劲儿来了！<br /><br />它躺在那儿，又暖和又开心，不久就开始高兴地唱起歌来了。<br /><br />一只路过的猫听到了小鸟的歌声，走过来查个究竟。<br /><br />顺着声音，猫发现了躲在牛粪中的小鸟，非常敏捷地将它刨了出来，并将它给吃了！<br /><br /> <br /><br />寓意：要学会分别敌友。1) 不是每个在你身上拉屎的都是你的敌人。2) 不是每个把你从屎堆中拉出来的都是你的朋友。3) 而且，当你陷入深深的屎堆当中（身陷困境）的时候，闭上你的鸟嘴！
          <br/>
          <span style="color:red;">
            <a href="http://dogstar.javaeye.com/blog/35471#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 22 Nov 2006 13:14:59 +0800</pubDate>
        <link>http://dogstar.javaeye.com/blog/35471</link>
        <guid>http://dogstar.javaeye.com/blog/35471</guid>
      </item>
      <item>
        <title>vim 学习资料</title>
        <author>dogstar</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dogstar.javaeye.com">dogstar</a>&nbsp;
          链接：<a href="http://dogstar.javaeye.com/blog/35268" style="color:red;">http://dogstar.javaeye.com/blog/35268</a>&nbsp;
          发表时间: 2006年11月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          正常模式下:<br /><pre name="code" class="java">
    (n)d(w,$,d) 删除
       r(v)光标处字替换为v
    (n)c(w,$,d) 删除,然后进入编辑状态
    
      p 删除的内容粘贴到光标处
      u ---> win下的ctrl+z 会退操作
      U   恢复光标所在行的状态
      ctrl + r 撤销 撤销操作 (u一下,撤销一下,ctrl + r一下返回到撤销前的状态)
      
      (300)shift + g 跳转到300行
           ctrl + g 显示当前行的信息（行号，之类的。。。）

     :r TEST 将test文件的内容倒入到当前文件里
     o在光标下打开一行.并进入输入状态.shift + o 在上一行.
      
查找:
/word  n依次向下查.shift + n依次向上查.
?word 向上查

This ( is a test line with ('s, ['s ] and {'s } in it. ))

光标放到括号上,按%,可以调到配对的括号处

:w
:10,100 w TEST 从第10行到100行保存 

</pre><br /><br />替换<br /><pre name="code" class="java">


:s/thee/the/g 将当前行的thee全被替换成the.如果没有/g则只替换第一个匹配到的thee

    在一行内替换头一个字符串 old 为新的字符串 new，请输入  :s/old/new
     在一行内替换所有的字符串 old 为新的字符串 new，请输入  :s/old/new/g
     在两行内替换所有的字符串 old 为新的字符串 new，请输入  :#,#s/old/new/g
     在文件内替换所有的字符串 old 为新的字符串 new，请输入  :%s/old/new/g
     进行全文替换时询问用户确认每个替换需添加 c 选项，请输入 :%s/old/new/gc


</pre><br /><br /><pre name="code" class="java">
===============================================================================
=      欢     迎     阅     读   《 V I M  教  程 》   ——     版本 1.5      =
===============================================================================
     vim 是一个具有很多命令的功能非常强大的编辑器。限于篇幅，在本教程当中
     就不详细介绍了。本教程的设计目标是讲述一些必要的基本命令，而掌握好这
     些命令，您就能够很容易将vim当作一个通用的万能编辑器来使用了。

     完成本教程的内容大约需要25-30分钟，取决于您训练的时间。

     每一节的命令操作将会更改本文。推荐您复制本文的一个副本，然后在副本上
     进行训练(如果您是通过"vimtutor"来启动教程的，那么本文就已经是副本了)。

     切记一点∶本教程的设计思路是在使用中进行学习的。也就是说，您需要通过
     执行命令来学习它们本身的正确用法。如果您只是阅读而不操作，那么您可能
     会很快遗忘这些命令的！

     好了，现在请确定您的Shift-Lock(大小写锁定键)还没有按下，然后按键盘上
     的字母键 j 足够多的次数来移动光标，直到第一节的内容能够完全充满屏幕。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			第一讲第一节∶移动光标


   ※※ 要移动光标，请依照说明分别按下 h、j、k、l 键。 ※※

	     ^
	     k		    提示∶ h 的键位于左边，每次按下就会向左移动。
       &lt; h	 l >		   l 的键位于右边，每次按下就会向右移动。
	     j			   j 键看起来很象一支尖端方向朝下的箭头。
	     v

  1. 请随意在屏幕内移动光标，直至您觉得舒服为止。

  2. 按下下行键(j)，直到出现光标重复下行。

---> 现在您应该已经学会如何移动到下一讲吧。

  3. 现在请使用下行键，将光标移动到第二讲。

提示∶如果您不敢确定您所按下的字母，请按下&lt;ESC>键回到正常(Normal)模式。
      然后再次从键盘输入您想要的命令。

提示∶光标键应当也能正常工作的。但是使用hjkl键，在习惯之后您就能够快速
      地在屏幕内四处移动光标了。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			第一讲第二节∶VIM的进入和退出


  !! 特别提示∶敬请阅读完整本一节的内容，然后才能执行以下所讲解的命令。

  1. 请按&lt;ESC>键(这是为了确保您处在正常模式)。

  2. 然后输入∶			:q! &lt;回车>

---> 这种方式的退出编辑器绝不会保存您进入编辑器以来所做的改动。
     如果您想保存更改再退出，请输入∶
				:wq  &lt;回车>

  3. 如果您看到了命令行提示符，请输入能够带您回到本教程的命令，那就是∶

		vimtutor &lt;回车>

     通常情况下您也可以用这种方式∶

		vim tutor &lt;回车>

---> 这里的 'vim' 表示进入vim编辑器，而 'tutor'则是您准备要编辑的文件。

  4. 如果您自信已经牢牢记住了这些步骤的话，请从步骤1执行到步骤3退出，然
     后再次进入编辑器。接着将光标移动到第一讲第三节来继续我们的教程讲解。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			第一讲第三节∶文本编辑之删除


   ** 在正常(Normal)模式下，可以按下 x 键来删除光标所在位置的字符。**

  1. 请将光标移动到本节中下面标记有 ---> 的那一行。

  2. 为了修正输入错误，请将光标移至准备删除的字符的位置处。

  3. 然后按下 x 键将错误字符删除掉。

  4. 重复步骤2到步骤4，直到句子修正为止。

---> The ccow jumpedd ovverr thhe mooon.

  5. 好了，该行已经修正了，下一节内容是第一讲第四节。

特别提示∶在您浏览本教程时，不要强行记忆。记住一点∶在使用中学习。



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		     第一讲第四节∶文本编辑之插入


	 ** 在正常模式下，可以按下 i 键来插入文本。**

  1. 请将光标移动到本节中下面标记有 ---> 的第一行。

  2. 为了使得第一行内容雷同于第二行，请将光标移至文本第一个字符准备插入
     的位置。

  3. 然后按下 i 键，接着输入必要的文本字符。

  4. 所有文本都修正完毕，请按下 &lt;ESC> 键返回正常模式。
     重复步骤2至步骤4以便修正句子。

---> There is text misng this .
---> There is some text missing from this line.

  5. 如果您对文本插入操作已经很满意，请接着阅读下面的小结。



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			       第一讲小结


  1. 光标在屏幕文本中的移动既可以用箭头键，也可以使用 hjkl 字母键。
	 h (左移)	j (下行)       k (上行)	    l (右移)

  2. 欲进入vim编辑器(从命令行提示符)，请输入∶vim 文件名 &lt;回车>

  3. 欲退出vim编辑器，请输入以下命令放弃所有修改∶

	&lt;ESC>   :q!	 &lt;回车>

     或者输入以下命令保存所有修改∶

	&lt;ESC>   :wq	 &lt;回车>

  4. 在正常模式下删除光标所在位置的字符，请按∶ x

  5. 在正常模式下要在光标所在位置开始插入文本，请按∶

	 i     输入必要文本	&lt;ESC>

特别提示∶按下 &lt;ESC> 键会带您回到正常模式或者取消一个不期望或者部分完成
的命令。

好了，第一讲到此结束。下面接下来继续第二讲的内容。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			第二讲第一节∶删除类命令


	    ** 输入 dw 可以从光标处删除至一个单字/单词的末尾。**

  1. 请按下 &lt;ESC> 键确保您处于正常模式。

  2. 请将光标移动到本节中下面标记有 ---> 的那一行。

  3. 请将光标移至准备要删除的单词的开始。

  4. 接着输入 dw 删除掉该单词。

  特别提示∶您所输入的 dw 会在您输入的同时出现在屏幕的最后一行。如果您输
  入有误，请按下 &lt;ESC> 键取消，然后重新再来。

---> There are a some words fun that don't belong paper in this sentence.

  5. 重复步骤3至步骤4，直至句子修正完毕。接着继续第二讲第二节内容。



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		      第二讲第二节∶其他删除类命令


		   ** 输入 d$ 从当前光标删除到行末。**

  1. 请按下 &lt;ESC> 键确保您处于正常模式。

  2. 请将光标移动到本节中下面标记有 ---> 的那一行。

  3. 请将光标移动到该行的尾部(也就是在第一个点号‘.’后面)。

  4. 然后输入 d$ 从光标处删至当前行尾部。

---> Somebody typed the end of this line twice. end of this line twice.


  5. 请继续学习第二讲第三节就知道是怎么回事了。





~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		     第二讲第三节∶关于命令和对象


  删除命令 d 的格式如下∶

	 [number]   d	object	    或者     d	 [number]   object

  其意如下∶
    number - 代表执行命令的次数(可选项，缺省设置为 1 )。
    d - 代表删除。
    object - 代表命令所要操作的对象(下面有相关介绍)。

  一个简短的对象列表∶
    w - 从当前光标当前位置直到单字/单词末尾，包括空格。
    e - 从当前光标当前位置直到单字/单词末尾，但是 *不* 包括空格。
    $ - 从当前光标当前位置直到当前行末。

特别提示∶
    对于勇于探索者，请在正常模式下面仅按代表相应对象的键而不使用命令，则
    将看到光标的移动正如上面的对象列表所代表的一样。




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		第二讲第四节∶对象命令的特殊情况


	       ** 输入 dd 可以删除整一个当前行。 **

  鉴于整行删除的高频度，VIM 的设计者决定要简化整行删除，仅需要在同一行上
  击打两次 d 就可以删除掉光标所在的整行了。

  1. 请将光标移动到本节中下面的短句段落中的第二行。
  2. 输入 dd 删除该行。
  3. 然后移动到第四行。
  4. 接着输入 2dd (还记得前面讲过的 number-command-object 吗？) 删除两行。

      1)  Roses are red,
      2)  Mud is fun,
      3)  Violets are blue,
      4)  I have a car,
      5)  Clocks tell time,
      6)  Sugar is sweet
      7)  And so are you.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			 第二讲第五节∶撤消类命令


	 ** 输入 u 来撤消最后执行的命令，输入 U 来修正整行。**

  1. 请将光标移动到本节中下面标记有 ---> 的那一行，并将其置于第一个错误
     处。
  2. 输入 x 删除第一个不想保留的字母。
  3. 然后输入 u 撤消最后执行的(一次)命令。
  4. 这次要使用 x 修正本行的所有错误。
  5. 现在输入一个大写的 U ，恢复到该行的原始状态。
  6. 接着多次输入 u 以撤消 U 以及更前的命令。
  7. 然后多次输入 CTRL-R (先按下 CTRL 键不放开，接着输入 R 键) ，这样就
     可以执行恢复命令，也就是撤消掉撤消命令。

---> Fiix the errors oon thhis line and reeplace them witth undo.

  8. 这些都是非常有用的命令。下面是第二讲的小结了。




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			       第二讲小结


  1. 欲从当前光标删除至单字/单词末尾，请输入∶dw

  2. 欲从当前光标删除至当前行末尾，请输入∶d$

  3. 欲删除整行，请输入∶dd

  4. 在正常模式下一个命令的格式是∶

       [number]   command   object     或者     command	[number]   object
     其意是∶
       number - 代表的是命令执行的次数
       command - 代表要做的事情，比如 d 代表删除
       object - 代表要操作的对象，比如 w 代表单字/单词，$ 代表到行末等等。
		$ (to the end of line), etc.

  5. 欲撤消以前的操作，请输入∶u (小写的u)
     欲撤消在一行中所做的改动，请输入∶U (大写的U)
     欲撤消以前的撤消命令，恢复以前的操作结果，请输入∶CTRL-R

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			 第三讲第一节∶置入类命令


	       ** 输入 p 将最后一次删除的内容置入光标之后 **

  1. 请将光标移动到本节中下面示范段落的首行。

  2. 输入 dd 将该行删除，这样会将该行保存到vim的缓冲区中。

  3. 接着将光标移动到准备置入的位置的上方。记住∶是上方哦。

  4. 然后在正常模式下(&lt;ESC>键进入)，输入 p 将该行粘贴置入。

  5. 重复步骤2至步骤4，将所有的行依序放置到正确的位置上。

     a) Roses are red,
     b) Violets are blue,
     c) Intelligence is learned,
     d) Can you learn too?



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		       第三讲第二节∶替换类命令


	  ** 输入 r 和一个字符替换光标所在位置的字符。**

  1. 请将光标移动到本节中下面标记有 ---> 的第一行。

  2. 请移动光标到第一个错误的适当位置。

  3. 接着输入 r ，这样就能将错误替换掉了。

  4. 重复步骤2和步骤3，直到第一行已经修改完毕。

--->  When this lime was tuped in, someone presswd some wrong keys!
--->  When this line was typed in, someone pressed some wrong keys!

  5. 然后我们继续学校第三讲第三节。

特别提示∶切记您要在使用中学习，而不是在记忆中学习。



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			第三讲第三节∶更改类命令


	   ** 要改变一个单字/单词的部分或者全部，请输入 cw **

  1. 请将光标移动到本节中下面标记有 ---> 的第一行。

  2. 接着把光标放在单词 lubw 的字母 u 的位置那里。

  3. 然后输入 cw 就可以修正该单词了(在本例这里是输入 ine 。)

  4. 最后按 &lt;ESC> 键，然后光标定位到下一个错误第一个准备更改的字母处。

  5. 重复步骤3和步骤4，直到第一个句子完全雷同第二个句子。

---> This line has a few words that need changing using the change command.
---> This line has a few words that need changing using the change command.

提示∶请注意 cw 命令不仅仅是替换了一个单词，也让您进入文本插入状态了。



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		       第三讲第四节∶使用c指令的其他更改类命令


	     ** 更改类指令可以使用同删除类命令所使用的对象参数。**

  1. 更改类指令的工作方式跟删除类命令是一致的。操作格式是∶

       [number]   c   object	   或者	    c	[number]   object

  2. 对象参数也是一样的，比如 w 代表单字/单词，$代表行末等等。

  3. 请将光标移动到本节中下面标记有 ---> 的第一行。

  4. 接着将光标移动到第一个错误处。

  5. 然后输入 c$ 使得该行剩下的部分更正得同第二行一样。最后按 &lt;ESC> 键。

---> The end of this line needs some help to make it like the second.
---> The end of this line needs to be corrected using the  c$  command.



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			       第三讲小结


  1. 要重新置入已经删除的文本内容，请输入小写字母 p。该操作可以将已删除
     的文本内容置于光标之后。如果最后一次删除的是一个整行，那么该行将置
     于当前光标所在行的下一行。

  2. 要替换光标所在位置的字符，请输入小写的 r 和要替换掉原位置字符的新字
     符即可。

  3. 更改类命令允许您改变指定的对象，从当前光标所在位置直到对象的末尾。
     比如输入 cw 可以替换当前光标到单词的末尾的内容；输入 c$ 可以替换当
     前光标到行末的内容。

  4. 更改类命令的格式是∶

	 [number]   c	object	      或者	c   [number]   object

下面我们继续学习下一讲。



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		     第四讲第一节∶定位及文件状态


  ** 输入 CTRL-g 显示当前编辑文件中当前光标所在行位置以及文件状态信息。
     输入 SHIFT-G 则直接跳转到文件中的某一指定行。**

  提示∶切记要先通读本节内容，之后才可以执行以下步骤!!!

  1. 按下 CTRL 键不放开然后按 g 键。然后就会看到页面最底部出现一个状态信
     息行，显示的内容是当前编辑的文件名和文件的总行数。请记住步骤3的行号。

  2. 按下 SHIFT-G 键可以使得当前光标直接跳转到文件最后一行。

  3. 输入您曾停留的行号，然后按下 SHIFT-G。这样就可以返回到您第一次按下
     CTRL-g 时所在的行好了。注意∶输入行号时，行号是不会在屏幕上显示出来
     的。

  4. 如果愿意，您可以继续执行步骤1至步骤三。



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			第四讲第二节∶搜索类命令


     ** 输入 / 以及尾随的字符串可以用以在当前文件中查找该字符串。**

  1. 在正常模式下输入 / 字符。您此时会注意到该字符和光标都会出现在屏幕底
     部，这跟 : 命令是一样的。

  2. 接着输入 errroor &lt;回车>。那个errroor就是您要查找的字符串。

  3. 要查找同上一次的字符串，只需要按 n 键。要向相反方向查找同上一次的字
     符串，请输入 Shift-N 即可。

  4. 如果您想逆向查找字符串，请使用 ? 代替 / 进行。

---> When the search reaches the end of the file it will continue at the start.

  "errroor" is not the way to spell error;  errroor is an error.

  提示∶如果查找已经到达文件末尾，查找会自动从文件头部继续查找。



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		   第四讲第三节∶配对括号的查找


	      ** 按 % 可以查找配对的括号 )、]、}。**

  1. 把光标放在本节下面标记有 --> 那一行中的任何一个 (、[ 或 { 处。

  2. 接着按 % 字符。

  3. 此时光标的位置应当是在配对的括号处。

  4. 再次按 % 就可以跳回配对的第一个括号处。

---> This ( is a test line with ('s, ['s ] and {'s } in it. ))

提示∶在程序调试时，这个功能用来查找不配对的括号是很有用的。






~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		      第四讲第四节∶修正错误的方法之一


		** 输入 :s/old/new/g 可以替换 old 为 new。**

  1. 请将光标移动到本节中下面标记有 ---> 的那一行。

  2. 输入 :s/thee/the &lt;回车> 。请注意该命令只改变光标所在行的第一个匹配
     串。

  3. 输入 :s/thee/the/g	则是替换全行的匹配串。

---> the best time to see the flowers is in the spring.

  4. 要替换两行之间出现的每个匹配串，请输入 :#,#s/old/new/g (#,#代表的是
     两行的行号)。输入 :%s/old/new/g 则是替换整个文件中的每个匹配串。




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			       第四讲小结


  1. Ctrl-g 用于显示当前光标所在位置和文件状态信息。Shift-G 用于将光标跳
     转至文件最后一行。先敲入一个行号然后按 Shift-G 则是将光标移动至该行
     号代表的行。

  2. 输入 / 然后紧随一个字符串是则是在