<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[寂寞空屋]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[Hacker，寂寞与孤独。/*告别ScriptKid,步入底层世界。*/ --- 天の翼&#39;BLOG]]></description>
<link>http://hi.baidu.com/hackyz</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[c++中二进制数据读入/写出方法]]></title>
        <link><![CDATA[http://hi.baidu.com/hackyz/blog/item/0992a20fb4ae5fe7ab6457f9.html]]></link>
        <description><![CDATA[
		
		<p>最近做东西需要用二进制输出文件，贴出相关网文一篇。</p>
<p>文件 I/O 在C++中比烤蛋糕简单多了。 在这篇文章里，我会详细解释ASCII和二进制文件的输入输出的每个细节，值得注意的是，所有这些都是用C++完成的。<br>
<br>
　　一、ASCII 输出<br>
<br>
　　为了使用下面的方法, 你必须包含头文件&lt;fstream.h&gt;(译者注：在标准C++中，已经使用&lt;fstream&gt;取代&lt; fstream.h&gt;，所有的C++标准头文件都是无后缀的。)。这是 &lt;iostream.h&gt;的一个扩展集, 提供有缓冲的文件输入输出操作. 事实上, &lt;iostream.h&gt; 已经被&lt;fstream.h&gt;包含了, 所以你不必包含所有这两个文件, 如果你想显式包含他们，那随便你。我们从文件操作类的设计开始, 我会讲解如何进行ASCII I/O操作。如果你猜是&quot;fstream,&quot; 恭喜你答对了！ 但这篇文章介绍的方法,我们分别使用&quot;ifstream&quot;?和 &quot;ofstream&quot; 来作输入输出。<br>
<br>
　　如果你用过标准控制台流&quot;cin&quot;?和 &quot;cout,&quot; 那现在的事情对你来说很简单。 我们现在开始讲输出部分，首先声明一个类对象。ofstream fout;<br>
<br>
　　这就可以了，不过你要打开一个文件的话, 必须像这样调用ofstream::open()。<br>
<br>
fout.open(&quot;output.txt&quot;);<br>
<br>
　　你也可以把文件名作为构造参数来打开一个文件.<br>
<br>
ofstream fout(&quot;output.txt&quot;);<br>
<br>
　　这是我们使用的方法, 因为这样创建和打开一个文件看起来更简单. 顺便说一句, 如果你要打开的文件不存在，它会为你创建一个, 所以不用担心文件创建的问题. 现在就输出到文件，看起来和&quot;cout&quot;的操作很像。 对不了解控制台输出&quot;cout&quot;的人, 这里有个例子。<br>
<br>
int num = 150;<br>
char name[] = &quot;John Doe&quot;;<br>
fout &lt;&lt; &quot;Here is a number: &quot; &lt;&lt; num &lt;&lt; &quot;\n&quot;;<br>
fout &lt;&lt; &quot;Now here is a string: &quot; &lt;&lt; name &lt;&lt; &quot;\n&quot;;<br>
<br>
　　现在保存文件，你必须关闭文件，或者回写文件缓冲. 文件关闭之后就不能再操作了, 所以只有在你不再操作这个文件的时候才调用它，它会自动保存文件。 回写缓冲区会在保持文件打开的情况下保存文件, 所以只要有必要就使用它。回写看起来像另一次输出, 然后调用方法关闭。像这样：<br>
<br>
fout &lt;&lt; flush; fout.close();<br>
<br>
　　 现在你用文本编辑器打开文件，内容看起来是这样：<br>
<br>
　　Here is a number: 150 Now here is a string: John Doe<br>
<br>
　　很简单吧! 现在继续文件输入, 需要一点技巧, 所以先确认你已经明白了流操作，对 &quot;&lt;&lt;&quot; 和&quot;&gt;&gt;&quot; 比较熟悉了, 因为你接下来还要用到他们。继续…<br>
<br>
　　二、ASCII 输入<br>
<br>
　　输入和&quot;cin&quot; 流很像. 和刚刚讨论的输出流很像, 但你要考虑几件事情。在我们开始复杂的内容之前, 先看一个文本：<br>
<br>
　　12 GameDev 15.45 L This is really awesome!<br>
<br>
　　为了打开这个文件，你必须创建一个in-stream对象,?像这样。<br>
<br>
ifstream fin(&quot;input.txt&quot;);<br>
<br>
　　现在读入前四行. 你还记得怎么用&quot;&lt;&lt;&quot; 操作符往流里插入变量和符号吧？好,?在 &quot;&lt;&lt;&quot; (插入)?操作符之后，是&quot;&gt;&gt;&quot; (提取) 操作符. 使用方法是一样的. 看这个代码片段.<br>
<br>
int number;<br>
float real;<br>
char letter, word[8];<br>
fin &gt;&gt; number; fin &gt;&gt; word; fin &gt;&gt; real; fin &gt;&gt; letter;<br>
<br>
　　也可以把这四行读取文件的代码写为更简单的一行。<br>
<br>
fin &gt;&gt; number &gt;&gt; word &gt;&gt; real &gt;&gt; letter;<br>
<br>
　　它是如何运作的呢? 文件的每个空白之后, &quot;&gt;&gt;&quot; 操作符会停止读取内容, 直到遇到另一个&gt;&gt;操作符. 因为我们读取的每一行都被换行符分割开(是空白字符), &quot;&gt;&gt;&quot; 操作符只把这一行的内容读入变量。这就是这个代码也能正常工作的原因。但是，可别忘了文件的最后一行。<br>
<br>
　　This is really awesome!<br>
<br>
　　如果你想把整行读入一个char数组, 我们没办法用&quot;&gt;&gt;&quot;?操作符，因为每个单词之间的空格（空白字符）会中止文件的读取。为了验证：<br>
<br>
char sentence[101]; fin &gt;&gt; sentence;<br>
<br>
　　我们想包含整个句子, &quot;This is really awesome!&quot; 但是因为空白, 现在它只包含了&quot;This&quot;. 很明显, 肯定有读取整行的方法, 它就是getline()。这就是我们要做的。<br>
<br>
fin.getline(sentence, 100);<br>
<br>
　　这是函数参数. 第一个参数显然是用来接受的char数组. 第二个参数是在遇到换行符之前，数组允许接受的最大元素数量. 现在我们得到了想要的结果：&ldquo;This is really awesome!&rdquo;。<br>
<br>
　　你应该已经知道如何读取和写入ASCII文件了。但我们还不能罢休，因为二进制文件还在等着我们。<br>
<br>
　　三、二进制 输入输出<br>
<br>
　　二进制文件会复杂一点, 但还是很简单的。首先你要注意我们不再使用插入和提取操作符(译者注：&lt;&lt; 和 &gt;&gt; 操作符). 你可以这么做，但它不会用二进制方式读写。你必须使用read() 和write() 方法读取和写入二进制文件. 创建一个二进制文件, 看下一行。<br>
<br>
ofstream fout(&quot;file.dat&quot;, ios::binary);<br>
<br>
　　这会以二进制方式打开文件, 而不是默认的ASCII模式。首先从写入文件开始。函数write() 有两个参数。 第一个是指向对象的char类型的指针, 第二个是对象的大小（译者注：字节数）。 为了说明，看例子。<br>
<br>
int number = 30; fout.write((char *)(&amp;number), sizeof(number));<br>
<br>
　　第一个参数写做&quot;(char *)(&amp;number)&quot;. 这是把一个整型变量转为char *指针。如果你不理解，可以立刻翻阅C++的书籍，如果有必要的话。第二个参数写作&quot;sizeof(number)&quot;. sizeof() 返回对象大小的字节数. 就是这样!<br>
<br>
　　二进制文件最好的地方是可以在一行把一个结构写入文件。 如果说，你的结构有12个不同的成员。 用ASCII?文件，你不得不每次一条的写入所有成员。 但二进制文件替你做好了。 看这个。<br>
<br>
struct OBJECT { int number; char letter; } obj;<br>
obj.number = 15;<br>
obj.letter = &lsquo;M&rsquo;;<br>
fout.write((char *)(&amp;obj), sizeof(obj));<br>
<br>
　　这样就写入了整个结构! 接下来是输入. 输入也很简单，因为read()?函数的参数和 write()是完全一样的, 使用方法也相同。<br>
<br>
ifstream fin(&quot;file.dat&quot;, ios::binary); fin.read((char *)(&amp;obj), sizeof(obj));<br>
<br>
　　我不多解释用法, 因为它和write()是完全相同的。二进制文件比ASCII文件简单, 但有个缺点是无法用文本编辑器编辑。 接着, 我解释一下ifstream 和ofstream 对象的其他一些方法作为结束.<br>
<br>
　　四、更多方法<br>
<br>
　　我已经解释了ASCII文件和二进制文件, 这里是一些没有提及的底层方法。<br>
<br>
　　检查文件<br>
<br>
　　你已经学会了open() 和close() 方法, 不过这里还有其它你可能用到的方法。<br>
<br>
　　方法good() 返回一个布尔值，表示文件打开是否正确。<br>
<br>
　　类似的，bad() 返回一个布尔值表示文件打开是否错误。 如果出错，就不要继续进一步的操作了。<br>
<br>
　　最后一个检查的方法是fail(), 和bad()有点相似, 但没那么严重。<br>
<br>
　　读文件<br>
<br>
　　方法get() 每次返回一个字符。<br>
<br>
　　方法ignore(int,char) 跳过一定数量的某个字符, 但你必须传给它两个参数。第一个是需要跳过的字符数。 第二个是一个字符, 当遇到的时候就会停止。 例子,<br>
<br>
fin.ignore(100, &lsquo;\n&rsquo;);<br>
<br>
　　会跳过100个字符，或者不足100的时候，跳过所有之前的字符，包括 &lsquo;\n&rsquo;。<br>
<br>
　　方法peek() 返回文件中的下一个字符, 但并不实际读取它。所以如果你用peek() 查看下一个字符, 用get() 在peek()之后读取，会得到同一个字符, 然后移动文件计数器。<br>
<br>
　　方法putback(char) 输入字符, 一次一个, 到流中。我没有见到过它的使用，但这个函数确实存在。<br>
<br>
　　写文件<br>
<br>
　　只有一个你可能会关注的方法.?那就是 put(char), 它每次向输出流中写入一个字符。<br>
<br>
　　打开文件<br>
<br>
　　当我们用这样的语法打开二进制文件:<br>
<br>
ofstream fout(&quot;file.dat&quot;, ios::binary);<br>
<br>
　　&quot;ios::binary&quot;是你提供的打开选项的额外标志. 默认的, 文件以ASCII方式打开, 不存在则创建, 存在就覆盖. 这里有些额外的标志用来改变选项。<br>
<br>
　　ios::app 添加到文件尾<br>
　　ios::ate 把文件标志放在末尾而非起始。<br>
　　ios::trunc 默认. 截断并覆写文件。<br>
　　ios::nocreate 文件不存在也不创建。<br>
　　ios::noreplace 文件存在则失败。<br>
<br>
　　文件状态<br>
<br>
　　我用过的唯一一个状态函数是eof(), 它返回是否标志已经到了文件末尾。 我主要用在循环中。 例如, 这个代码断统计小写&lsquo;e&rsquo; 在文件中出现的次数。<br>
<br>
ifstream fin(&quot;file.txt&quot;);<br>
char ch; int counter;<br>
while (!fin.eof()) {<br>
ch = fin.get();<br>
if (ch == &lsquo;e&rsquo;) counter++;<br>
}<br>
fin.close();<br>
<br>
　　我从未用过这里没有提到的其他方法。 还有很多方法，但是他们很少被使用。参考C++书籍或者文件流的帮助文档来了解其他的方法。<br>
<br>
　　结论<br>
<br>
　　你应该已经掌握了如何使用ASCII文件和二进制文件。有很多方法可以帮你实现输入输出，尽管很少有人使用他们。我知道很多人不熟悉文件I/O操作，我希望这篇文章对你有所帮助。 每个人都应该知道. 文件I/O还有很多显而易见的方法,?例如包含文件 &lt;stdio.h&gt;. 我更喜欢用流是因为他们更简单。 祝所有读了这篇文章的人好运, 也许以后我还会为你们写些东西。</p> <a href="http://hi.baidu.com/hackyz/blog/item/0992a20fb4ae5fe7ab6457f9.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hackyz/blog/category/Pr0gr4mm1ng">Pr0gr4mm1ng</a>&nbsp;<a href="http://hi.baidu.com/hackyz/blog/item/0992a20fb4ae5fe7ab6457f9.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-11  11:15</pubDate>
        <category><![CDATA[Pr0gr4mm1ng]]></category>
        <author><![CDATA[h4ck3r]]></author>
		<guid>http://hi.baidu.com/hackyz/blog/item/0992a20fb4ae5fe7ab6457f9.html</guid>
</item>

<item>
        <title><![CDATA[Google,我也来Wave一下]]></title>
        <link><![CDATA[http://hi.baidu.com/hackyz/blog/item/ea2fcefc1b9660f7fc037fc4.html]]></link>
        <description><![CDATA[
		
		<p><span><span><img class="blogimg" border="0" small="0" src="http://hiphotos.baidu.com/hackyz/pic/item/c7d3f61faeb39edbe1fe0b62.jpg"><br>
</span></span></p>
<p><span>朋友帮提名，经过漫长的等待后，终于等到邀请了。激动哇，和当年的Gmail一样。BBS和各大IT网站上都是满的求Wave邀请码，谷歌的饥饿营销手段还不是一般的诱人啊。不过在IE里用wave需要装Google的插件，估计是连到国外站的缘故，很久才下完。</span></p>
<p><span><span><img class="blogimg" border="0" small="0" src="http://hiphotos.baidu.com/hackyz/pic/item/7442982f11a59b161e30897d.jpg"><br>
</span><br>
这就是传说中的wave的真容了，先用用先~~</span></p>
<p><span>附介绍</span></p>
<p><span><span><strong><font size="3">Google </font></strong><strong><font color="#335533" size="3">Wave</font></strong></span><font size="3"><strong>是一个实时性的交流平台。</strong>它整合了电子邮件，即时通讯，维基，聊天室，社会化网络和项目管理的特点，来构建一个简洁的基于浏览器的交流客户端。你能够邀请一群朋友或者生意伙伴一起来讨论你们过去的一天怎么样或者共享文件。</font></span></p>
<span>
<p class="MsoNormal"><span style="font-size: medium"><span><font size="3">Google </font><font color="#335533" size="3">Wave</font></span><font size="3">拥有许多创新性的特性，以下仅列出其中一部分：</font></span></p>
<p class="MsoNormal"><span style="font-size: medium"><font size="3"><strong><span>- </span></strong><strong>实时性：</strong>在大多数情况下，你能够以一个字符一个字符的形式看到其他人在输入些什么内容。</font></span></p>
<p class="MsoNormal"><span style="font-size: medium"><font size="3"><strong><span>- </span></strong><strong>可嵌入性：</strong><span><font color="#335533">Wave</font>s</span>能够嵌入到任何博客或者网站。</font></span></p>
<p class="MsoNormal"><span style="font-size: medium"><font size="3"><strong><span>- </span></strong><strong>应用或者扩展：</strong>就像<span>Facebook</span>应用或者<span>iGoogle</span>小工具，开发者能够在<span><font color="#335533">Wave</font>s</span>中开发他们自己的应用。它们可以是<span>**</span>或者复杂的实时游戏。</font></span></p>
<p class="MsoNormal"><span style="font-size: medium"><font size="3"><strong><span>- </span></strong><strong>维基的功能：</strong>任何<span>Google <font color="#335533">Wave</font></span>中的内容都允许其他人编辑，因为平台内的所有会话都是共享的。因此，你能够更正消息，扩展消息，或者在正在进行中的会话中加入你自己的评论。</font></span></p>
<p class="MsoNormal"><span style="font-size: medium"><font size="3"><strong><span>- </span></strong><strong>开源：</strong><span>Google <font color="#335533">Wave</font></span>的代码将是开源的，在开发者群体中鼓励创新与接纳。</font></span></p>
<p class="MsoNormal"><span style="font-size: medium"><font size="3"><strong><span>- </span></strong><strong>回放：</strong>你能够回放<span>wave</span>的任何片段，回顾之前聊过什么。</font></span></p>
<p class="MsoNormal"><span style="font-size: medium"><font size="3"><strong><span>- </span></strong><strong>自然的语言：</strong><span>Google <font color="#335533">Wave</font></span>能够自动校正你的拼写，甚至清楚相似词汇之间的差别，像&ldquo;<span>been</span>&rdquo;和&ldquo;<span>bean</span>&rdquo;。它还能够提供实时性的自动翻译。</font></span></p>
<p class="MsoNormal"><span style="font-size: medium"><font size="3"><strong><span>- </span></strong><strong>拖放式文件共享：</strong>不需要附件；仅仅拖动你的文件到<span>Google <font color="#335533">Wave</font></span>中，任何人都能够共享。</font></span></p>
</span> <a href="http://hi.baidu.com/hackyz/blog/item/ea2fcefc1b9660f7fc037fc4.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hackyz/blog/category/%D0%C4%C1%E9%B9%EC%BC%A3">心灵轨迹</a>&nbsp;<a href="http://hi.baidu.com/hackyz/blog/item/ea2fcefc1b9660f7fc037fc4.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-10  22:13</pubDate>
        <category><![CDATA[心灵轨迹]]></category>
        <author><![CDATA[h4ck3r]]></author>
		<guid>http://hi.baidu.com/hackyz/blog/item/ea2fcefc1b9660f7fc037fc4.html</guid>
</item>

<item>
        <title><![CDATA[幸运的无尾熊 来了,Ubuntu 9.10 Karmic Koala正式发布]]></title>
        <link><![CDATA[http://hi.baidu.com/hackyz/blog/item/c2b2a6ec6956d13726979190.html]]></link>
        <description><![CDATA[
		
		<span><img style="width: 458px; height: 335px" class="blogimg" border="0" width="924" height="692" small="0" src="http://hiphotos.baidu.com/hackyz/pic/item/6617c05ce3a44c6dfaf2c06c.jpg"></span><br>
<br>
Ubuntu 9.10 ( Karmic Koala ) 正式版的下载地址: <br>
<a href="http://cn.releases.ubuntu.com/9.10/">http://cn.releases.ubuntu.com/9.10/</a><br>
<a href="http://tw.releases.ubuntu.com/9.10/">http://tw.releases.ubuntu.com/9.10/</a><br>
<a href="http://releases.ubuntu.com/releases/9.10/">http://releases.ubuntu.com/releases/9.10/</a><br>
<br>
Ubuntu 9.10 ( Karmic Koala ) 正式版ISO镜像文件MD5码列表 <br>
836440698456aa2936a4347b5485fdd6 *ubuntu-9.10-alternate-amd64.iso<br>
3faa345d298deec3854e0e02410973dc *ubuntu-9.10-alternate-i386.iso<br>
dc51c1d7e3e173dcab4e0b9ad2be2bbf *ubuntu-9.10-desktop-amd64.iso<br>
d91659de6e945dbb96eb8970b2b4590a *ubuntu-9.10-desktop-armel+dove.img<br>
297875d2a7531824a0fb08f241d33e85 *ubuntu-9.10-desktop-armel+imx51.img<br>
8790491bfa9d00f283ed9dd2d77b3906 *ubuntu-9.10-desktop-i386.iso<br>
ed6e77587b87fe0d92a2f21855869f00 *ubuntu-9.10-netbook-remix-i386.iso<br>
14707e8847b9c9ba2dd1869fb5086e4f *ubuntu-9.10-server-amd64.iso<br>
55618ad5f180692f9dac20cbff352634 *ubuntu-9.10-server-i386.iso<br>
37a04db193b1a342f961f59aea2fada8 *wubi.exe<br>
<br>
<strong>友情提示</strong>: alternate 为文字界面的安装版本， desktop 为包含 Live CD 的图形界面安装版本， server 为服务器版本， i386 为32位的系统版本， amd64 为64位的系统系统版本，请根据你自己的需要下载相应的版本。由于版本比较多，下载的时候不要下错版本了哟，做了又费带宽又费电又费精力的事就不好了:) <strong>最后建议大家</strong>：使用P2P下载以减轻官方服务器的负担。 <a href="http://hi.baidu.com/hackyz/blog/item/c2b2a6ec6956d13726979190.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hackyz/blog/category/Linuxworld">Linuxworld</a>&nbsp;<a href="http://hi.baidu.com/hackyz/blog/item/c2b2a6ec6956d13726979190.html#comment">查看评论</a>]]></description>
        <pubDate>2009-10-30  00:32</pubDate>
        <category><![CDATA[Linuxworld]]></category>
        <author><![CDATA[h4ck3r]]></author>
		<guid>http://hi.baidu.com/hackyz/blog/item/c2b2a6ec6956d13726979190.html</guid>
</item>

<item>
        <title><![CDATA[STL容器选择流程图]]></title>
        <link><![CDATA[http://hi.baidu.com/hackyz/blog/item/e0218101c208e5dc277fb5af.html]]></link>
        <description><![CDATA[
		
		<p><span>在<a target="_blank" href="http://www.linuxsoftware.co.nz/containerchoice.png">老外网站</a>上看到的，觉得还不错，就顺手用Visio做了图，并把其汉化了</span></p>
<p><span><img style="width: 617px; height: 771px" class="blogimg" border="0" width="535" height="1376" small="0" src="http://hiphotos.baidu.com/hackyz/pic/item/7202be0eec9dcdca36d122b8.jpg"></span></p>
<p> </p>
<p><span>如有错误，方请指正，谢谢<br>
</span></p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hackyz/blog/category/%D4%AD%B4%B4">原创</a>&nbsp;<a href="http://hi.baidu.com/hackyz/blog/item/e0218101c208e5dc277fb5af.html#comment">查看评论</a>]]></description>
        <pubDate>2009-10-19  00:28</pubDate>
        <category><![CDATA[原创]]></category>
        <author><![CDATA[h4ck3r]]></author>
		<guid>http://hi.baidu.com/hackyz/blog/item/e0218101c208e5dc277fb5af.html</guid>
</item>

<item>
        <title><![CDATA[Ubuntu下安装MySQL]]></title>
        <link><![CDATA[http://hi.baidu.com/hackyz/blog/item/fe53dbc415fac4c139db4903.html]]></link>
        <description><![CDATA[
		
		<p>sudo apt-get install mysql-server-5.0 <br>
Password: <br>
正在读取软件包列表... 完成 <br>
正在分析软件包的依赖关系树&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br>
读取状态信息... 完成&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br>
将会安装下列额外的软件包： <br>
  libdbd-mysql-perl libdbi-perl libmysqlclient15off libnet-daemon-perl <br>
  libplrpc-perl mysql-client-5.0 mysql-common <br>
建议安装的软件包： <br>
  dbishell libcompress-zlib-perl tinyca <br>
推荐安装的软件包： <br>
  mailx <br>
下列【新】软件包将被安装： <br>
  libdbd-mysql-perl libdbi-perl libmysqlclient15off libnet-daemon-perl <br>
  libplrpc-perl mysql-client-5.0 mysql-common mysql-server-5.0 <br>
共升级了 0 个软件包，新安装了 8 个软件包，要卸载 0 个软件包，有 187 个软件未被升级。 <br>
需要下载 35.9MB 的软件包。 <br>
解压缩后会消耗掉 93.6MB 的额外空间。 <br>
您希望继续执行吗？[Y/n]n <br>
中止执行。</p>
<p>sudo apt-get install mysql-server <br>
正在读取软件包列表... 完成 <br>
正在分析软件包的依赖关系树&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br>
读取状态信息... 完成&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br>
将会安装下列额外的软件包： <br>
  libdbd-mysql-perl libdbi-perl libmysqlclient15off libnet-daemon-perl <br>
  libplrpc-perl mysql-client-5.0 mysql-common mysql-server-5.0 <br>
建议安装的软件包： <br>
  dbishell libcompress-zlib-perl tinyca <br>
推荐安装的软件包： <br>
  mailx <br>
下列【新】软件包将被安装： <br>
  libdbd-mysql-perl libdbi-perl libmysqlclient15off libnet-daemon-perl <br>
  libplrpc-perl mysql-client-5.0 mysql-common mysql-server mysql-server-5.0 <br>
共升级了 0 个软件包，新安装了 9 个软件包，要卸载 0 个软件包，有 187 个软件未被升级。 <br>
需要下载 35.9MB 的软件包。 <br>
解压缩后会消耗掉 93.7MB 的额外空间。 <br>
您希望继续执行吗？[Y/n]y <br>
获取：1 <a href="http://tw.archive.ubuntu.com/">http://tw.archive.ubuntu.com</a> feisty-security/main mysql-common 5.0.38-0ubuntu1.2 [54.8kB] <br>
获取：2 <a href="http://tw.archive.ubuntu.com/">http://tw.archive.ubuntu.com</a> feisty/main libnet-daemon-perl 0.38-1.1 [45.9kB]&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br>
获取：3 <a href="http://tw.archive.ubuntu.com/">http://tw.archive.ubuntu.com</a> feisty/main libplrpc-perl 0.2017-1.1 [35.0kB]&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;&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;  <br>
获取：4 <a href="http://tw.archive.ubuntu.com/">http://tw.archive.ubuntu.com</a> feisty/main libdbi-perl 1.53-1build1 [648kB]&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;&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;  <br>
获取：5 <a href="http://tw.archive.ubuntu.com/">http://tw.archive.ubuntu.com</a> feisty-security/main libmysqlclient15off 5.0.38-0ubuntu1.2 [1835kB]&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;&nbsp;&nbsp;&nbsp;  <br>
获取：6 <a href="http://tw.archive.ubuntu.com/">http://tw.archive.ubuntu.com</a> feisty/main libdbd-mysql-perl 3.0008-1build1 [140kB]&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br>
获取：7 <a href="http://tw.archive.ubuntu.com/">http://tw.archive.ubuntu.com</a> feisty-security/main mysql-client-5.0 5.0.38-0ubuntu1.2 [7362kB]&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br>
获取：8 <a href="http://tw.archive.ubuntu.com/">http://tw.archive.ubuntu.com</a> feisty-security/main mysql-server-5.0 5.0.38-0ubuntu1.2 [25.7MB]&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br>
获取：9 <a href="http://tw.archive.ubuntu.com/">http://tw.archive.ubuntu.com</a> feisty-security/main mysql-server 5.0.38-0ubuntu1.2 [48.2kB]&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br>
下载 35.9MB，耗时 7m16s (82.3kB/s)&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;&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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br>
正在预设定软件包 ... <br>
选中了曾被取消选择的软件包 mysql-common。 <br>
(正在读取数据库 ... 系统当前总共安装有 96031 个文件和目录。) <br>
正在解压缩 mysql-common (从 .../mysql-common_5.0.38-0ubuntu1.2_all.deb) ... <br>
选中了曾被取消选择的软件包 libnet-daemon-perl。 <br>
正在解压缩 libnet-daemon-perl (从 .../libnet-daemon-perl_0.38-1.1_all.deb) ... <br>
选中了曾被取消选择的软件包 libplrpc-perl。 <br>
正在解压缩 libplrpc-perl (从 .../libplrpc-perl_0.2017-1.1_all.deb) ... <br>
选中了曾被取消选择的软件包 libdbi-perl。 <br>
正在解压缩 libdbi-perl (从 .../libdbi-perl_1.53-1build1_i386.deb) ... <br>
选中了曾被取消选择的软件包 libmysqlclient15off。 <br>
正在解压缩 libmysqlclient15off (从 .../libmysqlclient15off_5.0.38-0ubuntu1.2_i386.deb) ... <br>
选中了曾被取消选择的软件包 libdbd-mysql-perl。 <br>
正在解压缩 libdbd-mysql-perl (从 .../libdbd-mysql-perl_3.0008-1build1_i386.deb) ... <br>
选中了曾被取消选择的软件包 mysql-client-5.0。 <br>
正在解压缩 mysql-client-5.0 (从 .../mysql-client-5.0_5.0.38-0ubuntu1.2_i386.deb) ... <br>
正在设置 mysql-common (5.0.38-0ubuntu1.2) ... <br>
选中了曾被取消选择的软件包 mysql-server-5.0。 <br>
(正在读取数据库 ... 系统当前总共安装有 96245 个文件和目录。) <br>
正在解压缩 mysql-server-5.0 (从 .../mysql-server-5.0_5.0.38-0ubuntu1.2_i386.deb) ... <br>
选中了曾被取消选择的软件包 mysql-server。 <br>
正在解压缩 mysql-server (从 .../mysql-server_5.0.38-0ubuntu1.2_all.deb) ... <br>
正在设置 libnet-daemon-perl (0.38-1.1) ... <br>
正在设置 libplrpc-perl (0.2017-1.1) ... <br>
正在设置 libdbi-perl (1.53-1build1) ... <br>
正在设置 libmysqlclient15off (5.0.38-0ubuntu1.2) ...</p>
<p>正在设置 libdbd-mysql-perl (3.0008-1build1) ... <br>
正在设置 mysql-client-5.0 (5.0.38-0ubuntu1.2) ... <br>
正在设置 mysql-server-5.0 (5.0.38-0ubuntu1.2) ... <br>
* Stopping MySQL database server mysqld&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;&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;&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;  [ OK ] <br>
* Starting MySQL database server mysqld&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;&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;&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;  [ OK ] <br>
* Checking for corrupt, not cleanly closed and upgrade needing tables. <br>
* Root password is blank.  To change it use: <br>
* /etc/init.d/mysql reset-password</p>
<p>正在设置 mysql-server (5.0.38-0ubuntu1.2) ...</p>
<p> </p>
<p>2  设置密码：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  mysql -h localhost -uroot -p<br>
Welcome to the MySQL monitor.  Commands end with ; or \g. <br>
Your MySQL connection id is 9 <br>
Server version: 5.0.38-Ubuntu_0ubuntu1.2-log Ubuntu 7.04 distribution</p>
<p>Type 'help;' or '\h' for help. Type '\c' to clear the buffer.</p>
<p>mysql&gt;  GRANT ALL PRIVILEGES ON *.* TO <a href="mailto:root@localhost">root@localhost</a> IDENTIFIED BY &quot;123456789&quot;; <br>
Query OK, 0 rows affected (0.00 sec)</p>
<p>mysql&gt; Aborted</p>
<p>3  改了密码之后： <br>
:~$ mysql -u root -p <br>
Enter password: <br>
Welcome to the MySQL monitor.  Commands end with ; or \g. <br>
Your MySQL connection id is 11 <br>
Server version: 5.0.38-Ubuntu_0ubuntu1.2-log Ubuntu 7.04 distribution</p>
<p>Type 'help;' or '\h' for help. Type '\c' to clear the buffer.</p>
<p>4  MySQL的常用操作</p>
<p>　　　注意：MySQL中每个命令后都要以分号；结尾。 <br>
mysql&gt; show databases; <br>
+--------------------+ <br>
| Database&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+--------------------+ <br>
| information_schema | <br>
| mysql&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+--------------------+ <br>
2 rows in set (0.00 sec)</p>
<p> </p>
<p>显示数据库中的表</p>
<p>mysql&gt; use mysql&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  (打开库，对每个库进行操作就要打开此库 ) <br>
Reading table information for completion of table and column names <br>
You can turn off this feature to get a quicker startup with -A</p>
<p>Database changed</p>
<p>mysql&gt; show tables; <br>
+---------------------------+ <br>
| Tables_in_mysql&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+---------------------------+ <br>
| columns_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| db&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| func&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| help_category&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| help_keyword&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| help_relation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| help_topic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| host&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| proc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| procs_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| tables_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| time_zone&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| time_zone_leap_second&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| time_zone_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| time_zone_transition&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| time_zone_transition_type | <br>
| user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+---------------------------+ <br>
17 rows in set (0.00 sec)</p>
<p> </p>
<p>显示数据表的结构 <br>
mysql&gt; describe db; <br>
+-----------------------+---------------+------+-----+---------+-------+ <br>
| Field&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Null | Key | Default | Extra | <br>
+-----------------------+---------------+------+-----+---------+-------+ <br>
| Host&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | char(60)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | NO&nbsp;&nbsp;  | PRI |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| Db&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | char(64)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | NO&nbsp;&nbsp;  | PRI |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| User&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | char(16)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | NO&nbsp;&nbsp;  | PRI |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| Select_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | enum('N','Y') | NO&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| Insert_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | enum('N','Y') | NO&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| Update_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | enum('N','Y') | NO&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| Delete_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | enum('N','Y') | NO&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| Create_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | enum('N','Y') | NO&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| Drop_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | enum('N','Y') | NO&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| Grant_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | enum('N','Y') | NO&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| References_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | enum('N','Y') | NO&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| Index_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | enum('N','Y') | NO&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| Alter_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | enum('N','Y') | NO&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| Create_tmp_table_priv | enum('N','Y') | NO&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| Lock_tables_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | enum('N','Y') | NO&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| Create_view_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | enum('N','Y') | NO&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| Show_view_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | enum('N','Y') | NO&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| Create_routine_priv&nbsp;&nbsp;  | enum('N','Y') | NO&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| Alter_routine_priv&nbsp;&nbsp;&nbsp;  | enum('N','Y') | NO&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| Execute_priv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | enum('N','Y') | NO&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+-----------------------+---------------+------+-----+---------+-------+ <br>
20 rows in set (0.00 sec)</p>
<p> </p>
<p><br>
显示表中的记录 <br>
mysql&gt; select * from db; <br>
+------+---------+------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+-----------------------+------------------+------------------+----------------+---------------------+--------------------+--------------+ <br>
| Host | Db&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | User | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Create_tmp_table_priv | Lock_tables_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Execute_priv | <br>
+------+---------+------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+-----------------------+------------------+------------------+----------------+---------------------+--------------------+--------------+ <br>
| %&nbsp;&nbsp;&nbsp;  | test&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| %&nbsp;&nbsp;&nbsp;  | test\_% |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+------+---------+------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+-----------------------+------------------+------------------+----------------+---------------------+--------------------+--------------+ <br>
2 rows in set (0.00 sec)</p>
<p><br>
建库 <br>
mysql&gt; create database wjl; <br>
Query OK, 1 row affected (0.00 sec)</p>
<p> </p>
<p>建表：</p>
<p><br>
mysql&gt; use wjl <br>
Database changed <br>
mysql&gt; create table wjl(id int(3) auto_increment not null primary key, xm char(8),xb char(2),csny date); <br>
Query OK, 0 rows affected (0.01 sec)</p>
<p>mysql&gt; describe wjl; <br>
+-------+---------+------+-----+---------+----------------+ <br>
| Field | Type&nbsp;&nbsp;&nbsp;  | Null | Key | Default | Extra&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+-------+---------+------+-----+---------+----------------+ <br>
| id&nbsp;&nbsp;&nbsp;  | int(3)  | NO&nbsp;&nbsp;  | PRI | NULL&nbsp;&nbsp;&nbsp;  | auto_increment | <br>
| xm&nbsp;&nbsp;&nbsp;  | char(8) | YES  |&nbsp;&nbsp;&nbsp;&nbsp;  | NULL&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| xb&nbsp;&nbsp;&nbsp;  | char(2) | YES  |&nbsp;&nbsp;&nbsp;&nbsp;  | NULL&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| csny  | date&nbsp;&nbsp;&nbsp;  | YES  |&nbsp;&nbsp;&nbsp;&nbsp;  | NULL&nbsp;&nbsp;&nbsp;  |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+-------+---------+------+-----+---------+----------------+ <br>
4 rows in set (0.01 sec)</p>
<p> </p>
<p><br>
增加记录 <br>
mysql&gt; insert into wjl values('1','张三','男','1981-10-01'); <br>
Query OK, 1 row affected, 1 warning (0.00 sec)</p>
<p>mysql&gt; select * from wjl; <br>
+----+--------+------+------------+ <br>
| id | xm&nbsp;&nbsp;&nbsp;&nbsp;  | xb&nbsp;&nbsp;  | csny&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+----+--------+------+------------+ <br>
|  1 | 张三 | ?&#65533;?&#65533;&nbsp;&nbsp;  | 1981-10-01 | <br>
+----+--------+------+------------+ <br>
1 row in set (0.00 sec)</p>
<p><br>
修改纪录 <br>
mysql&gt; update wjl set csny='1999-9-01' where id='1'; <br>
Query OK, 1 row affected (0.00 sec) <br>
Rows matched: 1  Changed: 1  Warnings: 0</p>
<p>mysql&gt; select * from wjl; <br>
+----+--------+------+------------+ <br>
| id | xm&nbsp;&nbsp;&nbsp;&nbsp;  | xb&nbsp;&nbsp;  | csny&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+----+--------+------+------------+ <br>
|  1 | 张三 | ?&#65533;?&#65533;&nbsp;&nbsp;  | 1999-09-01 | <br>
+----+--------+------+------------+ <br>
1 row in set (0.00 sec)</p>
<p><br>
增加MySQL用户 <br>
1&nbsp;&nbsp;  增加一个用户user_1密码为123，让他可以在任何主机上登录，并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MySQL，然后键入以下命令： <br>
grant select,insert,update,delete on *.* to <a href="mailto:user_1@&quot;%">user_1@&quot;%</a>&quot; Identified by &quot;123&quot;; <br>
1增加的用户是十分危险的，如果知道了user_1的密码，那么他就可以在网上的任何一台电脑上登录你的MySQL数据库并对你的数据为所欲为了，解决办法见例2</p>
<p><br>
2增加一个用户user_2密码为123,让此用户只可以在localhost上登录，并可以对数据库aaa进行查询、插入、修改、删除的操作(localhost指本地主机，即MySQL数据库所在的那台主机)，这样用户即使用知道user_2的密码，他也无法从网上直接访问数据库，只能通过 MYSQL主机来操作aaa库。 <br>
/usr/share/mysql目录中会有一个mysql的启动脚本mysql.server及示例配置文件等(如my-huge.cnf、 my-large.cnf、my-medium.cnf)rpm包安装完后自动将mysql安装成系统服务，所以可以使用下面命令启动、停止mysql. 有个实用程序/usr/bin/mysql_install_db，该程序可以用来初始化 mysql数据库，即创建/var/log/mysql目录，及创建mysql数据库(mysql授权表等信息)及test数据库(空库),如果不小心删除了/var/log/mysql目录可以通过该程序来初始化.</p>
<p>mysql&gt;grant select,insert,update,delete on aaa.* to <a href="mailto:user_2@localhost">user_2@localhost</a> identified by &quot;123&quot;; <br>
用新增的用户如果登录不了MySQL，在登录时用如下命令：</p>
<p>　　　mysql -u user_1 -p　-h 192.168.1.50　(-h后跟的是要登录主机的ip地址)</p>
<p> </p>
<p>备份 <br>
数据放在：/var/lib/mysql</p>
<p>: 2）禁用root帐户 <br>
: sudo passwd -l root</p>
<p>1&nbsp;&nbsp;  启用root用户密码 <br>
: sudo passwd root <br>
: 系统会提示你输入新密码，同时启用它。</p>
<p>su root <br>
Password: <br>
<a href="mailto:root@ja-desktop:/var/lib">root@ja-desktop:/var/lib</a># cd mysql&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  (进入到库目录) <br>
<a href="mailto:root@ja-desktop:/var/lib/mysql">root@ja-desktop:/var/lib/mysql</a># ls <br>
debian-5.0.flag  ib_logfile0  mysql&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  wjl <br>
ibdata1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  ib_logfile1  mysql_upgrade_info <br>
<a href="mailto:root@javawenjinlan-desktop:/var/lib/mysql">root@javawenjinlan-desktop:/var/lib/mysql</a># mysqldump -u root -p --opt wjl &gt; back_wjl <br>
Enter password:</p>
<p> </p>
<p>删除纪录 <br>
<a href="mailto:root@ja-desktop:/var/lib/mysql">root@ja-desktop:/var/lib/mysql</a># mysql -u root -p <br>
Enter password: <br>
Welcome to the MySQL monitor.  Commands end with ; or \g. <br>
Your MySQL connection id is 13 <br>
Server version: 5.0.38-Ubuntu_0ubuntu1.2-log Ubuntu 7.04 distribution</p>
<p>Type 'help;' or '\h' for help. Type '\c' to clear the buffer.</p>
<p>mysql&gt; show databases; <br>
+--------------------+ <br>
| Database&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+--------------------+ <br>
| information_schema | <br>
| mysql&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| wjl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+--------------------+ <br>
3 rows in set (0.00 sec)</p>
<p>mysql&gt; use wjl <br>
Reading table information for completion of table and column names <br>
You can turn off this feature to get a quicker startup with -A</p>
<p>Database changed <br>
<a href="mailto:root@javawenjinlan-desktop:/var/lib/mysql">root@javawenjinlan-desktop:/var/lib/mysql</a># mysql -u root -p <br>
Enter password: <br>
Welcome to the MySQL monitor.  Commands end with ; or \g. <br>
Your MySQL connection id is 13 <br>
Server version: 5.0.38-Ubuntu_0ubuntu1.2-log Ubuntu 7.04 distribution</p>
<p>Type 'help;' or '\h' for help. Type '\c' to clear the buffer.</p>
<p>mysql&gt; show databases; <br>
+--------------------+ <br>
| Database&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+--------------------+ <br>
| information_schema | <br>
| mysql&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| wjl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+--------------------+ <br>
3 rows in set (0.00 sec)</p>
<p>mysql&gt; use wjl <br>
Reading table information for completion of table and column names <br>
You can turn off this feature to get a quicker startup with -A</p>
<p>Database changed <br>
<a href="mailto:root@javawenjinlan-desktop:/var/lib/mysql">root@javawenjinlan-desktop:/var/lib/mysql</a># mysql -u root -p <br>
Enter password: <br>
Welcome to the MySQL monitor.  Commands end with ; or \g. <br>
Your MySQL connection id is 13 <br>
Server version: 5.0.38-Ubuntu_0ubuntu1.2-log Ubuntu 7.04 distribution</p>
<p>Type 'help;' or '\h' for help. Type '\c' to clear the buffer.</p>
<p>mysql&gt; show databases; <br>
+--------------------+ <br>
| Database&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+--------------------+ <br>
| information_schema | <br>
| mysql&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| wjl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+--------------------+ <br>
3 rows in set (0.00 sec)</p>
<p>mysql&gt; use wjl <br>
Reading table information for completion of table and column names <br>
You can turn off this feature to get a quicker startup with -A</p>
<p>Database changed</p>
<p>mysql&gt; show tables; <br>
+---------------+ <br>
| Tables_in_wjl | <br>
+---------------+ <br>
| wjl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+---------------+ <br>
1 row in set (0.00 sec)</p>
<p>mysql&gt; delete from wjl where id='1'; <br>
Query OK, 1 row affected (0.00 sec)</p>
<p>mysql&gt; select * from wjl; <br>
Empty set (0.00 sec)</p>
<p> </p>
<p>删库和删表 <br>
mysql&gt; drop table wjl <br>
&nbsp;&nbsp;&nbsp;  -&gt; ; <br>
Query OK, 0 rows affected (0.00 sec)</p>
<p>mysql&gt; show tables; <br>
Empty set (0.00 sec)</p>
<p>mysql&gt; show databases; <br>
+--------------------+ <br>
| Database&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+--------------------+ <br>
| information_schema | <br>
| mysql&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| wjl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+--------------------+ <br>
3 rows in set (0.00 sec)</p>
<p> </p>
<p>mysql&gt; drop database wjl <br>
&nbsp;&nbsp;&nbsp;  -&gt; ; <br>
Query OK, 0 rows affected (0.00 sec)</p>
<p>mysql&gt; show databases; <br>
+--------------------+ <br>
| Database&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+--------------------+ <br>
| information_schema | <br>
| mysql&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+--------------------+ <br>
2 rows in set (0.00 sec)</p>
<p> </p>
<p>恢复 <br>
<a href="mailto:root@ja-desktop:/var/lib/mysql">root@ja-desktop:/var/lib/mysql</a># mysql -u root -p wjl &lt; back_wjl <br>
Enter password: <br>
ERROR 1049 (42000): Unknown database 'wjl' <br>
(我要把database wjl建立才可以) <br>
mysql&gt; create database wjl; <br>
Query OK, 1 row affected (0.00 sec)</p>
<p><br>
<a href="mailto:root@ja-desktop:/var/lib/mysql">root@ja-desktop:/var/lib/mysql</a># mysql -u root -p wjl &lt; back_wjl <br>
Enter password: <br>
<a href="mailto:root@ja-desktop:/var/lib/mysql">root@ja-desktop:/var/lib/mysql</a>#</p>
<p><br>
mysql&gt; show databases; <br>
+--------------------+ <br>
| Database&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+--------------------+ <br>
| information_schema | <br>
| mysql&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
| wjl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+--------------------+ <br>
3 rows in set (0.00 sec)</p>
<p>mysql&gt; use wjl <br>
Database changed <br>
mysql&gt; show tables; <br>
+---------------+ <br>
| Tables_in_wjl | <br>
+---------------+ <br>
| wjl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+---------------+ <br>
1 row in set (0.00 sec)</p>
<p>mysql&gt; select * from wjl; <br>
+----+--------+------+------------+ <br>
| id | xm&nbsp;&nbsp;&nbsp;&nbsp;  | xb&nbsp;&nbsp;  | csny&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  | <br>
+----+--------+------+------------+ <br>
|  1 | 张三 | ?&#65533;?&#65533;&nbsp;&nbsp;  | 1999-09-01 | <br>
+----+--------+------+------------+ <br>
1 row in set (0.00 sec)</p>
<p>mysql&gt;</p>
<p>可以看到database的恢复已经成功</p> <a href="http://hi.baidu.com/hackyz/blog/item/fe53dbc415fac4c139db4903.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hackyz/blog/category/Programs">Programs</a>&nbsp;<a href="http://hi.baidu.com/hackyz/blog/item/fe53dbc415fac4c139db4903.html#comment">查看评论</a>]]></description>
        <pubDate>2009-10-07  23:41</pubDate>
        <category><![CDATA[Programs]]></category>
        <author><![CDATA[h4ck3r]]></author>
		<guid>http://hi.baidu.com/hackyz/blog/item/fe53dbc415fac4c139db4903.html</guid>
</item>

<item>
        <title><![CDATA[设计模式的形象比喻]]></title>
        <link><![CDATA[http://hi.baidu.com/hackyz/blog/item/c7d3f61f07cf27ffe1fe0b49.html]]></link>
        <description><![CDATA[
		
		1、FACTORY—追MM少不了请吃饭了，麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西，虽然口味有所不同，但不管你带MM去麦当劳或肯德基，只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory<br>
工厂模式：客户类和工厂类分开。消费者任何时候需要某种产品，只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时，工厂类也要做相应的修改。如：如何创建及如何向客户端提供。<br>
2、BUILDER—MM最爱听的就是“我爱你”这句话了，见到不同地方的MM,要能够用她们 的方言跟她说这句话哦，我有一个多种语言翻译机，上面每种语言都有一个按键，见到MM我只要按对应的键，它就能够用相应的语言说出“我爱你”这句话了，国 外的MM也可以轻松搞掂，这就是我的“我爱你 ”builder。（这一定比美军在伊拉克用的翻译机好卖）<br>
建造模式：将产品的内部表象和产品的生成过程分割开来，从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化，客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。<br>
3、FACTORY METHOD—请MM去麦当劳吃汉堡，不同的MM有不同的口味，要每个都记住是一件烦人的事情，我一般采用Factory Method模式，带着MM到服务员那儿，说“要一个汉堡”，具体要什么样的汉堡呢，让MM直接跟服务员说就行了。<br>
工厂方法模式：核心工厂类不再负责所有产品的创建，而是将具体创建的工作交给子类去做，成为一个抽象工厂角色，仅负责给出具体工厂类必须实现的接口，而不接触哪一个产品类应当被实例化这种细节。<br>
4、PROTOTYPE—跟MM用QQ聊天，一定要说些深情的话语了，我搜集了好多肉麻的情话，需要时只要copy出来放到QQ里面就行了，这就是我的情话prototype了。（100块钱一份，你要不要）<br>
原始模型模式：通过给出一个原型对象来指明所要创建的对象的类型，然后用复制这个原型对象的方 法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类，产品类不需要非得有任何事先确定的等级结构，原始模型模式适用于任何的等级结构。缺 点是每一个类都必须配备一个克隆方法。<br>
5、SINGLETON—俺有6个漂亮的老婆，她们的老公都是我，我就是我们家里的老公Sigleton，她们只要说道“老公”，都是指的同一个人，那就是我(刚才做了个梦啦，哪有这么好的事)<br>
单例模式：单例模式确保某一个类只有一个实例，而且自行实例化并向整个系统提供这个实例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用。<br>
6、ADAPTER—在朋友聚会上碰到了一个美女Sarah，从香港来的，可我不会说粤语，她不会说普通话，只好求助于我的朋友kent了，他作为我和Sarah之间的Adapter，让我和Sarah可以相互交谈了(也不知道他会不会耍我)<br>
适配器（变压器）模式：把一个类的接口变换成客户端所期待的另一种接口，从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。<br>
7、BRIDGE—早上碰到MM，要说早上好，晚上碰到MM，要说晚上好；碰到MM穿了件新衣服，要说你的衣服好漂亮哦，碰到MM新做的发型，要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这种问题，自己用BRIDGE组合一下不就行了<br>
桥梁模式：将抽象化与实现化脱耦，使得二者可以独立的变化，也就是说将他们之间的强关联变成弱关联，也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系，从而使两者可以独立的变化。<br>
8、COMPOSITE—Mary今天过生日。“我过生日，你要送我一件礼物。”“嗯，好吧， 去商店，你自己挑。”“这件T恤挺漂亮，买，这条裙子好看，买，这个包也不错，买。”“喂，买了三件了呀，我只答应送一件礼物的哦。”“什么呀，T恤加裙 子加包包，正好配成一套呀，小姐，麻烦你包起来。 ”“……”，MM都会用Composite模式了，你会了没有？<br>
合成模式：合成模式将对象组织到树结构中，可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。<br>
9、DECORATOR—Mary过完轮到Sarly过生日，还是不要叫她自己挑了，不然这个 月伙食费肯定玩完，拿出我去年在华山顶上照的照片，在背面写上“最好的的礼物，就是爱你的Fita”，再到街上礼品店买了个像框（卖礼品的MM也很漂亮 哦），再找隔壁搞美术设计的Mike设计了一个漂亮的盒子装起来……，我们都是Decorator，最终都在修饰我这个人呀，怎么样，看懂了吗？<br>
装饰模式：装饰模式以对客户端透明的方式扩展对象的功能，是继承关系的一个替代方案，提供比继承更多的灵活性。动态给一个对象增加功能，这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。<br>
10、FACADE—我有一个专业的Nikon相机，我就喜欢自己手动调光圈、快门，这样照出 来的照片才专业，但MM可不懂这些，教了半天也不会。幸好相机有Facade设计模式，把相机调整到自动档，只要对准目标按快门就行了，一切由相机自动调 整，这样MM也可以用这个相机给我拍张照片了。<br>
门面模式：外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口，使得子系统更易于使用。每一个子系统只有一个门面类，而且此门面类只有一个实例，也就是说它是一个单例模式。但整个系统可以有多个门面类。<br>
11、FLYWEIGHT—每天跟MM发短信，手指都累死了，最近买了个新手机，可以把一些常 用的句子存在手机里，要用的时候，直接拿出来，在前面加上MM的名字就可以发送了，再不用一个字一个字敲了。共享的句子就是Flyweight，MM的名 字就是提取出来的外部特征，根据上下文情况使用。<br>
享元模式：FLYWEIGHT在拳击比赛中指最轻量级。享元模式以共享的方式高效的支持大量的 细粒度对象。享元模式能做到共享的关键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部，不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变 的。外蕴状态不能影响内蕴状态，它们是相互独立的。将可以共享的状态和不可以共享的状态从常规类中区分开来，将不可以共享的状态从类里剔除出去。客户端不 可以直接创建被共享的对象，而应当使用一个工厂对象负责创建被共享的对象。享元模式大幅度的降低内存中对象的数量。<br>
12、PROXY—跟MM在网上聊天，一开头总是“hi,你好”,“你从哪儿来呀？”“你多大了？”“身高多少呀？”这些话，真烦人，写个程序做为我的Proxy吧，凡是接收到这些话都设置好了自动的回答，接收到其他的话时再通知我回答，怎么样，酷吧。<br>
代理模式：代理模式给某一个对象提供一个代理对象，并由代理对象控制对源对象的引用。代理就是 一个人或一个机构代表另一个人或者一个机构采取行动。某些情况下，客户不想或者不能够直接引用一个对象，代理对象可以在客户和目标对象直接起到中介的作 用。客户端分辨不出代理主题对象与真实主题对象。代理模式可以并不知道真正的被代理对象，而仅仅持有一个被代理对象的接口，这时候代理对象不能够创建被代 理对象，被代理对象必须有系统的其他角色代为创建并传入。<br>
13、CHAIN OF RESPONSIBLEITY—晚上去上英语课，为了好开溜坐到了最后一排，哇，前面坐了好几个漂亮的MM哎，找张纸条，写上“Hi,可以做我的女朋友 吗？如果不愿意请向前传”，纸条就一个接一个的传上去了，糟糕，传到第一排的MM把纸条传给老师了，听说是个老处女呀，快跑!<br>
责任链模式：在责任链模式中，很多对象由每一个对象对其下家的引用而接起来形成一条链。请求在 这个链上传递，直到链上的某一个对象决定处理此请求。客户并不知道链上的哪一个对象最终处理这个请求，系统可以在不影响客户端的情况下动态的重新组织链和 分配责任。处理者有两个选择：承担责任或者把责任推给下家。一个请求可以最终不被任何接收端对象所接受。<br>
14、COMMAND—俺有一个MM家里管得特别严，没法见面，只好借助于她弟弟在我们俩之间 传送信息，她对我有什么指示，就写一张纸条让她弟弟带给我。这不，她弟弟又传送过来一个COMMAND，为了感谢他，我请他吃了碗杂酱面，哪知道他说： “我同时给我姐姐三个男朋友送COMMAND，就数你最小气，才请我吃面。”<br>
命令模式：命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命令的责任和执行命令 的责任分割开，委派给不同的对象。命令模式允许请求的一方和发送的一方独立开来，使得请求的一方不必知道接收请求的一方的接口，更不必知道请求是怎么被接 收，以及操作是否执行，何时被执行以及是怎么被执行的。系统支持命令的撤消。<br>
15、INTERPRETER—俺有一个《泡MM真经》，上面有各种泡MM的攻略，比如说去吃西餐的步骤、去看电影的方法等等，跟MM约会时，只要做一个Interpreter，照着上面的脚本执行就可以了。<br>
解释器模式：给定一个语言后，解释器模式可以定义出其文法的一种表示，并同时提供一个解释器。 客户端可以使用这个解释器来解释这个语言中的句子。解释器模式将描述怎样在有了一个简单的文法后，使用模式设计解释这些语句。在解释器模式里面提到的语言 是指任何解释器对象能够解释的任何组合。在解释器模式中需要定义一个代表文法的命令类的等级结构，也就是一系列的组合规则。每一个命令对象都有一个解释方 法，代表对命令对象的解释。命令对象的等级结构中的对象的任何排列组合都是一个语言。<br>
16、ITERATOR—我爱上了Mary，不顾一切的向她求婚。<br>
Mary：“想要我跟你结婚，得答应我的条件”<br>
我：“什么条件我都答应，你说吧”<br>
Mary：“我看上了那个一克拉的钻石”<br>
我：“我买，我买，还有吗？”<br>
Mary：“我看上了湖边的那栋别墅”<br>
我：“我买，我买，还有吗？”<br>
Mary：“我看上那辆法拉利跑车”<br>
我脑袋嗡的一声，坐在椅子上，一咬牙：“我买，我买，还有吗？”<br>
迭代子模式：迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在 一起形成的总体称之为聚集，聚集对象是能够包容一组对象的容器对象。迭代子模式将迭代逻辑封装到一个独立的子对象中，从而与聚集本身隔开。迭代子模式简化 了聚集的界面。每一个聚集对象都可以有一个或一个以上的迭代子对象，每一个迭代子的迭代状态可以是彼此独立的。迭代算法可以独立于聚集角色变化。<br>
17、MEDIATOR—四个MM打麻将，相互之间谁应该给谁多少钱算不清楚了，幸亏当时我在旁边，按照各自的筹码数算钱，赚了钱的从我这里拿，赔了钱的也付给我，一切就OK啦，俺得到了四个MM的电话。<br>
调停者模式：调停者模式包装了一系列对象相互作用的方式，使得这些对象不必相互明显作用。从而 使他们可以松散偶合。当某些对象之间的作用发生改变时，不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的相 互作用转化为一对多的相互作用。调停者模式将对象的行为和协作抽象化，把对象在小尺度的行为上与其他对象的相互作用分开处理。<br>
18、MEMENTO—同时跟几个MM聊天时，一定要记清楚刚才跟MM说了些什么话，不然MM发现了会不高兴的哦，幸亏我有个备忘录，刚才与哪个MM说了什么话我都拷贝一份放到备忘录里面保存，这样可以随时察看以前的记录啦。<br>
备忘录模式：备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下，将一个对象的状态捉住，并外部化，存储起来，从而可以在将来合适的时候把这个对象还原到存储起来的状态。<br>
19、OBSERVER—想知道咱们公司最新MM情报吗？加入公司的MM情报邮件组就行了，tom负责搜集情报，他发现的新情报不用一个一个通知我们，直接发布给邮件组，我们作为订阅者（观察者）就可以及时收到情报啦<br>
观察者模式：观察者模式定义了一种一队多的依赖关系，让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时，会通知所有观察者对象，使他们能够自动更新自己。<br>
20、STATE—跟MM交往时，一定要注意她的状态哦，在不同的状态时她的行为会有不同，比 如你约她今天晚上去看电影，对你没兴趣的MM就会说 “有事情啦”，对你不讨厌但还没喜欢上的MM就会说“好啊，不过可以带上我同事么？”，已经喜欢上你的MM就会说“几点钟？看完电影再去泡吧怎么样？”， 当然你看电影过程中表现良好的话，也可以把MM的状态从不讨厌不喜欢变成喜欢哦。<br>
状态模式：状态模式允许一个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它 的类一样。状态模式把所研究的对象的行为包装在不同的状态对象里，每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状 态改变的时候，其行为也随之改变。状态模式需要对每一个系统可能取得的状态创立一个状态类的子类。当系统的状态变化时，系统便改变所选的子类。<br>
21、STRATEGY—跟不同类型的MM约会，要用不同的策略，有的请电影比较好，有的则去吃小吃效果不错，有的去海边浪漫最合适，单目的都是为了得到MM的芳心，我的追MM锦囊中有好多Strategy哦。<br>
策略模式：策略模式针对一组算法，将每一个算法封装到具有共同接口的独立的类中，从而使得它们 可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式把行为和环境分开。环境类负责维持和查询行为类，各种算法在具体的策略类 中提供。由于算法和环境独立开来，算法的增减，修改都不会影响到环境和客户端。<br>
22、TEMPLATE METHOD——看过《如何说服女生上床》这部经典文章吗？女生从认识到上床的不变的步骤分为巧遇、打破僵局、展开追求、接吻、前戏、动手、爱抚、进去八 大步骤(Template method)，但每个步骤针对不同的情况，都有不一样的做法，这就要看你随机应变啦(具体实现)；<br>
模板方法模式：模板方法模式准备一个抽象类，将部分逻辑以具体方法以及具体构造子的形式实现， 然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法，从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架， 而将逻辑的细节留给具体的子类去实现。<br>
23、VISITOR—情人节到了，要给每个MM送一束鲜花和一张卡片，可是每个MM送的花都 要针对她个人的特点，每张卡片也要根据个人的特点来挑，我一个人哪搞得清楚，还是找花店老板和礼品店老板做一下Visitor，让花店老板根据MM的特点 选一束花，让礼品店老板也根据每个人特点选一张卡，这样就轻松多了； <a href="http://hi.baidu.com/hackyz/blog/item/c7d3f61f07cf27ffe1fe0b49.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hackyz/blog/category/Pr0gr4mm1ng">Pr0gr4mm1ng</a>&nbsp;<a href="http://hi.baidu.com/hackyz/blog/item/c7d3f61f07cf27ffe1fe0b49.html#comment">查看评论</a>]]></description>
        <pubDate>2009-09-14  22:53</pubDate>
        <category><![CDATA[Pr0gr4mm1ng]]></category>
        <author><![CDATA[h4ck3r]]></author>
		<guid>http://hi.baidu.com/hackyz/blog/item/c7d3f61f07cf27ffe1fe0b49.html</guid>
</item>

<item>
        <title><![CDATA[基本设计模式罗列]]></title>
        <link><![CDATA[http://hi.baidu.com/hackyz/blog/item/a43e978f763202f0503d9242.html]]></link>
        <description><![CDATA[
		
		Abstract Factory：提供一个创建一系列相关或相互依赖对象的接口，而无需指定它们具体的类。 <br>
Adapter：将一个类的接口转换成客户希望的另外一个接口。A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 <br>
Bridge：将抽象部分与它的实现部分分离，使它们都可以独立地变化。 <br>
Builder：将一个复杂对象的构建与它的表示分离，使得同样的构建过程可以创建不同的表示。 <br>
Chain of Responsibility：为解除请求的发送者和接收者之间耦合，而使多个对象都有机会处理这个请求。将这些对象连成一条链，并沿着这条链传递该请求，直到有一个对象处理它。 <br>
Command：将一个请求封装为一个对象，从而使你可用不同的请求对客户进行参数化；对请求排队或记录请求日志，以及支持可取消的操作。 <br>
Composite：将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。 <br>
Decorator：动态地给一个对象添加一些额外的职责。就扩展功能而言， 它比生成子类方式更为灵活。 <br>
Facade：为子系统中的一组接口提供一个一致的界面， F a c a d e模式定义了一个高层接口，这个接口使得这一子系统更加容易使用。 <br>
Factory Method：定义一个用于创建对象的接口，让子类决定将哪一个类实例化。Factory Method使一个类的实例化延迟到其子类。 <br>
Flyweight：运用共享技术有效地支持大量细粒度的对象。 <br>
Interpreter：给定一个语言, 定义它的文法的一种表示，并定义一个解释器, 该解释器使用该表示来解释语言中的句子。 <br>
Iterator：提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。 <br>
Mediator：用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用，从而使其耦合松散，而且可以独立地改变它们之间的交互。 <br>
Memento：在不破坏封装性的前提下，捕获一个对象的内部状态，并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。 <br>
Observer：定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。 <br>
Prototype：用原型实例指定创建对象的种类，并且通过拷贝这个原型来创建新的对象。 <br>
Proxy：为其他对象提供一个代理以控制对这个对象的访问。 <br>
Singleton：保证一个类仅有一个实例，并提供一个访问它的全局访问点。 <br>
State：允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。 <br>
Strategy：定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。 <br>
Template Method：定义一个操作中的算法的骨架，而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 <br>
Visitor：表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 <a href="http://hi.baidu.com/hackyz/blog/item/a43e978f763202f0503d9242.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hackyz/blog/category/Pr0gr4mm1ng">Pr0gr4mm1ng</a>&nbsp;<a href="http://hi.baidu.com/hackyz/blog/item/a43e978f763202f0503d9242.html#comment">查看评论</a>]]></description>
        <pubDate>2009-09-14  22:41</pubDate>
        <category><![CDATA[Pr0gr4mm1ng]]></category>
        <author><![CDATA[h4ck3r]]></author>
		<guid>http://hi.baidu.com/hackyz/blog/item/a43e978f763202f0503d9242.html</guid>
</item>

<item>
        <title><![CDATA[设计模式探索系列之Bridge模式]]></title>
        <link><![CDATA[http://hi.baidu.com/hackyz/blog/item/e36cfe193ee83370dbb4bd5c.html]]></link>
        <description><![CDATA[
		
		<div class="topadbg"><span >
<div >


</div>
</span></div>
   
<div class="guanggao"><span >

</span></div>
现在该是Bridge模式粉墨登场的时候了，我们需要解耦这两个方向的变化，把它们之间的强耦合关系改成弱联系。我们把日志记录方式和不同平台上的实现分别当作两个独立的部分来对待，对于日志记录方式，类结构图仍然是：<br>
<br>
<img width="304" hspace="0" height="149" src="http://dev.yesky.com/imagelist/06/02/d9sof31913o0.jpg"><br>
<br>
图8<br>
<br>
现在我们引入另外一个抽象类ImpLog，它是日志记录在不同平台的实现的基类，结构图如下：<br>
<br>
<img width="304" hspace="0" height="149" src="http://dev.yesky.com/imagelist/06/02/gl30vv6v7t93.jpg"><br>
<br>
图9<br>
<br>
实现代码如下：<br>
<br>
<table width="90%" bordercolor="#cccccc" border="1" bgcolor="#e3e3e3" align="center">
    <tbody>
        <tr>
            <td>public abstract class ImpLog<br>
            {<br>
            public abstract void Execute(string msg);<br>
            }<br>
            <br>
            public class NImpLog : ImpLog<br>
            {<br>
            public override void Execute(string msg)<br>
            {<br>
            //...... .NET平台<br>
            }<br>
            }<br>
            <br>
            public class JImpLog : ImpLog<br>
            {<br>
            public override void Execute(string msg)<br>
            {<br>
            //...... Java平台<br>
            }<br>
            }</td>
        </tr>
    </tbody>
</table>
<br>
这时对于日志记录方式和不同的运行平台这两个类都可以独立的变化了，我们要做的工作就是把这两部分之间连接起来。那如何连接呢？在这里，Bridge使用了对象组合的方式，类结构图如下：<br>
<br>
<img width="597" hspace="0" height="151" src="http://dev.yesky.com/imagelist/06/02/ast9h5ggo476.jpg"><br>
<br>
图 10<br>
<br>
实现代码如下：<br>
<br>
<table width="90%" bordercolor="#cccccc" border="1" bgcolor="#e3e3e3" align="center">
    <tbody>
        <tr>
            <td>public abstract class Log<br>
            {<br>
            protected ImpLog implementor;<br>
            public ImpLog Implementor<br>
            {<br>
            set { implementor = value; } <br>
            }<br>
            <br>
            public virtual void Write(string log)<br>
            {<br>
            implementor.Execute(log);<br>
            }<br>
            }<br>
            <br>
            public class DatabaseLog : Log<br>
            {<br>
            public override void Write(string log)<br>
            {<br>
            implementor.Execute(log);<br>
            }<br>
            }<br>
            <br>
            public class TextFileLog : Log<br>
            {<br>
            public override void Write(string log)<br>
            {<br>
            implementor.Execute(log);<br>
            }<br>
            }</td>
        </tr>
    </tbody>
</table>
<br>
可以看到，通过对象组合的方式，Bridge模式把两个角色之间的继承关系改为了耦合的关系，从而使这两者可以从容自若的各自独立的变化，这也是Bridge模式的本意。再来看一下客户端如何去使用：<br>
<br>
<table width="90%" bordercolor="#cccccc" border="1" bgcolor="#e3e3e3" align="center">
    <tbody>
        <tr>
            <td>class App<br>
            {<br>
            public static void Main(string[] args)<br>
            {<br>
            //.NET平台下的Database Log<br>
            Log dblog = new DatabaseLog();<br>
            dblog.Implementor = new NImpLog();<br>
            dblog.Write();<br>
            <br>
            //Java平台下的Text File Log<br>
            Log txtlog = new TextFileLog();<br>
            txtlog.Implementor = new JImpLog();<br>
            txtlog.Write();<br>
            }<br>
            }</td>
        </tr>
    </tbody>
</table>
<br>
可能有人会担心说，这样不就又增加了客户程序与具体日志记录方式之间的耦合性了吗？其实这样的担心是没有必要的，因为这种耦合性是由于对象的创建所带来的，完全可以用创建型模式去解决，就不是这里我们所讨论的内容了。<br>
<br>
最后我们再来考虑一个问题，为什么Bridge模式要使用对象组合的方式而不是用继承呢？如果采用继承的方式，则Log类，ImpLog类都为接口，类结构图如下：<br>
<br>
<img width="584" hspace="0" height="229" src="http://dev.yesky.com/imagelist/06/02/zr3op2686h6e.jpg"><br>
<br>
图11<br>
<br>
实现代码如下：<br>
<br>
<table width="90%" bordercolor="#cccccc" border="1" bgcolor="#e3e3e3" align="center">
    <tbody>
        <tr>
            <td>public class NDatabaseLog : DatabaseLog, IImpLog<br>
            { <br>
            //......<br>
            }<br>
            <br>
            public class JDatabaseLog : DatabaseLog, IImpLog<br>
            { <br>
            //......<br>
            }<br>
            <br>
            public class NTextFileLog : TextFileLog, IImpLog<br>
            { <br>
            //......<br>
            }<br>
            <br>
            public class JTextFileLog : TextFileLog, IImpLog<br>
            { <br>
            //......<br>
            }</td>
        </tr>
    </tbody>
</table>
<br>
如上图中蓝色的部分所示，它们既具有日志记录方式的特性，也具有接口IimpLog的特性，它已经违背了面向对象设计原则中类的单一职责原则，一个类应 当仅有一个引起它变化的原因。所以采用Bridge模式往往是比采用多继承更好的方案。说到这里，大家应该对Bridge模式有一些认识了吧？如果在开发 中遇到有两个方向上纵横交错的变化时，应该能够想到使用Bridge模式，当然了，有时候虽然有两个方向上的变化，但是在某一个方向上的变化并不是很剧烈 的时候，并不一定要使用Bridge模式。<br>
<br>
<strong>　　效果及实现要点</strong><br>
<br>
1．Bridge模式使用“对象间的组合关系”解耦了抽象和实现之间固有的绑定关系，使得抽象和实现可以沿着各自的维度来变化。<br>
<br>
2．所谓抽象和实现沿着各自维度的变化，即“子类化”它们，得到各个子类之后，便可以任意它们，从而获得不同平台上的不同型号。<br>
<br>
3．Bridge模式有时候类似于多继承方案，但是多继承方案往往违背了类的单一职责原则（即一个类只有一个变化的原因），复用性比较差。Bridge模式是比多继承方案更好的解决方法。<br>
<br>
4．Bridge模式的应用一般在“两个非常强的变化维度”，有时候即使有两个变化的维度，但是某个方向的变化维度并不剧烈——换言之两个变化不会导致纵横交错的结果，并不一定要使用Bridge模式。<br>
<br>
<strong>　　适用性</strong><br>
<br>
在以下的情况下应当使用桥梁模式：<br>
<br>
1．如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性，避免在两个层次之间建立静态的联系。 <br>
<br>
2．设计要求实现化角色的任何改变不应当影响客户端，或者说实现化角色的改变对客户端是完全透明的。 <br>
<br>
3．一个构件有多于一个的抽象化角色和实现化角色，系统需要它们之间进行动态耦合。 <br>
<br>
4．虽然在系统中使用继承是没有问题的，但是由于抽象化角色和具体化角色需要独立变化，设计要求需要独立管理这两者。<br>
<br>
<strong>　　总结</strong><br>
<br>
Bridge模式是一个非常有用的模式，也非常复杂，它很好的符合了开放-封闭原则和优先使用对象，而不是继承这两个面向对象原则 <a href="http://hi.baidu.com/hackyz/blog/item/e36cfe193ee83370dbb4bd5c.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hackyz/blog/category/Pr0gr4mm1ng">Pr0gr4mm1ng</a>&nbsp;<a href="http://hi.baidu.com/hackyz/blog/item/e36cfe193ee83370dbb4bd5c.html#comment">查看评论</a>]]></description>
        <pubDate>2009-09-12  23:33</pubDate>
        <category><![CDATA[Pr0gr4mm1ng]]></category>
        <author><![CDATA[h4ck3r]]></author>
		<guid>http://hi.baidu.com/hackyz/blog/item/e36cfe193ee83370dbb4bd5c.html</guid>
</item>

<item>
        <title><![CDATA[Wordpress &#60;= 2.8.3 Remote Admin Reset Password Vulnerability]]></title>
        <link><![CDATA[http://hi.baidu.com/hackyz/blog/item/28c90cd1497e59da572c848a.html]]></link>
        <description><![CDATA[
		
		<pre>=============================================<br>- Release date: August 10th, 2009<br>- Discovered by: Laurent Gaffié<br>- Severity: Medium<br>=============================================<br><br>I. VULNERABILITY<br>-------------------------<br>WordPress &lt;= 2.8.3 Remote admin reset password<br><br>II. BACKGROUND<br>-------------------------<br>WordPress is a state-of-the-art publishing platform with a focus on<br>aesthetics, web standards, and usability. WordPress is both free and<br>priceless at the same time. More simply, WordPress is what you use when<br>you want to work with your blogging software, not fight it.<br><br>III. DESCRIPTION<br>-------------------------<br>The way Wordpress handle a password reset looks like this:<br>You submit your email adress or username via this form /wp-login.php?action=lostpassword ;<br>Wordpress send you a reset confirmation like that via email:<br><br>&quot;<br>Someone has asked to reset the password for the following site and username.<br>http://DOMAIN_NAME.TLD/wordpress<br>Username: admin<br>To reset your password visit the following address, otherwise just<br>ignore this email and nothing will happen<br><br>http://DOMAIN_NAME.TLD/wordpress/wp-login.php?action=rp&amp;key=o7naCKN3OoeU2KJMMsag<br>&quot;<br><br>You click on the link, and then Wordpress reset your admin password, and<br>sends you over another email with your new credentials.<br><br>Let's see how it works:<br><br><br>wp-login.php:<br>...[snip]....<br>line 186:<br>function reset_password($key) {<br>    global $wpdb;<br><br>    $key = preg_replace('/[^a-z0-9]/i', '', $key);<br><br>    if ( empty( $key ) )<br>        return new WP_Error('invalid_key', __('Invalid key'));<br><br>    $user = $wpdb-&gt;get_row($wpdb-&gt;prepare(&quot;SELECT * FROM $wpdb-&gt;users WHERE user_activation_key = %s&quot;, $key));<br>    if ( empty( $user ) )<br>        return new WP_Error('invalid_key', __('Invalid key'));<br>...[snip]....<br>line 276:<br>$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'login';<br>$errors = new WP_Error();<br><br>if ( isset($_GET['key']) )<br>    $action = 'resetpass';<br><br>// validate action so as to default to the login screen<br>if ( !in_array($action, array('logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login')) &amp;&amp; false === has_filter('login_form_' . $action) )<br>    $action = 'login';<br>...[snip]....<br><br>line 370:<br><br>break;<br><br>case 'resetpass' :<br>case 'rp' :<br>    $errors = reset_password($_GET['key']);<br><br>    if ( ! is_wp_error($errors) ) {<br>        wp_redirect('wp-login.php?checkemail=newpass');<br>        exit();<br>    }<br><br>    wp_redirect('wp-login.php?action=lostpassword&amp;error=invalidkey');<br>    exit();<br><br>break;<br>...[snip ]...<br><br>You can abuse the password reset function, and bypass the first step and<br>then reset the admin password by submiting an array to the $key<br>variable.<br> <br><br>IV. PROOF OF CONCEPT<br>-------------------------<br>A web browser is sufficiant to reproduce this Proof of concept:<br>http://DOMAIN_NAME.TLD/wp-login.php?action=rp&amp;key[]=<br>The password will be reset without any confirmation.<br> <br>V. BUSINESS IMPACT<br>-------------------------<br>An attacker could exploit this vulnerability to compromise the admin<br>account of any wordpress/wordpress-mu &lt;= 2.8.3<br><br>VI. SYSTEMS AFFECTED<br>-------------------------<br>All<br><br>VII. SOLUTION<br>-------------------------<br>No patch aviable for the moment.<br> <br>VIII. REFERENCES<br>-------------------------<br>http://www.wordpress.org<br><br>IX. CREDITS<br>-------------------------<br>This vulnerability has been discovered by Laurent Gaffié Laurent.gaffie{remove-this}(at)gmail.com<br>I'd like to shoot some greetz to securityreason.com for them great<br>research on PHP, as for this under-estimated vulnerability discovered by<br>Maksymilian Arciemowicz : http://securityreason.com/achievement_securityalert/38<br><br>X. REVISION HISTORY<br>-------------------------<br>August 10th, 2009: Initial release<br><br>XI. LEGAL NOTICES<br>-------------------------<br>The information contained within this advisory is supplied &quot;as-is&quot;<br>with no warranties or guarantees of fitness of use or otherwise.<br>I accept no responsibility for any damage caused by the use or<br>misuse of this information.<br><br># milw0rm.com [2009-08-11]</pre> <a href="http://hi.baidu.com/hackyz/blog/item/28c90cd1497e59da572c848a.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hackyz/blog/category/3xp">3xp</a>&nbsp;<a href="http://hi.baidu.com/hackyz/blog/item/28c90cd1497e59da572c848a.html#comment">查看评论</a>]]></description>
        <pubDate>2009-08-11  23:00</pubDate>
        <category><![CDATA[3xp]]></category>
        <author><![CDATA[h4ck3r]]></author>
		<guid>http://hi.baidu.com/hackyz/blog/item/28c90cd1497e59da572c848a.html</guid>
</item>

<item>
        <title><![CDATA[Linux命令缩写大全]]></title>
        <link><![CDATA[http://hi.baidu.com/hackyz/blog/item/69142bf54d92052cbc3109d7.html]]></link>
        <description><![CDATA[
		
		<p>linux下的很多目录，shell下的很多命令的英文经常让人一头雾水，其实溯其源头，往往是件有趣的事情，其中有些含有这群Geek的幽默诙谐，或者一个小故事。</p>
<p>我在网上找了一份缩写的对照表，仅供参考~</p>
<p>bin = BINaries<br>
/dev = DEVices<br>
/etc = ETCetera<br>
/lib = LIBrary<br>
/proc = PROCesses<br>
/sbin = Superuser BINaries<br>
/tmp = TeMPorary<br>
/usr = Unix Shared Resources<br>
/var = VARiable ?<br>
FIFO = First In, First Out<br>
GRUB = GRand Unified Bootloader<br>
IFS = Internal Field Seperators<br>
LILO = LInux LOader<br>
MySQL = My是最初作者女儿的名字，SQL = Structured Query Language<br>
PHP = Personal Home Page Tools = PHP Hypertext Preprocessor<br>
PS = Prompt String<br>
Perl = &quot;Pratical Extraction and Report Language&quot; = &quot;Pathologically Eclectic Rubbish Lister&quot;<br>
Python 得名于电视剧Monty Python's Flying Circus<br>
Tcl = Tool Command Language<br>
Tk = ToolKit<br>
VT = Video Terminal<br>
YaST = Yet Another Setup Tool<br>
apache = &quot;a patchy&quot; server<br>
apt = Advanced Packaging Tool<br>
ar = archiver<br>
as = assembler<br>
awk = &quot;Aho Weiberger and Kernighan&quot; 三个作者的姓的第一个字母<br>
bash = Bourne Again SHell<br>
bc = Basic (Better) Calculator<br>
bg = BackGround<br>
biff = 作者Heidi Stettner在U.C.Berkely养的一条狗,喜欢对邮递员汪汪叫。<br>
cal = CALendar<br>
cat = CATenate<br>
cd = Change Directory<br>
chgrp = CHange GRouP<br>
chmod = CHange MODe<br>
chown = CHange OWNer<br>
chsh = CHange SHell<br>
cmp = compare<br>
cobra = Common Object Request Broker Architecture<br>
comm = common<br>
cp = CoPy<br>
cpio = CoPy In and Out<br>
cpp = C Pre Processor<br>
cron = Chronos 希腊文时间<br>
cups = Common Unix Printing System<br>
cvs = Current Version System<br>
daemon = Disk And Execution MONitor<br>
dc = Desk Calculator<br>
dd = Disk Dump<br>
df = Disk Free<br>
diff = DIFFerence<br>
dmesg = diagnostic message<br>
du = Disk Usage<br>
ed = editor<br>
egrep = Extended GREP<br>
elf = Extensible Linking Format<br>
elm = ELectronic Mail<br>
emacs = Editor MACroS<br>
eval = EVALuate<br>
ex = EXtended<br>
exec = EXECute<br>
fd = file descriptors<br>
fg = ForeGround<br>
fgrep = Fixed GREP<br>
fmt = format<br>
fsck = File System ChecK<br>
fstab = FileSystem TABle<br>
fvwm = F*** Virtual Window Manager<br>
gawk = GNU AWK<br>
gpg = GNU Privacy Guard<br>
groff = GNU troff<br>
hal = Hardware Abstraction Layer<br>
joe = Joe's Own Editor<br>
ksh = Korn SHell<br>
lame = Lame Ain't an MP3 Encoder<br>
lex = LEXical analyser<br>
lisp = LISt Processing = Lots of Irritating Superfluous Parentheses<br>
ln = LiNk<br>
lpr = Line PRint<br>
ls = list<br>
lsof = LiSt Open Files<br>
m4 = Macro processor Version 4<br>
man = MANual pages<br>
mawk = Mike Brennan's AWK<br>
mc = Midnight Commander<br>
mkfs = MaKe FileSystem<br>
mknod = MaKe NODe<br>
motd = Message of The Day<br>
mozilla = MOsaic GodZILLa<br>
mtab = Mount TABle<br>
mv = MoVe<br>
nano = Nano's ANOther editor<br>
nawk = New AWK<br>
nl = Number of Lines<br>
nm = names<br>
nohup = No HangUP<br>
nroff = New ROFF<br>
od = Octal Dump<br>
passwd = PASSWorD<br>
pg = pager<br>
pico = PIne's message COmposition editor<br>
pine = &quot;Program for Internet News &amp; Email&quot; = &quot;Pine is not Elm&quot;<br>
ping = 拟声 又 = Packet InterNet Grouper<br>
pirntcap = PRINTer CAPability<br>
popd = POP Directory<br>
pr = pre<br>
printf = PRINT Formatted<br>
ps = Processes Status<br>
pty = pseudo tty<br>
pushd = PUSH Directory<br>
pwd = Print Working Directory<br>
rc = runcom = run command, rc还是plan9的shell<br>
rev = REVerse<br>
rm = ReMove<br>
rn = Read News<br>
roff = RunOFF<br>
rpm = RPM Package Manager = RedHat Package Manager<br>
rsh, rlogin, rvim中的r = Remote<br>
rxvt = ouR XVT<br>
seamoneky = 我<br>
sed = Stream EDitor<br>
seq = SEQuence<br>
shar = SHell ARchive<br>
slrn = S-Lang rn<br>
ssh = Secure SHell<br>
ssl = Secure Sockets Layer<br>
stty = Set TTY<br>
su = Substitute User<br>
svn = SubVersioN<br>
tar = Tape ARchive<br>
tcsh = TENEX C shell<br>
tee = T (T形水管接口)<br>
telnet = TEminaL over Network<br>
termcap = terminal capability<br>
terminfo = terminal information<br>
tex = τ&#941;χνη的缩写，希腊文art<br>
tr = traslate<br>
troff = Typesetter new ROFF<br>
tsort = Topological SORT<br>
tty = TeleTypewriter<br>
twm = Tom's Window Manager<br>
tz = TimeZone<br>
udev = Userspace DEV<br>
ulimit = User's LIMIT<br>
umask = User's MASK<br>
uniq = UNIQue<br>
vi = VIsual = Very Inconvenient<br>
vim = Vi IMproved<br>
wall = write all<br>
wc = Word Count<br>
wine = WINE Is Not an Emulator<br>
xargs = eXtended ARGuments<br>
xdm = X Display Manager<br>
xlfd = X Logical Font Description<br>
xmms = X Multimedia System<br>
xrdb = X Resources DataBase<br>
xwd = X Window Dump<br>
yacc = yet another compiler compiler</p> <a href="http://hi.baidu.com/hackyz/blog/item/69142bf54d92052cbc3109d7.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hackyz/blog/category/Linuxworld">Linuxworld</a>&nbsp;<a href="http://hi.baidu.com/hackyz/blog/item/69142bf54d92052cbc3109d7.html#comment">查看评论</a>]]></description>
        <pubDate>2009-08-06  22:27</pubDate>
        <category><![CDATA[Linuxworld]]></category>
        <author><![CDATA[h4ck3r]]></author>
		<guid>http://hi.baidu.com/hackyz/blog/item/69142bf54d92052cbc3109d7.html</guid>
</item>


</channel>
</rss>