<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title>恐龙志 - evolve the web!</title>
   <link rel="alternate" type="text/html" href="http://www.w3cool.com/" />
   <link rel="self" type="application/atom+xml" href="http://www.w3cool.com/atom.xml" />
   <id>tag:www.w3cool.com,2009://1</id>
   <updated>2009-12-15T04:40:11Z</updated>
   <subtitle>The Place where deploy our Ideas and Paranoeas!</subtitle>
   <generator uri="http://www.sixapart.com/movabletype/">Movable Type Open Source 4.31-zh-cn</generator>


<entry>
   <title>&quot;说说&quot;SaySo收费版本</title>
   <link rel="alternate" type="text/html" href="http://www.w3cool.com/2009/10/12/sayso_1.html" />
   <id>tag:www.w3cool.com,2009://1.186</id>
   
   <published>2009-10-12T08:28:07Z</published>
   <updated>2009-12-15T04:40:11Z</updated>
   
   <summary><![CDATA[关于很多用户希望获得更好服务的问题，在这里统一做回答，收费版本有单独的服务器组。 &nbsp;有两种方式： 一种方式是购买服务，即还是以嵌入代码的方式，即时提交及时合成，不排队，保证硬件及带宽，按年收费，按域名授权： 1、alexa排名10...]]></summary>
   <author>
      <name>大恐龙</name>
      <uri>http://www.w3cool.com</uri>
   </author>
   
      <category term="说说|SaySo" scheme="http://www.sixapart.com/ns/types#category" />
   
      <category term="项目|Projects" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="129" label="SaySo" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="127" label="说说" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="zh-cn" xml:base="http://www.w3cool.com/">
      <![CDATA[<p>关于很多用户希望获得更好服务的问题，在这里统一做回答，收费版本有单独的服务器组。</p>
<p>&nbsp;有两种方式：</p>
<p>一种方式是购买服务，即还是以嵌入代码的方式，即时提交及时合成，不排队，保证硬件及带宽，按<span style="color: #000080"><b>年</b></span>收费，按域名授权：</p>
<p>1、alexa排名100万外1500元 (每年)； <br />
2、alexa排名100万-50万以内的2500元 (每年)； <br />
3、alexa排名50万内50万以内的3500元 (每年)；<br />
4、alexa排名30万以内的4500 (每年)；<br />
5、alexa排名10万以内7500 (每年)；<br />
6、alexa排名5万以内9500 (每年)；<br />
7、alexa排名1万以内的高流量网单独洽谈。<br />
<b><span style="color: #ff0000">*</span></b><span style="color: #ff0000"> </span>1500元定制播放器。</p>
<p>二是购买软件，按CPU授权，需要打开CPUID功能。<br />
单机版本25000元/CPU(超线程及多核CPU按物理个数计算)，包3次安装，免费定制播放器一次。</p>
<p>如需要请联系销售代表： <span style="color: #ff0000; font-size: 18px"><b>QQ：909990866 Mail：<a href="mailto:909990866@qq.com">909990866@qq.com</a></b></span></p>
<p>&nbsp;</p>]]>
      
   </content>
</entry>

<entry>
   <title>Linux命令备忘-sh</title>
   <link rel="alternate" type="text/html" href="http://www.w3cool.com/2009/10/07/linux-sh.html" />
   <id>tag:www.w3cool.com,2009://1.185</id>
   
   <published>2009-10-07T13:55:00Z</published>
   <updated>2009-10-07T14:01:00Z</updated>
   
   <summary><![CDATA[du的英文原义为&ldquo;disk usage&rdquo;，含义为显示磁盘空间的使用情况。&nbsp;功能：统计目录（或文件）所占磁盘空间的大小。&nbsp;语法：du [选项] [Names&hellip;]&nbsp;说明：该命令...]]></summary>
   <author>
      <name>大恐龙</name>
      <uri>http://www.w3cool.com</uri>
   </author>
   
      <category term="Linux/UNIX/BSD" scheme="http://www.sixapart.com/ns/types#category" />
   
      <category term="系统|System" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="47" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="zh-cn" xml:base="http://www.w3cool.com/">
      <![CDATA[<p>du的英文原义为&ldquo;disk usage&rdquo;，含义为显示磁盘空间的使用情况。&nbsp;</p><p>功能：统计目录（或文件）所占磁盘空间的大小。&nbsp;</p><p>语法：du [选项] [Names&hellip;]&nbsp;</p><p>说明：该命令逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块（1024字节）的情况。若没有给出Names，则对当前目录进行统计。&nbsp;</p><p>该命令的各个选项含义如下：&nbsp;</p><p>-s 对每个Names参数只给出占用的数据块总数。<br />-a 递归地显示指定目录中各文件及子孙目录中各文件占用的数据块数。若既不指定-s，也不指定-a，则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。<br />-b 以字节为单位列出磁盘空间使用情况（系统缺省以k字节为单位）。&nbsp; <br />-k 以1024字节为单位列出磁盘空间使用情况。&nbsp; <br />-c 最后再加上一个总计（系统缺省设置）。&nbsp; <br />-l 计算所有的文件大小，对硬链接文件，则计算多次。&nbsp; <br />-x 跳过在不同文件系统上的目录不予统计。&nbsp;</p><p>下面举例说明du命令的使用：&nbsp;</p><p>　&nbsp;</p><p>例1：查看/mnt目录占用磁盘空间的情况。 $ cd /mnt $ ls -lFR total 10 -rwxrwxrwx 2 root root ll0 Ju1 3l 00:33 aa*&nbsp;</p><p>drwxr-xr-x 2 root root l024 Ju1 20 14:16 dev/<br />-rw-r--r-- 1 root root 6229 Aug 2 0l:39 s1ack<br />drwxrwxrwx 2 root root 1024 Aug 2 02:09 var/<br />1rwxrwxrwx 1 root root l0 Aug 2 0l:51 wei-&gt;/home/wei/</p><p>dev:&nbsp;</p><p>tota1 0&nbsp;</p><p>lrwxrwxrwx 1 root root 8 Ju1 20 l4:l6 cdrom-&gt;/dev/hdb&nbsp;</p><p>var:&nbsp;</p><p>tata1 37&nbsp;</p><p>-r-xr-xr-x l root root 36064 Aug 2 02:09 rawrite. exe*　&nbsp;</p><p>例2：列出各目录所占的磁盘空间，但不详细列出每个文件所占的空间。&nbsp;</p><p>$ du&nbsp;</p><p>l ./dev&nbsp;</p><p>38 ./var&nbsp;</p><p>48 .&nbsp;</p><p>输出清单中的第一列是以块为单位计的磁盘空间容量，第二列列出目录中使用这些空间的目录名称。&nbsp;</p><p>注意不带选项的du命令将从当前目录开始沿着目录结构向下工作直到列出所有目录的容量为止。这可能是一个很长的清单，有时只需要一个总数。这时可在du命令中加-s选项来取得总数：&nbsp;</p><p>$ du &ndash;s /mnt&nbsp;</p><p>/mnt&nbsp;</p><p>　&nbsp;</p><p>例3：列出所有文件和目录所占的空间（使用a选项），而且以字节为单位（使用b选项）来计算大小。&nbsp;</p><p>$ du -ab<br />8 ./dev/cdrom</p><p>l032 ./dev<br />36064 ./var/rawrite. exe<br />37088 ./var<br />6229 ./s1ack<br />1l0 ./aa<br />l0 ./wei&nbsp;</p><p>45493 .</p><p><br />du的英文原义为&ldquo;disk usage&rdquo;，含义为显示磁盘空间的使用情况。&nbsp;</p><p>功能：统计目录（或文件）所占磁盘空间的大小。&nbsp;</p><p>语法：du [选项] [Names&hellip;]&nbsp;</p><p>说明：该命令逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块（1024字节）的情况。若没有给出Names，则对当前目录进行统计。&nbsp;</p><p>该命令的各个选项含义如下：&nbsp;</p><p>-s 对每个Names参数只给出占用的数据块总数。&nbsp; <br />-a 递归地显示指定目录中各文件及子孙目录中各文件占用的数据块数。若既不指定-s，也不指定-a，则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。&nbsp; <br />-b 以字节为单位列出磁盘空间使用情况（系统缺省以k字节为单位）。&nbsp; <br />-k 以1024字节为单位列出磁盘空间使用情况。&nbsp; <br />-c 最后再加上一个总计（系统缺省设置）。&nbsp; <br />-l 计算所有的文件大小，对硬链接文件，则计算多次。&nbsp; <br />-x 跳过在不同文件系统上的目录不予统计。&nbsp; <br />-h, --human-readable<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print sizes in human readable format (e.g., 1K 234M 2G)<br />下面举例说明du命令的使用：&nbsp;</p><p>　&nbsp;</p><p>例1：查看/mnt目录占用磁盘空间的情况。 $ cd /mnt $ ls -lFR total 10 -rwxrwxrwx 2 root root ll0 Ju1 3l 00:33 aa*&nbsp;</p><p>drwxr-xr-x 2 root root l024 Ju1 20 14:16 dev/&nbsp; <br />-rw-r--r-- 1 root root 6229 Aug 2 0l:39 s1ack&nbsp; <br />wxrwx 2 root root 1024 Aug 2 02:09 var/&nbsp; <br />1rwxrwxrwx 1 root root l0 Aug 2 0l:51 wei-&gt;/home/wei/&nbsp;</p><p>dev:&nbsp; <br />tota1 0&nbsp; <br />lrwxrwxrwx 1 root root 8 Ju1 20 l4:l6 cdrom-&gt;/dev/hdb&nbsp;</p><p>var:&nbsp; <br />tata1 37&nbsp; <br />-r-xr-xr-x l root root 36064 Aug 2 02:09 rawrite. exe*&nbsp;</p><p>例2：列出各目录所占的磁盘空间，但不详细列出每个文件所占的空间。&nbsp;</p><p>$ du<br />l ./dev<br />38 ./var<br />48 .&nbsp;</p><p>输出清单中的第一列是以块为单位计的磁盘空间容量，第二列列出目录中使用这些空间的目录名称。&nbsp;</p><p>注意不带选项的du命令将从当前目录开始沿着目录结构向下工作直到列出所有目录的容量为止。这可能是一个很长的清单，有时只需要一个总数。这时可在du命令中加-s选项来取得总数：&nbsp;</p><p>$ du &ndash;s /mnt<br />/mnt&nbsp;</p><p>例3：列出所有文件和目录所占的空间（使用a选项），而且以字节为单位（使用b选项）来计算大小。&nbsp;</p><p>$ du -ab&nbsp;</p><p>8 ./dev/cdrom&nbsp;</p><p>l032 ./dev<br />36064 ./var/rawrite. exe<br />37088 ./var<br />6229 ./s1ack<br />1l0 ./aa<br />l0 ./wei&nbsp;</p><p>&nbsp;</p>]]>
      
   </content>
</entry>

<entry>
   <title>关于&quot;童心&quot;</title>
   <link rel="alternate" type="text/html" href="http://www.w3cool.com/2009/09/26/post_17.html" />
   <id>tag:www.w3cool.com,2009://1.184</id>
   
   <published>2009-09-26T12:30:33Z</published>
   <updated>2009-09-26T13:15:07Z</updated>
   
   <summary><![CDATA[在古登堡计划的网站上发现一本书, 吕坤的《呻吟语》，一本很有意思的书，读文言文的书感觉很复杂，内容其实极其丰富，但言语精炼，篇幅短，读懂读透难，就像吃小锤牛肉，急难下咽，但是却是一种无法抗拒的原始清冽的香醇。&nbsp;&nbsp;&nbs...]]></summary>
   <author>
      <name>大恐龙</name>
      <uri>http://www.w3cool.com</uri>
   </author>
   
      <category term="随笔|Essay" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="zh-cn" xml:base="http://www.w3cool.com/">
      <![CDATA[<p>在古登堡计划的网站上发现一本书, 吕坤的《呻吟语》，一本很有意思的书，读文言文的书感觉很复杂，内容其实极其丰富，但言语精炼，篇幅短，读懂读透难，就像吃小锤牛肉，急难下咽，但是却是一种无法抗拒的原始清冽的香醇。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;突然发现一句很有意思的话:</p><p>動時只見發揮不盡，那裡覺錯？故君子主靜而慎動。主靜，則動者靜之枝葉也；慎<br />動，則動者靜之約束也。又何過焉？</p><p><span style="color: #ff0000">　　童心最是作人一大病，只脫了童心，便是大人君子。或問之，曰：「凡炎熱念、驕<br />矜念、華美念、欲速念、浮薄念、聲名念，皆童心也。」</span></p><p>　　吾輩終日念頭離不了四個字，曰「得失毀譽」。其為善也，先動個得與譽底念頭；<br />其不敢為惡也，先動個失與毀底念頭。總是欲心偽心，與聖人天地懸隔。聖人發出善念<br />，如饑者之必食，渴者之必飲。其必不為不善，如烈火之不入，深淵之不投，任其自然<br />而已。賢人念頭只認個可否，理所當為........</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 童心居然做如此解释：趋炎附势、骄傲矜夸、侈华、浮躁、浅薄、虚荣。但仔细想来，这不就是未受教导的童心想法，和小伙伴拉帮结派，谈论父母，攀比，可见夫子说的并不为过，儿童之心不经教导便是如此，儿童出生伊始，未经教化，自然如动物般，自然有这些兽心。但是经父母授之于文明，教之于经典，言传身教使儿童懂道理，明大义，而后&ldquo;<font color="#ff0000">便是大人君子</font>&rdquo;。这也许就是人区别于动物的根本原因。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如今这些词被犬儒主义者们演绎成&ldquo;成熟&rdquo;，与其说是人心不古，倒不如说是童心不古，想起《动物庄园》里的一句话： 我看了半天，也不知道谁是猪，谁是人.......</p><p>《呻吟语》附上（<a href="http://www.w3cool.com/2009/09/26/25558-0.txt">25558-0.txt</a>），希望与知音共勉</p>]]>
      
   </content>
</entry>

<entry>
   <title>OpenX统计报表的乱码问题</title>
   <link rel="alternate" type="text/html" href="http://www.w3cool.com/2009/09/24/openx.html" />
   <id>tag:www.w3cool.com,2009://1.183</id>
   
   <published>2009-09-24T08:30:19Z</published>
   <updated>2009-09-24T08:50:13Z</updated>
   
   <summary>广告 php</summary>
   <author>
      <name>大恐龙</name>
      <uri>http://www.w3cool.com</uri>
   </author>
   
      <category term="CGI/PHP/Perl" scheme="http://www.sixapart.com/ns/types#category" />
   
      <category term="编程|Coding" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="170" label="广告 php" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="zh-cn" xml:base="http://www.w3cool.com/">
      <![CDATA[<p>我使用的版本是<strong>openx-2.8.1</strong>。在导出excel表格时遇到乱码，原来其实很简单,就是php字符串编码问题，iconv一下就行：</p><p>1、文件名：lib/pear/Spreadsheet/Excel/Writer.php文件的function send($filename)函数，第67行加上$filename = iconv(&quot;utf-8&quot;, &quot;gb2312&quot;, $filename);文件名由<font color="#ff0000">xxxxxxxx.</font><font color="#000000">变成</font><font color="#ff0000">广告分析报告&nbsp;xxx&nbsp;From Beginning 到 27-03-2009.xls。</font></p><p><font color="#000000">2、excel文件内容：lib/pear/Spreadsheet/Excel/Writer/Worksheet.php文件的Writerfunction write($row, $col, $token, $format = 0)函数，第1166行替换为</font><font color="#ff0000">return $this-&gt;writeString($row, $col, iconv(&quot;utf-8&quot;, &quot;gb2312&quot;, $token), $format);</font></p><p><font color="#000000">3、工作表名称：lib/pear/Spreadsheet/Excel/Writer/Workbook.php文件的function &amp;addWorksheet($name = '')函数，第318行加上</font><font color="#ff0000">$name = iconv(&quot;utf-8&quot;, &quot;gb2312&quot;, $name);</font></p>]]>
      
   </content>
</entry>

<entry>
   <title>关于SElinux和mysql</title>
   <link rel="alternate" type="text/html" href="http://www.w3cool.com/2009/07/31/selinuxmysql.html" />
   <id>tag:www.w3cool.com,2009://1.182</id>
   
   <published>2009-07-31T14:12:34Z</published>
   <updated>2009-09-16T09:31:26Z</updated>
   
   <summary>linux</summary>
   <author>
      <name>大恐龙</name>
      <uri>http://www.w3cool.com</uri>
   </author>
   
      <category term="Linux/UNIX/BSD" scheme="http://www.sixapart.com/ns/types#category" />
   
      <category term="MySQL" scheme="http://www.sixapart.com/ns/types#category" />
   
      <category term="数据库|DataBase" scheme="http://www.sixapart.com/ns/types#category" />
   
      <category term="系统|System" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="47" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="zh-cn" xml:base="http://www.w3cool.com/">
      <![CDATA[<p>一直不太喜欢SElinux,但是他确实能让系统更安全，今天安装mysql，以前修改配置就要禁用Selinux,这次准备尝试配置而不是简单禁用。</p><p>发现label和namespace配置确实复杂，仔细读man,发现一个简单的工具：</p><p>setsebool -P mysqld_disable_trans=1</p><p>就可以，实际就是对mysql禁用mysql,大家可以看这里<a href="http://linux.die.net/man/8/setsebool">http://linux.die.net/man/8/setsebool</a></p><p>&nbsp;</p>]]>
      
   </content>
</entry>

<entry>
   <title>&quot;马克思&quot;对经济危机的精确预言</title>
   <link rel="alternate" type="text/html" href="http://www.w3cool.com/2009/03/04/post_16.html" />
   <id>tag:www.w3cool.com,2009://1.181</id>
   
   <published>2009-03-04T08:19:28Z</published>
   <updated>2009-05-26T04:04:39Z</updated>
   
   <summary>是目前很流行的一句话，但是恐龙我自幼通读《资本论》，根本没有发现这句话。很是诡异，经过一番鉴定后，原来是奥巴马就职时一个示威的老太太的给奥巴马的小纸条。流言澄清，本次马克思事件说明个真理，第一大家对经济危机真的很恼火，虽然还被称为金融风暴。第二真理是发自人民需要的，人民需要老马同志站出来，发个言，老马就站出来。很好很好，这两点都是值得庆贺的。</summary>
   <author>
      <name>大恐龙</name>
      <uri>http://www.w3cool.com</uri>
   </author>
   
      <category term="随笔|Essay" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="168" label="马克思" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="zh-cn" xml:base="http://www.w3cool.com/">
      <![CDATA[<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a onclick="window.open('http://www.w3cool.com\assets_c\2009\05\karl_marx.html','popup','width=480,height=563,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://www.w3cool.com\assets_c\2009\05\karl_marx.html"><img width="180" height="211" alt="karl_marx.jpg" class="mt-image-left" style="float: left; margin: 0 20px 20px 0;" src="http://www.w3cool.com/assets_c/2009/05/karl_marx-thumb-180x211.jpg" /></a></span><p>&quot;Owners&nbsp; of&nbsp; capital&nbsp; will&nbsp; stimulate&nbsp; the&nbsp; working&nbsp; class&nbsp; to&nbsp; buy&nbsp; more&nbsp; and&nbsp; more&nbsp; of&nbsp; expensive&nbsp; goods,&nbsp; houses&nbsp; and&nbsp; technology,&nbsp; pushing&nbsp; them&nbsp; to&nbsp; take&nbsp; more&nbsp; and&nbsp; more&nbsp; expensive&nbsp; credits,&nbsp; until&nbsp; their&nbsp; debt&nbsp; becomes&nbsp; unbearable.&nbsp; The&nbsp; unpaid&nbsp; debt&nbsp; will&nbsp; lead&nbsp; to&nbsp; bankruptcy&nbsp; of&nbsp; banks,&nbsp; which&nbsp; will&nbsp; have&nbsp; to&nbsp; be&nbsp; nationalised&nbsp; and&nbsp; the&nbsp; State&nbsp; will&nbsp; have&nbsp; to&nbsp; take&nbsp; the&nbsp; road&nbsp; which&nbsp; will&nbsp; eventually&nbsp; lead&nbsp; to&nbsp; Communism.&quot;&nbsp; <br />Karl&nbsp; Marx&nbsp; Das&nbsp; Kapital&nbsp; 1867&nbsp;</p><p>&nbsp;&ldquo;资本家希望工人阶级大量借贷消费越来越贵的商品、房屋和新技术享用，这将促使他们背负越来越大的债务，直到这些债务大到所有银行破产，政府将私有银行进行国有化，从而最终走向共产主义之路。&rdquo;卡尔马克思，《资本论》1867年。</p><p>是目前很流行的一句话，但是恐龙我自幼通读《资本论》，<span style="color: rgb(255, 0, 0); ">根本没有发现这句话</span>。很是诡异，经过一番鉴定后，原来是奥巴马就职时一个示威的老太太的给奥巴马的小纸条。流言澄清，本次马克思事件说明个真理，第一大家对经济危机真的很恼火，虽然还被称为金融风暴。第二真理是发自人民需要的，人民需要老马同志站出来，发个言，老马就站出来。很好很好，这两点都是值得庆贺的。</p><p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a onclick="window.open('http://www.w3cool.com\assets_c\2009\05\2873634346_ae80b5298f_b.html','popup','width=682,height=1024,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://www.w3cool.com\assets_c\2009\05\2873634346_ae80b5298f_b.html"><img width="682" height="1024" alt="2873634346_ae80b5298f_b.jpg" class="mt-image-none" style="" src="http://www.w3cool.com/assets_c/2009/05/2873634346_ae80b5298f_b-thumb-682x1024.jpg" /></a></span></p><p>马公千古。</p>]]>
      
   </content>
</entry>

<entry>
   <title>关于LINQ，SqlDataReader， DataSet 以及LINQ Compiled Queries的性能对比</title>
   <link rel="alternate" type="text/html" href="http://www.w3cool.com/2009/02/09/linqsqldatareader_dataset_linq_compiled_queries.html" />
   <id>tag:www.w3cool.com,2009://1.180</id>
   
   <published>2009-02-08T21:18:36Z</published>
   <updated>2009-02-08T21:50:41Z</updated>
   
   <summary>关于LINQ，SqlDataReader， DataSet 以及LINQ Compiled Queries的性能对比</summary>
   <author>
      <name>大恐龙</name>
      <uri>http://www.w3cool.com</uri>
   </author>
   
      <category term="开发日志|Log" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="158" label="asp.net" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="108" label="C#" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="zh-cn" xml:base="http://www.w3cool.com/">
      <![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 开发web程序，性能为王，web应用就是要使用最简单的方法，最廉价的应用实现密集的计算，最近在用asp.net mvc写一个帖吧程序，喜欢mvc的不是为了别的，URL比较好看，终于可以像struts一样实现： <span style="color: #ff0000"><b>http://doamin/board-11-page-1-0</b></span>&nbsp;这样比较漂亮的URL了。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 遇到Linq,一直都对这样东西不以为然，当年就及其唾弃hibernate这样的架构，可能开发一般的企业应用可能比较适合，但是肯定不适合web,还不如用JDBC+类似JCS的key value缓存，主要是为了满足部分知识面窄的程序员搭车的需要。不过遇到了Linq不得不研究一下，因为不调查就没有发言权，试着做了几个demo，发现比asp.net MVC还是好很多的，写model比较顺手，Controller的编写也比较符合个人喜好。Html.Action和Struts里很像，很神奇的是URL的匹配模式可以自动转换，让匹配不到RouteMap规则的时候会自动变成?board=11&amp;page=1，这个喜欢。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用.net的原应就是.net的运行效率高java太多，一台windows的承受负荷比linux+jsp要高很多，在上一篇文章《.<a href="http://www.w3cool.com/2008/08/29/net.html">net的运行效率问题</a>》讨论过。当然开发团队的素质还是决定性的，再好的架构都可能被写成焦油坑式的程序。看到一篇文章，对linq等几种数据访问的性能进行了对比:</p><p><a href="http://www.devtoolshed.com/node/12">Performance benchmarks for LINQ vs. SqlDataReader, DataSet - LINQ Compiled Queries: Part 2</a></p><p>我们这里只看数据，争论没用，用benchmark说话：</p><pre>
******************************<br />Run : 1<br />SQL Data Reader: 1,582 ms<br />LINQ to SQL: 6,045 ms<br />Strongly Typed DataSet: 2,785 ms<br />LINQ to SQL Compiled: 2,472 ms<br />&nbsp;<br />******************************<br />Run : 2<br /><br />SQL Data Reader: 1,556 ms<br />LINQ to SQL: 5,855 ms<br />Strongly Typed DataSet: 2,696 ms<br />LINQ to SQL Compiled: 2,432 ms<br />&nbsp;<br />******************************<br />Run : 3<br /><br />SQL Data Reader: 1,553 ms<br />LINQ to SQL: 5,859 ms<br />Strongly Typed DataSet: 2,730 ms<br />LINQ to SQL Compiled: 2,418 ms<br />&nbsp;<br />-------------------------------------------------------------------<br />Data Access Type&nbsp;&nbsp;&nbsp; Run 1&nbsp;&nbsp;&nbsp; Run 2&nbsp;&nbsp;&nbsp; Run 3&nbsp;&nbsp;&nbsp; Average<br /><br />SQL Data Reader&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1,582&nbsp;&nbsp;&nbsp; 1,556&nbsp;&nbsp;&nbsp; 1,553&nbsp;&nbsp;&nbsp; 1,563<br />LINQ to SQL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6,045&nbsp;&nbsp;&nbsp; 5,855&nbsp;&nbsp;&nbsp; 5,859&nbsp;&nbsp;&nbsp; 5,919<br />Strongly Typed DataSet&nbsp;&nbsp;&nbsp; 2,785&nbsp;&nbsp;&nbsp; 2,696&nbsp;&nbsp;&nbsp; 2,730&nbsp;&nbsp;&nbsp; 2,737<br />LINQ to SQL Compiled&nbsp;&nbsp;&nbsp; 2,472&nbsp;&nbsp;&nbsp; 2,432&nbsp;&nbsp;&nbsp; 2,418&nbsp;&nbsp;&nbsp; 2,440<br />&nbsp;<br />-------------------------------------------------------------------<br />SQL Data Reader Breakdown<br /><br />378.69% faster than LINQ to SQL<br />175.11% faster than Strongly Typed DataSet<br />156.11% faster than LINQ to SQL Compiled<br />&nbsp;<br />-------------------------------------------------------------------<br />LINQ to SQL Breakdown<br />378.69% slower than SQL Data Reader<br />216.26% slower than Strongly Typed DataSet<br />242.58% slower than LINQ to SQL Compiled<br />&nbsp;<br />-------------------------------------------------------------------<br />Strongly Typed DataSet Breakdown<br />175.11% slower than SQL Data Reader<br />216.26% faster than LINQ to SQL<br />112.17% slower than LINQ to SQL Compiled<br />&nbsp;<br />-------------------------------------------------------------------<br />LINQ to SQL Compiled Breakdown<br />156.11% slower than SQL Data Reader<br />242.58% faster than LINQ to SQL<br />112.17% faster than Strongly Typed DataSet<br /></pre><p>比较起来，Data Reader还是最高效的，DataSet次之， LINQ to SQL Compiled还行，LINQ就不要用了。</p><p>再次证明了程序越干净越好。</p>]]>
      
   </content>
</entry>

<entry>
   <title>Linux命令备忘-in cp mv rm</title>
   <link rel="alternate" type="text/html" href="http://www.w3cool.com/2008/12/27/linux-cheatsheet.html" />
   <id>tag:www.w3cool.com,2008://1.176</id>
   
   <published>2008-12-26T16:36:46Z</published>
   <updated>2009-10-07T13:54:27Z</updated>
   
   <summary>Linux命令备忘</summary>
   <author>
      <name>大恐龙</name>
      <uri>http://www.w3cool.com</uri>
   </author>
   
      <category term="Linux/UNIX/BSD" scheme="http://www.sixapart.com/ns/types#category" />
   
      <category term="系统|System" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="47" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="zh-cn" xml:base="http://www.w3cool.com/">
      <![CDATA[<p><b>ln 命令</b><br />用途：链接文件<br />语法：将某个文件链接到一个文件上<br />ln [ -f | -n] [ -s ] SourceFile [ TargetFile ]<br />将一个或多个文件链接到一个目录上<br />ln [ -f | -n] [ -s ] SourceFile ... TargetDirectory<br />描述：<br />ln 命令将在 SourceFile 参数中指定地文件链接到在 TargetFile 参数中指定地文件，或将其链接到在 TargetDirectory 参数中指定地另一个目录中地文件。在缺省情况下，ln 命令会创建硬链接。如果需要运用 ln 命令来创建符号链接，请指明 -s 标志。<br />符号链接是指向文件地一个间接指针；它地目录项中包含了它所链接地文件名。符号链接可能会跨越文件系统，可能指向目录。<br />&nbsp;标志<br />-f 促使 ln 命令替换掉任何已经存在地目地路径。如果目地路径已经存在，而没有指定 -f 标志，ln 命令不会创建新地链接，而是向标准错误写一条诊断消息并继续链接剩下地 SourceFiles。 <br />-n 指定，如果链接是一个现有地文件，那么不要覆盖文件地内容。 -f 标志重设了这个标志。这是缺省地行为。 <br />-s 促使 ln 命令创建符号链接。符号链接中包含了它所链接地文件地名字。当对链接执行打开操作地时候，会运用到引用文件。对符号链接地 stat 调用会返回链接地目标文件；必须完成lstat 调用来获取链接地信息。可以运用 readlink 调用来读取符号链接地内容。符号链接可能跨越文件系统，指向目录。 <br />注意：当为 -s 标志指定 SourceFile 参数地时候，必须运用绝对路径。如果没有指明绝对路径，那么当 SourceFile 和 TargetFile 参数位于不同地目录中地时候，可能会发生意外地结果。在创建符号链接原先，不需要存在源文件。 <br /><br />退出状态<br />此命令返回以下地退出值：<br />0 所有指定地文件都成功链接上了。 <br />&gt;0 出现一次错误。&nbsp;</p><p><b>cp 命令</b><br />使用权限：所有使用者 <br />使用方式： <br />cp [options] source dest <br />cp [options] source... directory <br />说明：将一个档案拷贝至另一档案，或将数个档案拷贝至另一目录。 <br />把计 <br />-a 尽可能将档案状态、权限等资料都照原状予以复制。 <br />-r 若 source 中含有目录名，则将目录下之档案亦皆依序拷贝至目的地。 <br />-f 若目的地已经有相同档名的档案存在，则在复制前先予以删除再行复制。 <br />范例： <br />将档案 aaa 复制(已存在)，并命名为 bbb : <br />cp aaa bbb <br />将所有的C语言程式拷贝至 Finished 子目录中 : <br />cp *.c Finished<br /><br />&nbsp;</p>]]>
      
   </content>
</entry>

<entry>
   <title>ASP.NET MVC的WebSite模式（with mvc membership）</title>
   <link rel="alternate" type="text/html" href="http://www.w3cool.com/2008/12/05/aspnet_mvcwebsitewith_mvc_membership.html" />
   <id>tag:www.w3cool.com,2008://1.175</id>
   
   <published>2008-12-05T13:04:46Z</published>
   <updated>2008-12-05T13:23:39Z</updated>
   
   <summary>asp.net,mvc,membership</summary>
   <author>
      <name>大恐龙</name>
      <uri>http://www.w3cool.com</uri>
   </author>
   
      <category term=".Net Framework" scheme="http://www.sixapart.com/ns/types#category" />
   
      <category term="编程|Coding" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="158" label="asp.net" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="162" label="membership" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="163" label="mvc" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="zh-cn" xml:base="http://www.w3cool.com/">
      <![CDATA[<p>&nbsp;&nbsp; 一直极其讨厌web application,感觉不干净，不符合个人喜好完美纯净的代码的癖好，再加上不是单页程序集，性能也大打折扣。所以这次在决定用asp.net MVC写这个网站的时候花了一点时间移到Web site模式下面来。</p><p>&nbsp;&nbsp;&nbsp;&nbsp; 其实不是很麻烦，修改Web Site的web.config文件，在&lt;httpHandlers&gt;处添加MvcHttpHandler，在&lt;httpModules&gt;处添加UrlRoutingModule。IIS7可以配置一下WebServer，和web application模式下的webconfig一样。所有的CodeBehind都修改为CodeFile，Global.asax要删除重建一下，因为web site网站模式下结构并不一样，把原来那个RegisterRoutes方法拷贝进去即可。然后拷贝Content和Views两个文件夹复制到Web Site的根目录下，把Controllers和Models两个文件夹复制到Web Site的App_code文件夹下。或者另外再建一个工程也可以。</p><p>&nbsp;&nbsp;&nbsp;&nbsp; 然后就是集成了一下codeplex上的asp.net mvc membership. 有了一个简单的用户管理界面，管理员用户asministrator 密码<b>n2!1jLR8bL]{1:&nbsp; </b><b>。</b></p><p><b><img class="mt-image-center" style="display: block; margin: 0px auto 20px; text-align: center" height="527" alt="aaaaa.jpg" width="815" src="http://www.w3cool.com/2008/12/05/aaaaa.jpg" /></b></p><p><b>&nbsp;&nbsp;&nbsp; 下载这个压缩文件，添加到你的解决方案即可。</b></p><p><a href="http://www.w3cool.com/2008/12/05/mvcmenbership.website.www.rar">mvcmenbership.website.www.rar</a>&nbsp;&nbsp;<br />&nbsp;</p>]]>
      
   </content>
</entry>

<entry>
   <title>一种新的制作面条的方法(非煮食)</title>
   <link rel="alternate" type="text/html" href="http://www.w3cool.com/2008/09/12/noodle.html" />
   <id>tag:www.w3cool.com,2008://1.168</id>
   
   <published>2008-09-11T18:01:28Z</published>
   <updated>2008-09-12T07:35:21Z</updated>
   
   <summary>面条</summary>
   <author>
      <name>大恐龙</name>
      <uri>http://www.w3cool.com</uri>
   </author>
   
      <category term="随笔|Essay" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="zh-cn" xml:base="http://www.w3cool.com/">
      <![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>原料</b>：挂面，番茄，大蒜，香肠</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先加油，烧至7成热，大蒜和香肠爆香，番茄切块下锅，翻炒，将番茄炒至糊状，改小火。加挂面，也就是这样:</p><p><a href="http://www.w3cool.com/WindowsLiveWriter/30b8c49f75ee_223A/09092008122_2.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="396" alt="09092008122" width="527" border="0" src="http://www.w3cool.com/WindowsLiveWriter/30b8c49f75ee_223A/09092008122_thumb.jpg" /></a></p><p>小火焖煮10分钟，注意，一滴水也不要加，将面和下面的酱汁一起炒一下起锅。这样节约煤气，省水，省时，味道非常好，接近意大利面。</p><p>经同事建议，起名为：</p><h4><span style="color: #ff0000">番茄闷烧面</span></h4>]]>
      
   </content>
</entry>

<entry>
   <title>一种更高效率的ISAPI整合IIS与Tomcat_JSP的方式(非jk)</title>
   <link rel="alternate" type="text/html" href="http://www.w3cool.com/2008/09/09/isapi_iis_jsp_jk_tomcat.html" />
   <id>tag:www.w3cool.com,2008://1.166</id>
   
   <published>2008-09-09T09:34:06Z</published>
   <updated>2008-09-23T07:33:05Z</updated>
   
   <summary>iis, java, jk, tomcat</summary>
   <author>
      <name>大恐龙</name>
      <uri>http://www.w3cool.com</uri>
   </author>
   
      <category term=".Net Framework" scheme="http://www.sixapart.com/ns/types#category" />
   
      <category term="Java/JSP" scheme="http://www.sixapart.com/ns/types#category" />
   
      <category term="系统|System" scheme="http://www.sixapart.com/ns/types#category" />
   
      <category term="项目|Projects" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="92" label="iis" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="160" label="java" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="161" label="jk" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="134" label="tomcat" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="zh-cn" xml:base="http://www.w3cool.com/">
      <![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天发现一种极好的整合IIS和JSP的方法，毫无疑问java在windows下运行比在linux运行效率要高(大约4%)，同比IIS比Apache的IO能力强，在不考虑了lisence的问题下，笔者一直在考虑在windows下部署java的生产环境，尽管笔者的很大程度的工作是管理的维护linux服务器，但是发现很多时候windows还是最好的选择，当然是在得到一样优秀的维护和管理的前提下，一直以来很头疼的就是Tomcat和IIS的整合，在windows下肯定不会考虑使用apache，apache在windows下的表现太差了。笔者使用了2个月时间仔细研读和修改apache 2.29版的windows版源代码(哈哈，不专业了apache的源代码是可移植C++不分版本)试图优化apache的IO。 最终不得不放弃，Apache的构架上不如IIS,在windows上表现始终不如意，所以还是考虑用IIS整合tomcat.</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IIS整合Tomcat的传统方式是JK,通过8009端口做代理，这样做缺点很多，当然优点也很多，优点我就不说了。这样的缺点是实际上要socket一次，笔者认为除非在一台IIS+多个Tomcat，或者IIS和tomcat不在一台服务器上时才有必要使用。在大多数情况，也就是IIS和Tomcat在同一台服务器上时，完全可以用一种高效的办法.</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 答案其实就是asp.net里的ihttphandle, 使用asp.net的ISAPI handle劫持要转发的页面（图方便，有达人直接写一个C++的ISAPI也行，.net基于jit效率也没得说），<strong>直接把他rewrite到8080端口上，</strong>也就是实际上IIS和Tomcat没有任何通信。图片、js、html全部IIS处理，这个小程序只处理URL。也就是我写的这个JSP ihttphandle直接取tomcat 的response 作为IIS的response。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下载 <a href="http://www.w3cool.com/upload/JSP_iHttpHandle.rar">JSP_iHttpHandle.dll</a> (.net 3.5)&nbsp; 拷贝到站点的bin目录。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 修改web.config添加：</p><p>&lt;!-- JSP ihttpHandle 配置 --&gt; <br /><span style="background-color: #c0c0c0"><span style="color: #003300">&lt;add path=&quot;*.jsp&quot; verb=&quot;GET,POST&quot; type=&quot;<strong>com.w3cool.web.jsp.TomcatRequestHandler</strong>&quot; /&gt; <br />&lt;add path=&quot;*.xhtml&quot; verb=&quot;GET,POST&quot; type=&quot;<strong>com.w3cool.web.jsp.TomcatRequestHandler</strong>&quot; /&gt; <br />&lt;add path=&quot;/servlet/*&quot; verb=&quot;GET,POST&quot; type=&quot;<strong>com.w3cool.web.jsp.TomcatRequestHandler</strong>&quot; /&gt; <br /></span></span>&lt;!-- JSP ihttpHandle 配置 --&gt;</p><p>然后在 站点属性&nbsp; -&gt; &quot;home directory&quot; -&gt;Configuration -&gt;</p><p>把.jsp .xhtml你要tomcat处理的内容加在aspnet_isapi.dll上，当然也可以图方便设定一个WildCard</p><p><a href="http://www.w3cool.com/WindowsLiveWriter/ISAPIIISJSPjk_1624/j1_2.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="440" alt="j1" width="425" border="0" src="http://www.w3cool.com/WindowsLiveWriter/ISAPIIISJSPjk_1624/j1_thumb.jpg" /></a></p><p>好了。现在就可以看看效果</p>]]>
      <![CDATA[<p>这是不用整合的效果：</p><p><a href="http://www.w3cool.com/WindowsLiveWriter/ISAPIIISJSPjk_1624/image_2.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="441" alt="image" width="616" border="0" src="http://www.w3cool.com/WindowsLiveWriter/ISAPIIISJSPjk_1624/image_thumb.png" /></a></p><p>整合以后（注意看headers里面的东西）。</p><p><a href="http://www.w3cool.com/WindowsLiveWriter/ISAPIIISJSPjk_1624/image_4.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="441" alt="image" width="616" border="0" src="http://www.w3cool.com/WindowsLiveWriter/ISAPIIISJSPjk_1624/image_thumb_1.png" /></a></p><p>这样整合会方便很多。效率也要高很多，还有一个好处是可以把不同的程序整合到不同的TOMCAT上，避免java的负荷过大内存垃圾收集和IO的问题。</p>]]>
   </content>
</entry>

<entry>
   <title>Shell简单的按键操作(转自IBM网站)</title>
   <link rel="alternate" type="text/html" href="http://www.w3cool.com/2008/09/02/shellibm.html" />
   <id>tag:www.w3cool.com,2008://1.165</id>
   
   <published>2008-09-02T03:44:53Z</published>
   <updated>2008-09-02T03:44:53Z</updated>
   
   <summary>&#160;&#160;&#160;&#160;&#160;&#160;&#160; 用户与计算机交互的方式在不断发生变化。启动后提供纯命令行界面的操作系统已逐渐演化为图形化前端。然而，脱离构成操作系统的构建块有时并非是迈向正确方向的必要步...</summary>
   <author>
      <name>大恐龙</name>
      <uri>http://www.w3cool.com</uri>
   </author>
   
      <category term="系统|System" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="zh-cn" xml:base="http://www.w3cool.com/">
      <![CDATA[<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; 用户与计算机交互的方式在不断发生变化。启动后提供纯命令行界面的操作系统已逐渐演化为图形化前端。然而，脱离构成操作系统的构建块有时并非是迈向正确方向的必要步骤。向图形化用户界面 (GUI) 过渡往往意味着损失功能；而且，用户渐渐倾向于不愿详细了解他们所使用的计算机。幸运的是，与其他 UNIX&#174; 和 Linux&#174; 系统类似，AIX 操作系统一直把握着重点：计算机操作系统的稳定性、功能和稳健性。</p>  <p>&#160;&#160;&#160;&#160;&#160;&#160; 大量 UNIX 和 Linux 供应商已充分认识到操作系统的 CLI 的重要性。但是，出于自动化、降低用户使用计算机的难度或其他原因，用户已忘记或从未了解 CLI 的细节。本文向新用户和已经遗忘细节的用户介绍 CLI，以帮助他们记住或回想起 CLI 对于管理、开发和常规 UNIX 计算之所以重要的原因。 </p>  <p><a name="whatis">什么是命令行？</a></p>  <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; 在计算机上工作时，了解实际使用的工具非常重要。如果您曾经使用过 UNIX 或 Linux，那么您应该听说过术语 <i>shell</i> 或 <i>命令行</i>。这两个术语可以作为同义词使用，并且指的是用户正在运行的实际 UNIX shell。UNIX 中的术语 <i>shell</i> 指的是您在键入命令或执行功能时所使用的接口。 </p>  <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; 当用户通过控制台或网络登录 UNIX 系统时，将调用可定义 shell（位于 /etc/passwd），并通过配置文件设置用户环境（本文稍后将进行说明），于是用户准备好在 shell 中执行操作。当用户在命令行（即用户正在使用的 shell）中键入命令时，用户只能看到 <i>stdin</i>（即标准输入），这是用户或程序提供的输入。当用户按 <b>Enter</b> 或 <b>Return</b> 键时，通过 shell 发送 stdin 以执行命令，然后用户可能收到 <i>stdout</i>（即标准输出）和 <i>stderr</i>（即标准错误），具体取决于输出重定向的方式（例如，重定向到用户的显示器、文件或打印机）。术语 <i>stdout</i> 表示执行的程序所返回的输出数据，而 <i>stderr</i> 指的是程序遇到或返回的错误。用户不会看到处理单个或多个命令的所有底层代码的执行情况，而是看到非常简单化的输入、输出和错误。由于上述原因，用户登录时调用的程序被恰当地称为 <i>shell</i>，因为它隐藏了操作系统的所有底层调用。 </p> ]]>
      <![CDATA[  <p><a name="history">shell 的历史</a></p>  <p>UNIX shell 至今存在的时间已超过 35 年，它现在仍然在发展壮大！它创始于 1971 年，这一年 AT&amp;T 贝尔实验室的 Ken Thompson 创建了第一个 UNIX shell，它具有贴切的名称 <i>Thompson shell</i>。虽然 Thompson shell 缺少人们日常使用的 UNIX 所具备的一些重要内置功能，如管道 (<code>|</code>)、编写 shell 脚本的能力和 <code>if</code> 条件语句，但是该 shell 的基础功能（如数据重定向）仍存在于现今使用的 shell 中。 </p>  <p>后来，在 1977 年，Thompson shell 被 Bourne shell（即 <i>sh</i>）所取代。Bourne shell 是由 AT&amp;T 贝尔实验室的 Stephen Bourne 创建的，它成为 UNIX 第 7 版 (V7) 的缺省 shell。Bourne shell 使 UNIX 的发展向前迈进了一大步。到这时，用户可以编写 shell 脚本，在变量中存储信息和导出信息，控制文件描述符，控制信号处理，使用 <code>for</code> 循环和 <code>case</code> 语句，以及其他大量功能。虽然 Bourne shell 创建至今已有 30 多年时间，目前它仍在大量的 UNIX 系统中广为使用，并且是当今许多 UNIX 系统的超级用户 &#8212;root&#8212; 的缺省 shell。 </p>  <p>在过去三十年中，UNIX shell 获得了许多改进和增强。结果，出现了多种不同的 shell。<a href="http://www.ibm.com/#fig1">图 1</a> 显示了少数 UNIX shell 的家族树。虽然该图并不完整，但它显示了衍生出其他较次要 shell 的那些主要 shell。 </p>  <p><a name="fig1"><b>图 1. UNIX shell 家族树</b></a>    <br /><a href="http://www.w3cool.com/WindowsLiveWriter/ShellIBM_A878/unix_fig1_shell-history_2.gif"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="332" alt="unix_fig1_shell-history" src="http://www.w3cool.com/WindowsLiveWriter/ShellIBM_A878/unix_fig1_shell-history_thumb.gif" width="570" border="0" /></a>&#160;</p>  <p><a name="korn">Korn shell</a></p>  <p>1982 年，AT&amp;T 贝尔实验室的 David Korn 开发了 Korn shell（即 <i>ksh</i>）。Korn shell 与许多其他 shell 类似，向后兼容 Bourne shell (sh)。在超过 25 年的发展历程中，它已进化为强健、稳定和非常可靠的 shell。IBM 在 AIX 中使用 Korn shell 作为其缺省 shell。Korn shell 共有两个版本，它们均包含在 AIX 中。 </p>  <p>第一种是 AIX 普通用户的缺省 shell，即标准 ksh shell。Korn shell 符合计算机环境的可移植操作系统接口标准 (POSIX)，这是操作系统的国际标准。 </p>  <p>AIX 提供的第二种 Korn shell 是增强 Korn shell，称为 <i>ksh93</i>。除标准 Korn shell 所拥有的所有强大功能外，增强 Korn shell 还包含如下功能： </p>  <ul>   <li>算术增强 </li>    <li>复合变量 </li>    <li>复合赋值 </li>    <li>关联数组 </li>    <li>变量名引用 </li>    <li>参数扩展 </li>    <li>规程函数 </li>    <li>函数环境 </li>    <li>PATH 搜索规则 </li>    <li>shell 历史记录 </li>    <li>其他内置命令 </li> </ul>  <p>有关 ksh93 增强功能以及 ksh 与 ksh93 之间差异的完整列表，请参阅<a href="http://www.ibm.com/#resources">参考资料</a>。 </p>  <p><a name="setupksh">使用 ksh 设置命令行环境</a></p>  <p>在介绍如何使用 ksh 编辑命令行之前，必须设置您的环境。根据您的喜好来设置 Korn shell 相当简单：登录到 ksh 下时，使用带有 <code>-o</code> 开关的 <code>set</code> 命令来查看您的当前设置： </p>  <pre># set -o

Current option settings are:
allexport        off
bgnice           on
emacs            off
errexit          off
gmacs            off
ignoreeof        on
interactive      on
keyword          off
markdirs         off
monitor          on
noexec           off
noclobber        off
noglob           off
nolog            off
notify           off
nounset          off
privileged       off
restricted       off
trackall         off
verbose          off
vi               off
viraw            on
xtrace           off</pre>

<p>下面简单介绍各项设置。（您也可以通过运行 <code>man set</code> 找到这些说明。） </p>

<ul>
  <li><b><code>allexport</code></b>：自动导出所有定义的后续变量。 </li>

  <li><b><code>bgnice</code></b>：在后台以更低的优先级运行所有进程。 </li>

  <li><b><code>emacs</code></b>：编辑输入的命令行文本时，使用 emacs 风格的行内编辑器。 </li>

  <li><b><code>errexit</code></b>：如果某个命令产生非 0（零）的退出状态并且设置了 ERR 陷阱，则执行 ERR 陷阱并退出。 </li>

  <li><b><code>gmacs</code></b>：编辑输入的命令行文本时，使用 gmacs 风格的行内编辑器。 </li>

  <li><b><code>ignoreeof</code> </b>：忽略文件结束字符，并且不退出 shell。如果用户想要退出，则必须键入 <code>exit</code> 命令或按 11 次 Ctrl-D。 </li>

  <li><b><code>keyword</code> </b>：此选项将命令的所有参数放入环境中，而不仅仅放入命令之前的参数，使用 <code>set</code> 命令可以查看这些参数。 </li>

  <li><b><code>markdirs</code></b>：在来自文件名替换的所有目录的末尾添加一个正斜杠 (<code>/</code>)。 </li>

  <li><b><code>monitor</code></b>：将所有后台进程作为独立进程运行，并在进程结束时向 stdout 输出一行信息以通知用户。 </li>

  <li><b><code>noexec</code></b>：不执行命令。仅检查语法错误。 

    <p><b>注意</b>：此参数在交互式 shell 中无效。 </p>
  </li>

  <li><b><code>noclobber</code> </b>：当输出重定向到现有文件时，此标记可阻止截断这些文件。然而，启用此选项后，如果使用大于号加管道符号 (<code>&gt;|</code>)，则仍然会发生截断。 </li>

  <li><b><code>noglob</code></b>：禁用文件名替换。 </li>

  <li><b><code>nolog</code></b>：如果使用此选项，则函数定义不会存储在历史文件中。 </li>

  <li><b><code>nounset</code></b>：如果执行替换，则所有未设置参数都作为错误返回。 </li>

  <li><b><code>restricted</code> </b>：运行受限制的 shell。用户无法执行下列操作：更改目录；更改 SHELL、ENV 或 PATH 变量；执行在文件名中包含正斜杠 (<code>/</code>) 的命令；或重定向输出。 </li>

  <li><b><code>trackall</code></b>：每个命令在最初运行时都作为被跟踪的别名。 </li>

  <li><b><code>verbose</code></b>：当 shell 读取输入行时，向 stdout 显示所有这些行。 </li>

  <li><b><code>vi</code></b>：编辑输入的命令行文本时，使用 vi 风格的行内编辑器。 </li>

  <li><b><code>viraw</code></b>：键入字符时，将每个字符处理成在 vi 编辑器下输入的原样。 </li>

  <li><b><code>xtrace</code></b>：执行命令时，向 stdout 显示所有命令和参数。 </li>
</ul>

<p>若要开启内置命令集选项，请使用 <code>-o</code> 开关。相反，如果改变主意，可以使用 <code>+o</code> 开关关闭这些选项。 </p>

<p>本文将重点讲述的主要选项是行内编辑器开关。根据个人喜好不同，人们往往偏爱 vi、emacs 或 gmacs 文件编辑器中的某一个。Korn shell 包含所有这三种编辑器。然而，我将重点介绍 vi 行内编辑器。将行内编辑器选项设置为 <code>vi</code> 十分简单。只需在用于查看所有当前设置的命令后加上选项 vi： </p>

<pre># set -o vi</pre>

<p>大功告成！若要验证该设置，可以再次查看您的当前设置：</p>

<pre># set -o

Current option settings are:
allexport        off
bgnice           on
emacs            off
errexit          off
gmacs            off
ignoreeof        on
interactive      on
keyword          off
markdirs         off
monitor          on
noexec           off
noclobber        off
noglob           off
nolog            off
notify           off
nounset          off
privileged       off
restricted       off
trackall         off
verbose          off
vi             on
viraw            on
xtrace           off</pre>

<p><a name="vieditor">使用 Korn shell vi 行内编辑器</a></p>

<p>既然已将您的 shell 配置为使用 vi 行内编辑器，现在应该开始进行测试了。 </p>

<p><a name="modifytext">在命令行上修改文本</a></p>

<p>现在，当您在命令行上键入时，将其视为处于 vi 编辑器中的插入模式。如果出错或者需要向要执行的命令添加一些内容，只需按 <b>Esc</b> 键退出插入模式并切换回命令模式。 </p>

<p>例如，您当前所在的工作目录包含如下文件：</p>

<pre># ls
fileA    fileAA   fileAAA  fileAB   fileABA  fileABB  fileB    fileBAA  fileBB   fileBBB</pre>

<p>您希望查找以 <i>fileAA</i> 开头的文件并删除它们，于是输入以下命令：</p>

<pre># find . -name &quot;fileAB*&quot; -exec rm {} \;</pre>

<p>在执行您输入的行之前，您发现自己犯了一个错误，意外地将 <code>fileAA</code> 误输入为 <code>fileAB</code>。不必担心。只需退出插入模式并切换到命令模式，将光标移动到错误字符并进行替换，所有这些操作都使用 vi 命令完成。下面详细说明命令序列，此时仍然处于行内编辑器的插入模式： </p>

<ol>
  <li>按 <b>Esc</b> 切换到命令模式。 </li>

  <li>使用 vi 风格的移动命令向左移动光标，以突出显示字符串&#8220;fileAB*&#8221;中的 <b>B</b>。（H 键可向左移动光标。） 

    <p><b>注意</b>：如果您习惯于在 vi 中使用箭头键，那么明智的做法是了解键盘上用于移动光标的实际字母键，因为不同类型的终端上的箭头键不一定能产生预想中的结果：</p>

    <ul>
      <li><b>h</b>：向左 </li>

      <li><b>l</b>：向右 </li>

      <li><b>k</b>：向上 </li>

      <li><b>j</b>：向下 </li>
    </ul>
  </li>

  <li>使用 vi 风格的&#8220;替换单个字符&#8221;命令将 <i>B</i> 替换为 <i>A</i>（即单击 <b>R</b>，然后键入 <code>A</code>）。 </li>
</ol>

<p>经过检查确认输入无误后，按 <b>Enter</b> 键执行命令： </p>

<pre># find . -name &quot;fileAA*&quot; -exec rm {} \;
# ls
fileA    fileAB   fileABA  fileABB  fileB    fileBAA  fileBB   fileBBB</pre>

<p><a name="namecomplete">文件名完成</a></p>

<p>Korn shell 中 vi 行内编辑器的另一个十分有用的操作是文件名完成。执行命令时，经常会遇到这样一种情况，您用作 stdin、stdout 或 stderr 参数的文件将被写入到某个文件中。文件名可能很长，也可能有多个文件具有类似的文件名，或者您就是无法记起完整的文件名。这时就会用到文件名完成功能。在键入文件名时，如果完成了一部分，那么只需先按 <b>Esc</b> 键，再按反斜杠 (<code>\</code>）键。这样做省时省力！ </p>

<p>例如，我要查看 AIX 上的 /etc/filesystems 文件，但我忘记了完整文件名。我知道它位于 /etc 下，并且该文件以 <i>file</i> 开头，仅此而已。我只需键入 <code>view /etc/file</code> 并按 <b>Esc-\</b>，哇！ksh 已经为您完成了这行内容。现在命令行显示为 <code>view /etc/filesystems</code>。 </p>

<p>对于目录结构也可以执行同样的操作，因为它们实际上也可算作文件名。 </p>

<p><a name="commandhistory">查看和修改命令历史记录</a></p>

<p>在您的 UNIX 系统上监视进程或执行其他一些功能时，您需要多次反复键入相同的命令。为了避免反复重新输入的麻烦，Korn shell 提供了内置的命令历史记录供您查看。如果您也将行内编辑器设为 <code>vi</code>，ksh 将允许您提取用户所执行命令的历史记录（有时仅限该会话，具体取决于您的系统配置），并按照您在命令行中输入的其他文本修改命令。 </p>

<p>如果您在变量 HISTFILE 中定义了一个文件名，ksh 允许用户从其历史记录中提取和修改命令，或仅仅再次执行原始命令。例如，以下是示例 $HISTFILE 显示的最后 10 个命令： </p>

<pre># tail -10 $HISTFILE
ls
cd ~cormany/testdir/dirA
./fileA 1&gt;fileA.out 2&gt;fileA.errors
pwd
ps &#8211;fu cormany
df &#8211;k .
ps &#8211;fu cormany
find . &#8211;name &#8220;fileA.out&#8221; &#8211;ls
find . &#8211;name &#8220;fileA.errors&#8221; &#8211;ls
tail -10 $HISTFILE</pre>

<p>在命令行中，只需按 <b>Esc</b> 键即可进入 vi 行内编辑器的命令模式，然后按 <b>K</b> 键提取上次执行的命令。由于您仍处于命令模式，您可以继续按 <b>K</b> 键向上移动所执行命令的历史记录，或按 <b>J</b> 键向下移动列表。 </p>

<p>若要帮助简化命令模式下的光标移动，当您在命令提示符处按 <b>Esc</b> 键时，请想象您加载的 $HISTFILE 为 vi 中的普通文件。在 vi 编辑器中，K 键向上移动一行，而 J 键向下移动一行。如果按 <b>Esc-J</b> 键并使用示例 $HISTFILE，想象正在编辑 $HISTFILE，并且光标开始位于文件底部。该行将显示 <code>tail -10 $HISTFILE</code>。如果再次按 <b>J</b> 键，正在编辑的 $HISTFILE 将向上移动一行，显示为 <code>find . -name &quot;fileA.errors&quot; &#8211;ls</code>。 </p>

<p><a href="http://www.ibm.com/#fig2">图 2</a> 提供了小型的&#8220;备忘单&#8221;，将常规 vi 命令模式光标移动与 ksh vi 行内编辑器命令模式移动进行比较。 </p>

<p><a name="fig2"><b>图 2. vi 命令模式备忘单 </b></a>

  <br /><a href="http://www.w3cool.com/WindowsLiveWriter/ShellIBM_A878/unix_fig2_vicommandmodecheatsheet_2.gif"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="300" alt="unix_fig2_vicommandmodecheatsheet" src="http://www.w3cool.com/WindowsLiveWriter/ShellIBM_A878/unix_fig2_vicommandmodecheatsheet_thumb.gif" width="639" border="0" /></a> </p>

<p><a name="commandvsscript">命令行与 shell 脚本</a></p>

<p>有时会用到 shell 脚本，其他一些时间则要用到命令行。如果需要定期执行某项任务，或者任务非常复杂、需要进行数据处理，同时不需要用户反复键入各种命令，则适合使用 shell 脚本。有时，某些任务只需要执行一次并且相对简单，则使用命令行可以很好地完成这类任务。 </p>

<p>例如，假设存在下列字典列表：</p>

<pre># ls
fileA.tar.gz   fileAA.tar.gz  fileB.tar.gz   fileBB.tar.gz</pre>

<p>如果只需要解压缩文件，并使用 bzip2 重新压缩，然后将它们传送到 ATC-AIX2 上，那么与其键入 shell 脚本，不如使用命令行。可以将 shell 脚本视为一次输入多个命令行条目，因为从某种意义上来说，这就是实际情况。在命令行上键入命令时，就像将它们输入到脚本中，然后执行脚本。 </p>

<p>您希望遍历目录中以 <i>gz</i> 结尾的文件，解压这些文件，然后使用 bzip2 重新压缩它们，再对这些文件使用 <code>scp</code> 命令，将它们复制到目标 ATC-AIX 服务器上。循环在命令行中的工作效果与在脚本中同样出色。当开始 <code>loop&#8230;if</code> 条件语句、<code>case</code> switch 语句，或其他代码块语句时，您正在运行的 ksh 只会将光标移动到下一行，但提示符将更改为 $PS2。当代码块完成时，将执行代码块并使用户返回 $PS1 提示符。 </p>

<p>也就是说：</p>

<ul>
  <li><b>$PS1 提示符</b>：等待下一个命令 </li>

  <li><b>$PS1 提示符</b>：代码块开始 </li>

  <li><b>$PS2 提示符</b>：代码块继续 </li>

  <li><b>$PS2 提示符</b>：代码块继续 </li>

  <li><b>$PS2 提示符</b>：代码块结束 </li>

  <li>代码块执行 </li>

  <li><b>$PS1 提示符</b>：等待下一个命令 </li>
</ul>

<p>变量 PS2 的缺省值为 <code>&gt;</code>。返回前一个解压缩后重新压缩的功能，您只需在 ksh 命令行中键入以下内容： </p>

<pre># for _FNAME in 'ls -1 *.gz'
&gt; do
&gt; gzip -d ${_FNAME}
&gt; bzip2 ${_FNAME%*.gz}
&gt; scp ${_FNAME%*.gz}.bz2 cormany@ATC-AIX2:/home/cormany
&gt; done</pre>

<p>完成代码块（也就是说，使用 <code>done</code> 结束循环）后按 <b>Enter</b> 键，将开始执行循环。在命令行上键入的循环将搜索当前工作目录下以 <i>.gz</i> 结尾的所有文件，将这些文件解压缩，然后使用 bzip2 重新压缩它们，最后将它们复制到 ATC-AIX2 上的 /home/cormany 目录中。就是如此简单。 </p>]]>
   </content>
</entry>

<entry>
   <title>.Net的运行效率问题</title>
   <link rel="alternate" type="text/html" href="http://www.w3cool.com/2008/08/29/net.html" />
   <id>tag:www.w3cool.com,2008://1.164</id>
   
   <published>2008-08-29T14:03:33Z</published>
   <updated>2008-08-29T14:03:33Z</updated>
   
   <summary>&#160;&#160;&#160;&#160;&#160;&#160; CLR只执行本机的机器代码。有两种方式产生本机的机器代码：实时编译（JIT）和预编译方式（产生native image）。详细了解了JIT,基本上每个人都知道的是，所...</summary>
   <author>
      <name>大恐龙</name>
      <uri>http://www.w3cool.com</uri>
   </author>
   
      <category term=".Net Framework" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="zh-cn" xml:base="http://www.w3cool.com/">
      <![CDATA[<p>&#160;&#160;&#160;&#160;&#160;&#160; CLR只执行本机的机器代码。有两种方式产生本机的机器代码：实时编译（JIT）和预编译方式（产生native image）。详细了解了JIT,基本上每个人都知道的是，所有.Net语言都将被编译成为一个叫做IL汇编的中间语言。但是计算机是如何执行这个中间代码的，却是很多人不知道，甚至理解错误了的。</p>  <table cellspacing="0" cellpadding="0" width="699" border="0"><tbody>     <tr>       <td valign="top" width="146"><img src="http://msdn.microsoft.com/msdnmag/issues/05/04/NGen/fig01.gif" /></td>        <td valign="top" width="551">         <p>&#160;&#160;&#160;&#160;&#160;&#160; JIT是.NET程序运行的重要部件之一，全称是即时编译器。我刚才说的误解，就是很多人（绝对不是少数，问了很多c++程序员，10个有9个这种想法）都以为JIT其实就是跟JVM差不多的东西，是一个Interpreter，在运行时读取IL汇编代码，然后模拟成x86代码（也就是俗称的虚拟机）。但是事实上，.NET使用的是更为高级的技术。 .Net程序被加载入内存以后，当某段IL代码被第一次运行的时候，JIT编译器就会将这段IL代码，全部编译成本地代码，然后再执行。这也就是为什么.NET程序第一次运行都启动很慢的原因！ 随.NET库，微软还附带了一个工具，可以事先将.NET程序所有的IL代码都编译成本地代码并保存在缓存区中，这样一来，这个程序就跟c++编译的一模一样了，没有任何区别，运行时也可以脱离JIT了（这里不要混淆了，这里不是说可以脱离.NET库，而是说不需要在进行即时编译这个过程了）。所以，.NET和Java运行效率还是有些区别的，当然在执行高IO实时程序时也许仍然不如C++，因为还有在.net framework里面的appDomain的限制。 </p>          <p>&#160;&#160;&#160;&#160;&#160;&#160; Java JIT也曾经是Borland的亮点，.net的JIT想法极有可能就来自Borland，但是在架构了由于不用考虑平台的问题大大优于.net.</p>          <p>&#160;&#160;&#160;&#160;&#160;&#160; 所以在编译系统中，笔者的主张还是&quot;<strong>原生才是硬道理</strong>&quot;。</p>       </td>     </tr>   </tbody></table>]]>
      
   </content>
</entry>

<entry>
   <title>开源媒体播放器对比</title>
   <link rel="alternate" type="text/html" href="http://www.w3cool.com/2008/08/20/post_15.html" />
   <id>tag:www.w3cool.com,2008://1.163</id>
   
   <published>2008-08-19T23:57:20Z</published>
   <updated>2008-08-20T00:00:43Z</updated>
   
   <summary>google</summary>
   <author>
      <name>大恐龙</name>
      <uri>http://www.w3cool.com</uri>
   </author>
   
      <category term="系统|System" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="27" label="google" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="zh-cn" xml:base="http://www.w3cool.com/">
      <![CDATA[<p>在土鳖上看到这段视频，原来google player是基于VLC的.....</p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/wL27nUjWOb4&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/wL27nUjWOb4&hl=en&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object>]]>
      
   </content>
</entry>

<entry>
   <title>语义标签构建xhtml文档</title>
   <link rel="alternate" type="text/html" href="http://www.w3cool.com/2008/08/14/xhtml_2.html" />
   <id>tag:www.w3cool.com,2008://1.161</id>
   
   <published>2008-08-14T03:11:30Z</published>
   <updated>2008-08-14T03:11:30Z</updated>
   
   <summary>很老的一个话题的，当年老李发明html的时候，就要要人这样做，严格的--标题 正文，但是他是为了存放高能物理的论文，html开始普及以后，迂夫愚妇般的各色人等都参与到html中间来，最后的结果是有了DW，只要看着一样，html怎么样都行，</summary>
   <author>
      <name>大恐龙</name>
      <uri>http://www.w3cool.com</uri>
   </author>
   
      <category term="HTML/CSS/JavaScript" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="zh-cn" xml:base="http://www.w3cool.com/">
      <![CDATA[<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:75a05a4e-e580-4eb0-a288-93605158d4c1" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati 标签: <a href="http://technorati.com/tags/html" rel="tag">html</a></div>  <p>很老的一个话题的，当年老李发明html的时候，就要要人这样做，严格的&lt;hn&gt;--标题 &lt;p&gt;正文，但是他是为了存放高能物理的论文，html开始普及以后，迂夫愚妇般的各色人等都参与到html中间来，最后的结果是有了DW，只要看着一样，html怎么样都行，这样好 比如下面两段xhtml代码：</p>  <table cellspacing="0" cellpadding="0" width="554" border="1"><tbody>     <tr>       <td valign="top" width="552">         <p>&lt;h1&gt;如何设置液晶显示器的刷新率?&lt;/h1&gt;            <br />&lt;p&gt;和CRT显示器相比，液晶显示器采用&#8220;背光（backlight）&#8221;原理，使用灯管作为背光光源，通过辅助光学模组和液晶层对光线的控制来达到较为理想的显示效果。所以从理论角度上看，调整刷新率对液晶显示器没有实际意义。             <br />&lt;/p&gt;             <br />&lt;p&gt;但是从我们实际使用情况来看，更改液晶显示器刷新率时，有时会感到显示器清晰度有所变化。一般而言，按照液晶显示器上厂商推荐设置，对于较早以前的液晶显示器设置为60Hz，最近生产的液显设置为75Hz，即可达到最佳的显示效果。&lt;/p&gt;</p>       </td>     </tr>      <tr>       <td valign="top" width="552">&lt;p style=&quot;font-size:2em;font-weight:bold&quot;&gt;如何设置液晶显示器的刷新率?&lt;/p&gt;          <br />和CRT显示器相比，液晶显示器采用&#8220;背光（backlight）&#8221;原理，使用灯管作为背光光源，通过辅助光学模组和液晶层对光线的控制来达到较为理想的显示效果。所以从理论角度上看，调整刷新率对液晶显示器没有实际意义。           <br />&lt;br&gt;           <br />但是从我们实际使用情况来看，更改液晶显示器刷新率时，有时会感到显示器清晰度有所变化。一般而言，按照液晶显示器上厂商推荐设置，对于较早以前的液晶显示器设置为60Hz，最近生产的液显设置为75Hz，即可达到最佳的显示效果。</td>     </tr>   </tbody></table> ]]>
      <![CDATA[  <p>&#160;&#160;&#160;&#160;&#160;&#160; 当这两段代码被浏览器解释后，显示的效果是一样的。人们看到的是你的浏览器解释后的页面，至于这个网页的代码是怎样写的对于用户没有任何意义。万维网发明的目的也是为了能把文档资料和别人共享，所以用户能看到你的文档内容并且也能明白的你的文档意思一切都OK了。</p>  <p>&#160;&#160;&#160;&#160;&#160;&#160; 当你浏览一段文档时，你的大脑其实在默默的进行分析，只不过大家对这个过程已经变得麻木不仁了。你一看到第二段代码就知道&#8220;如何设置液晶显示器的刷新率?&#8221;是一个标题。但是对于机器来说，它没有大脑，它不知道分析。比如说搜索机器人，当他看到第二段代码的时候，对于他来说这篇文档没有标题，只有段落，为什么？因为你的xhtml代码里面只有段落标签p，而没有标题标签h。所以如果你想你的文档能别机器看懂，那么你的第二段代码就需要修改。</p>  <p>&#160;&#160;&#160;&#160;&#160;&#160; 说白了，使用语义标签是为了给机器用的，但是人切是最终的受益者，因为机器最终还是为人服务，就像搜索机器人所作的。当你在使用google或者baidu搜索的时候，你已经在享受搜索机器人给我们的服务了。    <br />w3c上有关&#8220;<a href="http://www.w3.org/2001/sw/">Semantic Web</a>&#8221;的内容。     </p>]]>
   </content>
</entry>

</feed>
