﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-Love in coding...</title><link>http://www.cnblogs.com/freeliver54/</link><description>
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Free and Susan</description><language>zh-cn</language><lastBuildDate>Sun, 07 Sep 2008 16:22:48 GMT</lastBuildDate><pubDate>Sun, 07 Sep 2008 16:22:48 GMT</pubDate><ttl>60</ttl><item><title>[转]通过分区(Partition)提升MySQL性能</title><link>http://www.cnblogs.com/freeliver54/archive/2008/09/03/1282971.html</link><dc:creator>freeliver54</dc:creator><author>freeliver54</author><pubDate>Wed, 03 Sep 2008 07:03:00 GMT</pubDate><guid>http://www.cnblogs.com/freeliver54/archive/2008/09/03/1282971.html</guid><wfw:comment>http://www.cnblogs.com/freeliver54/comments/1282971.html</wfw:comment><comments>http://www.cnblogs.com/freeliver54/archive/2008/09/03/1282971.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/freeliver54/comments/commentRss/1282971.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/freeliver54/services/trackbacks/1282971.html</trackback:ping><description><![CDATA[<p><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">本文转自：http://fanqiang.chinaunix.net/db/mysql/2006-05-08/4135.shtml<br />
原文如下：<br />
－－－－</span></span></span></p>
<p>
<table style="width: 723px; height: 3089px" cellspacing="0" cellpadding="0" width="723" align="center" border="0">
    <tr>
            <td align="center" height="20"><span style="color: #000000"><small><span style="color: #000000"><span style="font-size: 8pt">作者：foxcai 来源:foxcai 的 Blog (2006-05-08 14:30:34)</span></span></small></span></td>
        </tr>
        <tr>
            <td><span style="color: #000000"><br />
            </span></td>
        </tr>
        <tr>
            <td class="l17"><font class="f14" id="zoom"><font color="#cccccc"><!-- 正文begin -->
            <div>
            <div align="center"><strong><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt"><span style="font-size: 18pt">通过分区（Partition）提升MySQL性能</span> </span></span></span></strong></div>
            <div align="center"><font size="2"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt"><strong><span style="font-size: 18pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong><strong><span style="font-size: 18pt">——MySQL5.1新特性翻译系列</span> </strong></span></span></span></font></div>
            <div style="text-indent: 21pt" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">几年前，俺写过一篇题为&#8220;The Foundation of Excellent Performance&#8221;的文章(现在仍然可以在http://www.tdan.com/i016fe03.htm看到)，俺对SQL语句是影响数据库驱动系统性能的第一要素的观点有点质疑。其实在那时我在文章中就坚信数据库的物理设计在对高级数据库的性能影响上远比其他因素重要。同时俺还给大家看了Oracle的研究，他们解释了为什么拙劣的物理设计是数据库停机（无论是有计划的还是没计划的）背后的主要原因。这么多年都过来啦（幸好没多少人朝俺扔砖头），俺的观点是改变了一些，但在这点上俺还是坚持DBA如果想要高性能的数据库就必须在数据库的物理设计上多思考的观点，这样才能减少响应时间使终端用户满意而不是引来骂声一片。（陈朋奕语：不要那么严肃，嘿嘿） </span></span></span></span></div>
            <div style="text-indent: 21pt" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">俺今天这么激动又想写文章的原因是MySQL5.1的发布带来了设计超强动力数据库的强有力的武器，任何MySQL的DBA都应该尽快学习并使用它。俺觉得如果能很好滴使用这个5.1版带来的新特性，DBA可以使自己管理的VLDB（不知道什么是VLDB？告诉你，是好大好大的数据库的意思，Very Large DB）或数据仓库奇迹般的获得巨大的性能提升。 </span></span></span></span></div>
            <div align="left"><strong><span style="font-size: 18pt"><font size="4"><br />
            <span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">什么是数据库分区？</span></span></span></font><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt"> </span></span></span></span></strong></div>
            <div style="text-indent: 21pt" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">数据库分区是一种物理数据库设计技术，DBA和数据库建模人员对其相当熟悉。虽然分区技术可以实现很多效果，但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。 </span></span></span></span></div>
            <div align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">分区主要有两种形式：//这里一定要注意行和列的概念（row是行，column是列） </span></span></span></span></div>
            <ol type="1">
                <li style="text-align: left"><strong><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">水平分区（Horizontal Partitioning） </span></span></span></span></strong><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">这种形式分区是对表的行进行分区，通过这样的方式不同分组里面的物理列分割的数据集得以组合，从而进行个体分割（单分区）或集体分割（1个或多个分区）。所有在表中定义的列在每个数据集中都能找到，所以表的特性依然得以保持。 <br />
                举个简单例子：一个包含十年发票记录的表可以被分区为十个不同的分区，每个分区包含的是其中一年的记录。（朋奕注：这里具体使用的分区方式我们后面再说，可以先说一点，一定要通过某个属性列来分割，譬如这里使用的列就是年份） </span></span></span></span></li>
                <li style="text-align: left"><strong><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">垂直分区（Vertical Partitioning） </span></span></span></span></strong><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度，使某些特定的列被划分到特定的分区，每个分区都包含了其中的列所对应的行。 <br />
                举个简单例子：一个包含了大text和BLOB列的表，这些text和BLOB列又不经常被访问，这时候就要把这些不经常使用的text和BLOB了划分到另一个分区，在保证它们数据相关性的同时还能提高访问速度。 </span></span></span></span></li>
            </ol>
            <div style="text-indent: 18pt" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">在数据库供应商开始在他们的数据库引擎中建立分区（主要是水平分区）时，DBA和建模者必须设计好表的物理分区结构，不要保存冗余的数据（不同表中同时都包含父表中的数据）或相互联结成一个逻辑父对象（通常是视图）。这种做法会使水平分区的大部分功能失效，有时候也会对垂直分区产生影响。<br />
            </span></span></span></span></div>
            <div align="left"><strong><span style="font-size: 18pt"><font size="2"><br />
            </font></span></strong></div>
            <div style="text-align: left"><strong><font size="4"><br />
            <span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">在MySQL 5.1中进行分区</span></span></span></font><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt"> </span></span></span></strong></div>
            <div style="text-align: left"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MySQL5.1中最激动人心的新特性应该就是对水平分区的支持了。这对MySQL的使用者来说确实是个好消息，而且她已经支持分区大部分模式： </span></span></span></div>
            <div style="text-align: left"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>Range（范围）</strong> &#8211; 这种模式允许DBA将数据划分不同范围。例如DBA可以将一个表通过年份划分成三个分区，80年代（1980's）的数据，90年代（1990's）的数据以及任何在2000年（包括2000年）后的数据。&nbsp;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>Hash（哈希）</strong> &#8211; 这中模式允许DBA通过对表的一个或多个列的Hash Key进行计算，最后通过这个Hash码不同数值对应的数据区域进行分区，。例如DBA可以建立一个对表主键进行分区的表。&nbsp;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>Key（键值）</strong> &#8211; 上面Hash模式的一种延伸，这里的Hash Key是MySQL系统产生的。&nbsp;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>List（预定义列表）</strong> &#8211; 这种模式允许系统通过DBA定义的列表的值所对应的行数据进行分割。例如：DBA建立了一个横跨三个分区的表，分别根据2004年2005年和2006年值所对应的数据。&nbsp;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>&nbsp;Composite（复合模式）</strong> - 很神秘吧，哈哈，其实是以上模式的组合使用而已，就不解释了。举例：在初始化已经进行了Range范围分区的表上，我们可以对其中一个分区再进行hash哈希分区。 <br />
            </span></span></span></div>
            <div align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;分区带来的好处太多太多了，有多少？俺也不知道，自己猜去吧，要是觉得没有多少就别用，反正俺也不求你用。不过在这里俺强调两点好处：<br />
            </span></span></span></span></div>
            <div style="margin: 0cm 0cm 0pt 36pt" align="left"><span style="font-size: 12pt"><font size="2"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt"><strong>性能的提升（Increased performance）</strong> - 在扫描操作中，如果MySQL的优化器知道哪个分区中才包含特定查询中需要的数据，它就能直接去扫描那些分区的数据，而不用浪费很多时间扫描不需要的地方了。需要举个例子？好啊，百万行的表划分为10个分区，每个分区就包含十万行数据，那么查询分区需要的时间仅仅是全表扫描的十分之一了，很明显的对比。同时对十万行的表建立索引的速度也会比百万行的快得多得多。如果你能把这些分区建立在不同的磁盘上，这时候的I/O读写速度就&#8220;不堪设想&#8221;（没用错词，真的太快了，理论上100倍的速度提升啊，这是多么快的响应速度啊，所以有点不堪设想了）了。 </span></span></span></font></span></div>
            <div style="margin: 0cm 0cm 0pt 36pt" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt"><strong>对数据管理的简化（Simplified data management）</strong> - 分区技术可以让DBA对数据的管理能力提升。通过优良的分区，DBA可以简化特定数据操作的执行方式。例如：DBA在对某些分区的内容进行删除的同时能保证余下的分区的数据完整性(这是跟对表的数据删除这种大动作做比较的)。 </span></span></span></span></div>
            <div style="margin: 0cm 0cm 0pt 36pt" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">此外分区是由MySQL系统直接管理的，DBA不需要手工的去划分和维护。例如：这个例如没意思，不讲了，如果你是DBA，只要你划分了分区，以后你就不用管了就是了。<br />
            <br />
            站在性能设计的观点上，俺们对以上的内容也是相当感兴趣滴。通过使用分区和对不同的SQL操作的匹配设计，数据库的性能一定能获得巨大提升。下面咱们一起用用这个MySQL 5.1的新功能看看。 <br />
            下面所有的测试都在Dell Optiplex box with a Pentium 4 3.00GHz processor, 1GB of RAM机器上（炫耀啊&#8230;&#8230;），Fedora Core 4和MySQL 5.1.6 alpha上运行通过。 </span></span></span></span></div>
            <div align="left"><span style="font-size: 18pt"><font size="2"><br />
            </font><strong><font size="4"><br />
            <span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">如何进行实际分区</span></span></span></font><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt"> </span></span></span></strong></span></div>
            <div style="text-indent: 21pt" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">看看分区的实际效果吧。我们建立几个同样的MyISAM引擎的表，包含日期敏感的数据，但只对其中一个分区。分区的表（表名为part_tab）我们采用Range范围分区模式，通过年份进行分区： </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">mysql&gt; CREATE TABLE part_tab </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;(&nbsp;c1 int default NULL, </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt;&nbsp;c2 varchar(30) default NULL, </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt;&nbsp;c3 date default NULL </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt; </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) engine=myisam </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PARTITION BY RANGE (year(c3)) (PARTITION p0 VALUES LESS THAN (1995), </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PARTITION p1 VALUES LESS THAN (1996) , PARTITION p2 VALUES LESS THAN (1997) , </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PARTITION p3 VALUES LESS THAN (1998) , PARTITION p4 VALUES LESS THAN (1999) , </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PARTITION p5 VALUES LESS THAN (2000) , PARTITION p6 VALUES LESS THAN (2001) , </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PARTITION p7 VALUES LESS THAN (2002) , PARTITION p8 VALUES LESS THAN (2003) , </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PARTITION p9 VALUES LESS THAN (2004) , PARTITION p10 VALUES LESS THAN (2010), </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PARTITION p11 VALUES LESS THAN MAXVALUE ); </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">Query OK, 0 rows affected (0.00 sec) </span></span></span></span></div>
            <div style="text-indent: 21pt" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">注意到了这里的最后一行吗？这里把不属于前面年度划分的年份范围都包含了，这样才能保证数据不会出错，大家以后要记住啊，不然数据库无缘无故出错你就爽了。那下面我们建立没有分区的表（表名为no_part_tab）： </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">mysql&gt; create table no_part_tab </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt; (c1 int(11) default NULL, </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt; c2 varchar(30) default NULL, </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt; c3 date default NULL) engine=myisam; </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">Query OK, 0 rows affected (0.02 sec) </span></span></span></span></div>
            <div style="text-indent: 21pt" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">下面咱写一个存储过程（感谢Peter Gulutzan给的代码，如果大家需要Peter Gulutzan的存储过程教程的中文翻译也可以跟我要，chenpengyi◎gmail.com），它能向咱刚才建立的已分区的表中平均的向每个分区插入共8百万条不同的数据。填满后，咱就给没分区的克隆表中插入相同的数据： </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">mysql&gt; delimiter // </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">mysql&gt; CREATE PROCEDURE load_part_tab() </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt; begin </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt;&nbsp;declare v int default 0; </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while v &lt; 8000000 </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt;&nbsp;do </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt;&nbsp;insert into part_tab </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt;&nbsp;values (v,'testing partitions',adddate('1995-01-01',(rand(v)*36520) mod 3652)); </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt;&nbsp;set v = v + 1; </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt;&nbsp;end while; </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt; end </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt; // </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">Query OK, 0 rows affected (0.00 sec) </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">mysql&gt; delimiter ; </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">mysql&gt; call load_part_tab(); </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">Query OK, 1 row affected (8 min 17.75 sec) </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">mysql&gt; insert into no_part_tab select * from part_tab; </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">Query OK, 8000000 rows affected (51.59 sec) </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">Records: 8000000&nbsp;Duplicates: 0&nbsp;Warnings: 0 </span></span></span></span></div>
            <div style="text-indent: 21pt" align="left"><span style="font-size: 12pt"><font size="2"><br />
            <span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">表都准备好了。咱开始对这两表中的数据进行简单的范围查询吧。先分区了的，后没分区的，跟着有执行过程解析（MySQL Explain命令解析器），可以看到MySQL做了什么：</span></span></span></font><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt"> </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">mysql&gt; select count(*) from no_part_tab where </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt; c3 &gt; date '1995-01-01' and c3 &lt; date '1995-12-31'; </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">+----------+ </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">| count(*) | </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">+----------+ </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">|&nbsp;&nbsp; 795181 | </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">+----------+ </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">1 row in set (38.30 sec) </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;</span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">mysql&gt; select count(*) from part_tab where </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt; c3 &gt; date '1995-01-01' and c3 &lt; date '1995-12-31'; </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">+----------+ </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">| count(*) | </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">+----------+ </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">|&nbsp;&nbsp; 795181 | </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">+----------+ </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">1 row in set (3.88 sec) </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;</span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">mysql&gt; explain select count(*) from no_part_tab where </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt; c3 &gt; date '1995-01-01' and c3 &lt; date '1995-12-31'\G </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">*************************** 1. row *************************** </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id: 1 </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;select_type: SIMPLE </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; table: no_part_tab </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type: ALL </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">possible_keys: NULL </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key: NULL </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key_len: NULL </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ref: NULL </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rows: 8000000 </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Extra: Using where </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">1 row in set (0.00 sec) </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;</span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">mysql&gt; explain partitions select count(*) from part_tab where </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt; c3 &gt; date '1995-01-01' and c3 &lt; date '1995-12-31'\G </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">*************************** 1. row *************************** </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id: 1 </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;select_type: SIMPLE </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; table: part_tab </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp; partitions: p1 </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type: ALL </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">possible_keys: NULL </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key: NULL </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key_len: NULL </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ref: NULL </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rows: 798458 </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Extra: Using where </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">1 row in set (0.00 sec) </span></span></span></span></div>
            <div style="text-indent: 21pt" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">从上面结果可以容易看出，设计恰当表分区能比非分区的减少90％的响应时间。而命令解析Explain程序也告诉我们在对已分区的表的查询过程中仅对第一个分区进行了扫描，其他都跳过了。 </span></span></span></span></div>
            <div style="text-indent: 21pt" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">哔厉吧拉，说阿说&#8230;&#8230;反正就是这个分区功能对DBA很有用拉，特别对VLDB和需要快速反应的系统。 </span></span></span></span></div>
            <div align="left"><strong><span style="font-size: 18pt"><font size="4"><br />
            <span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">对Vertical Partitioning的一些看法</span></span></span></font><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt"> </span></span></span></span></strong></div>
            <div style="text-indent: 21pt" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">虽然MySQL 5.1自动实现了水平分区，但在设计数据库的时候不要轻视垂直分区。虽然要手工去实现垂直分区，但在特定场合下你会收益不少的。例如在前面建立的表中，VARCHAR字段是你平常很少引用的，那么对它进行垂直分区会不会提升速度呢？咱们看看测试结果： </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">mysql&gt; desc part_tab; </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">+-------+-------------+------+-----+---------+-------+ </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">| Field | Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Null | Key | Default | Extra | </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">+-------+-------------+------+-----+---------+-------+ </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">| c1&nbsp;&nbsp;&nbsp; | int(11)&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">| c2&nbsp;&nbsp;&nbsp; | varchar(30) | YES&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">| c3&nbsp;&nbsp;&nbsp; | date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">+-------+-------------+------+-----+---------+-------+ </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">3 rows in set (0.03 sec) </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;</span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">mysql&gt; alter table part_tab drop column c2; </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">Query OK, 8000000 rows affected (42.20 sec) </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">Records: 8000000&nbsp;Duplicates: 0&nbsp;Warnings: 0 </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;</span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">mysql&gt; desc part_tab; </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">+-------+---------+------+-----+---------+-------+ </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">| Field | Type&nbsp;&nbsp;&nbsp; | Null | Key | Default | Extra | </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">+-------+---------+------+-----+---------+-------+ </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">| c1&nbsp;&nbsp;&nbsp; | int(11) | YES&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">| c3&nbsp;&nbsp;&nbsp; | date&nbsp;&nbsp;&nbsp; | YES&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">+-------+---------+------+-----+---------+-------+ </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">2 rows in set (0.00 sec) </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;</span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">mysql&gt; select count(*) from part_tab where </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">&nbsp;&nbsp;&nbsp; -&gt; c3 &gt; date '1995-01-01' and c3 &lt; date '1995-12-31'; </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">+----------+ </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">| count(*) | </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">+----------+ </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">|&nbsp;&nbsp; 795181 | </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">+----------+ </span></span></span></span></div>
            <div style="text-align: left" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">1 row in set (0.34 sec) </span></span></span></span></div>
            <div style="text-indent: 21pt" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">在设计上去掉了VARCHAR字段后，不止是你，俺也发现查询响应速度上获得了另一个90％的时间节省。所以大家在设计表的时候，一定要考虑，表中的字段是否真正关联，又是否在你的查询中有用？ </span></span></span></span></div>
            <div align="left"><strong><span style="font-size: 18pt"><font size="2"><br />
            </font><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">补充说明&nbsp;<br />
            <br />
            </span></span></span></span></strong></div>
            <div style="text-indent: 18pt" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">这么简单的文章肯定不能说全MySQL 5.1 分区机制的所有好处和要点（虽然对自己写文章水平很有信心），下面就说几个感兴趣的： </span></span></span></span></div>
            <ul type="disc">
                <li style="text-align: left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">支持所有存储引擎(MyISAM, Archive, InnoDB, 等等) </span></span></span></span></li>
                <li style="text-align: left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">对分区的表支持索引，包括本地索引local indexes，对其进行的是一对一的视图镜像，假设一个表有十个分区，那么其本地索引也包含十个分区。 </span></span></span></span></li>
                <li style="text-align: left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">关于分区的元数据Metadata的表可以在INFORMATION_SCHEMA数据库中找到，表名为PARTITIONS。 </span></span></span></span></li>
                <li style="text-align: left"><font size="2"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt"><span style="font-size: 12pt">All SHOW</span> <span style="font-size: 12pt">命令支持返回分区表以及元数据的索引。</span> </span></span></span></font></li>
                <li style="text-align: left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">对其操作的命令和实现的维护功能有（比对全表的操作还多）： </span></span></span></span>
                <ul type="circle">
                    <li style="text-align: left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">ADD PARTITION </span></span></span></span></li>
                    <li style="text-align: left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">DROP PARTITION </span></span></span></span></li>
                    <li style="text-align: left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">COALESCE PARTITION </span></span></span></span></li>
                    <li style="text-align: left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">REORGANIZE PARTITION </span></span></span></span></li>
                    <li style="text-align: left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">ANALYZE PARTITION </span></span></span></span></li>
                    <li style="text-align: left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">CHECK PARTITION </span></span></span></span></li>
                    <li style="text-align: left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">OPTIMIZE PARTITION </span></span></span></span></li>
                    <li style="text-align: left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">REBUILD PARTITION </span></span></span></span></li>
                    <li style="text-align: left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">REPAIR PARTITION </span></span></span></span></li>
                </ul>
                </li>
            </ul>
            <div style="text-indent: 21pt" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">站在性能主导的观点上来说，MySQL 5.1的分区功能能给数据性能带来巨大的提升的同时减轻DBA的管理负担，如果分区合理的话。如果需要更多的资料可以去http://dev.mysql.com/doc/refman/5.1/en/partitioning.html或 http://forums.mysql.com/list.php?106获得相关资料。 </span></span></span></span></div>
            <div style="text-indent: 21pt" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">关于MySQL分区的使用方法很快发布上来，这里有什么错误欢迎指出，或给我来信 </span></span></span></span></div>
            <div style="margin: 0cm 0cm 0pt 252pt; text-indent: 21pt" align="left"><span style="font-size: 12pt"><span style="color: #000000"><span style="color: #000000"><span style="font-size: 8pt">——2006-05-05陈朋奕 </span></span></span></span></div>
            </div>
            </font></font></td>
        </tr>
    </table>
</p><img src ="http://www.cnblogs.com/freeliver54/aggbug/1282971.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42134/" target="_blank">[新闻]JavaScript将成Silverlight的最大对手?</a>]]></description></item><item><title>[转]网管必须掌握的八个DOS命令</title><link>http://www.cnblogs.com/freeliver54/archive/2008/09/02/1281718.html</link><dc:creator>freeliver54</dc:creator><author>freeliver54</author><pubDate>Tue, 02 Sep 2008 00:35:00 GMT</pubDate><guid>http://www.cnblogs.com/freeliver54/archive/2008/09/02/1281718.html</guid><wfw:comment>http://www.cnblogs.com/freeliver54/comments/1281718.html</wfw:comment><comments>http://www.cnblogs.com/freeliver54/archive/2008/09/02/1281718.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/freeliver54/comments/commentRss/1281718.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/freeliver54/services/trackbacks/1281718.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt">本文转自：</span><a href="http://www.cnblogs.com/Tonyyang/archive/2008/02/25/1080030.html" target="_blank"><span style="font-size: 10pt">http://www.cnblogs.com/Tonyyang/archive/2008/02/25/1080030.html</span></a></p>
<p><span style="font-size: 10pt">原文如下：</span></p>
<p><span style="font-size: 10pt">－－－－－</span></p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt">一，ping 　　 </span></p>
<p><span style="font-size: 10pt">　　它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说，ping命令是第一个必须掌握的DOS命令，它所利用的原理是这样的：网络上的机器都有唯一确定的IP地址，我们给目标IP地址发送一个数据包，对方就要返回一个同样大小的数据包，根据返回的数据包我们可以确定目标主机的存在，可以初步判断目标主机的操作系统等。下面就来看看它的一些常用的操作。先看看帮助吧，在DOS窗口中键入：ping 回车，。所示的帮助画面。在此，我们只掌握一些基本的很有用的参数就可以了（下同）。 　　 </span></p>
<p><span style="font-size: 10pt">　　-t 表示将不间断向目标IP发送数据包，直到我们强迫其停止。试想，如果你使用<ST1:CHMETCNV w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="100" unitname="m">100M</ST1:CHMETCNV>的宽带接入，而目标IP是56K的小猫，那么要不了多久，目标IP就因为承受不了这么多的数据而掉线，呵呵，一次攻击就这么简单的实现了。 　　 </span></p>
<p><span style="font-size: 10pt">　　-l 定义发送数据包的大小，默认为32字节，我们利用它可以最大定义到65500字节。结合上面介绍的-t参数一起使用，会有更好的效果哦。 　　 </span></p>
<p><span style="font-size: 10pt">　　-n 定义向目标IP发送数据包的次数，默认为3次。如果网络速度比较慢，3次对我们来说也浪费了不少时间，因为现在我们的目的仅仅是判断目标IP是否存在，那么就定义为一次吧。 　　 </span></p>
<p><span style="font-size: 10pt">　　说明一下，如果-t 参数和 -n参数一起使用，ping命令就以放在后面的参数为标准，比如&#8220;ping IP -t -n <ST1:CHMETCNV w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="3" unitname="&#8221;">3&#8221;</ST1:CHMETCNV>，虽然使用了-t参数，但并不是一直ping下去，而是只ping 3次。另外，ping命令不一定非得ping IP，也可以直接ping主机域名，这样就可以得到主机的IP。 　　 </span></p>
<p><span style="font-size: 10pt">　　下面我们举个例子来说明一下具体用法。 　　 </span></p>
<p><span style="font-size: 10pt">　　这里time=2表示从发出数据包到接受到返回数据包所用的时间是2秒，从这里可以判断网络连接速度的大小 。从TTL的返回值可以初步判断被ping主机的操作系统，之所以说&#8220;初步判断&#8221;是因为这个值是可以修改的。这里TTL=32表示操作系统可能是win98。 </span></p>
<p><span style="font-size: 10pt">　　（小知识：如果TTL=128，则表示目标主机可能是Win2000；如果TTL=250，则目标主机可能是Unix） </span></p>
<p><span style="font-size: 10pt">　　至于利用ping命令可以快速查找局域网故障，可以快速搜索最快的QQ服务器，可以对别人进行ping攻击&#8230;&#8230;这些就靠大家自己发挥了。 　　 </span></p>
<p><span style="font-size: 10pt">　　二，nbtstat 　　 </span></p>
<p><span style="font-size: 10pt">　　该命令使用TCP/IP上的NetBIOS显示协议统计和当前TCP/IP连接，使用这个命令你可以得到远程主机的NETBIOS信息，比如用户名、所属的工作组、网卡的MAC地址等。在此我们就有必要了解几个基本的参数。 　　 </span></p>
<p><span style="font-size: 10pt">　　-a 使用这个参数，只要你知道了远程主机的机器名称，就可以得到它的NETBIOS信息（下同）。 　　 </span></p>
<p><span style="font-size: 10pt">　　-A 这个参数也可以得到远程主机的NETBIOS信息，但需要你知道它的IP。 </span></p>
<p><span style="font-size: 10pt">　　-n 列出本地机器的NETBIOS信息。 　　 </span></p>
<p><span style="font-size: 10pt">　　当得到了对方的IP或者机器名的时候，就可以使用nbtstat命令来进一步得到对方的信息了，这又增加了我们入侵的保险系数。 　　 </span></p>
<p><span style="font-size: 10pt">　　三，netstat </span></p>
<p><span style="font-size: 10pt">　　这是一个用来查看网络状态的命令，操作简便功能强大。 　　 </span></p>
<p><span style="font-size: 10pt">　　-a 查看本地机器的所有开放端口，可以有效发现和预防木马，可以知道机器所开的服务等信息，如图4。 　　 </span></p>
<p><span style="font-size: 10pt">　　这里可以看出本地机器开放有FTP服务、Telnet服务、邮件服务、WEB服务等。用法：netstat -a IP。 </span></p>
<p><span style="font-size: 10pt">　　-r 列出当前的路由信息，告诉我们本地机器的网关、子网掩码等信息。用法：netstat -r IP。 </span></p>
<p><span style="font-size: 10pt">四，tracert </span></p>
<p><span style="font-size: 10pt">　　跟踪路由信息，使用此命令可以查出数据从本地机器传输到目标主机所经过的所有途径，这对我们了解网络布局和结构很有帮助。如图5。 　　 </span></p>
<p><span style="font-size: 10pt">　　这里说明数据从本地机器传输到192.168.0.1的机器上，中间没有经过任何中转，说明这两台机器是在同一段局域网内。用法：tracert IP。 　　 </span></p>
<p><span style="font-size: 10pt">　　五，net 　　 </span></p>
<p><span style="font-size: 10pt">　　这个命令是网络命令中最重要的一个，必须透彻掌握它的每一个子命令的用法，因为它的功能实在是太强大了，这简直就是微软为我们提供的最好的入侵工具。首先让我们来看一看它都有那些子命令，键入net 回车如图6。 </span></p>
<p><span style="font-size: 10pt">　　在这里，我们重点掌握几个入侵常用的子命令。 　　 </span></p>
<p><span style="font-size: 10pt">　　net view 　　 </span></p>
<p><span style="font-size: 10pt">　　使用此命令查看远程主机的所以共享资源。命令格式为net view \\IP。　　 </span></p>
<p><span style="font-size: 10pt">　　net use </span></p>
<p><span style="font-size: 10pt">　　把远程主机的某个共享资源影射为本地盘符，图形界面方便使用，呵呵。命令格式为net use x: \\IP\sharename。上面一个表示把192.168.0.5IP的共享名为magic的目录影射为本地的Z盘。下面表示和192.168.0.7建立IPC$连接（net use \\IP\IPC$ "password" /user:"name"）， 　　 </span></p>
<p><span style="font-size: 10pt">　　建立了IPC$连接后，呵呵，就可以上传文件了：copy nc.exe \\192.168.0.7\admin$，表示把本地目录下的nc.exe传到远程主机，结合后面要介绍到的其他DOS命令就可以实现入侵了。 　　 </span></p>
<p><span style="font-size: 10pt">　　net start </span></p>
<p><span style="font-size: 10pt">　　使用它来启动远程主机上的服务。当你和远程主机建立连接后，如果发现它的什么服务没有启动，而你又想利用此服务怎么办？就使用这个命令来启动吧。用法：net start servername，如图9，成功启动了telnet服务。 　　 </span></p>
<p><span style="font-size: 10pt">　　net stop </span></p>
<p><span style="font-size: 10pt">　　入侵后发现远程主机的某个服务碍手碍脚，怎么办？利用这个命令停掉就ok了，用法和net start同。 　　 </span></p>
<p><span style="font-size: 10pt">　　net user </span></p>
<p><span style="font-size: 10pt">　　查看和帐户有关的情况，包括新建帐户、删除帐户、查看特定帐户、激活帐户、帐户禁用等。这对我们入侵是很有利的，最重要的，它为我们克隆帐户提供了前提。键入不带参数的net user，可以查看所有用户，包括已经禁用的。下面分别讲解。 </span></p>
<p><span style="font-size: 10pt">　　1，net user abcd 1234 /add，新建一个用户名为abcd，密码为1234的帐户，默认为user组成员。 </span></p>
<p><span style="font-size: 10pt">　　2，net user abcd /del，将用户名为abcd的用户删除。 </span></p>
<p><span style="font-size: 10pt">　　3，net user abcd /active:no，将用户名为abcd的用户禁用。 </span></p>
<p><span style="font-size: 10pt">　　4，net user abcd /active:yes，激活用户名为abcd的用户。 </span></p>
<p><span style="font-size: 10pt">　　5，net user abcd，查看用户名为abcd的用户的情况　　 </span></p>
<p><span style="font-size: 10pt">　　net localgroup </span></p>
<p><span style="font-size: 10pt">　　查看所有和用户组有关的信息和进行相关操作。键入不带参数的net localgroup即列出当前所有的用户组。在入侵过程中，我们一般利用它来把某个帐户提升为administrator组帐户，这样我们利用这个帐户就可以控制整个远程主机了。用法：net localgroup groupname username /add。 　　 </span></p>
<p><span style="font-size: 10pt">　　现在我们把刚才新建的用户abcd加到administrator组里去了，这时候abcd用户已经是超级管理员了，呵呵，你可以再使用net user abcd来查看他的状态，和图10进行比较就可以看出来。但这样太明显了，网管一看用户情况就能漏出破绽，所以这种方法只能对付菜鸟网管，但我们还得知道。现在的手段都是利用其他工具和手段克隆一个让网管看不出来的超级管理员，这是后话。有兴趣的朋友可以参照《黑客防线》第30期上的《由浅入深解析隆帐户》一文。 　　 </span></p>
<p><span style="font-size: 10pt">　　net time </span></p>
<p><span style="font-size: 10pt">　　这个命令可以查看远程主机当前的时间。如果你的目标只是进入到远程主机里面，那么也许就用不到这个命令了。但简单的入侵成功了，难道只是看看吗？我们需要进一步渗透。这就连远程主机当前的时间都需要知道，因为利用时间和其他手段（后面会讲到）可以实现某个命令和程序的定时启动，为我们进一步入侵打好基础。用法：net time \\IP。 　　 </span></p>
<p><span style="font-size: 10pt">　　六，at 　　 </span></p>
<p><span style="font-size: 10pt">　　这个命令的作用是安排在特定日期或时间执行某个特定的命令和程序（知道net time的重要了吧？）。当我们知道了远程主机的当前时间，就可以利用此命令让其在以后的某个时间（比如2分钟后）执行某个程序和命令。用法：at time command \\computer。 　　 </span></p>
<p><span style="font-size: 10pt">　　表示在6点55分时，让名称为a-01的计算机开启telnet服务（这里net start telnet即为开启telnet服务的命令）。 　　 </span></p>
<p><span style="font-size: 10pt">七，ftp 　　 </span></p>
<p><span style="font-size: 10pt">　　大家对这个命令应该比较熟悉了吧？网络上开放的ftp的主机很多，其中很大一部分是匿名的，也就是说任何人都可以登陆上去。现在如果你扫到了一台开放ftp服务的主机（一般都是开了21端口的机器），如果你还不会使用ftp的命令怎么办？下面就给出基本的ftp命令使用方法。 </span></p>
<p><span style="font-size: 10pt">　　首先在命令行键入ftp回车，出现ftp的提示符，这时候可以键入&#8220;help&#8221;来查看帮助（任何DOS命令都可以使用此方法查看其帮助)。 　　 </span></p>
<p><span style="font-size: 10pt">　　大家可能看到了，这么多命令该怎么用？其实也用不到那么多，掌握几个基本的就够了。 　　 </span></p>
<p><span style="font-size: 10pt">　　首先是登陆过程，这就要用到open了，直接在ftp的提示符下输入&#8220;open 主机IP ftp端口&#8221;回车即可，一般端口默认都是21，可以不写。接着就是输入合法的用户名和密码进行登陆了，这里以匿名ftp为例介绍。 　　 </span></p>
<p><span style="font-size: 10pt">　　用户名和密码都是ftp，密码是不显示的。当提示**** logged in时，就说明登陆成功。这里因为是匿名登陆，所以用户显示为Anonymous。 　　 </span></p>
<p><span style="font-size: 10pt">　　接下来就要介绍具体命令的使用方法了。 　　 </span></p>
<p><span style="font-size: 10pt">　　dir 跟DOS命令一样，用于查看服务器的文件，直接敲上dir回车，就可以看到此ftp服务器上的文件。 </span></p>
<p><span style="font-size: 10pt">　　cd 进入某个文件夹。 </span></p>
<p><span style="font-size: 10pt">　　get 下载文件到本地机器。 </span></p>
<p><span style="font-size: 10pt">　　put 上传文件到远程服务器。这就要看远程ftp服务器是否给了你可写的权限了，如果可以，呵呵，该怎么 利用就不多说了，大家就自由发挥去吧。 </span></p>
<p><span style="font-size: 10pt">　　delete 删除远程ftp服务器上的文件。这也必须保证你有可写的权限。 </span></p>
<p><span style="font-size: 10pt">　　bye 退出当前连接。 </span></p>
<p><span style="font-size: 10pt">　　quit 同上。 </span></p>
<p><span style="font-size: 10pt">　　 </span></p>
<p><span style="font-size: 10pt">　　八，telnet </span></p>
<p><span style="font-size: 10pt">　　功能强大的远程登陆命令，几乎所有的入侵者都喜欢用它，屡试不爽。为什么？它操作简单，如同使用自己的机器一样，只要你熟悉DOS命令，在成功以administrator身份连接了远程机器后，就可以用它来干你想干的一切了。下面介绍一下使用方法，首先键入telnet回车，再键入help查看其帮助信息。 　　 </span></p>
<p><span style="font-size: 10pt">　　然后在提示符下键入open IP回车，这时就出现了登陆窗口，让你输入合法的用户名和密码，这里输入任何密码都是不显示的。 　　 </span></p>
<p><span style="font-size: 10pt">　　当输入用户名和密码都正确后就成功建立了telnet连接，这时候你就在远程主机上具有了和此用户一样的权限，利用DOS命令就可以实现你想干的事情了。这里我使用的超级管理员权限登陆的。　　 </span></p>
<p><span style="font-size: 10pt">　　到这里为止，网络DOS命令的介绍就告一段落了，这里介绍的目的只是给菜鸟网管一个印象，让其知道熟悉和掌握网络DOS命令的重要性。其实和网络有关的DOS命令还远不止这些，这里只是抛砖引玉，希望能对广大菜鸟网管有所帮助。学好DOS对当好网管有很大的帮助，特别的熟练掌握了一些网络的DOS命令。 </span></p>
<p><span style="font-size: 10pt">另外大家应该清楚，任何人要想进入系统，必须得有一个合法的用户名和密码（输入法漏洞差不多绝迹了吧），哪怕你拿到帐户的只有一个很小的权限，你也可以利用它来达到最后的目的。所以坚决消灭空口令，给自己的帐户加上一个强壮的密码，是最好的防御弱口令入侵的方法</span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">路由表+常用网络命令+SSL的WEB安全访问+常用网络命令使用技巧</span></p>
<p><span style="font-size: 10pt">一、如何看路由表</span></p>
<p><span style="font-size: 10pt">======================================================================</span></p>
<p><span style="font-size: 10pt">Active Routes:</span></p>
<p><span style="font-size: 10pt">Network Destination&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Netmask&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Gateway&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Interface&nbsp;Metric</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">0.0.0</ST1:CHSDATE>.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">0.0.0</ST1:CHSDATE>.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.2&nbsp;&nbsp; 192.168.1.101&nbsp;&nbsp; 10</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 127.0.0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 255.0.0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 127.0.0.1&nbsp;&nbsp; 1</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.0&nbsp;&nbsp;&nbsp; 255.255.255.0&nbsp;&nbsp;&nbsp; 192.168.1.101&nbsp;&nbsp; 192.168.1.101&nbsp;&nbsp; 10</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; 192.168.1.101&nbsp;255.255.255.255&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 127.0.0.1&nbsp;&nbsp; 10</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; 192.168.1.255&nbsp;255.255.255.255&nbsp;&nbsp;&nbsp; 192.168.1.101&nbsp;&nbsp; 192.168.1.101&nbsp;&nbsp; 10</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 224.0.0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 240.0.0.0&nbsp;&nbsp;&nbsp; 192.168.1.101&nbsp;&nbsp; 192.168.1.101&nbsp;&nbsp; 10</span></p>
<p><span style="font-size: 10pt">&nbsp;255.255.255.255&nbsp;255.255.255.255&nbsp;&nbsp;&nbsp; 192.168.1.101&nbsp;&nbsp; 192.168.1.101&nbsp;&nbsp; 1</span></p>
<p><span style="font-size: 10pt">Default Gateway:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.2</span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">Network Destination 目的网段&nbsp;</span></p>
<p><span style="font-size: 10pt">Netmask 子网掩码&nbsp;</span></p>
<p><span style="font-size: 10pt">Interface 到达该目的地的本路由器的出口ip（表示信息是从计算机A的这个IP地址送出）。</span></p>
<p><span style="font-size: 10pt">Gateway 下一跳路由器入口的ip，路由器通过interface和gateway定义一调到下一个路由器的链路，通常情况下，interface和gateway是同一网段的</span></p>
<p><span style="font-size: 10pt">如果目的计算机的IP地址与 Netmask执行逻辑AND运算后的结果，等于在Network Destination处的值，则会将信息转发给Gateway处的IP地址。</span></p>
<p><span style="font-size: 10pt">但是如果Gateway处的IP地址等于计算机A自己的IP地址，则表示此信息将直接传送给目的计算机，不需要再送给其他的路由器，例如目的计算机是与计算机A在同一个网络内。</span></p>
<p><span style="font-size: 10pt">Metric 跳数，该条路由记录的质量，一般情况下，如果有多条到达相同目的地的路由记录，路由器会采用metric值小的那条路由&nbsp;</span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">第一条&nbsp;<ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">0.0.0</ST1:CHSDATE>.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">0.0.0</ST1:CHSDATE>.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.2&nbsp;&nbsp; 192.168.1.101&nbsp;&nbsp; 10</span></p>
<p><span style="font-size: 10pt">缺省路由：意思就是说，当一个数据包的目的网段不在你的路由记录中，那么，你的路由器该把那个数据包发送到哪里！缺省路由的网关是由你的连接上的default gateway决定的&nbsp;</span></p>
<p><span style="font-size: 10pt">该路由记录的意思是：当我接收到一个数据包的目的网段不在我的路由记录中，我会将该数据包通过192.168.1.101这个接口发送到192.168.1.2这个地址，这个地址是下一个路由器的一个接口，这样这个数据包就可以交付给下一个路由器处理，与我无关。该路由记录的线路质量 10</span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">第二条&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 127.0.0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 255.0.0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 127.0.0.1&nbsp;&nbsp; 1</span></p>
<p><span style="font-size: 10pt">本地环路：127.0.0.0这个网段内所有地址都指向自己机器，如果收到这样一个数据，应该发向哪里 该路由记录的线路质量 1&nbsp;</span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">第三条&nbsp;192.168.1.0&nbsp;&nbsp;&nbsp; 255.255.255.0&nbsp;&nbsp;&nbsp; 192.168.1.101&nbsp;&nbsp; 192.168.1.101&nbsp;&nbsp; 10</span></p>
<p><span style="font-size: 10pt">直联网段的路由记录：当路由器收到发往直联网段的数据包时该如何处理，这种情况，路由记录的interface和gateway是同一个。&nbsp;</span></p>
<p><span style="font-size: 10pt">当我接收到一个数据包的目的网段是192.168.1.0时，我会将该数据包通过192.168.1.101这个接口直接发送出去，因为这个端口直接连接着192.168.1.0这个网段，该路由记录的线路质量 10&nbsp;（因interface和gateway是同一个，表示数据包直接传送给目的地址，不需要再转给路由器）</span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">第四条&nbsp;192.168.1.101&nbsp;255.255.255.255&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 127.0.0.1&nbsp;&nbsp; 10</span></p>
<p><span style="font-size: 10pt">本地主机路由：当路由器收到发送给自己的数据包时将如何处理&nbsp;</span></p>
<p><span style="font-size: 10pt">当我接收到一个数据包的目的网段是192.168.1.101时，我会将该数据包收下，因为这个数据包时发送给我自己的，该路由记录的线路质量 1&nbsp;</span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">第五条&nbsp;192.168.1.255&nbsp;255.255.255.255&nbsp;&nbsp;&nbsp; 192.168.1.101&nbsp;&nbsp; 192.168.1.101&nbsp;&nbsp; 10</span></p>
<p><span style="font-size: 10pt">本地广播路由：当路由器收到发送给直联网段的本地广播时如何处理&nbsp;</span></p>
<p><span style="font-size: 10pt">当我接收到广播数据包的目的网段是192.168.1.255时，我会将该数据从192.168.1.101接口以广播的形式发送出去，该路由记录的线路质量 10&nbsp;（因interface和gateway是同一个，表示数据包直接传送给目的地址，不需要再转给路由器）</span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">第六条&nbsp;224.0.0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 240.0.0.0&nbsp;&nbsp;&nbsp; 192.168.1.101&nbsp;&nbsp; 192.168.1.101&nbsp;&nbsp; 10</span></p>
<p><span style="font-size: 10pt">组播路由：当路由器收到一个组播数据包时该如何处理&nbsp;</span></p>
<p><span style="font-size: 10pt">当我接收到组播数据包时，我会将该数据从192.168.1.101接口以组播的形势发送出去，该路由记录的线路质量 10 （因interface和gateway是同一个，表示数据包直接传送给目的地址，不需要再转给路由器）</span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">第十二条&nbsp;255.255.255.255&nbsp;255.255.255.255&nbsp;&nbsp;&nbsp; 192.168.1.101&nbsp;&nbsp; 192.168.1.101&nbsp;&nbsp; 1</span></p>
<p><span style="font-size: 10pt">广播路由：当路由器收到一个绝对广播时该如何处理&nbsp;</span></p>
<p><span style="font-size: 10pt">当我接收到绝对广播数据包时，将该数据包丢弃掉</span></p>
<p><span style="font-size: 10pt">（对主机A而言，因interface和gateway是同一个，表示数据包直接传送给目的地址，不需要再转给路由器）</span></p>
<p><span style="font-size: 10pt">Route </span></p>
<p><span style="font-size: 10pt">　　在本地 IP 路由表中显示和修改条目。 </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　语法 </span></p>
<p><span style="font-size: 10pt">　　route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]] </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　参数 </span></p>
<p><span style="font-size: 10pt">　　-f </span></p>
<p><span style="font-size: 10pt">　　清除所有不是主路由（网掩码为 255.255.255.255 的路由）、环回网络路由（目标为 127.0.0.0，网掩码为 255.255.255.0 的路由）或多播路由（目标为 224.0.0.0，网掩码为 240.0.0.0 的路由）的条目的路由表。如果它与命令之一（例如 add、change 或 delete）结合使用，表会在运行命令之前清除。 </span></p>
<p><span style="font-size: 10pt">　　-p </span></p>
<p><span style="font-size: 10pt">　　与 add 命令共同使用时，指定路由被添加到注册表并在启动 TCP/IP 协议的时候初始化 IP 路由表。默认情况下，启动 TCP/IP 协议时不会保存添加的路由。与 print 命令一起使用时，则显示永久路由列表。所有其它的命令都忽略此参数。永久路由存储在注册表中的位置是 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes。 </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　Command </span></p>
<p><span style="font-size: 10pt">　　指定要运行的命令。下表列出了有效的命令。 命令 目的 </span></p>
<p><span style="font-size: 10pt">　　add 添加路由 </span></p>
<p><span style="font-size: 10pt">　　change 更改现存路由 </span></p>
<p><span style="font-size: 10pt">　　delete 删除路由 </span></p>
<p><span style="font-size: 10pt">　　print 打印路由Destination </span></p>
<p><span style="font-size: 10pt">　　指定路由的网络目标地址。目标地址可以是一个 IP 网络地址（其中网络地址的主机地址位设置为 0），对于主机路由是 IP 地址，对于默认路由是 <ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">0.0.0</ST1:CHSDATE>.0。 </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　mask subnetmask </span></p>
<p><span style="font-size: 10pt">　　指定与网络目标地址相关联的网掩码（又称之为子网掩码）。子网掩码对于 IP 网络地址可以是一适当的子网掩码，对于主机路由是 255.255.255.255 ，对于默认路由是 <ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">0.0.0</ST1:CHSDATE>.0。如果忽略，则使用子网掩码 255.255.255.255。定义路由时由于目标地址和子网掩码之间的关系，目标地址不能比它对应的子网掩码更为详细。换句话说，如果子网掩码的一位是 0，则目标地址中的对应位就不能设置为 1。 </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　Gateway </span></p>
<p><span style="font-size: 10pt">　　指定超过由网络目标和子网掩码定义的可达到的地址集的前一个或下一个跃点 IP 地址。对于本地连接的子网路由，网关地址是分配给连接子网接口的 IP 地址。对于要经过一个或多个路由器才可用到的远程路由，网关地址是一个分配给相邻路由器的、可直接达到的 IP 地址。 </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　metric Metric </span></p>
<p><span style="font-size: 10pt">　　为路由指定所需跃点数的整数值（范围是 1 ~ 9999），它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。 </span></p>
<p><span style="font-size: 10pt">　　if Interface </span></p>
<p><span style="font-size: 10pt">　　指定目标可以到达的接口的接口索引。使用 route print 命令可以显示接口及其对应接口索引的列表。对于接口索引可以使用十进制或十六进制的值。对于十六进制值，要在十六进制数的前面加上 0x。忽略 if 参数时，接口由网关地址确定。 </span></p>
<p><span style="font-size: 10pt">　　/? </span></p>
<p><span style="font-size: 10pt">　　在命令提示符显示帮助。 </span></p>
<p><span style="font-size: 10pt">　　注释 </span></p>
<p><span style="font-size: 10pt">　　路由表中 跃点数 一列的值较大是由于允许 TCP/IP 根据每个 LAN接口的 IP 地址、子网掩码和默认网关的配置自动确定路由表中路由的跃点数造成的。默认启动的自动确定接口跃点数确定了每个接口的速度，调整了每个接口的路由跃点数，因此最快接口所创建的路由具有最低的跃点数。要删除大跃点数，请在每个 LAN 连接的 TCP/IP 协议的高级属性中禁用自动确定接口跃点数。 </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　如果在 systemroot\System32\Drivers\Etc 文件夹的本地网络文件中存在适当的条目，名称可以用于 Destination。只要名称可以通过&#8220;域名系统&#8221; (DNS) 查询这样的标准主机名解析技术分解为 IP 地址，就可以将其用于 Gateway，DNS 查询使用存储在 systemroot\System32\Drivers\Etc 文件夹下的本地主机文件和 NetBIOS 名称解析。 </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　如果是 print 或 delete 命令，可以忽略 Gateway 参数，使用通配符来表示目标和网关。Destination 的值可以是由星号 (*) 指定的通配符。如果指定目标含有一个星号 (*) 或问号 (?)，它被看作是通配符，只打印或删除匹配的目标路由。星号代表任意一字符序列，问号代表任一字符。例如， 10.*.1, 192.168.*、 127.* 和 *224* 都是星号通配符的有效使用。 </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　使用了无效的目标和子网掩码（网掩码）值的组合，会显示&#8220;Route:bad gateway address netmask&#8221;错误消息。目标中有一位或多位设置为 1，而其在子网掩码中的对应位设置为 0 时会发生这个错误。可以通过二进制表示法表示目标和子网掩码来检查这种情况。以二进制表示的子网掩码包括表示目标网络地址部分的一连串的 1 和表示目标主机地址部分的一连串的 0 两个部分。查看目标以确定目标的主机地址部分（由子网掩码所定义）是否有些位设置成了 1。 </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　只有 Windows NT 4.0、Windows 2000、Windows Millennium Edition 和 Windows XP 的 route 命令支持 -p 参数。Windows 95 或 Windows 98 的 route 命令不支持该参数。 </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时，该命令才可用。 </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　范例 </span></p>
<p><span style="font-size: 10pt">　　要显示 IP 路由表的完整内容，请键入： </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　route print </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　要显示 IP 路由表中以 10. 开始的路由，请键入： </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　route print 10.* </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　要添加默认网关地址为 192.168.12.1 的默认路由，请键入： </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　route add <ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">0.0.0</ST1:CHSDATE>.0 mask 0.0.0.0 192.168.12.1 </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　要添加目标为 <ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">10.41.0</ST1:CHSDATE>.0，子网掩码为 255.255.0.0，下一个跃点地址为 10.27.0.1 的路由，请键入： </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　route add <ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">10.41.0</ST1:CHSDATE>.0 mask 255.255.0.0 10.27.0.1 </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　要添加目标为 <ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">10.41.0</ST1:CHSDATE>.0，子网掩码为 255.255.0.0，下一个跃点地址为 10.27.0.1 的永久路由，请键入： </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　route -p add <ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">10.41.0</ST1:CHSDATE>.0 mask 255.255.0.0 10.27.0.1 </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　要添加目标为 <ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">10.41.0</ST1:CHSDATE>.0，子网掩码为 255.255.0.0，下一个跃点地址为 10.27.0.1，跃点数为 7 的路由，请键入： </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　route add <ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">10.41.0</ST1:CHSDATE>.0 mask 255.255.0.0 10.27.0.1 metric 7 </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　要添加目标为 <ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">10.41.0</ST1:CHSDATE>.0，子网掩码为 255.255.0.0，下一个跃点地址为 10.27.0.1，接口索引为 0x3 的路由，请键入： </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　route add <ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">10.41.0</ST1:CHSDATE>.0 mask 255.255.0.0 10.27.0.1 if 0x3 </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　要删除目标为 <ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">10.41.0</ST1:CHSDATE>.0，子网掩码为 255.255.0.0 的路由，请键入： </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　route delete <ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">10.41.0</ST1:CHSDATE>.0 mask 255.255.0.0 </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　要删除 IP 路由表中以 10. 开始的所有路由，请键入： </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　route delete 10.* </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　要将目标为 <ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">10.41.0</ST1:CHSDATE>.0，子网掩码为 255.255.0.0 的路由的下一个跃点地址由 10.27.0.1 更改为 10.27.0.25，请键入： </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　route change <ST1:CHSDATE w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">10.41.0</ST1:CHSDATE>.0 mask 255.255.0.0 10.27.0.25 </span></p>
<p><span style="font-size: 10pt">　　&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;</span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">route 的命令 </span></p>
<p><span style="font-size: 10pt">　　routing ip add/delete/set/show interface 在指定接口上添加、删除、配置或显示常规 IP 路由设置。 </span></p>
<p><span style="font-size: 10pt">　　routing ip add/delete/set/show filter 在指定接口上添加、删除、配置或显示 IP 数据包筛选器。 </span></p>
<p><span style="font-size: 10pt">　　routing ip add/delete/show boundary 在指定接口上添加、删除或显示多播边界设置。 </span></p>
<p><span style="font-size: 10pt">　　routing ip add/set ipiptunnel 添加或配置 IP 中的 IP 接口。 </span></p>
<p><span style="font-size: 10pt">　　routing ip add/delete/set/show rtmroute 添加、配置或显示不持续的路由表管理器路由。 </span></p>
<p><span style="font-size: 10pt">　　routing ip add/delete/set/show persistentroute 添加、删除、配置或显示持续路由。 </span></p>
<p><span style="font-size: 10pt">　　routing ip add/delete/set/show preferenceforprotocol 添加、删除、配置或显示路由协议的优先级。 </span></p>
<p><span style="font-size: 10pt">　　routing ip add/delete/set/show scope 添加、删除或显示多播作用域。 </span></p>
<p><span style="font-size: 10pt">　　routing ip set/show loglevel 配置或显示全局 IP 记录等级。 </span></p>
<p><span style="font-size: 10pt">　　routing ip show helper 显示 IP 的所有 Netsh 实用程序子环境。 </span></p>
<p><span style="font-size: 10pt">　　routing ip show protocol 显示所有正在运行的 IP 路由协议。 </span></p>
<p><span style="font-size: 10pt">　　routing ip show mfe 显示多播转发项。 </span></p>
<p><span style="font-size: 10pt">　　routing ip show mfestats 显示多播转发项统计。 </span></p>
<p><span style="font-size: 10pt">　　routing ip show boundarystats 显示 IP 多播边界。 </span></p>
<p><span style="font-size: 10pt">　　routing ip show rtmdestinations 显示路由表管理器路由表中的目标。 </span></p>
<p><span style="font-size: 10pt">　　routing ip show rtmroutes 显示路由表管理器路由表中的路由。 </span></p>
<p><span style="font-size: 10pt">　　routing ip nat set/show global 配置或显示全局网络地址转换 (NAT) 设置。 </span></p>
<p><span style="font-size: 10pt">　　routing ip nat add/delete/set/show interface 添加、删除、配置或显示指定接口的 NAT 设置。 </span></p>
<p><span style="font-size: 10pt">　　routing ip nat add/delete addressrange 在 NAT 接口公用地址池中添加或删除一个地址范围。 </span></p>
<p><span style="font-size: 10pt">　　routing ip nat add/delete addressmapping 添加或删除 NAT 地址映射。 </span></p>
<p><span style="font-size: 10pt">　　routing ip nat add/delete portmapping 添加或删除 NAT 端口映射。 </span></p>
<p><span style="font-size: 10pt">　　routing ip autodhcp set/show global 配置或显示全局 DHCP 分配器参数。 </span></p>
<p><span style="font-size: 10pt">　　routing ip autodhcp set/show interface 配置或显示指定接口的 DHCP 分配器设置。 </span></p>
<p><span style="font-size: 10pt">　　routing ip autodhcp add/delete exclusion 在 DHCP 分配器地址范围中添加或删除一个排除范围。 </span></p>
<p><span style="font-size: 10pt">　　routing ip dnsproxy set/show global 配置或显示全局 DNS 代理参数。 </span></p>
<p><span style="font-size: 10pt">　　routing ip dnsproxy set/show interface 配置或显示指定接口的 DNS 代理参数。 </span></p>
<p><span style="font-size: 10pt">　　routing ip igmp set/show global 配置或显示 IGMP 全局设置。 </span></p>
<p><span style="font-size: 10pt">　　routing ip igmp add/delete/set/show interface 在指定接口上添加、删除、配置或显示 IGMP。 </span></p>
<p><span style="font-size: 10pt">　　routing ip igmp add/delete staticgroup 添加或删除指定接口的静态多播组。 </span></p>
<p><span style="font-size: 10pt">　　routing ip igmp show grouptable 显示 IGMP 主机组表。 </span></p>
<p><span style="font-size: 10pt">　　routing ip igmp show ifstats 显示每个接口的 IGMP 统计。 </span></p>
<p><span style="font-size: 10pt">　　routing ip igmp show iftable 显示每个接口的 IGMP 主机组。 </span></p>
<p><span style="font-size: 10pt">　　routing ip igmp show proxygrouptable 显示 IGMP 代理接口的 IGMP 组表。 </span></p>
<p><span style="font-size: 10pt">　　routing ip igmp show rasgrouptable 显示远程访问服务器所使用的 Internet 接口的组表。 </span></p>
<p><span style="font-size: 10pt">　　routing ip ospf set/show global 配置或显示全局 OSPF 设置。 </span></p>
<p><span style="font-size: 10pt">　　routing ip ospf add/delete/set/show interface 在指定接口上添加、删除、配置或显示 OSPF。 </span></p>
<p><span style="font-size: 10pt">　　routing ip ospf add/delete/set/show area 添加、删除、配置或显示 OSPF 区域。 </span></p>
<p><span style="font-size: 10pt">　　routing ip ospf add/delete/show range 在指定的 OSPF 区域上添加、删除、配置或显示范围。 </span></p>
<p><span style="font-size: 10pt">　　routing ip ospf add/delete/set/show virtif 添加、删除、配置或显示 OSPF 虚拟接口。 </span></p>
<p><span style="font-size: 10pt">　　routing ip ospf add/delete/show neighbor 添加、删除、配置或显示 OSPF 邻居。 </span></p>
<p><span style="font-size: 10pt">　　routing ip ospf add/delete/show protofilter 添加、删除、配置或显示 OSPF 外部路由的路由信息源。 </span></p>
<p><span style="font-size: 10pt">　　routing ip ospf add/delete/show routefilter 添加、删除、配置或显示 OSPF 外部路由的路由筛选。 </span></p>
<p><span style="font-size: 10pt">　　routing ip ospf show areastats 显示 OSPF 区域统计。 </span></p>
<p><span style="font-size: 10pt">　　routing ip ospf show lsdb 显示 OSPF 链接状态数据库。 </span></p>
<p><span style="font-size: 10pt">　　routing ip ospf show virtifstats 显示 OSPF 虚拟链接统计。 </span></p>
<p><span style="font-size: 10pt">　　routing ip relay set global 配置&#8220;DHCP 中继代理程序&#8221;的全局设置。 </span></p>
<p><span style="font-size: 10pt">　　routing ip relay add/delete/set interface 在指定接口上添加、删除或配置&#8220;DHCP 中继代理程序&#8221;设置。 </span></p>
<p><span style="font-size: 10pt">　　routing ip relay add/delete dhcpserver 在 DHCP 服务器地址列表中添加或删除 DHCP 服务器的 IP 地址。 </span></p>
<p><span style="font-size: 10pt">　　routing ip relay show ifbinding 显示接口的 IP 地址绑定。 </span></p>
<p><span style="font-size: 10pt">　　routing ip relay show ifconfig 显示每个接口的&#8220;DHCP 中继代理程序&#8221;配置。 </span></p>
<p><span style="font-size: 10pt">　　routing ip relay show ifstats 显示每个接口的 DHCP 统计。 </span></p>
<p><span style="font-size: 10pt">　　routing ip rip set/show global 配置 IP 的 RIP 全局设置。 </span></p>
<p><span style="font-size: 10pt">　　routing ip rip add/delete/set/show interface 在指定接口上添加或配置 IP 的 RIP 设置。 </span></p>
<p><span style="font-size: 10pt">　　routing ip rip add/delete peerfilter 添加或删除 RIP 对等筛选器。 </span></p>
<p><span style="font-size: 10pt">　　routing ip rip add/delete acceptfilter 在接受的路由列表中添加或删除 RIP 路由筛选器。 </span></p>
<p><span style="font-size: 10pt">　　routing ip rip add/delete announcefilter 在公布的路由列表中添加或删除 RIP 路由筛选器。 </span></p>
<p><span style="font-size: 10pt">　　routing ip rip add/delete/show neighbor 添加或删除 RIP 邻居。 </span></p>
<p><span style="font-size: 10pt">　　routing ip rip set/show flags 在指定接口上配置 IP RIP 高级设置。 </span></p>
<p><span style="font-size: 10pt">　　routing ip rip show globalstats 显示全局 RIP 参数。 </span></p>
<p><span style="font-size: 10pt">　　routing ip rip show ifbinding 显示接口的 IP 地址绑定。 </span></p>
<p><span style="font-size: 10pt">　　routing ip rip show ifstats 显示每个接口的 RIP 统计。 </span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">　　IPX netsh 路由命令 </span></p>
<p><span style="font-size: 10pt">　　routing ipx add/set staticroute 在 IPX 路由表中添加或配置静态 IPX 路由。 </span></p>
<p><span style="font-size: 10pt">　　routing ipx add/set staticservice 在 SAP 服务表中添加或配置静态 SAP 服务。 </span></p>
<p><span style="font-size: 10pt">　　routing ipx add/set filter 在指定的接口上添加或配置 IPX 数据包筛选器。 </span></p>
<p><span style="font-size: 10pt">　　routing ipx add/set interface 在请求拨号接口上启用 IPX 路由，或在指定的接口上配置 IPX 设置。 </span></p>
<p><span style="font-size: 10pt">　　routing ipx set global 配置全局 IPX 路由设置。 </span></p>
<p><span style="font-size: 10pt">　　routing ipx rip add/set filter 添加和配置 RIP 路由筛选器。 </span></p>
<p><span style="font-size: 10pt">　　routing ipx rip set global 配置全局 IPX 的 RIP 设置。 </span></p>
<p><span style="font-size: 10pt">　　routing ipx rip set interface 在指定接口上配置 IPX 的 RIP 设置。 </span></p>
<p><span style="font-size: 10pt">　　routing ipx sap add/set filter 添加或配置 SAP 服务筛选器。 </span></p>
<p><span style="font-size: 10pt">　　routing ipx sap set global 配置全局 IPX 的 SAP 设置。 </span></p>
<p><span style="font-size: 10pt">　　routing ipx sap set interface 在指定接口上配置 IPX 的 SAP 设置。 </span></p>
<p><span style="font-size: 10pt">　　routing ipx netbios add nbname 将静态 NETBIOS 名称添加到 IPX NetBIOS 名称表中。 </span></p>
<p><span style="font-size: 10pt">　　routing ipx netbios set interface 在指定接口上配置基于 IPX 的 NetBIOS 设置。</span></p>
<img src ="http://www.cnblogs.com/freeliver54/aggbug/1281718.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42133/" target="_blank">[新闻]没有谷歌就活不下去的四个网站</a>]]></description></item><item><title>[书目20080829]软件测试技术经典教程</title><link>http://www.cnblogs.com/freeliver54/archive/2008/08/29/1279374.html</link><dc:creator>freeliver54</dc:creator><author>freeliver54</author><pubDate>Fri, 29 Aug 2008 04:38:00 GMT</pubDate><guid>http://www.cnblogs.com/freeliver54/archive/2008/08/29/1279374.html</guid><wfw:comment>http://www.cnblogs.com/freeliver54/comments/1279374.html</wfw:comment><comments>http://www.cnblogs.com/freeliver54/archive/2008/08/29/1279374.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/freeliver54/comments/commentRss/1279374.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/freeliver54/services/trackbacks/1279374.html</trackback:ping><description><![CDATA[<p style="font-size: 10pt; line-height: 150%">第一部分&nbsp;软件测试基础<br />
第1章&nbsp;软件测试基本概念<br />
1.1&nbsp;什么是软件<br />
1.2&nbsp;软件的分类<br />
1.3&nbsp;什么是Bug<br />
1.4&nbsp;什么是软件测试<br />
1.5&nbsp;测试环境<br />
1.6&nbsp;测试用例<br />
小结<br />
思考题<br />
第2章&nbsp;软件测试分类<br />
2.1&nbsp;黑盒测试和白盒测试<br />
2.2&nbsp;静态测试和动态测试<br />
2.3&nbsp;单元测试、集成测试、系统测试和验收测试<br />
2.4&nbsp;功能测试和性能测试<br />
2.5&nbsp;回归测试、冒烟测试、随机测试<br />
2.6&nbsp;不同测试分类之间的关系<br />
小结<br />
思考题<br />
第3章&nbsp;软件测试的常识<br />
3.1&nbsp;公司里测试部门的组织结构<br />
3.2&nbsp;软件测试工程师所需具备的素质<br />
3.3&nbsp;软件测试和软件质量的关系<br />
3.4&nbsp;软件测试和SQA的关系<br />
3.5&nbsp;软件测试的一些基本原则<br />
小结<br />
思考题<br />
第4章&nbsp;黑盒测试技术<br />
4.1&nbsp;等价类技术（Equivalence&nbsp;Class&nbsp;Testing）&nbsp;&nbsp;<br />
4.2&nbsp;边界值技术（Boundary&nbsp;Value&nbsp;Testing）&nbsp;<br />
4.3&nbsp;因果图法（Cause-Effect&nbsp;Graphs）&nbsp;&nbsp;<br />
4.4&nbsp;流程图法（Workflow&nbsp;Method）&nbsp;&nbsp;<br />
4.5&nbsp;黑盒测试技术的综合运用<br />
小结<br />
思考题<br />
第5章&nbsp;缺陷管理<br />
5.1&nbsp;Bug的分类<br />
5.2&nbsp;缺陷报告<br />
5.3&nbsp;提交缺陷报告的注意事项<br />
5.4&nbsp;Bug的处理流程<br />
5.5&nbsp;常见的缺陷管理工具<br />
5.6&nbsp;Bugzilla使用指南<br />
小结<br />
思考题<br />
第6章&nbsp;测试管理<br />
6.1&nbsp;软件的生命周期<br />
6.2&nbsp;软件测试计划<br />
6.3&nbsp;软件测试用例设计和实施<br />
6.4&nbsp;软件测试评估<br />
6.5&nbsp;测试团队建设<br />
小结<br />
思考题<br />
第7章&nbsp;软件测试工具简介<br />
7.1&nbsp;软件测试工具分类<br />
7.2&nbsp;目前市场上主流的测试工具<br />
7.3&nbsp;软件测试工具的利与弊<br />
7.4&nbsp;如何选择软件测试工具<br />
小结<br />
思考题<br />
思考题答案<br />
第二部分&nbsp;黑盒测试工具<br />
第1章&nbsp;LoadRunner&nbsp;8.0测试方法<br />
1.1&nbsp;LoadRunner&nbsp;简介<br />
1.2&nbsp;性能测试的主要术语<br />
1.3&nbsp;LoadRunner安装<br />
1.4&nbsp;LoadRunner的性能测试流程<br />
1.5&nbsp;LoadRunner的脚本录制<br />
1.6&nbsp;LoadRunner的场景设计<br />
1.7&nbsp;LoadRunner的场景监视<br />
1.8&nbsp;LoadRunner的结果分析<br />
小结<br />
思考题<br />
第2章&nbsp;TestDirector&nbsp;8.0测试方法<br />
2.1&nbsp;TestDirector简介<br />
2.2&nbsp;TestDirector&nbsp;8.0安装<br />
2.3&nbsp;TestDirector简单使用<br />
2.4&nbsp;TestDirector站点管理<br />
2.5&nbsp;TestDirector测试管理<br />
小结<br />
思考题<br />
第3章&nbsp;QTP&nbsp;8.2测试方法<br />
3.1&nbsp;QTP简介<br />
3.2&nbsp;QTP安装<br />
3.3&nbsp;QTP的简单使用<br />
3.4&nbsp;QTP的高级使用<br />
小结<br />
思考题<br />
思考题答案<br />
第三部分&nbsp;白盒测试工具<br />
第1章&nbsp;白盒测试技术简介<br />
1.1&nbsp;测试工具分类<br />
1.2&nbsp;白盒测试技术概述<br />
1.3&nbsp;边界值测试<br />
1.4&nbsp;逻辑驱动覆盖技术<br />
1.5&nbsp;循环语句测试<br />
1.6&nbsp;面向对象测试<br />
1.7&nbsp;单元测试的评估和总结<br />
小结<br />
思考题<br />
第2章&nbsp;BoundsChecker教程<br />
2.1&nbsp;内存管理的相关知识<br />
2.2&nbsp;内存相关编程举例<br />
2.3&nbsp;BoundsChecker简介<br />
2.4&nbsp;BoundsChecker的安装<br />
2.5&nbsp;BoundsChecker操作步骤<br />
小结<br />
思考题<br />
第3章&nbsp;C++&nbsp;Test&nbsp;2.2教程<br />
3.1&nbsp;C++&nbsp;Test简介<br />
3.2&nbsp;C++&nbsp;Test安装<br />
3.3&nbsp;C++&nbsp;Test图形界面介绍<br />
3.4&nbsp;C++&nbsp;Test静态分析<br />
3.5&nbsp;C++&nbsp;Test动态测试<br />
3.6&nbsp;C++&nbsp;Test常用设置<br />
小结<br />
思考题<br />
第4章&nbsp;Logiscope&nbsp;6.1教程<br />
4.1&nbsp;Logiscope简介<br />
4.2&nbsp;Logiscope&nbsp;6.1安装<br />
4.3&nbsp;代码评审模块Audit&nbsp;&nbsp;<br />
4.4&nbsp;编码规则模块RuleChecker&nbsp;&nbsp;<br />
4.5&nbsp;动态测试模块TestChecker&nbsp;&nbsp;<br />
小结<br />
思考题<br />
第5章&nbsp;JUnit&nbsp;3.8教程<br />
5.1&nbsp;JUnit简介<br />
5.2&nbsp;JDK&nbsp;与JUnit&nbsp;3.81的安装与配置<br />
5.3&nbsp;JUnit的简单使用<br />
5.4&nbsp;JUnit的高级使用<br />
小结<br />
思考题<br />
第6章&nbsp;JTest&nbsp;6.0教程<br />
6.1&nbsp;JTest简介<br />
6.2&nbsp;JTest安装<br />
6.3&nbsp;创建一个示例工程<br />
6.4&nbsp;使用JTest检查编码规范<br />
6.5&nbsp;使用JTest进行动态测试<br />
小结<br />
思考题<br />
思考题答案<br />
附录<br />
附录1&nbsp;常用软件测试术语说明及中英文对照<br />
附录2&nbsp;测试工程师面试、笔试时的常见问题<br />
附录3&nbsp;C／C++编码规范<br />
附录4&nbsp;Java编码规范<br />
附录5&nbsp;软件测试的网络资源</p>
<img src ="http://www.cnblogs.com/freeliver54/aggbug/1279374.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42132/" target="_blank">[新闻]Google 10周岁生日</a>]]></description></item><item><title>[引]VS帮助文档的 socket连接的Listen和Connect 及 Tcp连接的TcpListener和TcpClient</title><link>http://www.cnblogs.com/freeliver54/archive/2008/08/29/1279360.html</link><dc:creator>freeliver54</dc:creator><author>freeliver54</author><pubDate>Fri, 29 Aug 2008 04:30:00 GMT</pubDate><guid>http://www.cnblogs.com/freeliver54/archive/2008/08/29/1279360.html</guid><wfw:comment>http://www.cnblogs.com/freeliver54/comments/1279360.html</wfw:comment><comments>http://www.cnblogs.com/freeliver54/archive/2008/08/29/1279360.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/freeliver54/comments/commentRss/1279360.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/freeliver54/services/trackbacks/1279360.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt">using System;<br />
using System.Collections.Generic;<br />
using System.ComponentModel;<br />
using System.Data;<br />
using System.Drawing;<br />
using System.Text;<br />
using System.Windows.Forms;<br />
using System.IO;<br />
using System.Net;<br />
using System.Net.Sockets;<br />
using System.Text;</span></p>
<p><span style="font-size: 10pt">//socket listen<br />
private void btn_startlisten_Click(object sender, EventArgs e)<br />
{<br />
&nbsp;&nbsp;&nbsp; try<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // create the socket<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Socket listenSocket = new Socket(AddressFamily.InterNetwork,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SocketType.Stream,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProtocolType.Tcp);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // bind the listening socket to the port&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IPAddress hostIP = IPAddress.Parse("127.0.0.1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int port = 4567;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //IPAddress hostIP = (Dns.Resolve(IPAddress.Any.ToString())).AddressList[0];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IPEndPoint ep = new IPEndPoint(hostIP, port);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listenSocket.Bind(ep);</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // start listening<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int backlog = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listenSocket.Listen(backlog);</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (true)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (listenSocket.Poll(-1, SelectMode.SelectRead))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Socket mySocket = listenSocket.Accept();</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] bytes = new byte[256];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mySocket.Receive(bytes);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.txt_Msg.Text += string.Format(Encoding.UTF8.GetString(bytes) + "\r\n");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //MessageBox.Show(Encoding.UTF8.GetString(bytes));</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] msg = Encoding.UTF8.GetBytes("This is a test S-&gt;C" + DateTime.Now.ToString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mySocket.Send(msg);</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mySocket.Shutdown(SocketShutdown.Both);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mySocket.Close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //listenSocket.Close();<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; catch (Exception ex)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.txt_Msg.Text = ex.ToString();<br />
&nbsp;&nbsp;&nbsp; }<br />
}</span></p>
<p><span style="font-size: 10pt">//socket client<br />
private void button1_Click(object sender, EventArgs e)<br />
{<br />
&nbsp;&nbsp;&nbsp; try<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] msg = Encoding.UTF8.GetBytes("This is a test C-&gt;S"+DateTime.Now.ToString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] bytes = new byte[256];</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 4567));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Blocks until send returns.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i = s.Send(msg);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBox1.Text = string.Format("Sent {0} bytes.", i);</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get reply from the server.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i = s.Receive(bytes);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBox1.Text = string.Format(Encoding.UTF8.GetString(bytes));</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //释放资源<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s.Close();<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; catch (Exception ex)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBox1.Text = ex.ToString();<br />
&nbsp;&nbsp;&nbsp; }<br />
}</span></p>
<p><span style="font-size: 10pt">&nbsp;</span></p>
<p><span style="font-size: 10pt">//TcpListener <br />
private void button1_Click(object sender, EventArgs e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TcpListener server = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Set the TcpListener on port 13000.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Int32 port = 13000;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IPAddress localAddr = IPAddress.Parse("127.0.0.1");</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TcpListener server = new TcpListener(port);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server = new TcpListener(localAddr, port);</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Start listening for client requests.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server.Start();</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Buffer for reading data<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Byte[] bytes = new Byte[256];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String data = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int j = 0;//<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Enter the listening loop.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (j&lt;2)//true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j = j + 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Perform a blocking call to accept requests.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // You could also user server.AcceptSocket() here.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TcpClient client = server.AcceptTcpClient();</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data = null;</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get a stream object for reading and writing<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetworkStream stream = client.GetStream();</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i;</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Loop to receive all the data sent by the client.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Translate data bytes to a ASCII string.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBox1.Text += DateTime.Now.ToString() + " Received: " + data+"\r\n";</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Process the data sent by the client.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data = data.ToUpper() + DateTime.Now.ToString();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Send back a response.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stream.Write(msg, 0, msg.Length);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBox1.Text += " Sent back: " + data + "\r\n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Shutdown and end connection<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; client.Close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (SocketException ex)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBox1.Text = ex.ToString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; finally<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Stop listening for new clients.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server.Stop();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-size: 10pt">//TcpClient <br />
private void button1_Click(object sender, EventArgs e)<br />
{<br />
&nbsp;&nbsp;&nbsp; try<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Create a TcpClient.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Note, for this client to work you need to have a TcpServer <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // connected to the same address as specified by the server, port<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // combination.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string server = "127.0.0.1";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Int32 port = 13000;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TcpClient client = new TcpClient(server, port);</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string message = " test data c-&gt;s ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Translate the passed message into ASCII and store it as a Byte array.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Get a client stream for reading and writing.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp; Stream stream = client.GetStream();</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetworkStream stream = client.GetStream();</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Send the message to the connected TcpServer. <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stream.Write(data, 0, data.Length);</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBox1.Text += DateTime.Now.ToString() + "Sent:" + message + "\r\n";</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Receive the TcpServer.response.</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Buffer to store the response bytes.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data = new Byte[256];</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // String to store the response ASCII representation.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String responseData = String.Empty;</span></p>
<p><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Read the first batch of the TcpServer response bytes.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Int32 bytes = stream.Read(data, 0, data.Length);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBox1.Text += DateTime.Now.ToString() + "Received:" + responseData + "\r\n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Close everything.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stream.Close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; client.Close();<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; catch (ArgumentNullException ex)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBox1.Text = ex.ToString();<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; catch (SocketException ex)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBox1.Text = ex.ToString();<br />
&nbsp;&nbsp;&nbsp; }<br />
}</span></p>
<img src ="http://www.cnblogs.com/freeliver54/aggbug/1279360.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42132/" target="_blank">[新闻]Google 10周岁生日</a>]]></description></item><item><title>取得excel有效信息</title><link>http://www.cnblogs.com/freeliver54/archive/2008/08/23/1274652.html</link><dc:creator>freeliver54</dc:creator><author>freeliver54</author><pubDate>Sat, 23 Aug 2008 05:06:00 GMT</pubDate><guid>http://www.cnblogs.com/freeliver54/archive/2008/08/23/1274652.html</guid><wfw:comment>http://www.cnblogs.com/freeliver54/comments/1274652.html</wfw:comment><comments>http://www.cnblogs.com/freeliver54/archive/2008/08/23/1274652.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/freeliver54/comments/commentRss/1274652.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/freeliver54/services/trackbacks/1274652.html</trackback:ping><description><![CDATA[<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//0/加入<font face="Verdana">using Excel;</font>&nbsp; </font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string strFileName = "test.xls";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //1、判斷file this.Server.MapPath(strFileName)存在<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //2、取信息<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; object missing = System.Reflection.Missing.Value;</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ApplicationClass appc = new ApplicationClass();//lauch excel application</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (appc != null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //open excel file<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (appc.Application.Workbooks != null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Workbook wb = appc.Application.Workbooks.Open(this.Server.MapPath(strFileName), missin