﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>MojoCube Software</title>
    <link>www.MojoCube.com</link>
    <description>魔立软件(MojoCube Software) - 专注网站建设、网络应用开发</description>
    <item>
      <title>例子阐述用户体验的要素</title>
      <link>http://localhost/Articles-13.html</link>
      <description>&lt;div id="article_body"&gt;
&lt;p&gt;什么是好的用户体验？有没有通用的用户体验设计方法？此类基本没法回答的问题，永远有人问。还有人以用户体验无法准确量化为由，把它批的一无是处，与江湖骗子无异。专业上的术语和定义，本身是种知识领域的细分，用以深入研究和拔高。搞清楚了对理解原理有帮助，没搞清楚就是一坨浆糊的添加剂。&lt;/p&gt;
&lt;p&gt;以老外同行所总结&lt;a title="用户体验的要素PPT中文模型" href="http://blog.rexsong.com/?p=11672"&gt;用户体验的要素&lt;/a&gt;为例，术语很多。单独理解好像怎么都对（都属于用户体验优化），但要很好的做成体系放在一个框架中完美包含，有点难度，尤其深入浅出的讲出来。首先把它定义到互联网产品中，其次取一个随处可见的常规的点，以&amp;ldquo;注册、登录&amp;rdquo;功能举例：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;战略层&lt;/strong&gt;，注册需求不用多说，基本现在有企图的互联网产品都重视这个。比较有讲究的是门槛控制，优化用户体验并非一定简化注册流程，有很多专业应用的产品，为控制用户质量，在注册上下了很多功夫，也从节奏上控制了产品发展。&lt;br type="_moz" /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;范围层&lt;/strong&gt;，登录需要的字段基本是行规，没啥特殊。注册会有很大差异，各产品会有针对性的要求用户填写资料。而必填项则是对功能规格的限制，比如真人社区网站可能会必须要求上传头像。&lt;br type="_moz" /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;结构层&lt;/strong&gt;，注册比较复杂的情况，通常有种拆分流程的优化方法，让用户一步步进圈套。也有在一个页面之内搞定，而通过内容区块的划分，以及良好的隐藏显示手段，让用户感觉不那么麻烦，起码刚看起来很简单。&lt;br type="_moz" /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;框架层&lt;/strong&gt;，进入比较细节的环节，我理解信息设计就是处理呈现方式的问题。导航设计的关键是位置，在用户需要的时候 &amp;ldquo;给&amp;rdquo;用户，这就是良好导航。而web-based产品的界面设计，个人倾向于需要用户产生交互的模式为主，典型为表单。比如登录表单是弹出层还是新页面是&amp;ldquo;交互&amp;rdquo;问题，但表单具体长什么样则属于&amp;ldquo;用户界面&amp;rdquo;问题。&lt;br type="_moz" /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;表现层&lt;/strong&gt;，心理学上讲，颜色是有心理暗示的。当然，视觉设计不仅仅包括对字符颜色的控制，还有图形化处理。除了漂亮还是更漂亮，更常见的理解是有感觉或者没有感觉。&lt;br type="_moz" /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;专业设计指&amp;ldquo;结构层、框架层、表现层&amp;rdquo;三部分，作为专业设计师来讲，每个人的擅长点是不一样的，这与各人的思维方式和专业背景有关。我尤其鄙视那种以偏概全、蛊惑人心的同行和公司，在某个层面的优秀不等于所有把握都很得体，对某个领域用户体验的经验也不等于什么用户体验问题都是行家。&lt;/p&gt;
&lt;p&gt;2007到08年有人开始叫咱们&amp;ldquo;前辈&amp;rdquo;，一开始觉得很不好意思，后来看了看他们作品，呃&amp;hellip;&amp;hellip;还是叫前辈吧（至少字面上理解很准确）。我们这么年轻的人都能做前辈，可以想象中国的互联网有多&amp;ldquo;幼稚&amp;rdquo;，所以哪来这么多&amp;ldquo;专家&amp;rdquo;。&lt;/p&gt;
&lt;/div&gt;</description>
      <pubDate>2011-01-27</pubDate>
    </item>
    <item>
      <title>网站设计的5个目标</title>
      <link>http://localhost/Articles-12.html</link>
      <description>&lt;h2&gt;&lt;a href="http://www.theued.com/batch.download.php?aid=31" target="_blank"&gt;&lt;img src="http://www.theued.com/attachments/2011/01/1_201101271025321sswS.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&lt;/h2&gt;
&lt;h2&gt;&lt;strong&gt;1。力求用户友好和美观&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;良好的用户界面往往是建立在牺牲掉一个优秀设计的基础上，然而这两者同等重要，应该让他们和平相处。一个设计良好的网站可以帮助用户轻松访问。网站中的每个元素都应该在客户习惯的位置，否则他们的存在就必须有特定含义，而设计师必须对用户进行引导。&amp;nbsp;例如，导航会放在页面顶部不是因为它放在那里比较好看，而是用户不会拖动滚动条到处找它。&amp;nbsp;如果你一定要让用户拖动滚动条去找导航，就给他们一个理由，比如一些更容易被发现的引导用户向下看的设计。&lt;/p&gt;
&lt;p&gt;案例：&lt;span style="color: rgb(43,141,192)"&gt;http://www.whitehouse.gov/&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-595" height="373" alt="whitehouse" src="http://ued.iciba.com/wp-content/uploads/2010/12/whitehouse.jpg" width="540" /&gt;&lt;/p&gt;
&lt;p&gt;该网站是在奥巴马2008年11月就职时改版的。改版前，网站只专注于提供信息，却没有考虑如何把组织信息和提高可读性。&amp;nbsp;改版后的网站力求用户友好与美观，体现了设计对于可用性的专注。以一个柔和的渐变与经典西方建筑的图案为背景，塑造出一个更舒适更赋有现代感的外观。新导航与信息的合理组织使用户更快速、更有效的获取所需。宽敞的布局，也同样是对用户浏览该网站有利的因素。&lt;span style="color: rgb(230,79,50)"&gt;不需要的东西全都去掉，只留下对用户最重要的部分。&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;2。明确目标用户&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;我见过很多网站，看上去很华丽却不适用于它的目标群体。&amp;nbsp;对于设计工作室或者音乐人来说，一个复古的网站搭配时尚的色彩会是很棒的结合，您的顾客也乐于见到。但这样的网站并不适合以专业人士和企业用户为主要群体的律师事务所网站。对于这点，您的客户具有良好的洞察力，因为他们的工作就是与这次的目标群体打交道。在你做研究的时候看看跟你同类型的公司都在做什么，&lt;span style="color: rgb(230,79,50)"&gt;你不必做相同的事情&lt;/span&gt;，但是网站给人的感受必须的类似的。&lt;/p&gt;
&lt;p&gt;案例：&lt;span style="color: rgb(43,141,192)"&gt;&lt;span style="color: rgb(43,141,192)"&gt;http://www.apple.com/&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class="wp-caption alignnone" id="attachment_596" style="width: 550px"&gt;&lt;img class="size-full wp-image-596   " height="373" alt="" src="http://ued.iciba.com/wp-content/uploads/2010/12/apple.jpg" width="540" /&gt;
&lt;p class="wp-caption-text"&gt;Apple&amp;rsquo;s site&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;该网站是一个很好的例子，出色的设计完全符合目标用户的口味。网站用柔和的渐变、大尺寸的图片展现了干净、简约之美。字体非常重要，苹果网站在标题、字号、位置上都精心考量过。现代的风格精确定位于年轻的偏重技术的用户。该网站也并没有严肃的那么彻底，层层细节中不断渗透出轻松的元素，这点也正中年轻白领的下怀。该设计也同样符合他们产品外观的特点&amp;ndash;时尚、有圆角而整洁的组合。以上几点都令用户感到舒适，除此之外，还会产生巨大的吸引力，带动用户去看他们旗下所有品牌的产品。&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-597" height="276" alt="dandelion" src="http://ued.iciba.com/wp-content/uploads/2010/12/dandelion.jpg" width="540" /&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;3。让用户界面自由流畅，让用户能快速高效的找到他们需要的信息。&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;良好的导航是优秀网站的关键。实现做好网站地图有助于分配页面跳转的去向以及哪些模块应该放在一起。许多网站的导航很繁琐，是因为他们根本没有计划过，哪些信息放在哪里最合适。您需要尽量压缩整个页面的容量，而让重要的信息所占比重最大化。不用把所有相关信息都要放在网页上，因为并不是每个用户都有耐心去阅读。&amp;nbsp;&lt;span style="color: rgb(230,79,50)"&gt;精简导航，确定什么是最重要的，丢掉其余的。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;案例：&lt;span style="color: rgb(43,141,192)"&gt;&lt;span style="color: rgb(43,141,192)"&gt;http://www.mediatemple.net/&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class="wp-caption alignnone" id="attachment_598" style="width: 550px"&gt;&lt;img class="size-full wp-image-598  " height="373" alt="" src="http://ued.iciba.com/wp-content/uploads/2010/12/mediatemple.jpg" width="540" /&gt;
&lt;p class="wp-caption-text"&gt;Media Temple&amp;rsquo;s site&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;该网站风格偏向沉稳，暗色调的渐变搭配倒影呈现出光滑的质感，突出了高科技的重点。简洁易用的主导航以及前端有标示的二级导航，都让用户很轻松就找到所需信息。&amp;nbsp;网站的整洁清晰，宽屏的设计让视野更加开阔，十分有利于浏览和阅读。&amp;nbsp;点击网页上的介绍后，明显的&amp;ldquo;查看详情&amp;rdquo;的按钮引导用户深入网站，最终找到他们的目标网页，即网站希望用户到达的网页。&amp;nbsp;匹配的按钮和有效地知道在整个过程中给予用户有效帮助。&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-599" height="276" alt="present" src="http://ued.iciba.com/wp-content/uploads/2010/12/present.jpg" width="540" /&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;4。&amp;nbsp;给客户他们想要的以及需要的。&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;正如众多设计师所知，客户往往认为他们才是最清楚的。一般而言，他们肯定比你更了解自己的公司，所以有关客户和产品的描述得听他们的，因为这是在他们的领域。&amp;nbsp;然而，对于如何把信息组织的更加实用以及网页用户有何特点，他们可能并不了解。因此某些重要的事项你必须为你的客户讲解并让他们充分的理解&amp;ndash; 为什么他们不需要一些看上去很&amp;ldquo;炫&amp;rdquo;的东西，例如做一个长达5分钟的尽管看起来很绚丽的网站介绍。&lt;/p&gt;
&lt;p&gt;案例：&lt;span style="color: rgb(43,141,192)"&gt;http://mobify.me/&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-600" height="373" alt="Mobify&amp;rsquo;s site" src="http://ued.iciba.com/wp-content/uploads/2010/12/mobify.jpg" width="540" /&gt;&lt;/p&gt;
&lt;p&gt;该网站干净、简约而富有现代感，加上在细节上出色的视觉效果，帮助用户浏览网站。&amp;nbsp;该网站的目标人群除了企业用户外，也包括对&amp;ldquo;手机友好&amp;rdquo;感兴趣的技术开发人员和网页设计师。&amp;nbsp;浏览该网站的用户很可能本身就是网站方面的专家，而来的目的是为了进一步拓展自己的网站。&amp;nbsp;这个网站的设计，就是一切关于公司销售移动服务的需求。&amp;nbsp;该界面简洁、光滑，正如一个移动设备给我们的感觉。&amp;nbsp;导航简洁易用，在这个现代高科技的网站上清楚明了的给予用户他们所需要的。&lt;/p&gt;
&lt;p&gt;&lt;img class="alignnone size-full wp-image-601" height="276" alt="books" src="http://ued.iciba.com/wp-content/uploads/2010/12/books.jpg" width="540" /&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;5。&amp;nbsp;用增加代码来拓展网站的功能。&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;一个简单的网站在运用了JS或PHP的一些功能后会变得强大起来。&amp;nbsp;用户会享受这些附加功能，设计师也有机会做一个新的尝试。既然有这么的技能可以学并植入到网站中，为何不针对每项功能都尝试一个新的页面，在设计上也寻找新的突破呢？尝试一个新的JS教程或一个有趣的PHP脚本。每当你坐下来设计一个页面的时候都有成推的东西要学，只要你在&lt;span style="color: rgb(230,79,50)"&gt;做每个网站的时候多学一样东西&lt;/span&gt;，试想一年后你会有多少成长呢。&lt;/p&gt;
&lt;p&gt;案例：&lt;span style="color: rgb(43,141,192)"&gt;&lt;span style="color: rgb(43,141,192)"&gt;http://www.authenticjobs.com/&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class="wp-caption alignnone" id="attachment_602" style="width: 550px"&gt;&lt;img class="size-full wp-image-602  " height="373" alt="" src="http://ued.iciba.com/wp-content/uploads/2010/12/authenticjobs.jpg" width="540" /&gt;
&lt;p class="wp-caption-text"&gt;Authentic Jobs&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;该网站在细节的处理方面做的非常出色，表现在加强了它的使用性和功能性。网站原本非常基本、简单，但一些JS的运用大大提升了网站的价值，而且让用户的使用更生动有趣。&amp;nbsp;你可以改变工作类型，添加或删减类别，以便在你点击按钮时，在他们的工作清单中过滤信息，让你在更短的时间里，找到更精确的结果。这一类的细节，是这个网站的亮点。&lt;/p&gt;
&lt;p&gt;总结：确立目标的确是作为一个网页设计师提升设计水平、前端技巧的重要组成部分。你不可能没有目标就能提升技巧，并让你的客户眼前一亮。每当你开始一个新的页面之前，思考一下你希望完成一个怎样的作品。你的目的&lt;span style="color: rgb(230,79,50)"&gt;不是要追求&amp;ldquo;完美&amp;rdquo;，而是要追求&amp;ldquo;优秀&amp;rdquo;&lt;/span&gt;，而且不要放过任何一次机会。&lt;/p&gt;</description>
      <pubDate>2011-01-27</pubDate>
    </item>
    <item>
      <title>浅谈URL使用在前端设计中的优化</title>
      <link>http://localhost/Articles-11.html</link>
      <description>&lt;p&gt;很多朋友都认为关于URL优化方面的工作是后端工程师做的，前端方面注重结构方面的优化就可以了。其实不然，对于请求及DNS请求等等诸多方面，前端工程师也应该在自己能做到的方面给予优化。&lt;/p&gt;
&lt;p&gt;下面我就说说我对于URL在前端优化方面的理解，希望大家指正。&lt;/p&gt;
&lt;p&gt;首先，第一点，比较&amp;ldquo;吝啬&amp;rdquo;，就是使用&amp;ldquo;c&amp;rdquo;、&amp;ldquo;j&amp;rdquo;、&amp;ldquo;i&amp;rdquo;文件夹分别代替我们经常用的&amp;ldquo;css&amp;rdquo;、&amp;ldquo;javascript&amp;rdquo;、&amp;ldquo;images&amp;rdquo; 文件夹。如果没有记错的话，这个方法是Zeldman在《网站重构》第一版的时候提出来的(如果记错了，欢迎大家指正)，我是比较赞成这个的。当然很多人会说，有这个必要吗?我个人觉得有，虽然这样做或许不会对页面精简带来太大的效果，但是并不会带来任何坏处。&lt;/p&gt;
&lt;p&gt;第二点，对于链接到像http://www.example.com/dir/这样的URL时候，记得在最后加上&amp;ldquo;/&amp;rdquo;，因为如果你的网站包含目录并使用了自动索引，不加结尾的斜线的话会页面会多一次重定向。(p.s:对于链接到主机名的链接可以不必加)&lt;/p&gt;
&lt;p&gt;第三点，就是上面已经提到的重定向问题。这应该是前端最应该重视的基于URL的优化问题，大家应该都有亲身体验重定向时的等待的不愉悦，尤其是第一个请求就是重定向时，用户看到的是一个&amp;ldquo;漫长&amp;rdquo;的空白页面过程。所以应该避免滥用重定向，不过很多时候(主要用在跟踪)还是需要用到重定向，当然这也包括服务器的配置方面，不管怎么说，我们还是在我们能做的方面尽量做好吧。&lt;/p&gt;
&lt;p&gt;第四点，减少DNS的查找。对与这点，可以主要从增大DNS缓存时间和减少网站内容主机请求数量两点来优化。对于第一点在网站端可以通过DNS的 TTL及HTTP的Keep-Alive来设置(虽然这不是HTTP1.1中必需的，但是很多浏览器和服务器都包含它)。当然你在配置中得考虑自己网站的实际情况，确保你的内容和ip不会在你设置的时间内失效。在主机名数量上，减少唯一主机名的数量会减少页面并行下载的数量，基于下面要说的原因，Steve Souders建议网站数据内容分别放在2-3个主机名下是最优选择。&lt;/p&gt;
&lt;p&gt;最后一点，将数据内容并行下载。在HTTP1.1规范下，建议浏览器从每个主机名并行的下载两个数据包内容，并且很多浏览器默认都是这样做的(可以打开YSlow对照页面在firefox下的结果)，如果你的页面包含较多的图片等数据内容，将其分别放在两个主机名下，整体的下载时间将会有明显的缩短。但是基于上面一点的原因，不要将内容放在太多的主机下，至于实际几个，可以通过自己的页面情况考虑。&lt;/p&gt;
&lt;p&gt;当然，基于URL的优化，在服务器方面的配置(包括CDN，路由等方面)效果明显，但是我们前端在做好其他如页面结构、页面压缩、HTTP请求数量等方面的优化下，进行上述的URL使用优化，肯定能使你的页面有更好的呈现。&lt;/p&gt;
&lt;p&gt;本文很多观点来自Steve Souders的《高性能网站建设指南》，本文内容比较偏，欢迎大家拍砖。现在像google的分布式还有热门的云计算方面也是URL优化方面极具讨论价值的话题，欢迎大家讨论指教。&lt;/p&gt;</description>
      <pubDate>2011-01-27</pubDate>
    </item>
    <item>
      <title>网页前端将在网站中占据很大的空间和位置</title>
      <link>http://localhost/Articles-10.html</link>
      <description>&lt;p&gt;CSS和XHTML经过这几年在国内的发展，已经占据了主导地位。也成了网页前端必须掌握的技能之一。关于两三年前用TABLE布局好还是DIV布局好的争议已经烟消云散，已经完全没有必要提了。网站的各个职位要求似乎都跟CSS沾上了边，设计、程序都要会写几个样式。&lt;/p&gt;
&lt;p&gt;网页前端制作也一下子成了热门职位，即使在金融危机的困难风潮下，招聘前端职位的公司还是很多。毕竟作为一个新兴的职位，和其它职位比较起来，前端技能熟练的人还不能算是太多。不过新人学习的劲头也足一些，很多人为了换博客和空间的皮肤也开始学习CSS，所以也产生了好多CSS相关的网站、论坛、 QQ群。也是个好现象吧。&lt;/p&gt;
&lt;p&gt;CSS3标准的呼之欲出，将使得CSS也会发展成为一门弱编程语言。所以前端的难度也会更大，更多的样式和属性需要使用。而且各个浏览器也会推出自己有关CSS功能的额外扩展需要我们知道。未来的CSS会更加强大和健壮。当然，浏览器的兼容问题依旧存在。最近WEB界掀起了反IE6的运动，为推动 W3C标准和更好的用户体验，建议升级IE6。而目前来说，IE8仍在测试阶段，对CSS3也提供了部分支持。而新版的火狐、Safari也开始支持 CSS3。&lt;/p&gt;
&lt;p&gt;JavaScript在最近几年也重新焕发了光彩，编程的要求也会越来越高，不过prototype、jQuery等JS插件的不断更新使我们更充满了想象力，也让代码书写更加从容简单。因而也是前端人员需要掌握的技能。不过IE的自身标准和W3C的标准不兼容问题，也需要我们从头开始学习。本博推荐JavaScript权威指南，比较详细的介绍JS核心内容和浏览器支持特性。&lt;/p&gt;
&lt;p&gt;就我个人来看，网页前端在将来还会在网站中占据很大的空间和位置。网页前端的水准会走上一个新的发展历程。&lt;/p&gt;</description>
      <pubDate>2011-01-27</pubDate>
    </item>
    <item>
      <title>C#如何实现画矩形图，饼状图</title>
      <link>http://localhost/Articles-9.html</link>
      <description>&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在用C#做报表类的网站的时候，很多时候需要一些图形来直观的表达数据所蕴含的信息，这些图形包括曲线图，矩形图，饼状图，&amp;nbsp;&amp;nbsp;最近作了个项目，内容涉及到画CPK曲线，画某个时间段各个工站的产能图，良率图，以及每月的产能图。现贴出来跟大家一起分享。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 画图常需要的命名空间是：using System.Drawing;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;画图主函数：&lt;/p&gt;
&lt;p&gt;&amp;nbsp;private void&amp;nbsp;DrawGraph()&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;// 在此处放置用户代码以初始化页面&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Graphics objGraphis;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;int width=600,height=300;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Bitmap objBitMap=new Bitmap(width,height);//图片的大小&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis=Graphics.FromImage(objBitMap);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.Clear(Color.White);//设置图片背景颜色&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Drawing.Pen pen=new System.Drawing.Pen(Brushes.Black,2);//设置画笔的颜色粗细&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Drawing.Pen pen1=new System.Drawing.Pen(Brushes.Black,1);//设置画笔的颜色粗细&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;//画图形的外框，这样会好看些&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.DrawLine(pen,0,0,width,0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.DrawLine(pen,0,0,0,height);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.DrawLine(pen,0,height,width,height);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.DrawLine(pen,width,height,width,0);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int [] arrValues={0,0};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;arrValues[0]=90;//存放Pass的数量&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;arrValues[1]=10;//存放Ｆail的数量&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;//文字标识&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;string[] arrValueNames={&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;arrValueNames[0]=&amp;quot;Pass&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;arrValueNames[1]=&amp;quot;Fail&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.DrawString(&amp;quot;产线生产情况统计&amp;quot;,new Font(&amp;quot;宋体&amp;quot;,10),Brushes.Black,new PointF(10,10));&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PointF symbolLeg=new PointF(300,20);//标识图的起初位置&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;//画标识图&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.FillRectangle(Brushes.Green,symbolLeg.X,symbolLeg.Y,40,20);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.DrawRectangle(Pens.Black,symbolLeg.X,symbolLeg.Y,40,20);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.DrawString(arrValueNames[0],new Font(&amp;quot;宋体&amp;quot;,10),Brushes.Black,new PointF(350,20));&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.FillRectangle(Brushes.Red,symbolLeg.X+100,symbolLeg.Y,40,20);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.DrawRectangle(Pens.Black,symbolLeg.X+100,symbolLeg.Y,40,20);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.DrawString(arrValueNames[1],new Font(&amp;quot;宋体&amp;quot;,10),Brushes.Black,new PointF(450,20));&lt;br /&gt;
&lt;br /&gt;
&lt;hr class="page-break" /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;//画坐标&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.DrawLine(pen1,60,50,60,270);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.DrawLine(pen1,60,270,540,270);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;//画Ｙ轴坐标&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;for(int i=0;i&lt;11;i++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float ykedu=10*i;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.DrawLine(pen1,60,70+20*i,55,70+20*i);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.DrawString(ykedu.ToString(),new Font(&amp;quot;宋体&amp;quot;,10),Brushes.Black,30,270-20*i-5);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;//画矩形图&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;PointF RectangStart=new PointF(100,270);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;for (int i=0;i&lt;2;i++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.FillRectangle(new SolidBrush(GetColor(i)),RectangStart.X,270-2*arrValues[i],100,arrValues[i]*2);// 矩形的宽度为５０和相应数值的高度&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.DrawRectangle(Pens.Black,RectangStart.X,270-arrValues[i]*2,100,arrValues[i]*2);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.DrawString(arrValues[i].ToString(),new Font(&amp;quot;宋体&amp;quot;,10),Brushes.Black,RectangStart.X+10,270-arrValues[i]*2-15);&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; RectangStart.X+=110;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;//画饼形图&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;float sglCurrentAngle;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;float sglTotalAngle=0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;for(int a=0;a &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sglTotalAngle+=arrValues[a];&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;for (int b=0;b &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sglCurrentAngle=arrValues[b]/sglTotalAngle*360;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objGraphis.FillPie(new SolidBrush(GetColor(b)),420,95,100,100,sglTotalAngle,sglCurrentAngle);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sglTotalAngle+=sglCurrentAngle;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;objBitMap.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);&lt;/p&gt;
&lt;p&gt;　//将图形输出到屏幕，也可以将图形输出到Image控件上．&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;颜色获取函数&lt;/p&gt;
&lt;p&gt;private Color GetColor(int itemIndex)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Color objColor=new Color();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;switch(itemIndex)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 0:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objColor=Color.Green;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 1:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objColor=Color.Red;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;default:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objColor=Color.Blue;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;return objColor;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/p&gt;</description>
      <pubDate>2011-01-24</pubDate>
    </item>
    <item>
      <title>C# 关于判断字符串为空的一些方法</title>
      <link>http://localhost/Articles-8.html</link>
      <description>&lt;span style="color: rgb(0,0,0)"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;.&amp;nbsp;三种常用的字符串判空串方法：&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;Length法：&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;isEmpty&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;(str.Length&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;);&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;Empty法：&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;isEmpty&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;(str&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;String.Empty);&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;General法：&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;isEmpty&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;(str&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;);&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;2&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;.&amp;nbsp;深入内部机制：&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;要探讨这三种方法的内部机制，我们得首先看看.NET是怎样实现的，也就是要看看.NET的源代码！然而，我们哪里找这些源代码呢？我们同样有三种方法：&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;Rotor法：一个不错的选择就是微软的Rotor，这是微软的一个源代码共享项目。&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;Mono法：另一个不错的选择当然就是真正的开源项目Mono啦！&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;Reflector法：最后一个选择就是使用反编译器，不过这种重组的代码不一定就是原貌，只不过是一种&amp;ldquo;近似值&amp;rdquo;，你可以考虑使用Reflector这个反编译器[&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;]。&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;这里我采用Reflector法，我们先来看看一下源代码[&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;2&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;]（片段）：&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;sealed&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;String&amp;nbsp;:&amp;nbsp;IComparable,&amp;nbsp;ICloneable,&amp;nbsp;IConvertible,&amp;nbsp;IEnumerable,&amp;nbsp;IComparable&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img id="_521_1430_Open_Image" onclick="this.style.display='none'; document.getElementById('_521_1430_Open_Text').style.display='none'; document.getElementById('_521_1430_Closed_Image').style.display='inline'; document.getElementById('_521_1430_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /&gt;&lt;img id="_521_1430_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_521_1430_Closed_Text').style.display='none'; document.getElementById('_521_1430_Open_Image').style.display='inline'; document.getElementById('_521_1430_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" /&gt;&lt;/span&gt;&lt;span id="_521_1430_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"&gt;...&lt;/span&gt;&lt;span id="_521_1430_Open_Text"&gt;&lt;span style="color: rgb(0,0,0)"&gt;{&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;String()&lt;br /&gt;
&lt;img id="_547_602_Open_Image" onclick="this.style.display='none'; document.getElementById('_547_602_Open_Text').style.display='none'; document.getElementById('_547_602_Closed_Image').style.display='inline'; document.getElementById('_547_602_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /&gt;&lt;img id="_547_602_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_547_602_Closed_Text').style.display='none'; document.getElementById('_547_602_Open_Image').style.display='inline'; document.getElementById('_547_602_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="_547_602_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"&gt;...&lt;/span&gt;&lt;span id="_547_602_Open_Text"&gt;&lt;span style="color: rgb(0,0,0)"&gt;{&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;.Empty&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;&amp;nbsp;Code&amp;nbsp;here&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;&amp;nbsp;Code&amp;nbsp;here&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;readonly&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;Empty;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;operator&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;a,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;b)&lt;br /&gt;
&lt;img id="_724_766_Open_Image" onclick="this.style.display='none'; document.getElementById('_724_766_Open_Text').style.display='none'; document.getElementById('_724_766_Closed_Image').style.display='inline'; document.getElementById('_724_766_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /&gt;&lt;img id="_724_766_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_724_766_Closed_Text').style.display='none'; document.getElementById('_724_766_Open_Image').style.display='inline'; document.getElementById('_724_766_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="_724_766_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"&gt;...&lt;/span&gt;&lt;span id="_724_766_Open_Text"&gt;&lt;span style="color: rgb(0,0,0)"&gt;{&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;.Equals(a,&amp;nbsp;b);&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;Equals(&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;a,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;b)&lt;br /&gt;
&lt;img id="_823_1022_Open_Image" onclick="this.style.display='none'; document.getElementById('_823_1022_Open_Text').style.display='none'; document.getElementById('_823_1022_Closed_Image').style.display='inline'; document.getElementById('_823_1022_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /&gt;&lt;img id="_823_1022_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_823_1022_Closed_Text').style.display='none'; document.getElementById('_823_1022_Open_Image').style.display='inline'; document.getElementById('_823_1022_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="_823_1022_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"&gt;...&lt;/span&gt;&lt;span id="_823_1022_Open_Text"&gt;&lt;span style="color: rgb(0,0,0)"&gt;{&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;(a&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;b)&lt;br /&gt;
&lt;img id="_853_888_Open_Image" onclick="this.style.display='none'; document.getElementById('_853_888_Open_Text').style.display='none'; document.getElementById('_853_888_Closed_Image').style.display='inline'; document.getElementById('_853_888_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /&gt;&lt;img id="_853_888_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_853_888_Closed_Text').style.display='none'; document.getElementById('_853_888_Open_Image').style.display='inline'; document.getElementById('_853_888_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="_853_888_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"&gt;...&lt;/span&gt;&lt;span id="_853_888_Open_Text"&gt;&lt;span style="color: rgb(0,0,0)"&gt;{&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&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;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;((a&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;(b&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;))&lt;br /&gt;
&lt;img id="_938_994_Open_Image" onclick="this.style.display='none'; document.getElementById('_938_994_Open_Text').style.display='none'; document.getElementById('_938_994_Closed_Image').style.display='inline'; document.getElementById('_938_994_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /&gt;&lt;img id="_938_994_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_938_994_Closed_Text').style.display='none'; document.getElementById('_938_994_Open_Image').style.display='inline'; document.getElementById('_938_994_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="_938_994_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"&gt;...&lt;/span&gt;&lt;span id="_938_994_Open_Text"&gt;&lt;span style="color: rgb(0,0,0)"&gt;{&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&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;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;.EqualsHelper(a,&amp;nbsp;b);&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;false&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;unsafe&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;EqualsHelper(&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;ao,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;bo)&lt;br /&gt;
&lt;img id="_1095_1259_Open_Image" onclick="this.style.display='none'; document.getElementById('_1095_1259_Open_Text').style.display='none'; document.getElementById('_1095_1259_Closed_Image').style.display='inline'; document.getElementById('_1095_1259_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /&gt;&lt;img id="_1095_1259_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_1095_1259_Closed_Text').style.display='none'; document.getElementById('_1095_1259_Open_Image').style.display='inline'; document.getElementById('_1095_1259_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="_1095_1259_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"&gt;...&lt;/span&gt;&lt;span id="_1095_1259_Open_Text"&gt;&lt;span style="color: rgb(0,0,0)"&gt;{&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;&amp;nbsp;Code&amp;nbsp;here&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;num1&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;ao.Length;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;(num1&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;bo.Length)&lt;br /&gt;
&lt;img id="_1188_1224_Open_Image" onclick="this.style.display='none'; document.getElementById('_1188_1224_Open_Text').style.display='none'; document.getElementById('_1188_1224_Closed_Image').style.display='inline'; document.getElementById('_1188_1224_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /&gt;&lt;img id="_1188_1224_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_1188_1224_Closed_Text').style.display='none'; document.getElementById('_1188_1224_Open_Image').style.display='inline'; document.getElementById('_1188_1224_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="_1188_1224_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"&gt;...&lt;/span&gt;&lt;span id="_1188_1224_Open_Text"&gt;&lt;span style="color: rgb(0,0,0)"&gt;{&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&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;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;false&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;&amp;nbsp;Code&amp;nbsp;here&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;extern&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;InternalLength();&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;Length&lt;br /&gt;
&lt;img id="_1330_1410_Open_Image" onclick="this.style.display='none'; document.getElementById('_1330_1410_Open_Text').style.display='none'; document.getElementById('_1330_1410_Closed_Image').style.display='inline'; document.getElementById('_1330_1410_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /&gt;&lt;img id="_1330_1410_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_1330_1410_Closed_Text').style.display='none'; document.getElementById('_1330_1410_Open_Image').style.display='inline'; document.getElementById('_1330_1410_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="_1330_1410_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"&gt;...&lt;/span&gt;&lt;span id="_1330_1410_Open_Text"&gt;&lt;span style="color: rgb(0,0,0)"&gt;{&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;get&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img id="_1352_1404_Open_Image" onclick="this.style.display='none'; document.getElementById('_1352_1404_Open_Text').style.display='none'; document.getElementById('_1352_1404_Closed_Image').style.display='inline'; document.getElementById('_1352_1404_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /&gt;&lt;img id="_1352_1404_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_1352_1404_Closed_Text').style.display='none'; document.getElementById('_1352_1404_Open_Image').style.display='inline'; document.getElementById('_1352_1404_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="_1352_1404_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"&gt;...&lt;/span&gt;&lt;span id="_1352_1404_Open_Text"&gt;&lt;span style="color: rgb(0,0,0)"&gt;{&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&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;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;.InternalLength();&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;&amp;nbsp;Code&amp;nbsp;here&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;Rotor里面String类的代码与此没什么不同，只是没有EqualsHelper方法，代之以如下的声明：&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;extern&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;Equals(String&amp;nbsp;value);&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;进一步分析：&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;首先是Empty法，由于String.Empty是一个静态只读域，只会被创建一次（在静态构造函数中）。但当我们使用Empty法进行判空时，.NET还会依次展开调用以下的方法，而后两个方法内部还会进行对象引用判等！&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;operator&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;a,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;b);&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;Equals(&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;a,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;b);&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;unsafe&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;EqualsHelper(&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;ao,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;bo);&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;若使用General法判等的话，情况就&amp;ldquo;更胜一筹&amp;rdquo;了！因为.NET除了要依次展开调用上面三个方法之外，还得首先创建一个临时的空字符串实例，如果你要进行大量的比较，这恐怕是想一想就很吓人了！&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;而对于Length法，我们就可以绕过上面这些繁琐的步骤，直接进行整数（字符串长度）判等，我们知道，大多数情况下，整数判等都要来得快（我实在想不出比它更快的了，在32位系统上，System.Int32运算最快了）！&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;另外，我们还可以看到，在EqualsHelper方法里面.NET会先使用Length法来进行判等！可惜的是我无法获得InternalLength方法的代码。但我在Mono的源代码里面看到更简明的实现：&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;String&lt;br /&gt;
&lt;img id="_2127_2266_Open_Image" onclick="this.style.display='none'; document.getElementById('_2127_2266_Open_Text').style.display='none'; document.getElementById('_2127_2266_Closed_Image').style.display='inline'; document.getElementById('_2127_2266_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /&gt;&lt;img id="_2127_2266_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_2127_2266_Closed_Text').style.display='none'; document.getElementById('_2127_2266_Open_Image').style.display='inline'; document.getElementById('_2127_2266_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" /&gt;&lt;/span&gt;&lt;span id="_2127_2266_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"&gt;...&lt;/span&gt;&lt;span id="_2127_2266_Open_Text"&gt;&lt;span style="color: rgb(0,0,0)"&gt;{&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;length;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;Length&lt;br /&gt;
&lt;img id="_2180_2254_Open_Image" onclick="this.style.display='none'; document.getElementById('_2180_2254_Open_Text').style.display='none'; document.getElementById('_2180_2254_Closed_Image').style.display='inline'; document.getElementById('_2180_2254_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /&gt;&lt;img id="_2180_2254_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_2180_2254_Closed_Text').style.display='none'; document.getElementById('_2180_2254_Open_Image').style.display='inline'; document.getElementById('_2180_2254_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="_2180_2254_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"&gt;...&lt;/span&gt;&lt;span id="_2180_2254_Open_Text"&gt;&lt;span style="color: rgb(0,0,0)"&gt;{&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;get&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img id="_2203_2248_Open_Image" onclick="this.style.display='none'; document.getElementById('_2203_2248_Open_Text').style.display='none'; document.getElementById('_2203_2248_Closed_Image').style.display='inline'; document.getElementById('_2203_2248_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /&gt;&lt;img id="_2203_2248_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_2203_2248_Closed_Text').style.display='none'; document.getElementById('_2203_2248_Open_Image').style.display='inline'; document.getElementById('_2203_2248_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span id="_2203_2248_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"&gt;...&lt;/span&gt;&lt;span id="_2203_2248_Open_Text"&gt;&lt;span style="color: rgb(0,0,0)"&gt;{&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&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;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;length;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;&amp;nbsp;.&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;然而使用Length法进行字符串判空串时，有一点要注意的，就是你必须先判断该字符串实例是否为空引用，否则将会抛出NullReferenceException异常！于是，我们有了一个经过改进的Length法：&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;Foo(&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;bar)&lt;br /&gt;
&lt;img id="_2395_2452_Open_Image" onclick="this.style.display='none'; document.getElementById('_2395_2452_Open_Text').style.display='none'; document.getElementById('_2395_2452_Closed_Image').style.display='inline'; document.getElementById('_2395_2452_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /&gt;&lt;img id="_2395_2452_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_2395_2452_Closed_Text').style.display='none'; document.getElementById('_2395_2452_Open_Image').style.display='inline'; document.getElementById('_2395_2452_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" /&gt;&lt;/span&gt;&lt;span id="_2395_2452_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)"&gt;...&lt;/span&gt;&lt;span id="_2395_2452_Open_Text"&gt;&lt;span style="color: rgb(0,0,0)"&gt;{&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;((bar&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;(bar.Length&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;))&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)"&gt;//&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;3&lt;/span&gt;&lt;span style="color: rgb(0,0,0)"&gt;.&amp;nbsp;最后总结：&lt;br /&gt;
&lt;img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /&gt;从上面的分析我们可以看到，使用Length法来进行字符串判空串是有着很大的性能优势的，尤其在进行大量字符串判空时！当然首先得判断字符串实例是否为空引用！&lt;/span&gt;</description>
      <pubDate>2011-01-21</pubDate>
    </item>
    <item>
      <title>微软欲主动送Windows Phone 7设备给黑客破解</title>
      <link>http://localhost/Articles-7.html</link>
      <description>&lt;p&gt;黑客George Hotz热爱各种数码设备的破解，iPhone越狱让他一战成名，PS3破解令他收到传票，而有意思的是，微软却非常欢迎他来破解Windows Phone 7。&lt;/p&gt;
&lt;p&gt;GeoHot昨日宣布向WP7进军，更新其网站透露他要出去购买WP7手机。在听到GeoHot对Windows 7感兴趣后，微软WP体验开发部门经理Brandon Watson非常开心，在Twitter向GeoHot喊话，如果希望破解WP7，只要给团队去一封邮件，微软可以免费送出一台WP7设备。&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img style="cursor: pointer" onclick="window.open('http://articles.csdn.net/uploads/allimg/110120/79_110120093426_1.JPG')" height="386" alt="" src="http://articles.csdn.net/uploads/allimg/110120/79_110120093426_1.JPG" width="578" border="0" /&gt;&lt;/p&gt;
&lt;p style="text-align: center"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img style="cursor: pointer" onclick="window.open('http://articles.csdn.net/uploads/allimg/110120/79_110120093435_1.JPG')" height="411" alt="" src="http://articles.csdn.net/uploads/allimg/110120/79_110120093435_1.JPG" width="578" border="0" /&gt;&lt;/p&gt;</description>
      <pubDate>2011-01-20</pubDate>
    </item>
    <item>
      <title>友盟Android应用数据报告显示国内优质应用非常稀缺</title>
      <link>http://localhost/Articles-6.html</link>
      <description>&lt;p&gt;移动应用分析平台友盟最近发布的Android应用数据统计显示，在友盟提供分析服务的近千Android个应用中，最热门的前20个 Android应用的日安装量已经超过5000，但绝大多数应用在7天内启动的用户数不超过1000，国内市场的优质Android应用还非常稀缺。&lt;/p&gt;
&lt;p&gt;其中，社交沟通、阅读资讯、通话通信三类的应用被用户使用的频率最高，而阅读资讯在单次使用时长上毫无悬念的领先于其他各类应用。&lt;/p&gt;
&lt;p&gt;统计还显示，市场上近百款Android手机中，前20款占据了82.5%的市场份额，其中HTC Desire以15.5%的占有率名列第一，摩托罗拉MileStone以12.7%紧随其后。 HTC、摩托三星三大品牌的占有率高达71%。&lt;/p&gt;
&lt;p&gt;在涉及到Android版本和适配的终端调查方面，Android 2.1和2.2版本占了85.7%的份额，2.3版本仅有0.4%。三款主流手机屏幕分辨率&amp;mdash;&amp;mdash;800*480、480*320或854*480占据79.4%的份额。&lt;/p&gt;
&lt;p&gt;据友盟CEO蒋凡透露，目前友盟工具已覆盖了超过400万Android终端手机，覆盖50%的市场。本次统计数据来自近千款Android应用的每次启动和使用，完整版的统计报告将于下周一正式对外公布。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.umeng.com/" target="_blank"&gt;友盟移动应用分析工具正式版&lt;/a&gt;也已推出，相比之前版本，新增了两个重要功能：1）提供移动应用程序关键指标的行业平均数据及行业排名等。2）推出页面访问分析，可以帮助开发者监测页面跳转率等数据。（文/杨东杰）&lt;/p&gt;</description>
      <pubDate>2011-01-20</pubDate>
    </item>
    <item>
      <title>每天50TB 淘宝海量数据轻松“漫游”记</title>
      <link>http://localhost/Articles-5.html</link>
      <description>&lt;p&gt;&lt;strong&gt;导语：&lt;/strong&gt;在电子商务领域，淘宝可谓是一支奇葩。它创造了中国最大的电子商务网站，形成了一个包括买家、买家、物流、金融、广告、搜索在内的商业生态系统。据了解，淘宝目前每天的活跃数据量已经超过50TB，共有4亿条产品讯息和2亿多名注册用户在上面活动，每天超过4000万人次访问。如此巨大的数据访问量，使得淘宝数据仓库成为国内最忙碌的数据仓库之一。每天大约要处理几亿次的用户行为。那么，淘宝是如何建立和管理自己的数据仓库，保证其高效、安全地运行和管理的呢？在北京oracle全球大会上，记者访问了淘宝网技术开发部高级数据库专家江枫，详细了解了在 oracle数据库和Oracle RAC产品基础上，淘宝是如何构建自己的数据仓库奇迹的过程。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 据江枫介绍，淘宝所有的商业数据基本上都是汇集到数据仓库来集中，然后进行运算，最终会根据不同的BI模型，得出不同的结果。通过对各种访问、交易、商铺信息以及客服信息等的综合处理，形成反映各种浏览、交易和用户行为、行业销售趋势方面的统计数据，可以给整个公司的决策提供数据方面的支持。因此，淘宝的数据库系统对整个公司来说，是至关重要的。同时，江枫也表示，淘宝的数据除了给公司内部用以外，也有提供给外部用户的。比如说淘宝2010年做的数据魔立软件产品，就是给淘宝的卖家提供商品的销售情况，行业的销售的趋势，给淘宝卖家带来更大的数据营销方面的数据方面的支持;另外还有一个比较大的数据产品是电子统计，即提供给淘宝卖家的一些电子统计，包括卖家的访客来源，访客喜欢什么时间段来，定了哪些商品等非常详细的订货的统计，这些信息也有助于淘宝的产品商户和卖家了解、分析用户行为，设计增值服务。这不仅需要数据仓库对海量数据进行更新、集中处理，也需要它能提供每天动态、实时的分析，无疑对于数据库系统是个巨大的挑战。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 淘宝网利用Oracle产品构建淘宝数据库的技术已经有4年的时间。并于2007年、2008年和2009年三次利用Oracle RAC 10g和Oracle RAC 11g对数据仓库系统进行了升级和扩充，将数据仓库部署在RAC系统之上。4年来，淘宝的业务每年是保持100%以上的增长速度，淘宝的数据库也在不断增长。2006年，淘宝的RAC系统还是4个节点，2008年，淘宝将之升级到12个节点，2009年的时候又把它升到20个节点，使淘宝在数据仓库规模每年成倍扩大的情况下，实现了数据处理和分析时效性的不断提升，应对不断增长的数据处理需求。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 同时，江枫强调，该数据库系统的实时更新已经可以做到每小时，或者是每15分钟，甚至可以做到秒级的水平&amp;mdash;&amp;mdash;淘宝现在今年新开发的基于日期的复制已经可以做到秒级的实时更新数据到这个数据仓库里面来。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 对于淘宝来说，数据的安全性更加重要。江枫说，淘宝就是所有的数据库肯定都是在集成网络之后的，在外面任何地方都是没有办法访问到淘宝上数据库上的数据的。在监控上，淘宝有自己一整套监控系统在支持，包括我们防欺诈、防恶意的数据。在淘宝内部，专门设置了一个非常大的部门在做这个事情。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 目前，Oracle 11g产品也在淘宝的数据仓库系统内进行着测试，并将在不久的将来，在淘宝网的数据库系统建设中，发挥更大的作用。&lt;/p&gt;</description>
      <pubDate>2011-01-20</pubDate>
    </item>
    <item>
      <title>微软与谷歌 未来云时代霸主</title>
      <link>http://localhost/Articles-4.html</link>
      <description>&lt;p&gt;在云计算的时代，哪些公司将在未来十年内的IT行业中成为举足轻重的名字。这个回答通常会让那些提问的人大吃一惊，这不仅仅是因为我看好的两家公司在目前还并不被认为是云计算公司。&lt;/p&gt;
&lt;p&gt;现在，我用两篇日志的篇幅谈谈我心目中最能够利用云计算模式给自己带来优势的两家公司，第一篇日志里，我将会介绍这两家公司，并且说明为什么它们能够最好地适应绝大部分IT服务客户的需求。然后，我将在第二篇日志里介绍几家将会挑战这两家公司市场领导地位的公司，这些公司也许还梦想着将领导地位据为己有。&lt;/p&gt;
&lt;p&gt;但是在我介绍这两家公司之前，我必须要解释一下在未来十年的云计算世界中获得成功和现在是不同的。&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img alt="迈向云计算的未来（上）" src="http://articles.csdn.net/uploads/allimg/110120/1130521344-0.jpg?1295393306&amp;amp;random=2654.8286811545418" /&gt;&lt;/p&gt;
&lt;p style="text-align: left"&gt;&lt;strong&gt;为什么今天的云计算并不代表明天最大的机会&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;想想云计算的承诺。想象一家公司依靠着技术提供的商业能力，但是自身却不销售计算技术或者服务。企业可以获得完整的IT服务以支撑自己的业务，而且与此同时，完全不需要建立自己的数据中心&amp;mdash;&amp;mdash;或者起码只需要建设那些绝对有必要的数据中心。&lt;/p&gt;
&lt;p&gt;想象一下目前被广泛接受的支持模式。每个通用的IT系统（例如打印、文档共享或电子邮件）都有大批彼此竞争的产品供客户从中进行选择。普通的商业应用，例如财务/会计、协作/通信和人力资源也有多种选择。甚至行业专有的系统，例如电子病历交换和法律数据仓库等也都有一个或多个供应商可供选择。&lt;/p&gt;
&lt;p&gt;你希望为自己的信息系统增加一些个性化的代码？也有很多种选择。绝大部分的新应用都会部署在云平台上，成为一种服务选择，我相信，会有很多的厂商能够满足各种潜在市场的需求，无论是大量数据的网络应用还是针对商业流程自动化的商业智能，都是如此。然而，如果你希望（或者需要）对整个软件结构进行创新，那么基础架构服务也仍然是有足够多的选择。&lt;/p&gt;
&lt;p&gt;在这样一个选择丰富的环境中，你会遇到的最大的问题是什么呢？我认为这个问题很容易回答：整合。目前，你最大的问题是如何把这些IT系统整合到一起。&lt;/p&gt;
&lt;p&gt;事实上，我们今天已经看到了这个问题。绝大部分的云计算项目，即使是那些成功得让人难以置信的项目，例如Netflix选择Amazon Web Services，也是只针对一个云计算服务商或者一个云计算环境的，这样的项目里通常会包含从零开始开发的各种应用和服务，这些应用和服务从设计之初就紧密连接在一起。然而企业也曾经试图整合一些位于不同的云之间的IT系统，可是这样的项目没有一个取得了巨大的成功。&lt;/p&gt;
&lt;p&gt;一些人可能会认为这只是云计算处于萌芽状态的特殊情况，我认为这只能证明跨云的服务整合是一种痛苦。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为什么整合的服务将会赢得最多的收入&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;现在想象一下，你创办了一家小型企业，比如说是一家咨询顾问公司，或者一家新的零售商店。你需要IT服务，你只需要它能够能够工作，并且只需要很少的维护或者专家技能，你希望它成本不高。那么你希望从&amp;ldquo;云计算&amp;rdquo;里获得什么呢？&lt;/p&gt;
&lt;p&gt;我在这里再一次认为这个答案很简单：初创公司和小型企业将寻求整合服务，他们会从单一厂商那里购买或者是从高度集成的厂商环境中采购。最理想的状况是购买一套在线账号，就获得了事先整合好的财务、协作、通信、客户关系管理、人力资源管理等应用。&lt;/p&gt;
&lt;p&gt;换句话说，&amp;ldquo;要保持简单，傻瓜化。&amp;rdquo;云计算有一天将会为新公司提供这些。但是今天这些公司里，只有极少数的公司可以提供全面的IT系统整合。我认为未来的两大巨头是微软和谷歌。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;什么？！&amp;rdquo;你也许会这样说。&amp;ldquo;这两家公司都已经被大家当做是即将绝种的恐龙了。为什么人们要把自己绑定在某一家厂商身上，从他们哪里获取IT服务呢？毕竟云计算市场如此广阔&amp;mdash;&amp;mdash;尤其是，为什么是这样两家公司呢？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;答案是，我们需要更仔细地看一看每家厂商目前所提供的产品和服务。&lt;br /&gt;
&lt;br /&gt;
&lt;hr class="page-break" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;微软：强大之处在于丰富的产品线！&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img alt="迈向云计算的未来（上）" src="http://articles.csdn.net/uploads/allimg/110120/1130525054-1.gif?1295393306&amp;amp;random=4302.661416684183" /&gt;&lt;/p&gt;
&lt;p style="text-align: left"&gt;微软突出的原因是因为产品的范围非常宽广。而它的基础架构作为服务和平台，成为为客户提供服务的商业模式的核心，它的应用将最终为该公司赢得更大的市场份额。&lt;/p&gt;
&lt;p&gt;诸如Office 365之类的产品已经提供了基于云的版本，这些产品可以为企业提供关键的协作和通信能力，并且能够覆盖不同的商业市场。然而，微软的CEO Steve Balmer也已经明确了这一点：微软的每款产品都要具备云计算的能力，或者利用云提高他们产品的功能。&lt;/p&gt;
&lt;p&gt;微软的每个产品小组都会让他们的产品&amp;ldquo;云化&amp;rdquo;，我相信他们也采取了类似的方法确保所有的产品都紧密地整合在一起。&lt;/p&gt;
&lt;p&gt;有了Sharepoint和Lync，再加上基于&amp;ldquo;Oslo&amp;rdquo;工具，Dynamics portfolio就可以进行跨系统的整合，甚至可以跨越企业的边界，你已经有了很好的IT平台去做这件事情。有了Azure，你就有了一个开发平台服务，让你可以进行个性化的开发和扩展，或者超越微软服务开发出新的功能。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;谷歌：把客户成功转化成商业模式&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img alt="迈向云计算的未来（上）" src="http://articles.csdn.net/uploads/allimg/110120/1129242144-2.png?1295393306&amp;amp;random=5443.108781902396" /&gt;&lt;/p&gt;
&lt;p style="text-align: left"&gt;对于谷歌的云计算之路，我印象最为深刻的是这家公司只关注应用。谷歌并不打算提供基础架构。即使是谷歌的应用引擎（Google App Engine），谷歌的这款平台是服务模式的核心，也是同一系列应用紧密结合的&amp;mdash;&amp;mdash;也许这并不让人吃惊，它是同一些网络应用整合在一起的&amp;mdash;&amp;mdash;配置的工作也尽可能地简单。开发者已经开发了绝大部分同底层平台元素的集成接口。&lt;/p&gt;
&lt;p&gt;然而，你看看它的客户应用产品，以及它如何为客户调整这些应用，你就会发现这家公司真正的长处。谷歌一直都抓住了新的网络应用的机会，这是它胜出的地方&amp;mdash;&amp;mdash;无论是建立庞大的用户基础还是产生实际的收入方面，都表现优异&amp;mdash;&amp;mdash;因此也吸引了那些为了让应用在更广阔的市场上更具吸引力的额外投资。 Google Mail是这些选择当中最为成熟的，但是Google Apps也相去不远。&lt;/p&gt;
&lt;p&gt;然而，谷歌目前工作的核心是围绕着自己的核心应用产品建设一个生态系统。Google Apps Marketplace是一个很好的例子，它说明了这家公司是如何建立自己的应用，并且把这些应用同该公司基本的谷歌应用以及邮件系统整合在一起的。&lt;/p&gt;
&lt;p&gt;该公司正在把一些初生的通信和协作工具套件，例如Google Voice和Buzz集成到自己的云计算环境之中，同其他所有的产品结合在一起，你会看到一种新的IT平台形态，这种形态对于小型企业或者那些特殊的工作需求来说非常具有吸引力。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;云中没有保障&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如你所见，微软和谷歌都有足够的基础工具和专家意见，能够提供一站式的IT服务模式，两家公司都对我证实了他们的渴望。然而，在现在这个世界里，没有一家公司可以说是注定会成功。之所以出现这样的情况有两个原因，最重要的是没有一家公司拥有我认为是完美无缺的执行记录。事实上，两家公司都在极力努力展现他们在核心商业模式上的转变。&lt;/p&gt;
&lt;p&gt;这两家公司都必须要付出各种努力，才能够实现他们的目标，即使这些行动破坏了当前的市场计划也在所不惜。这两家公司都有很多的应用，并且展现出非常强的实力，但是两家公司距离提供一站式的服务都还有很大的差距。&lt;/p&gt;
&lt;p&gt;另一个原因是这里有很多有实力的竞争对手，他们也在觊觎&amp;ldquo;一站式&amp;rdquo;供应商的位置。你可能会想起亚马逊、Salesforce.com、VMware 或者各种托管公司，各种电信公司。在这个系列的下半部分，我会介绍一些我认为可能会挑战这两家领导公司的竞争对手，其中一家可能会让你大吃一惊。&lt;/p&gt;
&lt;p&gt;与此同时，我认为针对开发者的云服务在接下来的几年里将会承受巨大的压力。完成一个高度整合的IT平台，让它能够服务于多个商业市场是非常难的任务，这需要这家公司或者多家公司真正地兑现承诺，齐心协力才能够达成这样的目标。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关于作者&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;James Urquhart，分布式系统开发和部署面向服务的架构，以及云计算和虚拟化等领域的技术专家，有着20多年的经验。他是一个思科系统的云计算市场战略师，也是Enstratus的市场顾问。&lt;/p&gt;</description>
      <pubDate>2011-01-20</pubDate>
    </item>
    <item>
      <title>IBM云战略：巨人的迷茫？</title>
      <link>http://localhost/Articles-3.html</link>
      <description>&lt;p&gt;尽管IBM公司拥有令人印象深刻的产品、技术与服务组合，但是由于这位业界巨人在云计算这一崭新领域缺乏一个明确的战略规划，从而有可能为其IT领军地位埋下隐忧。&lt;/p&gt;
&lt;p&gt;分析人士和客户均表示该公司产品繁多，但也正是这一点阻碍了它集中全力开发简单易用云计算产品的能力。&lt;/p&gt;
&lt;p&gt;IBM公司的产品组合包括：适用于Amazon web服务与应用（AWS）的WebSphere、私有云计算应用CloudBurst、运行于IBM云计算平台上的IBM智能业务测试和开发服务、 LotusLive、诸如Cast Iron之类的软件即服务集成工具、IBM云计算应用程序开发服务、云计算Rational与Tivoli软件、IBM云计算实施服务、IBM Federal Community云、IBM云计算智能分析以及IBM云计算实验室等等。其中大多数产品（服务）与同类竞争者相比，其价格并不占优势。&lt;/p&gt;
&lt;p&gt;甚至IBM也承认发布这样一个明确的信息也是一项难度不小的挑战。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;这是一把双刃剑，我们所推出的单品越多，我们就离云计算的理念越远。&amp;rdquo;IBM公司云计算营销副总裁David Parker说。至于公司的云计算战略，他说：&amp;ldquo;如果你只是关注我们的产品，就如同是在品茶一般。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;这并不是说，IBM公司是唯一一家没有明确云计算战略的大型公司。其他的大公司也是大致如此，但是IBM公司的问题在于它涉足领域过多而显得异常吸引眼球，Gartner的分析师Drue Reeves说。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;IBM公司有机会针对你所有的云计算需求展示一个有凝聚力的战略。&amp;rdquo;Reeves说：&amp;ldquo;但是事与愿违，它只是东打一枪西放一炮，这样的做法并不能展现其主导地位。&amp;rdquo;这种对云计算漫无目的的举措让客户担忧。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IBM邀请客户帮助完善其产品与服务&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;位于加拿大蒙特利尔魁北克Sun Media Corp的区域IT主管Timothy Happychuk就一直致力于研究云计算方案以降低成本。他的公司缺乏优秀的IT人员，因此将公司的基础设施转移给外部IT专家的想法就显得极具吸引力。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;如果你计算一下我们在维护内部IT团队方面的开支就会发现，那样做还不如给外部的IT专业人士开张支票而让他们来处理所有棘手的问题。&amp;rdquo;Happychuk 说。他的公司将逐步采用某些云计算服务&amp;mdash;&amp;mdash;电子邮件是所有候选项中的首选&amp;mdash;&amp;mdash;而Lotus Live作为IBM的一个产品将是一个自然而然的选择。&lt;/p&gt;
&lt;p&gt;但是Happychuk说，当他要求特定的安全要求或性能参数时，IBM公司对他说，Sun Media Corp本身就具备最好的托管架构，IBM将仅卖给他们关键部件而已。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;这就如同你来到一家精美的餐厅，你对那里的厨师抱有极大的期待，希望能够享用一顿让人叹为观止的美味并享受到让人感到宾至如归的服务，但是事与愿违，你被邀请进入厨房帮忙一起做菜，而账单却是毫无差别。&amp;rdquo;他说。&lt;/p&gt;
&lt;p&gt;他的公司并不希望在基础设施上花费过多，而是寻求外包供应商以减少其IT成本。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;云计算需要一种新的方法&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;IT公司推动云计算基础设施更为激进的方法让我们认识到，老式而单一的软硬件方法并不是适宜的方法。&lt;/p&gt;
&lt;p&gt;因此，IBM公司所大力推出的庞大云计算软件产品组合就如同锦衣夜行一般，云计算咨询公司Cloudscaling的Randy Bias说。例如，IBM Tivoli销售针对管理复杂异构环境而设计的库存管理软件产品。&lt;/p&gt;
&lt;p&gt;但是他说正确设计将使云计算系统中的每个机架看上去都是一模一样。一个严格意义上的云计算环境很少有供应商和标准系统。如果组件都是一样的，那么为什么一个现代IT公司需要对云计算基础设施配备一个重负载的库存管理系统？&lt;/p&gt;
&lt;p&gt;然而，Bias已经看到了IBM CloudBurst的提议，其中包括了该产品和更多的Tivoli软件。&amp;ldquo;他们正试图将企业软件的成本转至云计算，但这项工作并不奏效。&amp;rdquo;Bias说。&lt;/p&gt;
&lt;p&gt;同时，IBM公司的Parker说，公司早就认识到数据中心IT管理人员会因为担心公共云既无法满足他们数据安全需求又无法符合合规性要求而选择私有云。为此，IBM公司于2009年6月推出了称为CloudBurst的云计算套装产品。&lt;/p&gt;
&lt;p&gt;CloudBurst是在标准42U机架内的每个刀片服务器内运行Tivoli管理软件和VMware ESXi 4.1嵌入的预配置IBM刀片服务器中心。客户将其连至一个数据中心并插入启动一个自服务门户网站以便于访问。CloudBurst上市价格为$250000。&lt;/p&gt;
&lt;p&gt;其竞争对手分别为EMC公司的Vblock VCE产品、VMware、Cisco以及Oracle公司的Exalogic。这些技术通常被称为垂直整合堆栈或私有云。所有这些装载软件的费用高达数十万美元, 其具体价格随配置而定。&lt;/p&gt;
&lt;p&gt;Cloudscaling的Bias说众多公司选择CloudBurst，且最终比简单升级他们现有IT系统花费开支更多，即使云计算的卖点在于能够降低成本。他说，云计算套装系统的成本要比建设诸如AWS这样的商业云高若干个数量级。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IBM智能业务开发、测试云和IaaS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;IBM并不无视企业基础设施的运行费用。该公司认为IT部门的最高成本之一是建立开发和测试环境。通常这些工作环境需要很长的时间来创建，而且也往往是没有得到充分地利用。&lt;/p&gt;
&lt;p&gt;IBM公司大张旗鼓地于2009年6月在基础设施即服务（IaaS）上推出开发和测试服务。被吹捧为取代硬件采购的这项服务为开发者提供自服务的门户网站和工具菜单目录，并支持自动配置和解除用户配置的能力。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;开发和测试是云计算服务最显而易见的应用之一。&amp;rdquo;Gartner的Reeves说。但是他也对IBM在将该项技术推向市场迟缓的步伐表示了失望。 &amp;ldquo;IBM公司建议使用基础设施即服务（IaaS）只用于开发与测试，那么为什么不用于其他的应用呢？他说。&amp;lsquo;难道是因为他们还没有做好准备？&amp;rsquo;&amp;rdquo;&lt;/p&gt;
&lt;p&gt;IBM公司的Parker表示该公司的IaaS正处于正常开发阶段，而公司也正计划推动该技术的产品化。虽然目前IaaS只适用于开发和测试，Parker表示公司正计划扩大其产品的范围，但拒绝透露更多其发布时间表的信息。&lt;/p&gt;
&lt;p&gt;Parker还补充道，有大量独立软件供应商（ISV）希望成为云计算服务供应商。&amp;ldquo;我们要为这些人提供通往云计算的康庄大道，而不是仅仅建立基础设施即服务（IaaS）本身，&amp;rdquo;他说。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WebSphere和平台即服务（PaaS）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;即使该产品前景广阔，IBM公司的产品组合仍然存在着空白之处。一个缺少的组件即平台即服务（PaaS）市场。这里的竞争是非常激烈的，其中的参与者包括微软公司的Azure、Vmware公司的VMForce、Google公司的App Engine（GAE）以及Salesforce.com的Force.com和Heroku。&lt;/p&gt;
&lt;p&gt;再之后则是几十家规模较小的PaaS供应商&amp;mdash;&amp;mdash;其中有LongJump、EngineYard、WaveMaker、PHP Fog以及CloudBees等等。分析人士预计，最终所有的新应用都将基于这些平台中一个或多个的云进行开发。同时，IBM的PaaS产品是AWS的 WebSphere。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;这符合PaaS的最低要求，但它并不是真正PaaS的竞争产品。&amp;rdquo;Gartner的Reeves说：&amp;ldquo;它需要进一步发展，以使其达到企业的标准。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;现在的WebSphere缺少一个结构层，以便于让开发人员开发应用程序时无需担心其根本的基础设施。WebSphere在AWS的Amazon Machine Image上运行。开发人员必须按要求管理所有与每个单机相关的基础设施组件。&lt;/p&gt;
&lt;p&gt;一家医疗软件公司Hiptide LLC的首席技术官Vimal Goel曾使用Force.com来设计其软件。&amp;ldquo;没有一家现代公司会使用Amazon的WebSphere。&amp;rdquo;Goel说：&amp;ldquo;即使WebSphere的想法让我兴奋异常，但其整体软件并不是专为云计算而设计的。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Goel补充说，包括Vmware、Google以及Microsoft在内的PaaS供应商都允许开发者在一开始时免费使用，这一点至关重要，但 IBM却不执行这一政策。一开始使用AWS上WebSphere的费用就不菲。IBM对Amazon云计算服务的许可是基于处理器价值单位的（PVU），这随着Amazon EC2实例的类型（或大小）以及用于安装软件的虚拟核心数量不同而变化。&lt;/p&gt;
&lt;p&gt;例如，使用四个虚拟核心的较大实例需要200个PVU。每个PVU需$46.25，在该AWS配置上WebSphere的许可证费用达$8,450。而这是维护前费用，另外还需加上所有Amazon的费用。&lt;/p&gt;
&lt;p&gt;但是变化很快就会出现。WebSphere的首席技术官、IBM公司研究员Jerry Cuomo表示，公司正致力于开发一个新的PaaS产品。该产品将以Java为核心，支持多种运行时选择，并支持Java的多种语言和API。但该公司还未透露相关细节。&lt;/p&gt;
&lt;p&gt;IBM推进云计算的迟缓脚步已经让众多看好该公司在云计算中领军地位的人士感到失望。尽管其起步尴尬，但是毫无疑问IBM公司那庞大的规模和企业数据中心经验都将使其成为云计算领域中无可争议的中坚力量。一家科技研究公司451 Group表示，在IaaS产品的收入方面IBM仅次于Amazon公司位于第二。451 Group估计2010年蓝色巨人在IaaS方面的收入就达到了3000万美元。而同时，Amazon web服务应用在销售IaaS方面的年收入达5000万美元。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;最后无论IBM成败与否，他们的起点非常高，因此他们能够获得业务。&amp;rdquo;451 Group的首席分析师John Abbott说。（滕晓龙/译）&lt;/p&gt;</description>
      <pubDate>2011-01-20</pubDate>
    </item>
    <item>
      <title>苹果CEO乔布斯鲜为人知的15个小秘密</title>
      <link>http://localhost/Articles-2.html</link>
      <description>&lt;p&gt;苹果CEO乔布斯通常位列最受尊敬的CEO之列一点都不让人奇怪。乔布斯同时还被《财富》杂志选为&amp;ldquo;十年最佳首席执行官&amp;rdquo;(CEO of the Decade)，《财富》杂志认为，&amp;ldquo;乔布斯前所未闻地导致四个行业&amp;mdash;&amp;mdash;电脑、音乐、电影和智能电话&amp;mdash;&amp;mdash;重新洗牌&amp;rdquo;。 苹果的众多粉丝和投资者认为乔布斯无可替代，然而身患胰腺癌的乔布斯最近宣布病休以集中精力治疗，两年前乔布斯也因同样原因休息了一段时间。 在苹果再一次处理乔布斯&amp;ldquo;病休&amp;rdquo;的时候，这里与读者一起分享有关乔布斯的15个鲜为人知的秘密。&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;img style="width: 275px; cursor: pointer; height: 402px" onclick="window.open('http://articles.csdn.net/uploads/allimg/110120/89_110120101045_1.jpg')" alt="" src="http://articles.csdn.net/uploads/allimg/110120/89_110120101045_1.jpg" border="0" /&gt;&lt;/p&gt;
&lt;p style="text-align: center"&gt;苹果CEO乔布斯&lt;/p&gt;
&lt;p style="text-align: left"&gt;&lt;strong&gt;1. 大学辍学&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;很少有人知道乔布斯大学没读完就辍学了。1972年，乔布斯从美国加州库比提诺市Homestead高级中学（Homestead High School）毕业，同时被俄勒冈瑞德学院 （Reed College ）录取。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;一个学期后，乔布斯辍学了，并在1976年4月份与一道辍学的斯蒂夫-盖瑞-沃兹尼亚克(Stephen Gary Wozniak) 在自己的车库中创建了苹果。当时，21岁的乔布斯担任销售员的角色，而沃兹尼亚克则是工程师。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2008年8月，沃兹尼亚克在英特尔公司的一个会议上谈到乔布斯时表示，&amp;ldquo;从我们很年轻的时候开始，每当我设计出什么好东西，乔布斯总会说，&amp;lsquo;让我卖了它吧&amp;rsquo;，总是他来出主意把东西卖出去的&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 生父是阿拉伯人&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;乔布斯1955年2月24日生于旧金山。母亲乔安&amp;middot;卡罗尔&amp;middot;席博（Joanne Carole Schieble）和叙利亚裔父亲阿卜杜勒法塔赫&amp;middot;江达利（Abdulfattah Jandali）当时尚未结婚。克拉拉&amp;middot;乔布斯和保罗&amp;middot;乔布斯收养了乔布斯，这是一个家境并不宽裕的美国中产阶级家庭。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 比尔&amp;middot;盖茨也是他的粉丝&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1998年1月，微软前总裁比尔-盖茨在被问及自己最欣赏的CEO时表示，&amp;ldquo;就精神领袖而言，斯蒂夫-乔布斯是我见过的最棒的。他有着完美产品的理想，而且他能够传播这种产品&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 在印度寻求&amp;ldquo;启蒙&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1974年夏天，为寻求理智启蒙(Spiritual Enlightenment)，乔布斯和瑞德学院的好友之一丹-科特克（Dan Kottke）去了印度。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;深陷哲学心境的乔布斯当时很想学习和体验唯心论和存在主义。在印度，他曾想到卡尼奇达姆【Kainchi Dham；编者注：此处是一个现代朝圣中心】拜访传奇高僧尼姆&amp;middot;卡洛里&amp;middot;巴巴（Neem Karoli Baba），但是当他们抵达的时候发现巴巴已经圆寂了。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. 2010年薪水1美元&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;最为最让尊敬的CEO，乔布斯只领取1美元的薪水。他的薪资引起世人注意是在2001年的时候，当时苹果公司赠送了一架&amp;ldquo;湾流&amp;rdquo;豪华公务飞机给乔布斯。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;据监管部门的资料，2010年乔布斯领取了1美元的薪水。然而，他拥有公司550万股股份，按目前每股333美元计算大约价值18亿美元，苹果股价去年上涨超过50%。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6. 曾收到自己创建公司的解雇通知书（Pink Slip）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1985年，因在如何运营公司问题上与苹果公司前任CEO约翰&amp;middot;史考利（ John Sculley）发生分歧，乔布斯被自己创建的公司解雇。顺便提一下，史考利是乔布斯从百事手中挖过来的。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1985年8月5日出版的《财富》杂志以题为《斯蒂夫&amp;middot;乔布斯的垮台》（&amp;ldquo;The Fall Of Steve Jobs&amp;rdquo;）的封面故事讲述了乔布斯被自己创建公司解雇的事情。摘录如下：&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;5月底到6月中，苹果匆匆完成重组，解雇了大约20%的雇员，并宣布了有史以来的首次季度亏损，该公司股价也跌至三年来的最低点，每股14.25美元。苹果同时宣布解雇30岁的公司共同创始人兼总裁斯蒂夫&amp;middot;乔布斯。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;乔布斯的命运引起了人们的高度猜测。他不仅仅是一个企业家，他是个人电脑的&amp;lsquo;苹果佬&amp;rsquo;（Johnny Appleseed）。很多业内人士对他的离职都倍感震惊，他们担心苹果将失去赖以成就辉煌的灵魂和视野。没有人公开说明乔布斯遭受不幸的内幕，但是有匿名人士向《财富》杂志透露一些关键细节。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;来自苹果的消息来源表示事情起源于公司的逆境&amp;mdash;&amp;mdash;电脑业务的全面颓势以及Mac部门销售情况的糟糕，这导致了史考利和乔布斯之间的矛盾开始。苹果董事会在乔布斯离职的事情上起到了关键的作用。虽然，史考利处于对公司重组的本能警惕以及担心乔布斯的感受而推迟行动。自12月起，董事会在多个场合唆使史考利争夺公司权力。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7. 披头士的苹果&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;据《苹果公司兴衰内幕》（ Apple the Inside Story of Intrigue, Egomania, and Business Blunders）作者吉姆&amp;middot;卡尔顿（Jim Carlton）表示，乔布斯选择苹果作为自己公司的名字是因为他崇拜披头士的苹果唱片公司（Apple Records）。披头士最初在1960年代的时候在唱片上使用Granny Smith绿苹果标志。苹果公司的标识上则是一个被咬掉一口的苹果形象。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;这个选择导致了与披头士苹果唱片公司的一场官司。苹果唱片公司由披头士乐队成员保罗&amp;middot;麦卡特尼(Paul McCartney)、林戈&amp;middot;斯塔尔（Ringo Starr）以及约翰&amp;middot;列侬(John Lennon)的遗孀小野洋子（Yoko Ono）所有。双方在2007年2月解决了这场争端。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;乔布斯和沃兹尼亚克各拥有公司45%的股份，其他的10%属于罗&amp;middot;韦恩 (Ron Wayne)，韦恩同时也是阿塔里公司(美国最大的电视游戏机公司)的工程师，当时分身两地。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;8. 25岁的百万富翁&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;苹果公司第一个大的成功是靠Apple II来完成的，这是一个一台让电脑在家庭普及的机器。1980年苹果电脑的销售从1978年的780万美元激增至1.17亿美元。1980年苹果上市，当时25岁的乔布斯也因此成了一个百万富翁。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Mac电脑更是超越了Apple II。Mac是第一款围绕图形用户界面构建并取得成功的电脑。Mac使用图标和鼠标让用户点击程序。该技术后来被苹果的竞争对手微软的Windows采用。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;9. 乔布斯的NeXT&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;30岁的乔布斯离开苹果公司之后创建了NeXT电脑公司。该公司开发同Mac电脑以及运行英特尔芯片和微软软件的电脑相竞争。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;尽管NeXT电脑因非凡的技术赢得人们的欣赏，该公司却没能在产品销售上取得成功，NeXT公司的产品持续亏损，1993年乔布斯被迫放弃NeXT公司的硬件业务。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;10. 动画梦&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1986年，乔布斯以1000万美元的价格收购了电影导演乔治-卢卡斯旗下的电脑公司。他把这个电脑动画工作室命名为Pixar，并与迪斯尼签署了合作协议。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;作为皮克斯动画工作室的CEO，乔布斯极大促进了电脑制作电影的发展，《玩具总动员》、《海底总动员》、《虫虫特工队》以及《怪物公司》都是Pixar的杰作。这几部电影都取得了巨大成功，1995年乔布斯决定将该公司上市，他回归业务。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2006年，迪斯尼以80.6亿美元的价格收购Pixar。乔布斯是迪斯尼的最大股东，并占有该公司董事会的一席。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;11. 重回苹果&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1995年，苹果电脑处在了历史最低潮。该公司受到微软的巨大挤压。苹果电脑时任CEO Gil Amelio极力寻求能人以挽救公司。1996年12月，Amelio以4亿美元的价格收购NeXT，并以&amp;ldquo;非正式顾问&amp;rdquo;的身份迎回公司创始人乔布斯。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;兼并八个月后，Amelio离职，乔布斯成为临时CEO。2000年，公司将乔布斯头衔前的临时去掉了。乔布斯是在苹果电脑以两年的时间损失18.6亿美元的情况下重返公司的。作为转机的一部分，1997年8月，乔布斯宣布与微软CEO比尔&amp;middot;盖茨前所未有的伙伴关系，盖茨向苹果投资1.5亿美元。苹果则在 Mac电脑中兼容IE浏览器。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;然而，乔布斯在1998年5月使出最大的妙计，推出iMac。iMac将电脑和显示器融合到一台机器上。iMac取得了极大成功，并帮助复活了苹果的销售，至今仍保持着最佳赚钱产品之一的头衔。2007年，Mac产品占据该公司销售收入的43%。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2001年10月，苹果推出首款iPod，一款进一步确立该公司市场地位的音乐播放器。2007年，苹果推出iPhone，2010年iPad。这两款产品都主导并引领着各自领域的发展。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;12. 抗击胰腺癌&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;然而，最近几年有关乔布斯的健康以及他还是否有能力领导公司的问题甚至已经威胁到让过去的成绩失色的地步了，并给他的未来布上阴云。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2004年乔布斯从一种罕见但有相当治愈可能的胰腺癌中康复。此后，在2009年上半年，乔布斯首次病休，当时他表示，他的身体问题要比自己此前抱怨的&amp;ldquo;荷尔蒙失调&amp;rdquo;要复杂。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;当时到处有传言猜测乔布斯的健康是否跟此前的癌症有关。后来，他表示在那期间自己接受了肝脏移植手术。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;13. 一个佛教徒和素食者&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;很少有人知道乔布斯是一个佛教徒和素食者。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;乔布斯也从未提名继承人。2008年3月，乔布斯跟股东表示，无论自己因为什么原因卸任，董事会都将有不同人选供选择。他挑选了两个潜在的领导人：首席运营官蒂姆库克(Timothy D. Cook)和首席财务官彼得&amp;middot;奥本海默(Peter Oppenheimer)。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;14. &amp;ldquo;回避&amp;rdquo;电脑&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2007年1月，乔布斯推出了苹果公司最新科技产品iPhone，一款智能手机。随着iPod以及后来的Apple TV和iPhone的发布，越来越清晰的迹象显示苹果已经不再仅仅是一个电脑公司了。因此，也就涉及到公司的正式名称上的&amp;ldquo;电脑&amp;rdquo;一词了。2007年1月 7日，乔布斯宣布苹果电脑公司更名为苹果公司。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2007年6月，iPhone出击市场。该产品今年再次升级，并在22个国家和地区推广。二代iPhone将支持3G网络和商业电子邮件系统。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;15. 读自己的讣告&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;乔布斯，这个科技沙皇或许是第一个很不高兴地读自己讣告的公司头头，他的讣告是在线新闻网站彭博通讯发布的。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;那位再造苹果公司，用iPod改变个人电子产品游戏规则，用iPhone改写通讯市场局面的人在与胰腺癌的搏斗中失败了吗？&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;没有！这个人还活着，精力还比较充沛。而此时，通常在财经新闻上准头都很精准的彭博通讯这次确实差了十万八千里。&lt;/p&gt;
&lt;p&gt;彭博通讯的这次出丑是因为在更新自己长达17页的乔布斯讣告时出差了，在此过程中有人不小心将稿子发布了。这个乔布斯讣告稿本是要贴在彭博内网上的，却意外的发给了订阅人。突然间舆论哗然。&lt;/p&gt;</description>
      <pubDate>2011-01-20</pubDate>
    </item>
    <item>
      <title>MojoCube.com网站全新改版上线</title>
      <link>http://localhost/Articles-1.html</link>
      <description>MojoCube.com网站全新改版上线</description>
      <pubDate>2011-01-20</pubDate>
    </item>
  </channel>
</rss>