<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>yuxie</title>
    <description></description>
    <link>http://yuxie.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>RoRED简介</title>
        <author>yuxie</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuxie.javaeye.com">yuxie</a>&nbsp;
          链接：<a href="http://yuxie.javaeye.com/blog/140194" style="color:red;">http://yuxie.javaeye.com/blog/140194</a>&nbsp;
          发表时间: 2007年11月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          发表于今年《程序员》第十期<br /><br /><br /><br />一提起“轻量级的Ruby on Rails IDE”, 你可能立刻会想到VIM、Emacs，还有Vi等这些老牌劲旅，也许还有包括受官方推荐的TextMate（收费的东西总要往后边排）。只要稍微留心就会发现，所有的这些轻量级IDE都或多或少的有点Unix的血统，别忘了，供TextMate运行的MacOS也系出Unix。这大概发源自Rails本身亲Linux的特点——一直以来，Rails的表现在Windows上就没有在类Unix的系统上好。不过下边介绍的这款RoRED却是个例外，它是一个地道的Windows软件，免费，用Delphi写成，也就是说，在这个软件编写的时候就压根没想过在Linux上跑（虽然现在RoRED官网宣称已经可以用wine在Linux上跑它了），也算得上是Rails IDE界的一个另类了。<br /><br />很多人在试用RoRED之后对其嗤之以鼻。这也难怪，比起那些恐龙级的IDE，RoRED的功能实在是少的可怜，甚至在轻量级的IDE中比也没什么优势。而且，RoRED到今天版本也不过是0.9.4.1，质量称不上十分稳定，小的bug仍能发现不少。不过这并不能代表RoRED就没有它独特的魅力：<br /><br />速度快：既然是地道的Windows软件，RoRED比那些Java做成的庞然大物来就快很多了。在配置较低的机器上仍然占不了多少资源。笔者认为，速度快的IDE能让你在编程时神清气爽，提高很多倍的效率——至少你不会点一下build后跑去上半天网了；<br /><br />方便的Console按钮：Rails为我们提供了很多命令行工具（比如鼎鼎大名的ruby script\generate）,一些大型的IDE总是想把这些命令行用下拉框和按钮来代替，结果点半天还不如敲键盘快，对熟练的程序员尤其如此。而RoRED这方面就做的很好，它在工具栏内放了一个简单的CMD按钮，点击这个按钮之后就会弹出系统的CMD窗口，而且CMD的路径自动指向了项目的路径，然后你就可以自由的敲击熟悉的命令行了。同样的，这样的按钮还有StartServer和Console，可以用来启动WEBrick或者Ruby命令行。<br /><br /><br />与系统explore集成：右键点击RoRED的项目文件夹和文件你会发现，弹出菜单与你在资源管理器中右键点击文件夹和文件是一模一样的。这意味着你不仅可以方便的复制、移动文件，还可以充分利用一些与系统集成的工具，比如很好用的SVN工具TortoiseSVN。可以说RoRED是相当聪明的，它用系统的CMD来代替IDE的generate工具，用系统菜单来集成SVN，颇印证了程序员常说的那句话：“不要重复发明轮子”。<br /><br /><br />RoRED其他的一些特性就不是显得那么突出了，比如说代码提示功能，RoRED只能自动提示项目app，libraries和plugins文件夹中所放的代码方法和参数，代码自动跳转也是如此。提示的代码也不包括ruby自有的哪些方法，不过，在RoRED的官方网站上写着很快就要加上ruby的方法自动提示（Soon also Ruby's）。在解决了这些问题后，我们有理由相信RoRED仍然是很有竞争力的轻量级IDE之一。<br /><br /><br /><br /><br />附：RoRED的官方网站和下载地址：<br /><br />官方网站： http://www.plasmacode.com/<br /><br />下载地址： http://www.plasmacode.com/countdown.cgi?RoRED_Setup.exe
          <br/>
          <span style="color:red;">
            <a href="http://yuxie.javaeye.com/blog/140194#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/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 13 Nov 2007 13:32:35 +0800</pubDate>
        <link>http://yuxie.javaeye.com/blog/140194</link>
        <guid>http://yuxie.javaeye.com/blog/140194</guid>
      </item>
      <item>
        <title>RailsRecipe翻译（一）</title>
        <author>yuxie</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuxie.javaeye.com">yuxie</a>&nbsp;
          链接：<a href="http://yuxie.javaeye.com/blog/83878" style="color:red;">http://yuxie.javaeye.com/blog/83878</a>&nbsp;
          发表时间: 2007年05月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h2 style="MARGIN: 13pt 0cm"><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial">数据库</span><span lang="EN-US">Recipe</span></h2>
<h3 style="MARGIN: 13pt 0cm"><font size="5"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">没有数据库的</span><span lang="EN-US"><font face="Times New Roman">rails</font></span></font></h3>
<p class="MsoHeading9" style="MARGIN: 12pt 0cm 3.2pt"><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial"><font size="3">问题描述</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">就像所有&ldquo;偏执的软件&rdquo;一样，</span><span lang="EN-US"><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一开始就假定你在做一个数据库应用程序的开发。出现这个假定是因为</span><span lang="EN-US"><font face="Times New Roman">--</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通常情况都是这样的。但是，当你开发一个基于文件做后台的程序时，或者是为一个外部</span><span lang="EN-US"><font face="Times New Roman">API</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供前台展现时，</span><span lang="EN-US"><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">都显得不那么友好，特别是在做测试时。</span></font></p>
<p class="MsoHeading9" style="MARGIN: 12pt 0cm 3.2pt"><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial"><font size="3">解决方案</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">默认的情况下，</span><span lang="EN-US"><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">假定你运行任何测试的时候都要连接并初始化一个数据库。这就意味着如果你没有数据库的话，测试就变得难以进行。当然，你可以仅仅创建一个没有任何内容的空库，但这也意味着你有了一堆没有意义的基础架构。对于已经生成的</span><span lang="EN-US"><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">程序，有一些小技巧（</span><span lang="EN-US"><font face="Times New Roman">hacking</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）可以使它们变成可测试的样子。</span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为了保持事情简单和可重复，我们将从一个新的程序开始。这样你就能容易的把我们在这里做的东西放到你的程序里边。让我们现在就开始创建这个程序，你可以叫它任意你喜欢的名字，我给它的命名是&ldquo;</span><span lang="EN-US"><font face="Times New Roman">DatabaselessApplicatio</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&rdquo;。</span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">然后我们在</span><span lang="EN-US"><font face="Times New Roman">lib</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中创建个简单的</span><span lang="EN-US"><font face="Times New Roman">class</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来写一些测试。让我们创建这个叫</span><span lang="EN-US"><font face="Times New Roman">Adder</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的类，它可以使两个数加起来（真的非常容易）。</span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">DatabaselessApplication/lib/adder.rb</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font size="3" face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">class Adder</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US"><font size="3" face="Times New Roman">def initialize(first,second)</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"><span lang="EN-US"><font size="3" face="Times New Roman">@first=first</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"><span lang="EN-US"><font size="3" face="Times New Roman">@second=second</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US"><font size="3" face="Times New Roman">end</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US"><font size="3" face="Times New Roman">def sum</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"><span lang="EN-US"><font size="3" face="Times New Roman">@first+@second</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US"><font size="3" face="Times New Roman">end</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">end</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font size="3" face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">现在我们来为它创建一个测试用例，也就是</span><span lang="EN-US"><font face="Times New Roman">test/unit/adder_test.rb:</font></span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">DatabaselessApplication/test/unit/adder_test.rb</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font size="3" face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">require File.join(File.dirname(__FILE__), &quot;..&quot;, &quot;test_helper&quot;)</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">require ' adder'</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">class AdderTest&lt;Test::Unit::TestCase</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US"><font size="3" face="Times New Roman">def test_simple_addition</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"><span lang="EN-US"><font size="3" face="Times New Roman">assert_equal(4,Adder.new(3,1).sum)</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US"><font size="3" face="Times New Roman">end</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">end</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font size="3" face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size="3">让我们运行这个测试：</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">chad&gt; raketest_units</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US"><font size="3" face="Times New Roman">(in/Users/chad/src/FR_RR/Book/code/DatabaselessApplication)</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">Rake aborted!</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">#42000Unknown database 'databaselessapplication_development'</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font size="3" face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">看上去</span><span lang="EN-US"><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang="EN-US"><font face="Times New Roman">test_units()</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个</span><span lang="EN-US"><font face="Times New Roman">RakeTask</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">做了些数据初始化的工作。事实上，用</span><span lang="EN-US"><font face="Times New Roman">rake-P </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以证明这一点：</span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">chad&gt; rake-P|tail</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US"><font size="3" face="Times New Roman">prepare_test_database</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">rakestats</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">raketest_functional</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US"><font size="3" face="Times New Roman">prepare_test_database</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">raketest_plugins</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US"><font size="3" face="Times New Roman">environment</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">raketest_units</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US"><font size="3" face="Times New Roman">prepare_test_database</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">rakeunfreeze_rails</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">rakeupdate_javascripts</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">足够确定</span><span lang="EN-US"><font face="Times New Roman">test_units()</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是依赖于</span><span lang="EN-US"><font face="Times New Roman">prepare_test_database() </font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个</span><span lang="EN-US"><font face="Times New Roman">task</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的。那我们不通过</span><span lang="EN-US"><font face="Times New Roman">RakeTest</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">直接运行这个测试会怎么样呢？</span></font></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">chad&gt; rubytest/unit/adder_test.rb</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">Loaded suite test/unit/adder_test</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">Started</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">EE</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">Finished in 0.052262 seconds.</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">1)Error:</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">test_simple_addition(AdderTest):</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">Mysql::Error:</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">#42000Unknowndatabase ' databaselessapplication_test'</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><font size="3" face="Times New Roman">(abbreviated)</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font size="3" face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这些输出的结果说明了，因为在运行链路的某个地方引入了</span><span lang="EN-US"><font face="Times New Roman">test_helper.rb</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，使得我们继承了数据库为中心的</span><span lang="EN-US"><font face="Times New Roman">setup()</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang="EN-US"><font face="Times New Roman">teardown()</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法。我们可以在测试中仅仅手工指定是否需要</span><span lang="EN-US"><font face="Times New Roman">&rdquo;test/unit&rdquo;</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，但是这样在我们创建的每一个测试里都会有重复这个指定。而且我们还会发现这样将不能初始化</span><span lang="EN-US"><font face="Times New Roman">Rails</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">环境。所以，我们采用修改</span><span lang="EN-US"><font face="Times New Roman">test_helper.rb</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的方法来替代。</span></font></p>
          <br/>
          <span style="color:red;">
            <a href="http://yuxie.javaeye.com/blog/83878#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/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/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, 28 May 2007 13:10:24 +0800</pubDate>
        <link>http://yuxie.javaeye.com/blog/83878</link>
        <guid>http://yuxie.javaeye.com/blog/83878</guid>
      </item>
      <item>
        <title>linux学习笔记 </title>
        <author>yuxie</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuxie.javaeye.com">yuxie</a>&nbsp;
          链接：<a href="http://yuxie.javaeye.com/blog/83849" style="color:red;">http://yuxie.javaeye.com/blog/83849</a>&nbsp;
          发表时间: 2007年05月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div>
<div>转自<font face="Arial">http://blog.chinaunix.net/u/30619/showart.php?id=249558</font></div>
<div>&nbsp;</div>
<div>linux<font face="宋体">目录架构</font><br />
/ &nbsp; <font face="宋体">根目录</font><br />
/bin&nbsp;&nbsp;&nbsp; <font face="宋体">常用的命令</font> binary file <font face="宋体">的目錄</font><br />
/boot&nbsp;&nbsp; <font face="宋体">存放系统启动时必须读取的档案，包括核心</font> (kernel) <font face="宋体">在内</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /boot/grub/menu.lst&nbsp;&nbsp; GRUB<font face="宋体">设置</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /boot/vmlinuz&nbsp;&nbsp; <font face="宋体">内核</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /boot/initrd&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">核心解壓縮所需</font> RAM Disk<br />
/dev&nbsp;&nbsp;&nbsp; <font face="宋体">系统周边设备</font>&nbsp;&nbsp;&nbsp;&nbsp; <br />
/etc&nbsp;&nbsp;&nbsp; <font face="宋体">系统相关设定文件</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/DIR_COLORS&nbsp;&nbsp; <font face="宋体">设定颜色</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/HOSTNAME&nbsp;&nbsp; <font face="宋体">设定用户的节点名</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/NETWORKING&nbsp;&nbsp; <font face="宋体">只有</font>YES<font face="宋体">标明网络存在</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/host.conf <font face="宋体">文件说明用户的系统如何查询节点名</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/hosts <font face="宋体">设定用户自已的</font>IP<font face="宋体">与名字的对应表</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/hosts.allow <font face="宋体">设置允许使用</font>inetd<font face="宋体">的机器使用</font> <br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/hosts.deny <font face="宋体">设置不允许使用</font>inetd<font face="宋体">的机器使用</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/hosts.equiv <font face="宋体">设置远端机不用密码</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/inetd.conf <font face="宋体">设定系统网络守护进程</font>inetd<font face="宋体">的配置</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/gateways <font face="宋体">设定路由器</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/protocols <font face="宋体">设定系统支持的协议</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/named.boot <font face="宋体">设定本机为名字服务器的配置文件</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/sysconfig/network-scripts/ifcfg-eth0&nbsp;&nbsp; <font face="宋体">设置</font>IP<br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/resolv.conf&nbsp;&nbsp;&nbsp; <font face="宋体">设置</font>DNS&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/X11&nbsp; X Window<font face="宋体">的配置文件</font>,xorg.conf <font face="宋体">或</font> XF86Config <font face="宋体">這兩個</font> X Server <font face="宋体">的設定檔</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/fstab&nbsp;&nbsp;&nbsp; <font face="宋体">记录开机要</font>mount<font face="宋体">的文件系统</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/inittab <font face="宋体">设定系统启动时</font>init<font face="宋体">进程将把系统设置成什么样的</font>runlevel<br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/issue <font face="宋体">记录用户登录前显示的信息</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/group <font face="宋体">设定用户的组名与相关信息</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/passwd <font face="宋体">帐号信息</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/shadow <font face="宋体">密码信息</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/sudoers <font face="宋体">可以</font>sudo<font face="宋体">命令的配置文件</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/securetty <font face="宋体">设定哪些终端可以让</font>root<font face="宋体">登录</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/login.defs <font face="宋体">所有用户登录时的缺省配置</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/exports <font face="宋体">设定</font>NFS<font face="宋体">系统用的</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/init.d/&nbsp;&nbsp; <font face="宋体">所有服務的預設啟動</font> script <font face="宋体">都是放在這裡的，例如要啟動或者關閉</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/xinetd.d/&nbsp; <font face="宋体">這就是所謂的</font> super daemon <font face="宋体">管理的各項服務的設定檔目錄</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/modprobe.conf&nbsp;&nbsp; <font face="宋体">内核模块额外参数设定</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /etc/syslog.conf&nbsp;&nbsp; <font face="宋体">日志设置文件</font><br />
/home&nbsp;&nbsp; <font face="宋体">使用者家目录</font><br />
/lib&nbsp;&nbsp;&nbsp; <font face="宋体">系统会使用到的函数库</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /lib/modules&nbsp;&nbsp; kernel <font face="宋体">的相关模块</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; /var/lib/rpm&nbsp;&nbsp; rpm<font face="宋体">套件安装处</font> <br />
/lost+found&nbsp;&nbsp;&nbsp; <font face="宋体">系統不正常產生錯誤時，會將一些遺失的片段放置於此目錄下</font><br />
/mnt&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">外设的挂载点</font><br />
/media&nbsp;&nbsp; <font face="宋体">与</font>/mnt<font face="宋体">类似</font><br />
/opt&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">主机额外安装的软件</font><br />
/proc&nbsp;&nbsp;&nbsp; <font face="宋体">虚拟目录，是内存的映射</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /proc/version&nbsp;&nbsp; <font face="宋体">内核版本</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /proc/sys/kernel&nbsp;&nbsp; <font face="宋体">系统内核功能</font><br />
/root&nbsp;&nbsp;&nbsp; <font face="宋体">系统管理员的家目录</font><br />
/sbin&nbsp;&nbsp;&nbsp; <font face="宋体">系统管理员才能执行的指令</font><br />
/srv&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">一些服務啟動之後，這些服務所需要取用的資料目錄</font><br />
/tmp&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">一般使用者或者是正在執行的程序暫時放置檔案的地方</font><br />
/usr&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">最大的目录，存许应用程序和文件</font><br />
&nbsp;&nbsp;&nbsp; /usr/X11R6<font face="宋体">：</font>&nbsp;&nbsp; X-Window<font face="宋体">目录</font> <br />
&nbsp;&nbsp;&nbsp; /usr/src<font face="宋体">：</font>&nbsp;&nbsp;&nbsp; Linux<font face="宋体">源代码</font><br />
&nbsp;&nbsp;&nbsp; /usr/include<font face="宋体">：系统头文件</font><br />
&nbsp;&nbsp;&nbsp; /usr/openwin <font face="宋体">存放</font>SUN<font face="宋体">的</font>OpenWin <br />
&nbsp;&nbsp;&nbsp; /usr/man <font face="宋体">在线使用手册</font><br />
&nbsp;&nbsp;&nbsp; /usr/bin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">使用者可執行的</font> binary file <font face="宋体">的目錄</font><br />
&nbsp;&nbsp;&nbsp; /usr/local/bin&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">使用者可執行的</font> binary file <font face="宋体">的目錄</font><br />
&nbsp;&nbsp;&nbsp; /usr/lib&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">系统会使用到的函数库</font><br />
&nbsp;&nbsp;&nbsp; /usr/local/lib&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">系统会使用到的函数库</font><br />
&nbsp;&nbsp;&nbsp; /usr/sbin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">系统管理员才能执行的指令</font><br />
&nbsp;&nbsp;&nbsp; /usr/local/sbin&nbsp;&nbsp;&nbsp; <font face="宋体">系统管理员才能执行的指令</font><br />
/var&nbsp;&nbsp; <font face="宋体">日志文件</font><br />
&nbsp;&nbsp;&nbsp; /var/log/secure&nbsp;&nbsp;&nbsp; <font face="宋体">記錄登入系統存取資料的檔案，例如</font> pop3, ssh, telnet, ftp <font face="宋体">等都會記錄在此檔案中</font><br />
&nbsp;&nbsp;&nbsp; /var/log/wtmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">記錄登入者的訊息資料</font>, last<br />
&nbsp;&nbsp;&nbsp; /var/log/messages&nbsp; <font face="宋体">幾乎系統發生的錯誤訊息</font><br />
&nbsp;&nbsp;&nbsp; /var/log/boot.log&nbsp; <font face="宋体">記錄開機或者是一些服務啟動的時候，所顯示的啟動或關閉訊息</font><br />
&nbsp;&nbsp;&nbsp; /var/log/maillog&nbsp;&nbsp; <font face="宋体">紀錄郵件存取或往來</font>( sendmail <font face="宋体">與</font> pop3 )<font face="宋体">的使用者記錄</font><br />
&nbsp;&nbsp;&nbsp; /var/log/cron&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">記錄</font> crontab <font face="宋体">這個例行性服務的內容</font><br />
&nbsp;&nbsp;&nbsp; /var/log/httpd, /var/log/news, /var/log/mysqld.log, /var/log/samba, /var/log/procmail.log<font face="宋体">：</font><br />
&nbsp;&nbsp;&nbsp; <font face="宋体">分別是幾個不同的網路服務的記錄檔</font></div>
<div>&nbsp;</div>
<div><font face="宋体">一些常用的基本命令</font>:<br />
uname -a&nbsp;&nbsp;&nbsp; <font face="宋体">查看内核版本</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
ls -al&nbsp;&nbsp;&nbsp; <font face="宋体">显示所有文件的属性</font><br />
pwd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">显示当前路径</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
cd -&nbsp;&nbsp;&nbsp; <font face="宋体">返回上一次目录</font>&nbsp;&nbsp;&nbsp;&nbsp; cd ~&nbsp;&nbsp;&nbsp; <font face="宋体">返回主目录</font><br />
date s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">设置时间、日期</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
cal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">显示日历</font>&nbsp;&nbsp;&nbsp;&nbsp; cal 2006<br />
bc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">计算器具</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
man&nbsp; &amp; info&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">帮助手册</font><br />
locale&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">显示当前字体</font>&nbsp;&nbsp;&nbsp;&nbsp; locale -a&nbsp;&nbsp;&nbsp; <font face="宋体">所有可用字体</font>&nbsp;&nbsp;&nbsp;&nbsp; /etc/sysconfig/i18n<font face="宋体">设置文件</font><br />
LANG=en&nbsp;&nbsp;&nbsp; <font face="宋体">使用英文字体</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
sync&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">将数据同步写入硬盘</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
shutdonw -h now &amp; half &amp; poweroff&nbsp; <font face="宋体">关机</font><br />
reboot&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">重启</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
startx&nbsp; &amp;&nbsp; init 5&nbsp;&nbsp; <font face="宋体">进入图形介面</font><br />
/work&nbsp; &amp; ?work&nbsp;&nbsp;&nbsp; <font face="宋体">向上、下查找文档内容</font><br />
chgrp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">改变档案群组</font>&nbsp; chgrp testing install.log&nbsp;&nbsp;&nbsp; <br />
chown&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">改变所属人</font>&nbsp;&nbsp; chown root:root install.log<br />
chmod&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">改变属性</font>&nbsp;&nbsp;&nbsp;&nbsp; chmod 777 install.log&nbsp;&nbsp;&nbsp;&nbsp; read=4&nbsp; write=2&nbsp; execute=1<br />
cp&nbsp;&nbsp; <font face="宋体">复制</font>&nbsp;&nbsp; cp filename<br />
rm&nbsp;&nbsp; <font face="宋体">删除文件</font>&nbsp; rm -rf filename&nbsp;&nbsp; <font face="宋体">强制删除文件</font><br />
rmdir&nbsp;&nbsp; <font face="宋体">删除文件夹</font><br />
mv&nbsp; <font face="宋体">移动</font>&nbsp;&nbsp;&nbsp; mv 123.txt 222.txt&nbsp; <font face="宋体">重命名</font><br />
mkdir&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">创建文件夹</font><br />
touch&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">创建文件</font>&nbsp; <font face="宋体">更新当前时间</font><br />
cat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">由第一行开始显示</font>&nbsp;&nbsp;&nbsp;&nbsp; cat |more&nbsp; <font face="宋体">分页</font><br />
nl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">在内容前加行号</font><br />
more&nbsp; &amp;&nbsp; less&nbsp;&nbsp; <font face="宋体">一面一面翻动</font><br />
head -n filename&nbsp;&nbsp; <font face="宋体">显示第</font>N<font face="宋体">行内容</font><br />
tail -n filename&nbsp; <font face="宋体">显示后</font>N<font face="宋体">行内容</font><br />
od&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">显示非纯文档</font><br />
df -h <font face="宋体">显示分区空间</font><br />
du&nbsp; <font face="宋体">显示目录或文件的大小</font><br />
fdisk&nbsp;&nbsp; <font face="宋体">分区设置</font>&nbsp;&nbsp;&nbsp; fdisk -l /dev/hda&nbsp; <font face="宋体">显示硬盘分区状态</font><br />
mkfs&nbsp;&nbsp;&nbsp; <font face="宋体">建立各种文件系统</font>&nbsp; mkfs -t ext3&nbsp; /dev/ram15&nbsp;&nbsp; <br />
fsck&nbsp;&nbsp;&nbsp; <font face="宋体">检查和修复</font>LINUX<font face="宋体">档案</font><br />
ln&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">硬链接</font>&nbsp;&nbsp; ln -s&nbsp; <font face="宋体">软件链接</font><br />
whereis&nbsp;&nbsp; <font face="宋体">查找命令</font><br />
locate&nbsp;&nbsp;&nbsp; <font face="宋体">查找</font><br />
find&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">查找</font>&nbsp;&nbsp; find / -name &quot;***.***&quot;<br />
which&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">查看工具</font><br />
whoami&nbsp;&nbsp;&nbsp; <font face="宋体">显示当前用户</font><br />
gcc -v&nbsp;&nbsp;&nbsp; <font face="宋体">查看</font>GCC<font face="宋体">版本</font><br />
chattr +i filename&nbsp; <font face="宋体">禁止删除</font>&nbsp;&nbsp; chattr -i filename&nbsp; <font face="宋体">取消禁止</font><br />
lsattr&nbsp;&nbsp;&nbsp; <font face="宋体">显示隐藏档属性</font><br />
updatedb&nbsp; <font face="宋体">更新资料库</font><br />
mke2fs&nbsp;&nbsp;&nbsp; <font face="宋体">格式化</font>&nbsp;&nbsp; mkfs -t ext3 <br />
dd if=/etc/passwd of=/tmp/passwd.bak&nbsp;&nbsp;&nbsp; <font face="宋体">备份</font><br />
mount&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">列出系统所有的分区</font><br />
mount -t iso9660 /dev/cdrom /mnt/cdrom&nbsp;&nbsp; <font face="宋体">挂载光盘</font><br />
mount -t vfat /dev/fd0 /mnt/floppy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">挂载软盘</font><br />
mount -t vfat -o iocharset=utf8,umask=000 /dev/hda2 /mnt/hda2&nbsp;&nbsp; <font face="宋体">挂载</font>fat32<font face="宋体">分区</font><br />
mount -t ntfs -o nls=utf8,umask=000 /dev/hda3 /mnt/hda3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">挂载</font>ntfs<font face="宋体">分区</font><br />
Linux-NTFS Project: <a href="http://linux-ntfs.sourceforge.net/"><font color="#223355">http://linux-ntfs.sourceforge.net/</font></a><br />
umount /mnt/hda3&nbsp; <font face="宋体">缷载</font><br />
ifconfig&nbsp;&nbsp; <font face="宋体">显示或设置网络设备</font><br />
service network restart&nbsp;&nbsp; <font face="宋体">重启网卡</font>&nbsp; <br />
ifdown eth0&nbsp; <font face="宋体">关闭网卡</font><br />
ifup eth0&nbsp;&nbsp;&nbsp; <font face="宋体">开启网卡</font><br />
clear&nbsp;&nbsp;&nbsp; <font face="宋体">清屏</font><br />
history&nbsp;&nbsp;&nbsp; <font face="宋体">历史记录</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !55&nbsp; <font face="宋体">执行第</font>55<font face="宋体">个指令</font><br />
stty&nbsp;&nbsp; <font face="宋体">设置终端</font>&nbsp;&nbsp;&nbsp; stty -a<br />
fdisk /mbr&nbsp;&nbsp; <font face="宋体">删除</font>GRUB<br />
at&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">僅進行一次的工作排程</font><br />
crontab&nbsp;&nbsp; <font face="宋体">循環執行的例行性命令</font>&nbsp;&nbsp;&nbsp; [e]<font face="宋体">编辑</font>,[l]<font face="宋体">显示</font>,[r]<font face="宋体">删除任务</font><br />
&amp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">后台运行程序</font>&nbsp;&nbsp;&nbsp; tar -zxvf 123.tar.gz &amp; ---------&gt;<font face="宋体">后台运行</font><br />
jobs&nbsp;&nbsp;&nbsp; <font face="宋体">观看后台暂停的程序</font>&nbsp;&nbsp; jobs -l<br />
fg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">将后台程序调到前台</font>&nbsp;&nbsp; fg n ------&gt;n<font face="宋体">是数字</font>,<font face="宋体">可以指定进行那个程序</font><br />
bg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">让工作在后台运行</font><br />
kill&nbsp;&nbsp;&nbsp; <font face="宋体">结束进程</font>&nbsp;&nbsp;&nbsp; kill -9 PID&nbsp;&nbsp;&nbsp;&nbsp; [9]<font face="宋体">强制结束</font>,[15]<font face="宋体">正常结束</font>,[l]<font face="宋体">列出可用的</font>kill<font face="宋体">信号</font><br />
ps aux&nbsp; <font face="宋体">查看后台程序</font>&nbsp;&nbsp; <br />
top&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">查看后台程序</font>&nbsp;&nbsp; top -d 2&nbsp;&nbsp;&nbsp; <font face="宋体">每两秒更新一次</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; top -d 2 -p10604&nbsp;&nbsp; <font face="宋体">观看某个</font>PID<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; top -b -n 2 &gt; /tmp/top.txt -----&gt;<font face="宋体">將</font> top <font face="宋体">的資訊進行</font> 2 <font face="宋体">次，然後將結果輸出到</font> /tmp/top.txt&nbsp;&nbsp;&nbsp; <br />
pstree&nbsp;&nbsp; <font face="宋体">以树状图显示程序</font>&nbsp;&nbsp;&nbsp; [A]<font face="宋体">以</font> ASCII <font face="宋体">來連接</font>, [u]<font face="宋体">列出</font>PID, [p]<font face="宋体">列出帐号</font><br />
killall&nbsp;&nbsp; <font face="宋体">要刪除某個服務</font>&nbsp;&nbsp;&nbsp; killall -9 httpd<br />
free&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">显示内存状态</font>&nbsp;&nbsp;&nbsp;&nbsp; free -m&nbsp; --------&gt;<font face="宋体">以</font>M<font face="宋体">为单位显示</font><br />
uptime&nbsp;&nbsp;&nbsp; <font face="宋体">显示目前系统开机时间</font><br />
netstat&nbsp;&nbsp; <font face="宋体">显示网络状态</font>&nbsp;&nbsp;&nbsp; netstat -tulnp------&gt;<font face="宋体">找出目前系統上已在監聽的網路連線及其</font> PID<br />
dmesg&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">显示开机信息</font>&nbsp;&nbsp;&nbsp; demsg | more<br />
nice&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">设置优先权</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nice -n -5 vi &amp; -----&gt;<font face="宋体">用</font> root <font face="宋体">給一個</font> nice <font face="宋体">植為</font> -5 <font face="宋体">，用於執行</font> vi <br />
renice&nbsp;&nbsp;&nbsp; <font face="宋体">调整已存在优先权</font><br />
runlevel&nbsp; <font face="宋体">显示目前的</font>runlevel<br />
depmod&nbsp;&nbsp;&nbsp; <font face="宋体">分析可载入模块的相依性</font><br />
lsmod&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">显示已载入系统的模块</font><br />
modinfo&nbsp;&nbsp; <font face="宋体">显示</font>kernel<font face="宋体">模块的信息</font><br />
insmod&nbsp;&nbsp;&nbsp; <font face="宋体">载入模块</font><br />
modprobe&nbsp;&nbsp; <font face="宋体">自动处理可载入模块</font><br />
rmmod&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">删除模块</font><br />
chkconfig&nbsp;&nbsp; <font face="宋体">检查，设置系统的各种服务</font>&nbsp;&nbsp;&nbsp;&nbsp; chkconfig --list -----&gt;<font face="宋体">列出各项服务状态</font><br />
ntsysv&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">设置系统的各种服务</font><br />
cpio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">备份文件</font><br />
&nbsp;</div>
<div><br />
<font face="宋体">压缩命令：</font><br />
&nbsp;*.Z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compress <font face="宋体">程式壓縮的檔案；</font> <br />
&nbsp;*.bz2&nbsp;&nbsp;&nbsp; bzip2 <font face="宋体">程式壓縮的檔案；</font> <br />
&nbsp;*.gz&nbsp;&nbsp;&nbsp;&nbsp; gzip <font face="宋体">程式壓縮的檔案；</font> <br />
&nbsp;*.tar&nbsp;&nbsp;&nbsp; tar <font face="宋体">程式打包的資料，並沒有壓縮過；</font> <br />
&nbsp;*.tar.gz tar <font face="宋体">程式打包的檔案，其中並且經過</font> gzip <font face="宋体">的壓縮</font><br />
compress filename&nbsp; <font face="宋体">压缩文件</font>&nbsp; <font face="宋体">加</font>[-d]<font face="宋体">解压</font>&nbsp; uncompress<br />
gzip filename&nbsp;&nbsp; <font face="宋体">压缩</font>&nbsp; <font face="宋体">加</font>[-d]<font face="宋体">解压</font>&nbsp; zcat 123.gz <font face="宋体">查看压缩文件内容</font><br />
bzip2 -z filename&nbsp; <font face="宋体">压缩</font>&nbsp; <font face="宋体">加</font>[-d]<font face="宋体">解压</font>&nbsp;&nbsp; bzcat filename.bz2&nbsp; <font face="宋体">查看压缩文件内容</font><br />
tar -cvf /home/123.tar /etc&nbsp; <font face="宋体">打包，不压缩</font><br />
tar -xvf 123.tar&nbsp;&nbsp; <font face="宋体">解开包</font><br />
tar -zxvf /home/123.tar.gz&nbsp; <font face="宋体">以</font>gzip<font face="宋体">解压</font><br />
tar -jxvf /home/123.tar.bz2&nbsp; <font face="宋体">以</font>bzip2<font face="宋体">解压</font><br />
tar -ztvf /tmp/etc.tar.gz&nbsp;&nbsp; <font face="宋体">查看</font>tar<font face="宋体">内容</font><br />
cpio -covB&nbsp; &gt; [file|device]&nbsp;&nbsp; <font face="宋体">份份</font><br />
cpio -icduv &lt; [file|device]&nbsp;&nbsp; <font face="宋体">还原</font></div>
<div>&nbsp;</div>
<div>vi<font face="宋体">一般用法</font><br />
<font face="宋体">一般模式</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">编辑模式</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">指令模式</font><br />
h <font face="宋体">左</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a,i,r,o,A,I,R,O&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :w <font face="宋体">保存</font><br />
j <font face="宋体">下</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">进入编辑模式</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :w! <font face="宋体">强制保存</font><br />
k <font face="宋体">上</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dd <font face="宋体">删除光标当前行</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :q! <font face="宋体">不保存离开</font><br />
l <font face="宋体">右</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ndd <font face="宋体">删除</font>n<font face="宋体">行</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :wq! <font face="宋体">保存后离开</font><br />
0 <font face="宋体">移动到行首</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yy <font face="宋体">复制当前行</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :e! <font face="宋体">还原原始档</font><br />
$ <font face="宋体">移动到行尾</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nyy <font face="宋体">复制</font>n<font face="宋体">行</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :w filename <font face="宋体">另存为</font><br />
H <font face="宋体">屏幕最上</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p,P <font face="宋体">粘贴</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :set nu <font face="宋体">设置行号</font><br />
M <font face="宋体">屏幕中央</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; u&nbsp; <font face="宋体">撤消</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :set nonu <font face="宋体">取消行号</font><br />
L <font face="宋体">屏幕最下</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Ctrl]+r <font face="宋体">重做上一个动作</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ZZ <font face="宋体">保存离开</font><br />
G <font face="宋体">档案最后一行</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ctrl]+z <font face="宋体">暂停退出</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :set nohlsearch&nbsp;&nbsp; <font face="宋体">永久地关闭高亮显示</font><br />
/work <font face="宋体">向下搜索</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :sp <font face="宋体">同时打开两个文档</font> <br />
?work <font face="宋体">向上搜索</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Ctrl]+w <font face="宋体">两个文档设换</font><br />
gg <font face="宋体">移动到档案第一行</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :nohlsearch&nbsp;&nbsp;&nbsp; <font face="宋体">暂时关闭高亮显示</font></div>
<div>&nbsp;</div>
<div><font face="宋体">认识</font>SHELL<br />
alias&nbsp;&nbsp;&nbsp; <font face="宋体">显示当前所有的命令别名</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alias lm=&quot;ls -al&quot;&nbsp;&nbsp; <font face="宋体">命令别名</font>&nbsp;&nbsp;&nbsp; unalias lm <font face="宋体">取消命令别名</font><br />
type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">类似</font>which<br />
exprot&nbsp;&nbsp;&nbsp; <font face="宋体">设置或显示环境变量</font><br />
exprot PATH=&quot;$PATH&quot;:/sbin&nbsp; <font face="宋体">添加</font>/sbin<font face="宋体">入</font>PATH<font face="宋体">路径</font><br />
echo $PATH&nbsp;&nbsp;&nbsp; <font face="宋体">显示</font>PATH<font face="宋体">路径</font><br />
bash&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">进入子程序</font><br />
name=yang&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">设定变量</font><br />
unset name&nbsp;&nbsp;&nbsp; <font face="宋体">取消变量</font><br />
echo $name&nbsp;&nbsp;&nbsp; <font face="宋体">显示变量的内容</font><br />
myname=&quot;$name its me&quot;&nbsp;&nbsp; &amp;&nbsp;&nbsp; myname='$name its me'&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">单引号时</font>$name<font face="宋体">失去变量内容</font><br />
ciw=/etc/sysconfig/network-scripts/&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">设置路径</font><br />
env&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">列出所有环境变量</font><br />
echo $RANDOM&nbsp;&nbsp;&nbsp; <font face="宋体">显示随意产生的数</font><br />
set&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">设置</font>SHELL<br />
PS1='[\u@\h \w \A #\#]\$ '&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">提示字元的設定</font><br />
&nbsp;&nbsp; [root@linux ~]# read [-pt] variable&nbsp;&nbsp;&nbsp;&nbsp; -----------<font face="宋体">读取键盘输入的变量</font><br />
&nbsp;&nbsp; <font face="宋体">參數：</font><br />
&nbsp;&nbsp; -p&nbsp; <font face="宋体">：後面可以接提示字元！</font><br />
&nbsp;&nbsp; -t&nbsp; <font face="宋体">：後面可以接等待的『秒數！』</font><br />
declare&nbsp;&nbsp;&nbsp; <font face="宋体">声明</font> shell <font face="宋体">变量</font><br />
ulimit -a&nbsp;&nbsp; <font face="宋体">显示所有限制资料</font><br />
&nbsp;ls /tmp/yang &amp;&amp; echo &quot;exist&quot; || echo &quot;not exist&quot;<br />
&nbsp;<font face="宋体">意思是說，當</font> ls /tmp/yang <font face="宋体">執行後，若正確，就執行</font>echo &quot;exist&quot; ,<font face="宋体">若有問題，就執行</font>echo &quot;not exist&quot; <br />
&nbsp;echo $PATH | cut -d ':' -f 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">以</font>:<font face="宋体">为分隔符</font>,<font face="宋体">读取第</font>5<font face="宋体">段内容</font><br />
&nbsp;export | cut -c 10-20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">读取第</font>10<font face="宋体">到</font>20<font face="宋体">个字节的内容</font><br />
&nbsp;last | grep 'root'&nbsp;&nbsp;&nbsp; <font face="宋体">搜索有</font>root<font face="宋体">的一行</font>,<font face="宋体">加</font>[-v]<font face="宋体">反向搜索</font><br />
&nbsp;cat /etc/passwd | sort&nbsp;&nbsp;&nbsp; <font face="宋体">排序显示</font><br />
&nbsp;cat /etc/passwd | wc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">显示『行、字数、字节数』</font></div>
<div><font face="宋体">正规表示法</font><br />
[root@test root]# grep [-acinv] '<font face="宋体">搜尋字串</font>' filename<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">參數說明：</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -a <font face="宋体">：將</font> binary <font face="宋体">檔案以</font> text <font face="宋体">檔案的方式搜尋資料</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -c <font face="宋体">：計算找到</font> '<font face="宋体">搜尋字串</font>' <font face="宋体">的次數</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -i <font face="宋体">：忽略大小寫的不同，所以大小寫視為相同</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -n <font face="宋体">：順便輸出行號</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -v <font face="宋体">：反向選擇，亦即顯示出沒有</font> '<font face="宋体">搜尋字串</font>' <font face="宋体">內容的那一行！</font><br />
&nbsp;grep -n 'the' 123.txt&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">搜索</font>the<font face="宋体">字符</font> -----------<font face="宋体">搜尋特定字串</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;grep -n 't[ea]st' 123.txt&nbsp;&nbsp;&nbsp; <font face="宋体">搜索</font>test<font face="宋体">或</font>taste<font face="宋体">两个字符</font>---------<font face="宋体">利用</font> [] <font face="宋体">來搜尋集合字元</font><br />
&nbsp;grep -n '[^g]oo' 123.txt&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">搜索前面不为</font>g<font face="宋体">的</font>oo-----------<font face="宋体">向選擇</font> [^] <br />
&nbsp;grep -n '[0-9]' 123.txt&nbsp; <font face="宋体">搜索有</font>0-9<font face="宋体">的数字</font><br />
&nbsp;grep -n '^the' 123.txt <font face="宋体">搜索以</font>the<font face="宋体">为行首</font>-----------<font face="宋体">行首搜索</font>^<br />
&nbsp;grep -n '^[^a-zA-Z]' 123.txt&nbsp; <font face="宋体">搜索不以英文字母开头</font><br />
&nbsp;grep -n '[a-z]$' 123.txt&nbsp;&nbsp;&nbsp; <font face="宋体">搜索以</font>a-z<font face="宋体">结尾的行</font>---------- <font face="宋体">行尾搜索</font>$<br />
&nbsp;grep -n 'g..d' 123.txt&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">搜索开头</font>g<font face="宋体">结尾</font>d<font face="宋体">字符</font>----------<font face="宋体">任意一個字元</font> . <br />
&nbsp;grep -n 'ooo*' 123.txt&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">搜索至少有两个</font>oo<font face="宋体">的字符</font>---------<font face="宋体">重複字元</font> *<br />
sed&nbsp;&nbsp;&nbsp; <font face="宋体">文本流编辑器</font>&nbsp;&nbsp;&nbsp; <font face="宋体">利用脚本命令来处理文本文件</font><br />
awd&nbsp;&nbsp;&nbsp; <font face="宋体">模式扫描和处理语言</font><br />
&nbsp;nl 123.txt | sed '2,5d'&nbsp;&nbsp; <font face="宋体">删除第二到第五行的内容</font><br />
diff&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">比较文件的差异</font><br />
cmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">比较两个文件是否有差异</font><br />
patch&nbsp;&nbsp;&nbsp; <font face="宋体">修补文件</font><br />
pr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">要打印的文件格式化</font><br />
&nbsp;</div>
<div><br />
<font face="宋体">帐号管理</font><br />
/etc/passwd&nbsp;&nbsp;&nbsp; <font face="宋体">系统帐号信息</font><br />
/etc/shadow&nbsp;&nbsp;&nbsp; <font face="宋体">帐号密码信息</font>&nbsp;&nbsp;&nbsp; <font face="宋体">经</font>MD5 32<font face="宋体">位加密</font><br />
&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">在密码栏前面加『</font> * <font face="宋体">』『</font> ! <font face="宋体">』禁止使用某帐号</font><br />
/etc/group&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">系统群组信息</font><br />
/etc/gshadow<br />
newgrp&nbsp;&nbsp;&nbsp; <font face="宋体">改变登陆组</font><br />
useradd&nbsp; &amp;&nbsp; adduser&nbsp;&nbsp;&nbsp; <font face="宋体">建立新用户</font>&nbsp; ---------&gt; useradd -m test&nbsp; <font face="宋体">自动建立用户的登入目录</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; useradd -m -g pgroup test ---------&gt;<font face="宋体">指定所属级</font><br />
/etc/default/useradd&nbsp;&nbsp; <font face="宋体">相关设定</font><br />
/etc/login.defs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UID/GID <font face="宋体">有關的設定</font><br />
passwd&nbsp;&nbsp;&nbsp; <font face="宋体">更改密码</font> -----------&gt; passwd test<br />
usermod&nbsp;&nbsp; <font face="宋体">修改用户帐号</font><br />
userdel&nbsp;&nbsp; <font face="宋体">删除帐号</font> -----------&gt;userdel -r test<br />
chsh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">更换登陆系统时使用的</font>SHELL&nbsp;&nbsp; [-l]<font face="宋体">显示可用的</font>SHELL;[-s]<font face="宋体">修改自己的</font>SHELL<br />
chfn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">改变</font>finger<font face="宋体">指令显示的信息</font><br />
finger&nbsp;&nbsp;&nbsp; <font face="宋体">查找并显示用户信息</font><br />
id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">显示用户的</font>ID -----------&gt;&nbsp; id test<br />
groupadd&nbsp;&nbsp; <font face="宋体">添加组</font><br />
groupmod&nbsp;&nbsp; <font face="宋体">与</font>usermod<font face="宋体">类似</font><br />
groupdel&nbsp;&nbsp; <font face="宋体">删除组</font><br />
su test&nbsp;&nbsp;&nbsp; <font face="宋体">更改用户</font>&nbsp;&nbsp; su -&nbsp;&nbsp;&nbsp; <font face="宋体">进入</font>root,<font face="宋体">且使用</font>root<font face="宋体">的环境变量</font><br />
sudo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">以其他身份来执行指令</font><br />
visudo&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">编辑</font>/etc/sudoers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">加入一行『</font> test ALL=(ALL) ALL <font face="宋体">』</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %wheel ALL = (ALL) ALL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">系统里所有</font>wheel<font face="宋体">群组的用户都可用</font>sudo<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %wheel ALL = (ALL) NOPASSWD: ALL&nbsp;&nbsp;&nbsp;&nbsp; wheel<font face="宋体">群组所有用户都不用密码</font>NOPASSWD<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; User_Alias ADMPW = vbird, dmtsai, vbird1, vbird3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">加入</font>ADMPW<font face="宋体">组</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADMPW ALL = NOPASSWD: !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; !/usr/bin/passwd root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">可以更改使用者密码</font>,<font face="宋体">但不能更改</font>root<font face="宋体">密码</font> (<font face="宋体">在指令前面加入</font> ! <font face="宋体">代表不可</font>)<br />
PAM (Pluggable Authentication Modules, <font face="宋体">嵌入式模組</font>)<br />
who &amp; w&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">看谁在线</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
last&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">最近登陆主机的信息</font><br />
lastlog&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">最近登入的時間</font>&nbsp;&nbsp;&nbsp; <font face="宋体">读取</font> /var/log/lastlog <br />
talk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">与其他用户交谈</font><br />
write&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">发送信息</font>&nbsp;&nbsp;&nbsp; write test&nbsp;&nbsp; [ctrl]+d <font face="宋体">发送</font><br />
mesg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">设置终端机的写入权限</font>&nbsp;&nbsp;&nbsp; mesg n <font face="宋体">禁止接收</font>&nbsp;&nbsp;&nbsp;&nbsp; mesg y <br />
wall&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">向所有用户发送信息</font>&nbsp;&nbsp;&nbsp; wall this is q test<br />
mail&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">写</font>mail&nbsp;&nbsp; <br />
/etc/default/useradd&nbsp;&nbsp;&nbsp; <font face="宋体">家目录默认设置</font></div>
<div>quota&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">显示磁盘已使用的空间与限制</font>&nbsp;&nbsp;&nbsp;&nbsp; quota -guvs -----&gt;<font face="宋体">秀出目前</font> root <font face="宋体">自己的</font> quota <font face="宋体">限制值</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; quota -vu&nbsp;&nbsp; <font face="宋体">查询</font><br />
quotacheck&nbsp;&nbsp; <font face="宋体">检查磁盘的使用空间与限制</font>&nbsp;&nbsp;&nbsp;&nbsp; quotacheck -avug&nbsp; -----&gt;<font face="宋体">將所有的在</font> /etc/mtab <font face="宋体">內，含有</font> quota <font face="宋体">支援的</font> partition <font face="宋体">進行掃瞄</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [-m] <font face="宋体">强制扫描</font>&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; quota<font face="宋体">一定要是独立的分区</font>,<font face="宋体">要有</font>quota.user<font face="宋体">和</font>quota.group<font face="宋体">两件文件</font>,<font face="宋体">在</font>/etc/fstab<font face="宋体">添加一句</font>:<br />
&nbsp;&nbsp;&nbsp;&nbsp; /dev/hda3 /home ext3 defaults,usrquota,grpquota 1 2<br />
&nbsp;&nbsp;&nbsp;&nbsp; chmod 600 quota*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">设置完成</font>,<font face="宋体">重启生效</font><br />
edquota&nbsp;&nbsp;&nbsp; <font face="宋体">编辑用户或群组的</font>quota&nbsp; [u]<font face="宋体">用户</font>,[g]<font face="宋体">群组</font>,[p]<font face="宋体">复制</font>,[t]<font face="宋体">设置宽限期限</font> <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edquota -a yang&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edquota -p yang -u young -----&gt;<font face="宋体">复制</font>&nbsp;&nbsp;&nbsp; <br />
quotaon&nbsp;&nbsp;&nbsp; <font face="宋体">开启磁盘空间限制</font>&nbsp;&nbsp;&nbsp;&nbsp; quotaon -auvg --------&gt;<font face="宋体">啟動所有的具有</font> quota <font face="宋体">的</font> filesystem<br />
quotaoff&nbsp;&nbsp; <font face="宋体">关闭磁盘空间限制</font>&nbsp;&nbsp;&nbsp;&nbsp; quotaoff -a&nbsp; --------&gt;<font face="宋体">關閉了</font> quota <font face="宋体">的限制</font><br />
repquota -av&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">查閱系統內所有的具有</font> quota <font face="宋体">的</font> filesystem <font face="宋体">的限值狀態</font></div>
<div>Quota <font face="宋体">從開始準備</font> filesystem <font face="宋体">的支援到整個設定結束的主要的步驟大概是：</font><br />
1<font face="宋体">、設定</font> partition <font face="宋体">的</font> filesystem <font face="宋体">支援</font> quota <font face="宋体">參數：</font><br />
<font face="宋体">由於</font> quota <font face="宋体">必須要讓</font> partition <font face="宋体">上面的</font> filesystem <font face="宋体">支援才行，一般來說，</font> <font face="宋体">支援度最好的是</font> ext2/ext3 <font face="宋体">，</font><br />
<font face="宋体">其他的</font> filesystem <font face="宋体">類型鳥哥我是沒有試過啦！</font> <font face="宋体">啟動</font> filesystem <font face="宋体">支援</font> quota <font face="宋体">最簡單就是編輯</font> /etc/fstab <font face="宋体">，</font><br />
<font face="宋体">使得準備要開放的</font> quota <font face="宋体">磁碟可以支援</font> quota <font face="宋体">囉；</font><br />
2<font face="宋体">、建立</font> quota <font face="宋体">記錄檔：</font><br />
<font face="宋体">剛剛前面講過，整個</font> quota <font face="宋体">進行磁碟限制值記錄的檔案是</font> aquota.user/aquota.group<font face="宋体">，</font> <br />
<font face="宋体">要建立這兩個檔案就必須要先利用</font> quotacheck <font face="宋体">掃瞄才行喔！</font><br />
3<font face="宋体">、編輯</font> quota <font face="宋体">限制值資料：</font><br />
<font face="宋体">再來就是使用</font> edquota <font face="宋体">來編輯每個使用者或群組的可使用空間囉；</font><br />
4<font face="宋体">、重新掃瞄與啟動</font> quota <font face="宋体">：</font><br />
<font face="宋体">設定好</font> quota <font face="宋体">之後，建議可以再進行一次</font> quotacheck <font face="宋体">，然後再以</font> quotaon <font face="宋体">來啟動吧！</font></div>
<div><br />
<font face="宋体">开机流程简介</font><br />
1<font face="宋体">、載入</font> BIOS <font face="宋体">的硬體資訊，並取得第一個開機裝置的代號；</font> <br />
2<font face="宋体">、讀取第一個開機裝置的</font> MBR <font face="宋体">的</font> boot Loader (<font face="宋体">亦即是</font> lilo, grub, spfdisk <font face="宋体">等等</font>) <font face="宋体">的開機資訊；</font> <br />
3<font face="宋体">、載入</font> Kernel <font face="宋体">作業系統核心資訊，</font> Kernel <font face="宋体">開始解壓縮，並且嘗試驅動所有硬體裝置；</font> <br />
4<font face="宋体">、</font>Kernel <font face="宋体">執行</font> init <font face="宋体">程式並取得</font> run-level <font face="宋体">資訊；</font> <br />
5<font face="宋体">、</font>init <font face="宋体">執行</font> /etc/rc.d/rc.sysinit <font face="宋体">檔案；</font> <br />
6<font face="宋体">、啟動核心的外掛模組</font> (/etc/modprobe.conf)<font face="宋体">；</font> <br />
7<font face="宋体">、</font>init <font face="宋体">執行</font> run-level <font face="宋体">的各個批次檔</font>( Scripts )<font face="宋体">；</font> <br />
8<font face="宋体">、</font>init <font face="宋体">執行</font> /etc/rc.d/rc.local <font face="宋体">檔案；</font> <br />
9<font face="宋体">、執行</font> /bin/login <font face="宋体">程式，並等待使用者登入；</font> <br />
10<font face="宋体">、登入之後開始以</font> Shell <font face="宋体">控管主機。</font> </div>
<div><font face="宋体">在</font>/etc/rc.d/rc3.d<font face="宋体">內</font>,<font face="宋体">以</font>S<font face="宋体">开头的为开机启动</font>,<font face="宋体">以</font>K<font face="宋体">开头的为关闭</font>,<font face="宋体">接着的数字代表执行顺序</font></div>
<div>GRUB vga<font face="宋体">设定</font><br />
<font face="宋体">彩度</font>\<font face="宋体">解析度</font>&nbsp; 640x480&nbsp; 800x600&nbsp; 1024x768&nbsp; 1280x1024&nbsp;&nbsp; bit <br />
&nbsp;&nbsp;&nbsp; 256&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 769&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 771&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 773&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 775&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8 bit <br />
&nbsp;&nbsp; 32768&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 784&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 787&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 790&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 793&nbsp;&nbsp;&nbsp;&nbsp; 15 bit <br />
&nbsp;&nbsp; 65536&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 785&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 788&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 791&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 794&nbsp;&nbsp;&nbsp;&nbsp; 16 bit <br />
&nbsp;&nbsp; 16.8M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 786&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 789&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 792&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 795&nbsp;&nbsp;&nbsp;&nbsp; 32 bit </div>
<div><br />
./configure&nbsp;&nbsp;&nbsp; <font face="宋体">检查系统信息</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ./configure --help | more&nbsp; <font face="宋体">帮助信息</font><br />
make clean&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">清除之前留下的文件</font><br />
make&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="宋体">编译</font><br />
make install&nbsp;&nbsp; <font face="宋体">安装</font></div>
<div>rpm -q&nbsp; -----&gt;<font face="宋体">查询是否安装</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rpm -ql ------&gt;<font face="宋体">查询该套件所有的目录</font><br />
rpm -qi -----&gt;<font face="宋体">查询套件的说明资料</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rpm -qc[d] -----&gt;<font face="宋体">设定档与说明档</font><br />
rpm -ivh&nbsp; ----&gt;<font face="宋体">安装</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rpm -V&nbsp; --------&gt;<font face="宋体">查看套件有否更动过</font><br />
rpm -e&nbsp; ------&gt;<font face="宋体">删除</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rpm -Uvh -------&gt;<font face="宋体">升级安装</font>&nbsp; <br />
--nodeps -----&gt;<font face="宋体">强行安装</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --test -----&gt;<font face="宋体">测试安装</font></div>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://yuxie.javaeye.com/blog/83849#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/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, 28 May 2007 11:07:28 +0800</pubDate>
        <link>http://yuxie.javaeye.com/blog/83849</link>
        <guid>http://yuxie.javaeye.com/blog/83849</guid>
      </item>
      <item>
        <title>敏捷开发交流--敏捷释放软件价值</title>
        <author>yuxie</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuxie.javaeye.com">yuxie</a>&nbsp;
          链接：<a href="http://yuxie.javaeye.com/blog/35784" style="color:red;">http://yuxie.javaeye.com/blog/35784</a>&nbsp;
          发表时间: 2006年11月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          年初做的一个关于敏捷开发介绍的PPT
          <br/>
          <span style="color:red;">
            <a href="http://yuxie.javaeye.com/blog/35784#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/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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 24 Nov 2006 10:30:00 +0800</pubDate>
        <link>http://yuxie.javaeye.com/blog/35784</link>
        <guid>http://yuxie.javaeye.com/blog/35784</guid>
      </item>
      <item>
        <title>关于ajax的一些随笔 </title>
        <author>yuxie</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuxie.javaeye.com">yuxie</a>&nbsp;
          链接：<a href="http://yuxie.javaeye.com/blog/24229" style="color:red;">http://yuxie.javaeye.com/blog/24229</a>&nbsp;
          发表时间: 2006年09月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          关于ajax的一些随笔 <br /> <br /><br />  <br /><br />关于 MVC ： <br /><br />  <br /><br />1、  Ajax 必然会带来 Web 开发 Model2 模型的变革。 <br /><br />a)         MVC 的角色由服务器端向客户端靠拢，或者，干脆转为其他更合适的形式， <br /><br />b)        V(View) 的角色将不再仅仅是不起眼的 jsp ，在 Web2.0 的时代，它将拥有自己独立的一套体系结构。即行为 (Java Script/ECMAScript) ，结构 (XHTML) 和样式 (CSS) 。 <br /><br />c)        M 的角色将更像 DTO ，它的形式可以由多种，比如： <br /><br />                         i.              字符串 <br /><br />                       ii.              JS 对象 <br /><br />                      iii.              应用更为广泛的 XML <br /><br />对应的，他们的传输协议也有多种（当然，都是基于 HTTP ）： <br /><br />                         i.              JSON-RPC （ JS 对象） <br /><br />                       ii.              Burlap( 基于 XML 的 Java 对象 ) <br /><br />同时，客户端 - 服务器端对象之间的转化也将成为一个必须解决的问题。目前， JSON ， Buffalo 已经比较好的做到了这一点。 <br /><br />d)        C 的角色将更为靠近客户端，它将利用 Js 的特点，发挥其快速、灵活的特点。它将取代大部分原服务器端控制器的作用。从而使服务器端的编程更加专注与业务逻辑。 <br /><br />服务器端的控制器层则会变得更薄，它将专注于： <br /><br />                      iii.              服务器端数据验证与安全保护 <br /><br />                     iv.              与业务逻辑层之间联结的纽带 <br /><br />但是，这一层的功能一旦集成到业务逻辑层，它将失去主要的作用，很可能退出服务器端的领域。 <br /><br />  <br /><br />  <br /><br />2、  传统的 MVC 框架 ( 比如 Struts ， WebWork) 与 Ajax 之间应该是竞争的关系，因为： <br /><br />a)         传统的 MVC 框架在本质上，都是同步调用，而非 Ajax 提倡的异步调用。 <br /><br />b)        传统的 MVC 框架试图用标签来集成一部分 Ajax 应用。但这注定只能是一种过渡行为，因为： <br /><br />                         i.              传统的 Tag 带来的不便正逐渐显现出来。 ( 学习成本、不利于编辑、客户端与服务器端代码的夹杂等 ) <br /><br />                       ii.              Tag 对 Js 的封装有限，无法发挥 Js 强大灵活的功能 <br /><br />                      iii.              Tag 是服务器端生成的代码，过多的参与客户端的行为，不利于程序的分层实现。 <br /><br />                     iv.              使用 Tag 使得页面展现逻辑的控制变得复杂和难于理解。它将使动作与表现的分离变得困难。也使得客户端与服务器端逻辑的分离变得不可能。试想用一段代码来控制一个自己也不知道会不会生成，能生成什么样 HTML 的 Tag ？ <br /><br />c)        基于第一部分提出的原因， Ajax 所提倡的新的 MVC 方式与传统的 MVC 框架所实现的方式已经有本质的区别，它们之间的竞争也就不可避免了。 <br /><br />3、  传统的 MVC 框架适用的地方（ Web Request 适用）： <br /><br />a)         重视 URL 的应用，如新闻、论坛等 <br /><br />b)        重视搜索引擎优化 <br /><br />c)        重视用户传统习惯（后退键问题等） <br /><br />实际上，上边所说的问题 Ajax 都可具有相应的解决方案，但是由于并不能显示出更多的优势。所以传统的 MVC 应用框架仍然有存在的空间。
          <br/>
          <span style="color:red;">
            <a href="http://yuxie.javaeye.com/blog/24229#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/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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 12 Sep 2006 10:16:49 +0800</pubDate>
        <link>http://yuxie.javaeye.com/blog/24229</link>
        <guid>http://yuxie.javaeye.com/blog/24229</guid>
      </item>
      <item>
        <title>应用服务器集群、可用性与无session的企业应用（一）</title>
        <author>yuxie</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yuxie.javaeye.com">yuxie</a>&nbsp;
          链接：<a href="http://yuxie.javaeye.com/blog/36017" style="color:red;">http://yuxie.javaeye.com/blog/36017</a>&nbsp;
          发表时间: 2006年06月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h1 style="MARGIN: 17pt 0cm 16.5pt 18pt; TEXT-INDENT: -18pt; mso-list: l2 level1 lfo2; tab-stops: list 18.0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">本文目的</span> </h1>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">本文的主要目的是讨论企业应用实现高可用性的方案。即如何在保证性能的同时，使得应用保持</span> <span lang="EN-US">24</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">小时的可用性。</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为实现此目的，灾难恢复和性能问题的解决是必不可少的。本文仅就程序和应用服务器两方面进行讨论，不讨论数据库等相关的问题。</span> </p>
<h2 style="MARGIN: 13pt 0cm 13pt 18pt; TEXT-INDENT: -18pt; mso-list: l3 level1 lfo1; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: Arial; mso-bidi-font-family: Arial"><span style="mso-list: Ignore"><font face="Arial">1.</font> <span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial">灾难恢复</span> </h2>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">所谓灾难恢复（仅对</span> <span lang="EN-US">Web</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用而言），是指在某个应用失去响应能力后（比如重启），客户端能立即透明的切换到冗余应用。这一切换对客户端来讲应该是感觉不到的。从技术上来讲，就是客户端在与服务器端进行交互的过程中，客户端在服务器端保存的<strong style="mso-bidi-font-weight: normal">状态</strong>能立即切换到新的服务器上。在</span> <span lang="EN-US">web</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用中，这些状态一般保存在</span> <span lang="EN-US">http session</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">里。所以所谓状态复制，一般来讲就是</span> <span lang="EN-US">http session</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">复制。</span> </p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">目前能提供灾难的方案之一是集群。对于</span> <span lang="EN-US">Weblogic</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，集群的实现方式为</span> <span lang="EN-US">Paired servers replication</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</span> </p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><v:shapetype o:spt="75" coordsize="21600,21600" filled="f" stroked="f" id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" o:connecttype="rect" gradientshapeok="t"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><br />
<img src="/images/blogjava_net/zhangwen/cluster.JPG" border="0" height="280" alt="cluster.JPG" width="329" /> <br />
（图片引自</span> <span lang="EN-US">http://www.theserverside.com/articles/article.tss?l=J2EEClustering</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span> </p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在这种实现方式里，</span> <span lang="EN-US">session</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">只在相邻的或者指定的两个</span> <span lang="EN-US">server</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之间进行复制，当某一个</span> <span lang="EN-US">server </span><span lang="EN-US">down</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">掉后，需要</span> <span lang="EN-US">servers</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">前端的</span> <span lang="EN-US">load balancer</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">知道哪一台</span> <span lang="EN-US">server</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是这个</span> <span lang="EN-US">Server1</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span> <span lang="EN-US">paired backup server</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，并将原来指向</span> <span lang="EN-US">Server1</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的请求转发给这台</span> <span lang="EN-US">paired backup server</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。应该说这种复制策略是相当高效的，但是对集群前端的路由要求比较高。</span> </p>
<h2 style="MARGIN: 13pt 0cm 13pt 18pt; TEXT-INDENT: -18pt; mso-list: l3 level1 lfo1; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: Arial; mso-bidi-font-family: Arial"><span style="mso-list: Ignore"><font face="Arial">2.</font> <span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial">性能</span> </h2>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">企业应用一般会跑在多台服务器上。就性能而言，我们的期望自然是：总体性能</span> <span lang="EN-US">= </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">单台服务器性能</span> <span lang="EN-US">X </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务器台数。不过从上边的说明就能看出，集群中的每一台</span> <span lang="EN-US">server</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">都会有一部分性能耗费在</span> <span lang="EN-US">session</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">复制上。耗费的性能取决于</span> <span lang="EN-US">session</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的大小。如果应用中</span> <span lang="EN-US">session</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">保留了大量的数据，或者用户数量很多，损耗的性能也将相当可观。</span> </p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（有一种提升性能的方案是使用分布式的对象，例如</span> <span lang="EN-US">EJB</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，根据对象耗费性能的不同对其所在服务器进行调整。不过这种方案早已充满了极大的争论。流行的观点认为，对于业务逻辑不是很复杂的应用，使用分布式对象只会让性能下降。因此下边将不再讨论。）</span> </p>
<h2 style="MARGIN: 13pt 0cm 13pt 18pt; TEXT-INDENT: -18pt; mso-list: l3 level1 lfo1; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: Arial; mso-bidi-font-family: Arial"><span style="mso-list: Ignore"><font face="Arial">3.</font> <span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial">维护</span> </h2>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">从维护的角度上看，如果我们能不重启应用就能给应用添加新的功能，或者修改已有的</span> <span lang="EN-US">bug</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，那显然相当</span> <span lang="EN-US">8</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">错。</span> </p>
<h1 style="MARGIN: 17pt 0cm 16.5pt 18pt; TEXT-INDENT: -18pt; mso-list: l2 level1 lfo2; tab-stops: list 18.0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">分析</span> </h1>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">根据上边的说明，我们可以初步得出几个结论：</span> </p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo3; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">1、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">要使用<span lang="EN-US">Weblogic</span>集群所带来的灾难恢复的好处，就必须忍受同时带来的性能损失。</span> </p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo3; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">2、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在使用weblogic集群的同时，我们必须拥有高性能的</span> <span lang="EN-US">Server</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">路由设备。</span> </p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo3; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">3、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用weblogic集群，在重新部署应用时，由于不能重新部署</span> <span lang="EN-US">(redeploy)</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">集群下单台</span> <span lang="EN-US">server</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的应用，导致几台</span> <span lang="EN-US">server</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">需要同时停掉应用。当所有的</span> <span lang="EN-US">server</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">全都陷入灾难中，灾难恢复也就失去了意义。<br />
</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p>&nbsp;</o:p> </span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">那么，如何在实现灾难恢复和高性能的同时，又能避免或者减少上边列举的损失呢？</span> </p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">初步的思路可以有：</span> </p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"><o:p>&nbsp;</o:p> </span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo4; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">1、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果我们能忍受某一台</span> <span lang="EN-US">server down</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">机后客户状态丢失的后果，那么最简单的方案就是停用集群，前端</span> <span lang="EN-US"><span lang="EN-US">load balancer</span> </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">把相同</span> <span lang="EN-US">IP</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的请求转到相同的服务器。在重新部署应用时，分批重起不同</span> <span lang="EN-US">server</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">上的应用。</span> </p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo4; tab-stops: list 18.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">2、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">全部采用无</span> <span lang="EN-US">session</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">策略。将客户状态保留在客户端。这样没有<span lang="EN-US">Weblogic</span>集群也就无所谓了。我们只需要一个普通的（分发器+失败检测）将请求均匀的分发到可用的服务器上。</span> </p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo4; tab-stops: list 18.0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"></span>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://yuxie.javaeye.com/blog/36017#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/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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 14 Jun 2006 12:55:00 +0800</pubDate>
        <link>http://yuxie.javaeye.com/blog/36017</link>
        <guid>http://yuxie.javaeye.com/blog/36017</guid>
      </item>
  </channel>
</rss>