﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-DotNet地盘</title><link>http://www.cnblogs.com/chjw8016/</link><description>三月软件工作室
▄︻┳︼═一</description><language>zh-cn</language><lastBuildDate>Fri, 05 Sep 2008 19:56:52 GMT</lastBuildDate><pubDate>Fri, 05 Sep 2008 19:56:52 GMT</pubDate><ttl>60</ttl><item><title>做人、做事，做架构师——架构师能力模型解析</title><link>http://www.cnblogs.com/chjw8016/archive/2008/06/01/1211467.html</link><dc:creator>JackLee</dc:creator><author>JackLee</author><pubDate>Sat, 31 May 2008 17:41:00 GMT</pubDate><guid>http://www.cnblogs.com/chjw8016/archive/2008/06/01/1211467.html</guid><wfw:comment>http://www.cnblogs.com/chjw8016/comments/1211467.html</wfw:comment><comments>http://www.cnblogs.com/chjw8016/archive/2008/06/01/1211467.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/chjw8016/comments/commentRss/1211467.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/chjw8016/services/trackbacks/1211467.html</trackback:ping><description><![CDATA[摘要: 要想从一名普通程序员发展成为优秀的架构师，“个人特性”与“技术技能”缺一不可；而“技术专业能力”、“人际关系能力”和“业务能力”更是优秀架构师重要的三种能力。&nbsp;&nbsp;<a href='http://www.cnblogs.com/chjw8016/archive/2008/06/01/1211467.html'>阅读全文</a><img src ="http://www.cnblogs.com/chjw8016/aggbug/1211467.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42116/" target="_blank">[新闻]消息称MySQL创始人已向Sun提交辞呈</a>]]></description></item><item><title>腾讯落子成都震后第一单 5.5亿建立研发中心</title><link>http://www.cnblogs.com/chjw8016/archive/2008/05/23/1206109.html</link><dc:creator>JackLee</dc:creator><author>JackLee</author><pubDate>Fri, 23 May 2008 14:22:00 GMT</pubDate><guid>http://www.cnblogs.com/chjw8016/archive/2008/05/23/1206109.html</guid><wfw:comment>http://www.cnblogs.com/chjw8016/comments/1206109.html</wfw:comment><comments>http://www.cnblogs.com/chjw8016/archive/2008/05/23/1206109.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/chjw8016/comments/commentRss/1206109.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/chjw8016/services/trackbacks/1206109.html</trackback:ping><description><![CDATA[摘要: 5月22日14时，在四川地震十天后的成都，腾讯和成都市政府正式签署了一份投资总额为5.5亿元的合作意向协议。成都市市委副书记、市长葛红林，腾讯公司创始人之一、首席行政官陈一丹，成都市委常委、 高新区党工委书记敬刚，成都市市长助理、高新区管委会主任韩春林，腾讯公司副总裁郭凯天等出席了签署仪式&nbsp;&nbsp;<a href='http://www.cnblogs.com/chjw8016/archive/2008/05/23/1206109.html'>阅读全文</a><img src ="http://www.cnblogs.com/chjw8016/aggbug/1206109.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42115/" target="_blank">[新闻]谷歌Chrome浏览器即将更换LOGO颜色？</a>]]></description></item><item><title>电信重组正式启动 中国铁通并入中移动</title><link>http://www.cnblogs.com/chjw8016/archive/2008/05/23/1206106.html</link><dc:creator>JackLee</dc:creator><author>JackLee</author><pubDate>Fri, 23 May 2008 14:20:00 GMT</pubDate><guid>http://www.cnblogs.com/chjw8016/archive/2008/05/23/1206106.html</guid><wfw:comment>http://www.cnblogs.com/chjw8016/comments/1206106.html</wfw:comment><comments>http://www.cnblogs.com/chjw8016/archive/2008/05/23/1206106.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/chjw8016/comments/commentRss/1206106.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/chjw8016/services/trackbacks/1206106.html</trackback:ping><description><![CDATA[摘要: 5月23日上午，中国移动通信集团公司发言人通报：中国铁通集团有限公司并入中国移动通信集团公司，成为其全资子企业，目前仍将保持相对独立运营。王建宙继续担任中国移动通信集团公司总经理，并担任党组副书记；中国联通和中国网通合并为新的中国联通，原中国联通的C网剥离给中国电信&nbsp;&nbsp;<a href='http://www.cnblogs.com/chjw8016/archive/2008/05/23/1206106.html'>阅读全文</a><img src ="http://www.cnblogs.com/chjw8016/aggbug/1206106.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42115/" target="_blank">[新闻]谷歌Chrome浏览器即将更换LOGO颜色？</a>]]></description></item><item><title>Firefox3.0火速前进 比2.0版快2到3倍</title><link>http://www.cnblogs.com/chjw8016/archive/2008/05/23/1206104.html</link><dc:creator>JackLee</dc:creator><author>JackLee</author><pubDate>Fri, 23 May 2008 14:18:00 GMT</pubDate><guid>http://www.cnblogs.com/chjw8016/archive/2008/05/23/1206104.html</guid><wfw:comment>http://www.cnblogs.com/chjw8016/comments/1206104.html</wfw:comment><comments>http://www.cnblogs.com/chjw8016/archive/2008/05/23/1206104.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/chjw8016/comments/commentRss/1206104.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/chjw8016/services/trackbacks/1206104.html</trackback:ping><description><![CDATA[摘要:     在连续推出5个Beta版之后，Firefox 3.0正式版发布的日期终于渐渐临近，而近日Firefox爆出消息：由于Firefox 3.0正式版进行了13000多项改进，它占用的内存更少，在使用速度上要比2.0版本快2到3倍！如登陆Google Mail时，你会体会到Firefox 3.0要比Firefox 2.0快2倍，在下载和显示信息时要快2到3倍。<br>&nbsp;&nbsp;<a href='http://www.cnblogs.com/chjw8016/archive/2008/05/23/1206104.html'>阅读全文</a><img src ="http://www.cnblogs.com/chjw8016/aggbug/1206104.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42115/" target="_blank">[新闻]谷歌Chrome浏览器即将更换LOGO颜色？</a>]]></description></item><item><title>Ajax.net使用初体验</title><link>http://www.cnblogs.com/chjw8016/archive/2008/05/17/1201297.html</link><dc:creator>JackLee</dc:creator><author>JackLee</author><pubDate>Sat, 17 May 2008 03:29:00 GMT</pubDate><guid>http://www.cnblogs.com/chjw8016/archive/2008/05/17/1201297.html</guid><wfw:comment>http://www.cnblogs.com/chjw8016/comments/1201297.html</wfw:comment><comments>http://www.cnblogs.com/chjw8016/archive/2008/05/17/1201297.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/chjw8016/comments/commentRss/1201297.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/chjw8016/services/trackbacks/1201297.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AJAX在去年已经接触过，但都是使用手动的方法编写客户端代码，再加上被请求的页面，感觉非常累，虽然早听说过AJAX.NET和其他一些第3方开发的框架，却一直没有时间来体验。今天下了个最新版本的AJAX.NET体验一下。<br />
1、准备工作<br />
新建项目，使用.NET1.1就引用下载下来的AJAX.NET的类库AjaxPro.dll，如果是使用.NET2.0 就引用AjaxPro2.dll<br />
首先修改WEB.CONFIG文件<br />
&nbsp;在&lt;system.web&gt; 节点内增加<br />
<br />
&lt;httpHandlers&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;addverb="*"path="*.ashx"type="AjaxPro.AjaxHandlerFactory,AjaxPro"/&gt;<br />
&lt;/httpHandlers&gt;<br />
<br />
2、然后在Page_Load事件中注册页面类<br />
如我将使用AJAX的页面类名为&#8216;AjaxControls&#8217;，注册语句就这样写：<br />
&nbsp;&nbsp;&nbsp; &nbsp;<br />
AjaxPro.Utility.RegisterTypeForAjax(typeof(AjaxControls));<br />
<br />
红字的地方是我的页面的类名<br />
这句的作用实际上是在页面被请求的时候生成几句调用JS的SCRIPT代码<br />
<br />
<br />
3、编写服务器端处理函数<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [AjaxPro.AjaxMethod]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string Fun(string str)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return str;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&#8216;[AjaxPro.AjaxMethod]&#8217;这句是关键，函数或方法写法没什么特别的地方，只是要使用这句声明这个函数是由AJAX.NET在页面异步请求的，总之记住要通过AJAX获得数据的后台函数就使用[AjaxPro.AjaxMethod]来声明一下。<br />
另外，在AJAX.NET中如果处理函数需要对SESSION进行操作， &#8216;[AjaxPro.AjaxMethod]&#8217;需要改成&#8216;[AjaxPro.AjaxMethod (AjaxPro.HttpSessionStateRequirement.ReadWrite)]&#8217;在 [AjaxPro.AjaxMethod(AjaxPro.&#8230;&#8230;)]&nbsp; 的&#8216;&#8230;&#8230; &#8217;部分ajax.net还提供了其他很多方法，可以处理一些特殊的请求。<br />
还有一点注意，如果使用Application，直接读取或写入 Application也是不行的，需要使用HttpContext.Current.Application，同样对 Request的访问也需要使用HttpContext.Current.Request。原因是直接使用的Application 或Request等都是由Page类继承下来的，而用Ajax.net对后台方法访问的时候，这些方法并不属于Page类。但是Session比较特殊，使用 HttpContext.Current.Session仍然不能访问，必须使用上面一段所用的方法并且直接就用Session就行。<br />
<br />
4、客户端代码<br />
在我的这个示例中，使用&#8216;Ajax.AjaxControls.Fun("测试用的传递的字符串参数");&#8217;请求后台的函数，然后返回一个OBJECT对象，这个OBJECT的VALUE属性就可以得到后台函数的返回值<br />
如：<br />
function doTest()<br />
{<br />
var getobject = Ajax.AjaxControls.Fun("测试用的传递的字符串参数");<br />
alert(getobject.value);<br />
}<br />
Ajax 是我这个项目的命名空间，AjaxControls 是我这个页面的的类名，Fun 很明显就是声明了的那个AJAX可调用的方法名，()中的参数也就是我的Fun函数所需要的参数，doTest() 只是一个客户段的函数，可以绑到控件的事件中，也可以已不用事件，随便怎么处理，客户端异步请求这个函数所得到的和平时我们用函数返回的稍微不同的就是，平时直接得到函数类型的返回值，而使用AJAX.NET客户端异步请求后台函数得到的是个OBJECT，要通过这个OBJECT的VALUE属性才能得到函数返回的值。<br />
通常这里的客户段脚本还可以这样写：<br />
&nbsp;<br />
function doTest()<br />
{<br />
Ajax.AjaxControls.Fun("测试用的传递的字符串参数",getdata);<br />
}<br />
function getdata(rv)<br />
{<br />
&nbsp;&nbsp;&nbsp; alert(rv.value);<br />
}<br />
<br />
Ajax.AjaxControls.Fun 中的参数除了对应后台函数的参数外，最后可以使用一个表达式参数，这个参数是某个客户段函数名，设置后，Ajax.AjaxControls.Fun请求后所获得OBJECT对象将被做为 表达式参数函数的一个参数传递到该函数中，然后通过这个OBJECT参数的VALUE就可以获得 AJAX请求后台函数所返回的值了，通过这几个步骤 就可以做出一个简单的使用Ajax.net结合.NET的示例页面了。<br />
<br />
<br />
<img src ="http://www.cnblogs.com/chjw8016/aggbug/1201297.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42101/" target="_blank">[新闻]淘宝网合并阿里妈妈 专家称阿里巴巴或有新战略</a>]]></description></item><item><title>用DataReader还是DataSet?</title><link>http://www.cnblogs.com/chjw8016/archive/2008/05/17/1201285.html</link><dc:creator>JackLee</dc:creator><author>JackLee</author><pubDate>Sat, 17 May 2008 03:15:00 GMT</pubDate><guid>http://www.cnblogs.com/chjw8016/archive/2008/05/17/1201285.html</guid><wfw:comment>http://www.cnblogs.com/chjw8016/comments/1201285.html</wfw:comment><comments>http://www.cnblogs.com/chjw8016/archive/2008/05/17/1201285.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/chjw8016/comments/commentRss/1201285.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/chjw8016/services/trackbacks/1201285.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; &nbsp; 经常听到有人问这个问题：&#8220;在ASP.NET
Web应用程序中我应该用DataReader类还是DataSet类呢？&#8221;在很多文章以及新闻组的贴子中我经常看到这样的误解，即认为
DataReader（SqlDataReader或OleDbDataReader的缩写）比DataSet好。有时候我也会看到相反的说法。事实上，
Microsoft创建了这两个数据存取类是因为它们都是我们所需要的。每个类都有其优点和不足，你可以根据应用环境来选择用哪一个。
<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp; 本文就两者的选择问题做了很清楚的讲述，可以让你在运用ASP.NET时，在选择DataReader类或DataSet类的方面得到一些指南。
在基于客户端的Windows
Form应用程序环境下，这些规则可能会改变。我在做这些讲述时，假设你已经用过DataReader和DataSet类了，并对它们很熟悉。
<br />
<br />
<strong><span style="color: red;">运用DataReader类
</span></strong><br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 下面就是运用DataReader类的理想条件：
你读取的数据必须是新的，所以在每次需要数据的时候，你都必须从数据库读取。创建一个DataReader类不会消耗很多内存，不过随着负荷的增加，
DataSet上的性能也会很快地提高（参考资源中Visual Studio Magazine中的文章）。你对每行数据的需求很简单。该情况的最好的例子就是简单地将DataReader绑定到一个Web控件，如DataGrid或DropDownList。
你只需要从数据库中以只向前的(forward-only)
、只读的形式来存取XML数据。在这种情况下，你可以用SQLCommand对象的ExcecuteXmlReader()方法来得到一个
XmlReader类（相当于XML版的DataReader）。这就需要一个运用FOR XML子句的SQL
Server查询，或者一个包含有效XML的ntext字段。你计划对数据库进行几个重复的调用，来读取一小块信息。在这种情况下，我们前面提到过的性能数据会有更大的提高。的确，使DataSet类更强大的许多功能只适用于基于客户端的Windows Form应用程序，比如在多个表之间建立关系的功能。在很多情况下，DataSet类都比DataReader类更有优势，而且在有些情况下，你根本就不能用DataReader类。
<br />
<br />
<strong><span style="color: red;">运用DataSet类
</span></strong><br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp; 在下面的情况，你应该考虑运用DataSet类： 你构建了一个Web
service，它运用的数据是你作为返回值读取的数据。因为DataReader类必须保持到数据库的连接，所以它们不能被序列化到XML中，也不能被
发送给一个Web service的调用者。你需要排序或筛选数据。在运用一个DataView对象（呈现为DataTable类的DefaultView属性，它包含一个DataSet类）来排序
或筛选数据前，我们先试着用SQL查询（如WHERE和ORDER
BY语句）来实现这些功能，并运用更轻量级、更快的DataReader类。然而，有时侯用这种方法是不行的，或者当你需要多次地对数据进行排序或筛选时
就不能用DataReader。 针对同一请求，你需要多次遍历数据。你只能在DataReader中循环一次。如果你想将多个ServerControl类绑定到同一个数据集，那么选择
DataSet就更好。<br />
&nbsp;&nbsp;&nbsp; &nbsp; DataReader类不能被绑定到多个ServerControl类，因为它是只向前读取的。在这种情况下，如果要使用DataReader，必须从数据库读取两次数据。你需要存储数据，而后续的页面请求可能会用到的这些数据。如果数据只被请求它的专门的人使用，你可以将DataSet类保存在一个Session变量中。
如果数据可以被任何人访问，那么你可以将它保存在一个Application变量中，或保存在Cache中（我建议使用后一种方法，因为它支持时间期限和
回调（callback））。因为DataReader类必须一直打开对数据库的连接，而且它一次只能保存一行数据，所以它们不能在跨页面请求中被保存。
你需要对一个结果集的每个元素实现特殊的、耗时的功能。例如，如果你从一个数据库读取一列邮政编码，并想通过调用一个Web
service来得到每个地区的详细的天气状况信息，那么选择DataSet就会更好。这是因为，当你在用DataReader类，在关闭
DataReader类前，与数据库的连接不会被释放回连接池。在数千页面请求之间潜在的一个很小的延时都会造成Web应用程序的很高的访问量，从而就会
消耗完可用的连接。相反，DataSet可以在前端读取所有的数据，并可以马上关闭与数据库的连接，将它返回到连接池，因此其它的页面请求就可以用这个连
接了。 <br />
&nbsp;&nbsp;&nbsp; &nbsp; 你需要在一个两维范例中加载并处理XML数据。DataSet类对于XML很有用，因为你可以将DataView用于XML，对根本的数据进行排序和筛
选，就同处理一个数据库结果集一样。然而，需要注意的是在System.Xml名字空间中有很多类，你可以将它们用于更复杂的XML操作。 你的数据源不是一个数据库。虽然OleDbDataReader可以用于任何OLEDB数据提供者（可能指向一个数据库，也可能不指向一个数据库），但
DataSet对象可以从一个XML文件直接加载数据，并动态地解释它的schema。DataSet类也可以将XML数据写回一个数据流或一个文件。
<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp; 从上面的讲述我们就可以看到，DataSet类比DataReader类有更多的功能，这就可以让你在更多的情况下运用它们。但这并不意味着你总是在用DataSet类。你需要在ASP.NET中完成的相当大一部分的任务都属于DataReader的范畴。
<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 尽管如此，毫无疑问，从重要程度或复杂程度的角度来说，DataSet类在很多ASP.NET
Web应用程序中都起着很重要的作用。你可以通过明智的缓存来最小化数据库往返，从而降低DataSet类的&#8220;性能损害&#8221;。DataReader和
DataSet都是一个成功的ASP.NET Web应用程序的重要的部件。重要的是，我们需要了解何时、在哪里可以最好的使用它们。
<img src ="http://www.cnblogs.com/chjw8016/aggbug/1201285.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42101/" target="_blank">[新闻]淘宝网合并阿里妈妈 专家称阿里巴巴或有新战略</a>]]></description></item><item><title>ASP.NET编程中的十大技巧</title><link>http://www.cnblogs.com/chjw8016/archive/2008/05/17/1201282.html</link><dc:creator>JackLee</dc:creator><author>JackLee</author><pubDate>Sat, 17 May 2008 03:12:00 GMT</pubDate><guid>http://www.cnblogs.com/chjw8016/archive/2008/05/17/1201282.html</guid><wfw:comment>http://www.cnblogs.com/chjw8016/comments/1201282.html</wfw:comment><comments>http://www.cnblogs.com/chjw8016/archive/2008/05/17/1201282.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/chjw8016/comments/commentRss/1201282.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/chjw8016/services/trackbacks/1201282.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 在本文中，我们将讨论编程人员在使用ASP.NET开发应用程序时需要注意的10个技巧，这些技巧涉及从缺省的控件、表单名的改变到StringBuilder类的使用，有助于编程人员能够尽快地适应.NET环境。
<br />
<br />
1、在使用Visual Studio .NET时，除直接或非引用的对象外，不要使用缺省的名字。
<br />
<br />
&nbsp;&nbsp;&nbsp; .NET带来的好处之一是所有的源代码和配置文件都是纯文本文件，能够使用Notepad或WordPad等任意的文本编辑器进行编辑。如果不愿意，我们
并非一定要使用Visual Studio .NET作为集成开发环境。但使用了Visual Studio
.NET，我们可以在Windows文件管理器中看到文件，或在Visual Studio .NET之外从文本编辑器中浏览文件的内容。 <br />
使用Visual Studio .NET作为集成开发环境有许多好处，其中最显著的好处是它极大地提高了生产效率。使用Visual
Studio.
NET，我们能够在付出较小代价的情况下更快地开发软件。作为集成开发环境一部分的IntelliSense提供自动的代码完成、在输入方法或函数时提供
动态帮助、语法错误的实时提示，以及其他能够提高生产效率的功能。 <br />
象其他复杂的工具那样，在学会如何充分发挥它的作用和掌握其&#8220;习性&#8221;前，Visual Studio .NET也会使我们产生一种挫折感。有时，它象一个难以了解的黑盒子，会生成大量的文件和许多无用的代码。
<br />
Visual Studio
.NET的一个功能是，无论是类、控件或表单中的对象，它都能够为新对象提供缺省名字。例如，如果我们创建了一个新的ASP.NET Web
Application，其缺省的名字将是WebApplication1。我们可以在&#8220;新工程&#8221;对话框中方便地改变该应用的名字，但同时改变的只是该应
用程序的名字空间的名字及其所在的虚拟目录，源代码文件的缺省名字仍然是WebForm1.aspx和WebForm1.aspx.cs（C#工程）或
WebForm1.aspx.vb（VB.NET工程）。 <br />
<br />
&nbsp;&nbsp;&nbsp; 我们可以在方案浏览器中改变ASPX和代码使用的文件名字，但Web页类的名字仍然将是WebForm1。如果在该Web表单上生成一个按钮，其缺省的名字将是Button1。事实上，所有控件的名字都是由控件的类型和数字组成的。
<br />
我们能够，也应该将应用程序中所有的表单和控件的名字都修改成有意义的名字。对于较小的演示性程序而言，缺省的名字还能够胜任，但如果应用程序由多个表
单，每个表单上有许多按钮和标签时，象frmStartup、frmDataEntry和frmReports这样的表单名就比Form1、Form2和
Form3这样的名字更易于理解和维护。 <br />
如果表单上控件要在代码的其他地方引用，使它有一个有意义的名字就更重要了。btnOK、btnCancel和btnPrint这样的名字使看代码的人更容易理解，因而，也比名字为Button1、Button2、Button3这样的控件更容易维护。
<br />
修改一个工程中所有文件中出现的一个名字的一个好方法是，在Visual Studio .NET菜单中依次选择&#8220;编辑&#8221;-&gt;&#8220;发现和替换&#8221;-&gt;&#8220;替换&#8221;命令。<br />
&nbsp;<br />
2、即使不使用Visual Studio .NET进行编程，使用代码支持文件也有利于提高应用程序的性能
<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp; 在Web应用程序、Web服务或Web控件等所有的ASP.NET Web工程中，Visual Studio .NET都使用代码支持文件。代码支持文件使工程具有更好的组织、模块性，更适合多人组成的开发团队。另外，它还会带来性能的提高。
<br />
代码支持文件的内容被编译成一个组合文件中的类，一般是一个DLL文件，有时也可以是EXE文件。该文件驻留在应用程序的组合体高速缓冲区中，在应用程序启动时，可以立即得到它。
<br />
如果代码是包含在&lt;script&gt;标记中或ASPX文件代码中，它仍然会被编译成一个Web页类。在这种情况下，每当该网页在应用程序对话中
第一次加载时，都需要重新进行编译，被编译的类就会驻留在内存中。每当计算机启动、IIS停止、重新启动或者源代码、配置文件改变时，该文件必须重新编
译。尽管不大，但这样引起的性能损耗也是相当可观的。 <br />
<br />
3、尽量减少表单回送
<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp; 每当点击Web网页上的Button、LinkButton或ImageButton控件时，表单就会被发送到服务器上。如果控件的
AutoPostBack属性被设置为true，如果CheckBox、CheckBoxList等控件的状态被改变后，也会使表单会发送回服务器。每次当表单被发送回服务器，就会被重新加载，启动Page_Load事件，执行Page_Load事件处理程序中的所有代码。把网页的初始化代码放在这里
是最合适不过的了。我们经常会希望在每次加载网页时执行一些代码，而希望只有在网页第一次加载时执行另一些代码，甚至希望一些代码在除首次加载外的每次加
载时执行。 <br />
可以利用IsPostBack特性来完成这一功能。在网页第一次加载时，该属性的值是false。如果网页因回送而被重新加载，IsPostBack属性的值就会被设置为true。通过测试，可以在任意时候执行指定的代码。下面是相关的C#代码：
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;Page_Load(Object&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br />
<img id="Codehighlighter1_75_217_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_75_217_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_75_217_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_75_217_Closed_Text').style.display='inline';" align="top"  alt="" /><img id="Codehighlighter1_75_217_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_75_217_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_75_217_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_75_217_Open_Text').style.display='inline';" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_75_217_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_75_217_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;网页每次加载时，执行的一些操作</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">IsPostBack)<br />
<img id="Codehighlighter1_125_153_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_125_153_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_125_153_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_125_153_Closed_Text').style.display='inline';" align="top"  alt="" /><img id="Codehighlighter1_125_153_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_125_153_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_125_153_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_125_153_Open_Text').style.display='inline';" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_125_153_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_125_153_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;网页第一次加载时执行的操作</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
<img id="Codehighlighter1_167_190_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_167_190_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_167_190_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_167_190_Closed_Text').style.display='inline';" align="top"  alt="" /><img id="Codehighlighter1_167_190_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_167_190_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_167_190_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_167_190_Open_Text').style.display='inline';" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_167_190_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_167_190_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;回送时执行的操作</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;网页每次加载时执行的操作</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;">&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
&nbsp;&nbsp;&nbsp; &nbsp; 我们希望尽量不引起回送（每次回送都会要求服务器进行一系列的操作），即使引起回送后。也希望能够执行尽量少的操作。大规模、浪费时间的操作（例如数据库查找）尤其应当避免，因为它们能够延长应用程序的响应时间。
<br />
<br />
4、使用StringBuilder类
<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp; 字符串在.NET框架中是不可变的，这意味着改变字符串的操作符和方法会返回字符串的改变后的拷贝，这意味着性能还有提高的空间。当进行大量的字符串操作时，使用StringBuilder类就是一种比较好的选择了。
<br />
下面的C#代码测试用二种方式从10000个子字符串中生成字符串所需要的时间。第一次使用了一个简单的字符串串联操作；第二次使用了StringBuilder类。要想查看结果字符串，可以去掉下面的代码中注解行的注解符号：
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000;">HTML-----Code<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_17_38_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_17_38_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_17_38_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_17_38_Closed_Text').style.display='inline';" align="top"  alt="" /><img id="Codehighlighter1_17_38_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_17_38_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_17_38_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_17_38_Open_Text').style.display='inline';" align="top"  alt="" /></span><span style="background-color: #ffff00; color: #000000;">&lt;%</span><span id="Codehighlighter1_17_38_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_17_38_Open_Text"><span style="background-color: #f5f5f5; color: #000000;">@&nbsp;Page&nbsp;Language</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #800000;">"</span><span style="background-color: #f5f5f5; color: #800000;">C#</span><span style="background-color: #f5f5f5; color: #800000;">"</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span></span><span style="background-color: #ffff00; color: #000000;">%&gt;</span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_65_835_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_65_835_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_65_835_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_65_835_Closed_Text').style.display='inline';" align="top"  alt="" /><img id="Codehighlighter1_65_835_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_65_835_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_65_835_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_65_835_Open_Text').style.display='inline';" align="top"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">script&nbsp;</span><span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">&gt;</span><span id="Codehighlighter1_65_835_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_65_835_Open_Text"><span style="background-color: #f5f5f5; color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="background-color: #f5f5f5; color: #0000ff;">void</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;Page_Load(Object&nbsp;Source,&nbsp;EventArgs&nbsp;E)<br />
<img id="Codehighlighter1_109_833_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_109_833_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_109_833_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_109_833_Closed_Text').style.display='inline';" align="top"  alt="" /><img id="Codehighlighter1_109_833_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_109_833_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_109_833_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_109_833_Open_Text').style.display='inline';" align="top"  alt="" /></span><span id="Codehighlighter1_109_833_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_109_833_Open_Text"><span style="background-color: #f5f5f5; color: #000000;">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="background-color: #f5f5f5; color: #0000ff;">int</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;intLimit&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">10000</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />DateTime&nbsp;startTime;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />DateTime&nbsp;endTime;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />TimeSpan&nbsp;elapsedTime;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />string&nbsp;strSub;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />string&nbsp;strWhole&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">""</span><span style="background-color: #f5f5f5; color: #000000;">;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">&nbsp;首先执行字符串连接操作</span><span style="background-color: #f5f5f5; color: #008000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="background-color: #f5f5f5; color: #000000;">startTime&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;DateTime.Now;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="background-color: #f5f5f5; color: #0000ff;">for</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;(</span><span style="background-color: #f5f5f5; color: #0000ff;">int</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;i</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">0</span><span style="background-color: #f5f5f5; color: #000000;">;&nbsp;i&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">&lt;</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;intLimit;&nbsp;i</span><span style="background-color: #f5f5f5; color: #000000;">++</span><span style="background-color: #f5f5f5; color: #000000;">)<br />
<img id="Codehighlighter1_305_367_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_305_367_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_305_367_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_305_367_Closed_Text').style.display='inline';" align="top"  alt="" /><img id="Codehighlighter1_305_367_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_305_367_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_305_367_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_305_367_Open_Text').style.display='inline';" align="top"  alt="" /></span><span id="Codehighlighter1_305_367_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_305_367_Open_Text"><span style="background-color: #f5f5f5; color: #000000;">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />strSub&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;i.ToString();<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />strWhole&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;strWhole&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;strSub;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="background-color: #f5f5f5; color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />endTime&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;DateTime.Now;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />elapsedTime&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;endTime&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">-</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;startTime;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />lblConcat.Text&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;elapsedTime.ToString();<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">&nbsp;lblConcatString.Text&nbsp;=&nbsp;strWhole;</span><span style="background-color: #f5f5f5; color: #008000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="background-color: #f5f5f5; color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">&nbsp;使用stringBuilder类进行同样的操作</span><span style="background-color: #f5f5f5; color: #008000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="background-color: #f5f5f5; color: #000000;">startTime&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;DateTime.Now;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />StringBuilder&nbsp;sb&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;StringBuilder();<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="background-color: #f5f5f5; color: #0000ff;">for</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;(</span><span style="background-color: #f5f5f5; color: #0000ff;">int</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;i</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">0</span><span style="background-color: #f5f5f5; color: #000000;">;&nbsp;i&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">&lt;</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;intLimit;&nbsp;i</span><span style="background-color: #f5f5f5; color: #000000;">++</span><span style="background-color: #f5f5f5; color: #000000;">)<br />
<img id="Codehighlighter1_631_692_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_631_692_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_631_692_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_631_692_Closed_Text').style.display='inline';" align="top"  alt="" /><img id="Codehighlighter1_631_692_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_631_692_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_631_692_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_631_692_Open_Text').style.display='inline';" align="top"  alt="" /></span><span id="Codehighlighter1_631_692_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_631_692_Open_Text"><span style="background-color: #f5f5f5; color: #000000;">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />strSub&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;i.ToString();<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />sb.Append(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />sb.Append(strSub);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="background-color: #f5f5f5; color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />endTime&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;DateTime.Now;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />elapsedTime&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;endTime&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">-</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;startTime;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />lblBuild.Text&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;elapsedTime.ToString();<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">&nbsp;lblBuildString.Text&nbsp;=&nbsp;sb.ToString();</span><span style="background-color: #f5f5f5; color: #008000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" /></span><span style="background-color: #f5f5f5; color: #000000;">}</span></span><span style="background-color: #f5f5f5; color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span></span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">form&nbsp;</span><span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">h1</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">String&nbsp;Concatenation&nbsp;Benchmark</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">h1</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />Concatenation:<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">asp:Label<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="lblConcat"</span><span style="color: #ff0000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">br</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">asp:Label<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="lblConcatString"</span><span style="color: #ff0000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">br</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">br</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />StringBuilder:<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">asp:Label<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="lblBuild"</span><span style="color: #ff0000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">br</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">asp:Label<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="lblBuildString"</span><span style="color: #ff0000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">form</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span></div>
<br />
二种方式的差别是相当大的：使用StringBuilder类的Append方法的速度比使用字符串连接的速度快近200倍。<br />
<br />
5、只在必要时使用服务器端控件
<br />
<br />
&nbsp;&nbsp;&nbsp; ASP.NET中新引入了一种在服务器端运行的被称作Web Server Controls的控件，在代码中，它们经常通过下面的语法被说明：
&lt;asp:TextBox id="txtLastName" size="40" runat="server" /&gt;
它们有时也被称作ASP控件。服务器端控件是由runat属性指示的，它的值总是&#8220;server&#8221;。
通过添加runat属性，一般的HTML控件可以被很方便地转换到服务器端运行，下面是一个简单的例子：&lt;input type="text" id="txtLastName" size="40" runat="server" /&gt;
可以通过id属性中指定的名字，我们可以引用程序中的控件，可以通过编程的方式设置属性和获得值，因此，服务器端处理方式有较大的灵活性。
这种灵活性是有一定代价的。每种服务器端控件都会消耗服务器上的资源。另外，除非控件、网页或应用程序明确地禁止view state，控件的状态是包含在view state的隐藏域中，并在每次回送中都会被传递，这会引起严重的性能下降。
<br />
在这方面的一个很好的例子是，网页上控件表格的应用，如果不需要在代码中引用表格中的元素，则使用无需进行服务器端处理的HTML表格。我们仍然可以在
HTML表格单元中放置服务器控件，并在代码中引用服务器控件。如果需要引用任意的表格元素，例如指定的单元，则整个表格必须是服务器控件。 <br />
<br />
6. HyperLink控件、LinkButton控件的差别
<br />
<br />
&nbsp;&nbsp;&nbsp; 对于Web访问者而言，HyperLink、LinkButton控件是一样的，但它们在功能方面仍然有较大的差异。
<br />
当用户点击控件时，HyperLink控件会立即将用户&#8220;导航&#8221;到目标URL，表件不会回送到服务器上。LinkButton控件则首先将表件发回到服务
器，然后将用户导航到目标URL。如果在&#8220;到达&#8221;目标URL之前需要进行服务器端处理，则使用LinkButton控件；如果无需进行服务器端处理，则可
以使用HyperLink控件。 <br />
<br />
7、注释代码
<br />
<br />
&nbsp;&nbsp;&nbsp; 这一技巧并不是针对ASP.NET的，但它是一个良好的编程习惯。释不仅仅应当说明代码会执行什么操作，还应当注明原因。例如，不要仅仅在注释中说明是在遍历数组，而是要说明遍历数组是根据某一算法计算一个值，除非算法是相当简单的，否则还应当对算法进行简要的说明。
.NET工程中的不同的编程语言都有各自不同的注释符号，下面是一个简要的说明：
<br />
<blockquote>  HTML &lt;!-- 注释 --&gt;
<br />
JavaScript // 注释
<br />
VBScript ' 注释
<br />
VB.NET ' 注释
<br />
C# // 注释
<br />
/* 多行内容
<br />
的注释
<br />
*/
<br />
SQL -- 注释
<br />
</blockquote>
&nbsp;&nbsp;&nbsp; &nbsp; 在服务器控件的开始和结束标记中没有注释符号，但服务器能够忽略掉所有它不能识别的属性，因此我们能够通过使用没有定义的属性来插入注释。下面是一个例子：
<br />
&lt;asp:TextBox
id="txtLastName"
size="40"
comment="这是我的注释"
runat="server" /&gt;
<br />
在Visual Studio .NET中对源代码进行注释非常简单。高亮度显示需要注释的行，然后按Ctrl+K+C组合键添加注释。要删除注释，只需高亮度显示被注释的代码，并按下Ctrl+K+U组合键。在C#工程中，我们还可以通过在每行的开始处使用///输入XML注释小节。在注释小节中，我们可以使用下面的XML标记组织注释：
<br />
<blockquote>  &lt;summary&gt;&lt;/summary&gt;
<br />
&lt;remarks&gt;&lt;/remarks &gt;
<br />
&lt;param&gt;&lt;/param&gt;
<br />
&lt;returns&gt;&lt;/returns&gt;
<br />
&lt;newpara&gt;&lt;/newpara&gt;
<br />
</blockquote>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 要在Visual Studio .NET中查看这些XML注释的格式化的报告，我们可以首先选择&#8220;工具&#8221;菜单项，然后选择&#8220;建立注释Web网页&#8221;菜单项。
<br />
<br />
8、使用trace方法和trace属性记录Page目录中网页的执行情况
<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp; 调试程序的一种古老的技术是在程序中的关健点插入输出语句，通常情况下，输出信息中会包含重要变量的值，相关信息可以输出到屏幕、日志文件或者数据库。在ASP.NET中，通过使用Page命令中的trace属性，这种调试技术的使用更简单了。Page命令是ASPX文件开始处的一行代码，它提供编译器
的指示。Page命令中包含一个或多个属性，向编译器提供使用的编程语言、代码支持文件的位置或要继承的类的名字等信息。Page命令中的属性之一是trace，其值可能是true或false，下面是一个典型的Page命令，其中的trace属性的值是true：&lt;%@ Page language="c#" trace="true" %&gt;
如果trace属性的值设置为true，由ASPX文件生成的Web页就会显示出来，除了网页本身外，关于该页的大量其他信息也会显示出来。这些信息以下面小节的形式显示在一张表格中：
<br />
<ol>
    <li>  &#183;Request细节 提供Session ID、请求时间和请求的状态码。
    </li>
    <li>  &#183;Trace Information 包含跟踪日志、网页生命周期中按时间先后顺序各个步骤的列表。另外，也可以向其中添加定制信息。
    &#183;控件树 以一种分层次的方式列出网页上的所有控件，包括每个控件以字节计算的大小。
    </li>
    <li>  &#183;Cookies集合 列出该网页创建的所有Cookie。
    </li>
    <li>  &#183;头部集合 HTTP头部以及它们的值。
    </li>
    <li>  &#183;Server变量 与该网页相关的Server环境变量。
    </li>
</ol>
&nbsp;&nbsp;&nbsp; &nbsp; 包含在Trace
Information小节中的跟踪日志是最有用的，在这里我们可以插入自己的跟踪命令。trace类中有2个方法能够在跟踪日志中插入命令：
Trace.Write和Trace.Warn，除了Trace.Warn命令用红色字体显示、Trace.Write命令用黑色字体显示外，它们是相同
的。下面是跟踪日志的一个屏幕快照，其中包含有几个Trace.Warn命令。 跟踪日志中最方便的功能是我们可以在开发和测试过程中在整个代码中插入Trace.Write和Trace.Warn语句，而在最终交付应用程序时，可以通过改变Page命令中trace属性的值，禁止这些命令起作用，而无需在部署应用软件前删除这些输出语句。
<br />
<br />
9、使用存储过程
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 微软公司的SQL Server和其他现代关系数据库都使用SQL命令定义和处理查询。一个SQL语句或一系列SQL语句提交给SQL
Server，SQL Server会对命令进行解析，然后创建一个查询计划并对它进行优化，然后执行该查询计划，这都需要大量的时间。 存储过程是一系列被查询处理器预解析和优化的SQL命令，这些命令会被存储起来，可以得到快速地执行。存储过程也被称作sprocs，它可以接收输入参数，使一个单一的存储过程能够处理较大范围的特定的查询。因为sprocs是预先被解析的，对于复杂的查询更显得重要，其查询计划是预先优化的，因此调用查询过程比执行相同功能的SQL语句速度要快得多。
<br />
<br />
10、使用.NET命令行
<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp; .NET命令行工具在命令提示符窗口中运行。为了使命令能够执行，它必须驻留在命令提示符的当前目录中，或通过设置PATH环境变量。
.NET
SDK在&#8220;启动&#8221;菜单上安装一个菜单项，该菜单项能够打开一个正确设置了PATH环境变量的命令提示符窗口。我们可以通过依次点击&#8220;开始&#8221;-&gt;&#8220;程
序&#8221;-&gt;&#8220;Microsoft Visual Studio .NET&#8221;-&gt;&#8220;Visual Studio
.NET工具&#8221;-&gt;&#8220;Visual Studio .NET命令提示符&#8221;，启动命令提示符窗口。通过在将该菜单项从菜单上拖到桌面上时，同时按Ctrl+C键，就可以将该菜单项的快捷方式拷贝到桌面上，使用起来会非常方便。
<img src ="http://www.cnblogs.com/chjw8016/aggbug/1201282.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42101/" target="_blank">[新闻]淘宝网合并阿里妈妈 专家称阿里巴巴或有新战略</a>]]></description></item><item><title>拯救Yahoo 杨致远下注Y!Open平台</title><link>http://www.cnblogs.com/chjw8016/archive/2008/05/09/1190387.html</link><dc:creator>JackLee</dc:creator><author>JackLee</author><pubDate>Fri, 09 May 2008 10:06:00 GMT</pubDate><guid>http://www.cnblogs.com/chjw8016/archive/2008/05/09/1190387.html</guid><wfw:comment>http://www.cnblogs.com/chjw8016/comments/1190387.html</wfw:comment><comments>http://www.cnblogs.com/chjw8016/archive/2008/05/09/1190387.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/chjw8016/comments/commentRss/1190387.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/chjw8016/services/trackbacks/1190387.html</trackback:ping><description><![CDATA[<p taggedby="hylanda">拒绝微软每股33美元的并购提案后，雅虎（Yahoo）共同创始人兼首席执行官杨致远在发给员工的备忘录中，要求他们加倍地努力，并专心执行他所谓的雅虎史上最重要的变革。</p>
<p taggedby="hylanda">杨致远将在5日面对若干不满的投资人和员工的怒火。他必须提出更多证据，说服大家相信雅虎未来3年的营收和获利增长，能够超越竞争者。</p>
<p taggedby="hylanda">杨致远指出，雅虎（Yahoo!）英文名称中的惊叹号是有意义的：我们是财富500强企业中唯一在名称最后有惊叹号的，现在就是展现那个惊叹号意义的时刻。</p>
<p taggedby="hylanda">杨致远似乎自认雅虎尚未完全实现那个惊叹号的意义，他的备忘录也没有明确说明所谓最重要的变革是什么。雅虎要如何摆脱困境，重新擦亮招牌？销售广告应该不是答案。雅虎已经准备投入Google的羽翼之下，赚取更高的广告收益。</p>
<p taggedby="hylanda">这件合作案可能引发反垄断主管机关的注意，但这显示雅虎愿意把搜索广告市场让给Google。至于展示型广告，由于雅虎已建立一个非常完整的平台，应该不会轻易放手。问题是雅虎能否留住广告销售的人才，并进一步发展本身的技术。</p>
<p taggedby="hylanda">记者认为，杨致远和公司高层将希望寄托于一个能为雅虎增加社交面向的新服务平台。这项变革包含在雅虎的核心平台插入一个类似Facebook的社交功能，并开放给Yahoo或第三方的任何应用程序。</p>
<p taggedby="hylanda">杨致远在发给员工的备忘录中写道：我们会继续执行我们的计划—让你的网络经验尽可能地个人化、有关联、开放和社交化；提供广告主良好的服务，让他们坚持与我们合作，并用开发者梦想中的方式开放雅虎。</p>
<p taggedby="hylanda">上个月，雅虎CTO Ari Balogh曾概略描述他所谓的Y!Open平台。杨致远在今年元月的消费者电器大展（CES）上，也曾示范用未来版的雅虎规划一场与朋友的晚餐。你可以把电邮对话拖曳到地图里，对话的内容会浮现，标示出偏好，并建议区域内适合的餐厅。</p>
<p taggedby="hylanda">杨致远说：我们正将开放带到一个全新的境界。我们要从内到外改造雅虎，提供一个能将雅虎的资产以前所未有的方式开放的开发者平台，让消费者体验全面性的社交，为开发者提供吸引（顾客）的工具。</p>
<p taggedby="hylanda">他说雅虎的5亿使用者和资产，有100亿个潜在链接，如电邮、即时通信和社区。Yahoo首页、邮件、Flickr和其他资产，将连接成一个社交图表。例如，雅虎邮件页将提供与使用者相关的通知，而这些经验都会有前后关联。</p>
<p taggedby="hylanda">Balogh透露，订于今年上线的全新的雅虎，对于该站的浏览次数和上站时间，都将产生实质的冲击，提升公司的营收。该公司预估，未来3年的营运现金流量，可从目前的19亿美元暴增一倍至37亿美元。</p>
<p taggedby="hylanda">不过，Y!Open在技术和营销上都有巨大的挑战。Balogh说：我们必须用单一的个人设定贯穿雅虎，并创造信息的流动，一种消化新资料流入和网络服务API（应用程序界面）的方式，并将那些机制分层置入平台内。我们的目标不亚于创造一个最棒的开发者环境，以利他们制作横跨整个网络的应用服务。</p>
<p taggedby="hylanda">Y!Open是正确的策略走向，但要让人惊叹，还要一段不短的时间。如果杨致远期望建立个人的信誉、实现股东价值、保持公司独立、不负这块招牌的名声，并保住自己的工作，他最好祈祷Y!Open尽快推出，且立刻获得最大的成功。</p>
<img src ="http://www.cnblogs.com/chjw8016/aggbug/1190387.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42096/" target="_blank">[新闻]微软研究院发布 AutoCollage - 整理并融合照片</a>]]></description></item><item><title>李开复求伯君 解读谷歌金山合作内幕</title><link>http://www.cnblogs.com/chjw8016/archive/2008/05/09/1190373.html</link><dc:creator>JackLee</dc:creator><author>JackLee</author><pubDate>Fri, 09 May 2008 09:59:00 GMT</pubDate><guid>http://www.cnblogs.com/chjw8016/archive/2008/05/09/1190373.html</guid><wfw:comment>http://www.cnblogs.com/chjw8016/comments/1190373.html</wfw:comment><comments>http://www.cnblogs.com/chjw8016/archive/2008/05/09/1190373.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/chjw8016/comments/commentRss/1190373.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/chjw8016/services/trackbacks/1190373.html</trackback:ping><description><![CDATA[<p>5月8日下午，记者在金山词霸发布会上和互联网界两位领军人物——李开复、求伯君展开对话。李开复和求伯君就谷歌和金山合作背景，对未来的预期作了分享，并对业界的热门话题作了精辟解读。
<p>　　<strong>精彩观点：</strong></p>
<p>　　记者：怎么提高员工的满意度?</p>
<p>　　求伯君：加薪不是唯一的，但是要根据<a href="http://whatis.ctocio.com.cn/searchwhatis/456/5947456.shtml" target="_bank">CPI</a>的膨胀的水平，肯定是要跟着它去调整的，满意度是多方面的，文化建设，福利啊，更关键是员工职业生涯的发展，要让每个员工看到公司发展了，员工也能发展，这是最重要的。</p>
<p>　　记者：<a href="http://whatis.ctocio.com.cn/searchwhatis/191/6093191.shtml" target="_bank">Google</a>会不会加大推广Gtalk的力度?</p>
<p>　　李开复：应该不会。我们认为做事情应该按部就班，而且应该专注。我们在中国的团队虽然有好几百人，但是我们认为还有很多更紧急的工作需要我们做。&#8230;&#8230;Gtalk可能不会是我们首先要做的项目。</p>
<p>　　<img height="333" alt="腾讯专访李开复求伯君 解读谷歌金山合作内幕" src="http://news.ctocio.com.cn/imagelist/2008/130/pl31wd840v3a.jpg" width="500" /></p>
<p>　　李开复和求伯君接受腾讯科技独家专访</p>
<p><strong>以下是访谈实录：</strong> </p>
<p>　　记者：首先感谢网友关注腾讯科技《总裁俱乐部》在线访谈栏目，今天我们邀请的两位特殊嘉宾是金山软件<a href="http://whatis.ctocio.com.cn/searchwhatis/113/5947113.shtml" target="_bank">CEO</a>求伯君和谷歌大中华区总裁李开复，首先欢迎他们的到来。</p>
<p>　　今天在金山词霸发布会上，我们已经听到很多关于产品的介绍，现在先请开复老师介绍一下，为什么google要选择跟金山合作，求总您也回答一下，金山为什么选择google?</p>
<p>　　李开复：金山是中国最著名的软件企业，而金山词霸又是辞典还有翻译软件方面的领跑者。我想这就是最吸引我们的地方，能够和这么好的公司，好的产品合作。</p>
<p>　　另外两个公司的企业文化，对技术的专注，以及互联网发展都非常的契合，所以我们非常看好这次合作。</p>
<p>　　求伯君：从金山来讲，我们和google合作有两个很重要的因素。第一点我们很多文化是类似的相近的。我们要为用户提供一个很好的产品服务，第二点我们正在做的很多事情也是相同的。包括做辞典的翻译，google也有翻译。这个东西，我们合在一起会一加一大于二，所以我觉得，选择google是天作之合。</p>
<p>　　记者：金山是很重视文化的企业，金山也曾号召全体员工向google文化学习，我们反过来想知道，开复老师，您对于金山的文化是怎么看的?求总您对google的文化又是怎么理解的?</p>
<p>　　李开复：我觉得和每一个金山员工接触的时候，都发现两件事情。第一个对技术的追求，第二个对用户的体验的重视。这个对我们来说是非常重要的。因为我们开发一个产品，如果不考虑到用户体验，而只去想怎么赚钱，其实就失去了互联网业最需要的文化和精神。</p>
<p>　　如果谈google的文化，其实里面最重要的一点就是把用户放到第一位。所以我看金山的员工，还有整个公司，与google有相似的想法。</p>
<p>　　另外一个方面，在本土化的理解中国用户的需求方面，我们其实可以和向金山学很多，在合作过程上也学到很多。</p>
<p>　　求伯君：我们一样，从google那里学到我们所不具有的，尤其是google的创新精神，这一点是本土公司比较缺乏的。所以我们也希望通过这种合作，能够学到google企业文化创新的精神。</p>
<p>　　记者：从收入方面来讲是分成模式，到底谁的收获更多一些?</p>
<p>　　求伯君：应该是双赢的局面。如果这个产品本身用户不欢迎的话，我觉得可能是我们谁都赢不了。所以这个产品首先要做得大家喜欢，第二个确实能够为用户，为互联网的使用者，解决他所需要解决的问题。如果能达到这个要求，我想我们两者都能够达到双赢。</p>
<p>　　李开复：互联网的产品和传统产品不太一样的。首先是针对用户需求开发的，是免费的。经过众多人使用，我们会慢慢探讨其他的商业模式。其实很重要的一点，我们的合作并没有基于谁能赚多少钱，分成也不是多大的数目。我们非常看好产品和它对用户的吸引力。一旦它得到了很大用户认可之后，我想以后还有商业发展后劲。现在我们专注的力量是怎么样做得更好，让更多的人使用。</p>
<p>　　记者：为什么google有自己很强很厉害的翻译技术，而且有很多种语言的翻译，为什么不自己去做呢?</p>
<p>　　李开复：其实传统双语辞典例句工作方面，我们并不认为我们在短期能够把这个工作做得好。我们其实在接触的时候，我们双方已经在开发一些各自未来整体的产品。但是我们发现，在其中很多细腻的考虑，用户体验，还有资源整合，多种双语辞典整合，金山词霸12年的研发积累能力，绝对不是想象的那么简单。但是我们更多的是看重金山的品牌，成功的产品，重大的用户群，还有符合开发产品的精神。</p>
<p>　　记者：金山很多的产品，毒霸词霸都分别与百度和google合作，金山是否在有意拆掉自己传统的业务，专注网游呢?</p>
<p>　　求伯君：不是。这个也是软件一种模式。网游和软件都是我们重要的产品线。这两条线走路的话，我觉得我们公司一贯的重大战略不会改变。但是每一个产品具体怎么走?现在都是在尝试一种新的互联网的模式。因为软件也在转型，杀毒软件从早期的卖盒装的模式，转到互联网服务收费模式，就是一次成功的转型。我们金山词霸也是把传统的合作模式，转化为互联网服务模式。这是属于我们整个软件转型战略的一部分，并没有表示要放弃软件。</p>
<p>记者：google有在线办公处理软件，金山有WPS，未来双方是否可能合作? </p>
<p>　　求伯君：这个我们不排除，这是是接下来我们要探讨的事情。</p>
<p>　　李开复：同样的回答。</p>
<p>　　<img height="333" alt="腾讯专访李开复求伯君 解读谷歌金山合作内幕" src="http://news.ctocio.com.cn/imagelist/2008/130/i69ow8431798.jpg" width="500" /></p>
<p>　　谷歌大中华区总裁李开复</p>
<p>　　<img height="750" alt="腾讯专访李开复求伯君 解读谷歌金山合作内幕" src="http://news.ctocio.com.cn/imagelist/2008/130/26ag0hvhsy3f.jpg" width="500" /></p>
<p>　　金山董事长求伯君</p>
<div id="numpage">记者：求总，很多人在讨论说，您是一个非常爱金山的人，很多人觉得您更愿意担任CEO，做一些一线很辛苦的工作，但是有人又说，您可能更喜欢做幕后的工作，把真正管理方面的工作交给年轻人去做，哪个说法更准确一些?
<p>　　求伯君：我觉得后一个说法更准确一些。因为我毕竟在一线管理工作方面已经很多年没有参与了，这是其一。其二，我是属于比较愿意放手让别人去做的。从98年开始，我觉得(雷军)这方面做得很好，我让他做管理工作，我觉得是比较成功的，所以未来会尝试这样的方式。(雷军)由于身体方面原因没有做工作，我先把这方面担子挑起来。</p>
<p>　　记者：我想问开复老师，Goolge已经推出了自己的<a href="http://whatis.ctocio.com.cn/searchwhatis/460/6025460.shtml" target="_bank">IM</a>产品Gtalk，但是一直没有高调宣传，百度现在也推出了IM产品，那么google会不会加大推广Gtalk的力度?</p>
<p>　　李开复：应该不会。我们认为做事情应该按部就班，而且应该专注。我们在中国的团队虽然有好几百人，但是我们认为还有很多更紧急的工作需要我们做。比如我们的搜索如何做得更好，比如说如何在学习搜索上做得更好，如何把它整合到我们的整合搜索里面。还有我们有众多的合作伙伴，除了金山之外，还有新浪、天涯、腾讯等等的合作。我们希望能够把这些做好，再按部就班的考虑以后的可能性。</p>
<p>　　因为我们公司的理念是整合全球的信息，让全球的每一个用户都能够体验并且能够从中收益。从今天的角度来看的话，我们很多垂直搜索还可以做得更好，整合搜索还可以提供更高的价值。今天的合作，代表全球这么多的网页，大约有90%不是中文的，能不能经过不同的方式，让中国的网民看到全世界，通过金山词霸还有我们即时翻译的功能，体现这方面的价值。Gtalk可能不会是我们首先要做的项目。</p>
<p>　　记者：假如您接管金山，您首先会做什么事情?</p>
<p>　　李开复：我对金山总体的方向都不是很理解，所以我不方便回答这个问题，因为答得很可能是不正确的。但是我觉得接受任何一个新的职位，首先需要理解公司的价值观，方向，还有员工等等。</p>
<p>　　记者：求总如果接管Google中国，首先会怎么做?</p>
<p>　　求伯君：我首先是要学习。</p>
<p>　　记者：先学哪方面的东西?</p>
<p>　　求伯君：要学习的方面很多。首先对google整个公司的历史有所了解，对所管理团队的核心价值观，这些东西都需要一个全面的了解。</p>
<p>　　记者：金山是一个将近二十年历史的老牌企业，google是一家才十年左右历史的新兴互联网企业。从两家公司的合作层面来看，有没有想象两家公司会碰撞出什么样的火花?</p>
<p>　　李开复：其实我觉得就是一拍即合。我们第一次的见面就谈到了，我们首先怎么样，当时谈的是工具条，在哪些不同的金山产品里可以体现。谈完了这个之后，我们就说下一步是不是有更多的更深的合作的可能性。两个公司都是非常开放式的，把自己未来的想法放到桌面上，很快的找到一个google与金山词霸的合作的可能。</p>
<p>　　所以我觉得，任何两个公司的合作，应该是来自一种文化的认可，还有互信，从小的开始做，一步一步来。我很希望看到未来更多合作的东西。</p>
记者：求总，您怎么理解?
<p>　　求伯君：金山在中国<a href="http://whatis.ctocio.com.cn/searchwhatis/250/6025750.shtml" target="_bank">IT</a>行业里有二十年的历史，但是也算是很短暂的历史了，跟那些传统行业比的话，尤其在互联网转型方面，也是最近几年的事情。所以说从某种角度来讲，金山也是新兴的企业。</p>
<p>　　我觉得这方面的话，我们和google很多理念上是相同的，不存在一个老牌公司，或者一个传统行业和一个新行业的碰撞。基本我们的理念是相同的。所以很多东西谈出来完全是一致的。</p>
<p>　　记者：自从金山<a href="http://whatis.ctocio.com.cn/searchwhatis/191/6025691.shtml" target="_bank">IP</a>O，包括您出任CEO以后，做了很多的工作，给员工加薪以及一些资本层面的进入，整个金山风格慢慢的改变，我们想问，是不是金山以后的发展，资本层面的力量会更多一些?</p>
<p>　　求伯君：金山我觉得，现在这样说的话，又要讲我们二十年的历史了。我觉得二十年沉淀的文化，可能不是说资本层面或者想改变什么。实际上很多投资者也是认同了我们的文化，并没有打算要来改变我们的文化，所以金山还是会保持自己的本色发展下去。</p>
<p>　　记者：那么问开复老师一句，google有一天会投资金山吗?</p>
<p>　　李开复：对这些预测，我觉得现在谈蛮早，我觉得不排除通过资本合作的方式和很多公司合作。你们是说我们看不看好金山，我们当然是看好的，当然并不代表看好就做很多的投资。</p>
<p>　　记者：分别问二位，最近半年各自的工作重点在什么方向?</p>
<p>　　李开复：我的工作重点是已经证实我们的产品是很好的，甚至是最好的。但是要让更多的人知道，所以这是很紧急的事情。</p>
<p>　　求伯君：08年的工作 的话，总结一句话就是提高两个满意度，提高公司员工对公司的满意度，提高我们的客户，就是所有的包括网游软件的客户对金山的满意度。</p>
<p>　　记者：怎么提高员工的满意度，还要加薪吗?</p>
<p>　　求伯君：加薪不是唯一的，但是要根据CPI的膨胀的水平，肯定是要跟着它去调整的，满意度是多方面的，文化建设，福利啊，更关键是员工职业生涯的发展，要让每个员工看到公司发展了，员工也能发展，这是最重要的。</p>
<p>　　记者：由于时间的关系，今天的访谈就到这里了，再一次感谢金山软件CEO求伯君和谷歌大中华区总裁李开复做客腾讯科技《总裁俱乐部》栏目。</p>
<a href="http://news.ctocio.com.cn/317/8109317_4.shtml" target="_self"><font face="Webdings"></font></a></div>
<img src ="http://www.cnblogs.com/chjw8016/aggbug/1190373.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42096/" target="_blank">[新闻]微软研究院发布 AutoCollage - 整理并融合照片</a>]]></description></item><item><title>MySQL上海高校公开课计划全面启动</title><link>http://www.cnblogs.com/chjw8016/archive/2008/05/09/1190364.html</link><dc:creator>JackLee</dc:creator><author>JackLee</author><pubDate>Fri, 09 May 2008 09:56:00 GMT</pubDate><guid>http://www.cnblogs.com/chjw8016/archive/2008/05/09/1190364.html</guid><wfw:comment>http://www.cnblogs.com/chjw8016/comments/1190364.html</wfw:comment><comments>http://www.cnblogs.com/chjw8016/archive/2008/05/09/1190364.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/chjw8016/comments/commentRss/1190364.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/chjw8016/services/trackbacks/1190364.html</trackback:ping><description><![CDATA[<p><font face="Arial">MySQL上海高校公开课计划将于2008年5月13日全面启动，首站选在同济大学嘉定校区。该计划由MySQL授权中国区教育中心—爱德威软件开发（上海）有限公司（以下简称<a href="http://adways-edu.com/" target="_blank">ADWAYS</a>）发起并承办，旨在向在校大学生介绍数据库方面的知识，尤其是MySQL数据库的发展状况和趋势以及LAMP架构的应用，希望与莘莘学子共享技术经验，促进网络软件相关人才的培养。</font></p>
<p><font face="Arial">MySQL是最受欢迎的开源SQL数据库管理系统，它由MySQL AB开发、发布和支持，是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统，也可以将它嵌入到一个大配置(mass-deployed)的软件中去。凭借其高兼容性的性能、高可靠性和使用方便，MySQL数据库已经成为世界上最流行的开源数据库。它适用于任何环境---甚至南极洲。</font></p>
<p><font face="Arial">ADWAYS作为致力于在全中国范围内推广MySQL教育产品的南方地区首家金牌代理—授权中国区教育中心，全权代理其在国内的认证考试、培训及其他相关业务。本着力求为信息产业培养精通MySQL数据库软件、合格的高素质专业人才的教学理念，ADWAYS希望能够借助本次高校公开课计划，为计算机相关专业学生传达有用的知识和信息，借以推动国内LAMP相关产业的长足进步和发展。<br />
</font></p>
<img src ="http://www.cnblogs.com/chjw8016/aggbug/1190364.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42096/" target="_blank">[新闻]微软研究院发布 AutoCollage - 整理并融合照片</a>]]></description></item></channel></rss>