﻿<?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>博客园-首页原创区</title><link>http://www.cnblogs.com/</link><description>专注于.NET技术</description><language>zh-cn</language><lastBuildDate>Sat, 10 May 2008 21:37:56 GMT</lastBuildDate><pubDate>Sat, 10 May 2008 21:37:56 GMT</pubDate><ttl>60</ttl><item><title>GridView+FormView 示范数据 新增/修改/删除</title><link>http://www.cnblogs.com/jeff377/archive/2008/05/11/1191828.html</link><dc:creator>jeff377</dc:creator><author>jeff377</author><pubDate>Sat, 10 May 2008 18:20:00 GMT</pubDate><guid>http://www.cnblogs.com/jeff377/archive/2008/05/11/1191828.html</guid><wfw:comment>http://jeff377.cnblogs.com/comments/1191828.html</wfw:comment><comments>http://www.cnblogs.com/jeff377/archive/2008/05/11/1191828.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://jeff377.cnblogs.com/comments/commentRss/1191828.html</wfw:commentRss><trackback:ping>http://jeff377.cnblogs.com/services/trackbacks/1191828.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 摘要在同一页面上以 GridView 配合 FormView 来完成数据的「新增/修改/删除」，在这个范例中有下列二个特点。1. GridView 及 FormView 系结同一个 SqlDataSource 控件。2. FormView 只使用 EditItemTemplate，同时来做新增及修改的动作。范例程序代码: GridView1.rar画面配置此范例使用 N...&nbsp;&nbsp;<a href='http://www.cnblogs.com/jeff377/archive/2008/05/11/1191828.html'>阅读全文</a><img src ="http://jeff377.cnblogs.com/aggbug/1191828.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://jeff377.cnblogs.com/" target="_blank">jeff377</a> 2008-05-11 02:20 <a href="http://www.cnblogs.com/jeff377/archive/2008/05/11/1191828.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>“软件宝宝”的安全成长史</title><link>http://www.cnblogs.com/HappyQQ/archive/2008/05/11/1191769.html</link><dc:creator>HappyQQ</dc:creator><author>HappyQQ</author><pubDate>Sat, 10 May 2008 16:03:00 GMT</pubDate><guid>http://www.cnblogs.com/HappyQQ/archive/2008/05/11/1191769.html</guid><wfw:comment>http://HappyQQ.cnblogs.com/comments/1191769.html</wfw:comment><comments>http://www.cnblogs.com/HappyQQ/archive/2008/05/11/1191769.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://HappyQQ.cnblogs.com/comments/commentRss/1191769.html</wfw:commentRss><trackback:ping>http://HappyQQ.cnblogs.com/services/trackbacks/1191769.html</trackback:ping><description><![CDATA[<p>&nbsp;</p> <p>&#8220;软件宝宝&#8221;的安全成长史（原创文章，转载请申明出处）</p> <p>作者：黄启清</p> <p>日期：2008-5-10（08年母亲节的前一个晚上）</p> <p><strong><u>谨以此文献给我最亲爱的妈妈(<a href="http://mama520.cn">http://mama520.cn</a>)</u></strong></p> <p><u>还记得小时候，我的妈妈会经常对我说&#8220;清，别去河边玩，那里很危险！&#8230;&#8230;&#8221;</u></p> <p><u>长大了，我的妈妈也会跟我说&#8220;清，在外面工作，晚上不要去偏僻的地方玩！&#8230;&#8230;&#8220;</u></p> <p><u>我们很多人都说自己的妈妈很啰嗦，其实我们的妈妈都是很爱我们的！她们随时都为我们考虑，她们担心我们的生活问题，安危问题，她们会关心我们的一切！</u></p> <p><u>今天，我们来当一回&#8220;软件宝宝&#8221;的妈妈了，为她来考虑一切了！</u></p> <p><strong><font color="#0000ff">&#8220;软件宝宝&#8221;出生之前，我们要考虑&#8220;软件宝宝&#8221;的问题：</font></strong></p> <p><em>1、&#8220;软件宝宝&#8221;在还未出生之前，肯定是在我们的肚子里面的（^_^)，所以先保证我们自己（母体）的安全，也就是保证了&#8220;软件宝宝&#8221;出生前的安全！比如：我们不要受到外部的侵害，我们不要吃不干净的东西，我们要保证自己的身体健康，安全，这样才能够保证&#8220;软件宝宝&#8221;的安全！</em></p> <p><em><strong><strong>详细解释</strong>：</strong>为软件开发提供一个稳定，功能齐全的操作平台，以避免系统受到外部的功击，比如黑客，病毒，蠕虫。最好是让开发的环境与互联网之间设置对应的访问网关！</em></p> <p><em><strong>防范措施：</strong>为我们软件开发平台安装最新杀毒软件以及防火墙。</em></p> <p><em><strong>案例说明：</strong>曾经某著名软件开发公司的产品在发布之后的几天用户都反应计算机变慢，很多应用程序自动关闭等中毒现象。后经查实发现是其软件开发部门的操作平台中毒！</em></p> <p>&nbsp;</p> <p><strong><font color="#0000ff">&#8220;软件宝宝&#8221;出生之后，我们要考虑&#8220;软件宝宝&#8221;的问题：</font></strong></p> <p><em>1、教会&#8220;软件宝宝&#8220;认人，这个是&#8220;妈妈&#8221;，那个是&#8220;爸爸&#8221;，那个是&#8221;爷爷&#8220;，那个是&#8230;&#8230;，其他的就不认识了！当不认识的人来抱你折时候，你要大声哭着叫&#8220;妈妈&#8221;，让&#8220;妈妈&#8221;来保护你！</em></p> <p><em><strong>详细解释：</strong>软件系统的用户验证是重要的一部分，比如网银系统的登陆证书、用户名以及口令等，当非法入侵者尝试以破解密码的方式进入系统时，当猜测次数到达指定次数时，我们的软件系统就应该记录下这个用户的特征以方便我们日后的动作（包括IP地址，时间等）然后我们的软件系统可以不用理会这个用户了！</em></p> <p><em><strong>防范措施：</strong>为防止入侵者暴力破解我们的用户口令，我们可以采用验证码（可以采用变形汉字验证码或者智能问答）、安全证书等方案！</em></p> <p><em><strong>案例说明：</strong>我记得2000年时，很多用户登陆验证应用程序（包括WEB应用程序在内）只有用户名以及密码的验证，并没有验证码以及安全证书这些东东的，所以之前WEB E-Mail登陆是可以用小榕所开发的溯雪工具可以破解的！</em></p> <p><strong></strong>&nbsp;</p> <p>2、教会&#8220;软件宝宝&#8221;什么是好人，什么是坏人，什么东西可以吃，什么东西不能够吃！</p> <p><em><strong>详细解释</strong>：软件的自我保护能力，比如软件的防篡改能力，防缓冲区溢出功击，软件的反跟踪能力，软件的数据输入验证等</em></p> <p><strong><em>防范措施：</em></strong></p> <ul> <li><em>防篡改的一般作法检测应用程序本身的MD5值。</em></li> <li><em>软件反破解跟踪一般采用结束常用的分析我们软件的工具进程（SoftICE,OllyDBG)，添加花指令等方法,详细请参考：<a href="http://bbs.pediy.com">http://bbs.pediy.com</a>)</em></li> <li><em>软件的数据输入验证一般常用的方法是对长度，类型，以及非法字符等方面的验证,比如网上常用的SQL注入,XSS漏洞等的防范方式。</em></li></ul> <p><strong><em>案例说明：</em></strong></p> <blockquote> <p><em>1、某用户通过ResHacker、Exescope工具就可以修改我们辛苦开发出来的软件作品,本来我们发布的都是免费软件,可是过段时间连软件的作者都变成"软件作者:张XX"了,郁闷吧?</em></p> <p><em>2、自己辛苦开发出来的软件，本打算通过注册费收点生活费，没想到被Cracker们给破解掉了，还弄了一个注册机出来！！</em></p> <p><em>3、软件（WEB应用程序）的数据输入验证，比如newhua,qq网站的XSS漏洞，以及过去不久前的cnblogs的闪存漏洞，都是因为这个方面没考虑周全所导致的！</em></p></blockquote> <p>3、教会&#8220;软件宝宝&#8221;哪些事能够随便说给外人，哪些事（隐私问题）不能够随便说给别人，要保密！</p> <p><em><strong>详细解释</strong>：软件机密数据要进行加密处理，比如客户资料信息，用户密码等数据。以避免入侵者进入后台数据库后，直接能够拿到我们的数据。</em></p> <p><strong><em>防范措施：</em></strong><em>对机密数据进行加密存储。</em></p> <p><strong><em>案例说明：</em></strong><em>某入侵者通过最新的数据库漏洞，如ORACLE，MYSQL，MSSQL的漏洞进入入数据库服务器，直接偷走了我们的数据库，而我们的数据库资料都未做加密处理。</em></p> <p>4、教会&#8220;软件宝宝&#8221;在说秘密话的时候，最好说俚语（^_^），让别人听不懂！</p> <p><em><strong>详细解释</strong>：软件之间的通信安全也值得重视，我们要对通信的数据包进行加密处理，以防止窃听出现！</em></p> <p><strong><em>防范措施：</em></strong><em>对通信内容通过相应的加密算法进行加密。</em></p> <p><strong><em>案例说明：</em></strong><em>某入侵者通过Sniffer工具窃听软件的通信，这些数据都未进行加密，使得入侵者看到了通信所有内容！</em></p> <p>&nbsp;</p> <p>备注：案例部分为个人实践经验或者是网上案例，我并没有长篇论述实际案例！（请朋友们谅解）</p> <p>文章中只把我所想到的写上来而已，欢迎朋友们对我的文章进行补充说明，更加欢迎朋友们对我的文章多点支持，多点批评，只有这样，我才会有所进步！</p> <img src ="http://HappyQQ.cnblogs.com/aggbug/1191769.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://HappyQQ.cnblogs.com/" target="_blank">HappyQQ</a> 2008-05-11 00:03 <a href="http://www.cnblogs.com/HappyQQ/archive/2008/05/11/1191769.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个 Devexpress 报表 分 部门打印 的实例 （二）</title><link>http://www.cnblogs.com/gakaki/archive/2008/05/10/1191653.html</link><dc:creator>hxm</dc:creator><author>hxm</author><pubDate>Sat, 10 May 2008 15:29:00 GMT</pubDate><guid>http://www.cnblogs.com/gakaki/archive/2008/05/10/1191653.html</guid><wfw:comment>http://gakaki.cnblogs.com/comments/1191653.html</wfw:comment><comments>http://www.cnblogs.com/gakaki/archive/2008/05/10/1191653.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://gakaki.cnblogs.com/comments/commentRss/1191653.html</wfw:commentRss><trackback:ping>http://gakaki.cnblogs.com/services/trackbacks/1191653.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文讲述 餐饮软件  多份商品 分厨房打印 的问题 （OA也能用）<br>第二篇 分离数据 到 对应厨房打印&nbsp;&nbsp;<a href='http://www.cnblogs.com/gakaki/archive/2008/05/10/1191653.html'>阅读全文</a><img src ="http://gakaki.cnblogs.com/aggbug/1191653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://gakaki.cnblogs.com/" target="_blank">hxm</a> 2008-05-10 23:29 <a href="http://www.cnblogs.com/gakaki/archive/2008/05/10/1191653.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入了解.net类在内存中的结构以及安全线程同步</title><link>http://www.cnblogs.com/ITAres/archive/2008/05/10/1191633.html</link><dc:creator>ITAres</dc:creator><author>ITAres</author><pubDate>Sat, 10 May 2008 13:48:00 GMT</pubDate><guid>http://www.cnblogs.com/ITAres/archive/2008/05/10/1191633.html</guid><wfw:comment>http://ITAres.cnblogs.com/comments/1191633.html</wfw:comment><comments>http://www.cnblogs.com/ITAres/archive/2008/05/10/1191633.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://ITAres.cnblogs.com/comments/commentRss/1191633.html</wfw:commentRss><trackback:ping>http://ITAres.cnblogs.com/services/trackbacks/1191633.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 每当在堆中创建对象时，每个对象都会获得两个与它关联的附加开销字段。<br><br>第一个开销字段MethodTablePointer 包含类型的方法表的内存地址。<br>基本上，该指针使获得有关堆中的任何对象的类型信息成为可能。实际上，当您在内部调用 System.Object 的 GetType 方法时，该方法会按照对象的 MethodTablePointer 字段来确定该对象的类型。<br><br>第二个开销字段名为 SyncBlockIndex，它包含 SyncBlock 缓存的 32 位有符号的整数索引。&nbsp;&nbsp;<a href='http://www.cnblogs.com/ITAres/archive/2008/05/10/1191633.html'>阅读全文</a><img src ="http://ITAres.cnblogs.com/aggbug/1191633.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://ITAres.cnblogs.com/" target="_blank">ITAres</a> 2008-05-10 21:48 <a href="http://www.cnblogs.com/ITAres/archive/2008/05/10/1191633.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对.net事件的看法</title><link>http://www.cnblogs.com/worldreason/archive/2008/05/10/1191575.html</link><dc:creator>信息加油站义工</dc:creator><author>信息加油站义工</author><pubDate>Sat, 10 May 2008 13:03:00 GMT</pubDate><guid>http://www.cnblogs.com/worldreason/archive/2008/05/10/1191575.html</guid><wfw:comment>http://worldreason.cnblogs.com/comments/1191575.html</wfw:comment><comments>http://www.cnblogs.com/worldreason/archive/2008/05/10/1191575.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://worldreason.cnblogs.com/comments/commentRss/1191575.html</wfw:commentRss><trackback:ping>http://worldreason.cnblogs.com/services/trackbacks/1191575.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 事件是软件系统里的两个子系统之间，或者两个模块之间，或者两个对象之间发送消息，并处理消息的过程。在面向对象的世界里，就可以统一认为是两个对象之间的行为。两个对象之间发送的这种消息，对发送方来讲是产生一个事件，对接受方来讲是需要处理某个事件。这种消息可以是用户操作产生的或者软件系统里的某个对象产生的。&nbsp;&nbsp;<a href='http://www.cnblogs.com/worldreason/archive/2008/05/10/1191575.html'>阅读全文</a><img src ="http://worldreason.cnblogs.com/aggbug/1191575.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://worldreason.cnblogs.com/" target="_blank">信息加油站义工</a> 2008-05-10 21:03 <a href="http://www.cnblogs.com/worldreason/archive/2008/05/10/1191575.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>蛙蛙推荐：蛙蛙教你文本聚类</title><link>http://www.cnblogs.com/onlytiancai/archive/2008/05/10/1191557.html</link><dc:creator>蛙蛙池塘</dc:creator><author>蛙蛙池塘</author><pubDate>Sat, 10 May 2008 12:43:00 GMT</pubDate><guid>http://www.cnblogs.com/onlytiancai/archive/2008/05/10/1191557.html</guid><wfw:comment>http://onlytiancai.cnblogs.com/comments/1191557.html</wfw:comment><comments>http://www.cnblogs.com/onlytiancai/archive/2008/05/10/1191557.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://onlytiancai.cnblogs.com/comments/commentRss/1191557.html</wfw:commentRss><trackback:ping>http://onlytiancai.cnblogs.com/services/trackbacks/1191557.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 摘要：文本聚类是搜索引擎和语义web的基本技术，这次本蛙和大家一起学习一下简单的文本聚类算法，可能不能直接用于实际应用中，但对于想学搜索技术的初学者还是有一定入门作用的。这里会用到TF/IDF权重，用余弦夹角计算文本相似度，用方差计算两个数据间欧式距离，用k-means进行数据聚类等数学和统计知识。关于这些概念可以去google，或者参考文本后的参考链接。&nbsp;&nbsp;<a href='http://www.cnblogs.com/onlytiancai/archive/2008/05/10/1191557.html'>阅读全文</a><img src ="http://onlytiancai.cnblogs.com/aggbug/1191557.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://onlytiancai.cnblogs.com/" target="_blank">蛙蛙池塘</a> 2008-05-10 20:43 <a href="http://www.cnblogs.com/onlytiancai/archive/2008/05/10/1191557.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>把美女变成字符</title><link>http://www.cnblogs.com/chzhcpu/archive/2008/05/10/1191467.html</link><dc:creator>chzhcpu</dc:creator><author>chzhcpu</author><pubDate>Sat, 10 May 2008 10:29:00 GMT</pubDate><guid>http://www.cnblogs.com/chzhcpu/archive/2008/05/10/1191467.html</guid><wfw:comment>http://chzhcpu.cnblogs.com/comments/1191467.html</wfw:comment><comments>http://www.cnblogs.com/chzhcpu/archive/2008/05/10/1191467.html#Feedback</comments><slash:comments>16</slash:comments><wfw:commentRss>http://chzhcpu.cnblogs.com/comments/commentRss/1191467.html</wfw:commentRss><trackback:ping>http://chzhcpu.cnblogs.com/services/trackbacks/1191467.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cnblogs.com/chzhcpu/archive/2008/05/10/1191467.html'>阅读全文</a><img src ="http://chzhcpu.cnblogs.com/aggbug/1191467.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://chzhcpu.cnblogs.com/" target="_blank">chzhcpu</a> 2008-05-10 18:29 <a href="http://www.cnblogs.com/chzhcpu/archive/2008/05/10/1191467.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASP.NET&amp;Spring.NET&amp;NHibernate最佳实践(四)——第3章人事子系统（1）</title><link>http://www.cnblogs.com/guushuuse/archive/2008/05/10/1191417.html</link><dc:creator>guushuuse</dc:creator><author>guushuuse</author><pubDate>Sat, 10 May 2008 09:34:00 GMT</pubDate><guid>http://www.cnblogs.com/guushuuse/archive/2008/05/10/1191417.html</guid><wfw:comment>http://guushuuse.cnblogs.com/comments/1191417.html</wfw:comment><comments>http://www.cnblogs.com/guushuuse/archive/2008/05/10/1191417.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://guushuuse.cnblogs.com/comments/commentRss/1191417.html</wfw:commentRss><trackback:ping>http://guushuuse.cnblogs.com/services/trackbacks/1191417.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 人事子系统分层结构为：领域模型层（DomainModel）——数据访问层（Dao）——服务层（Sevice）——表示层（Web），在Web页面中采用了ObjectDataSource作为GridView的数据源，并为此增加了一个帮助类。<br>在数据访问层中充分体现了Spring.NET和NHibernate的无缝集成，只要继承HibernateDaoSupport就能很便捷的使用NHibernate，而不需要很深入了解NHibernate。&nbsp;&nbsp;<a href='http://www.cnblogs.com/guushuuse/archive/2008/05/10/1191417.html'>阅读全文</a><img src ="http://guushuuse.cnblogs.com/aggbug/1191417.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://guushuuse.cnblogs.com/" target="_blank">guushuuse</a> 2008-05-10 17:34 <a href="http://www.cnblogs.com/guushuuse/archive/2008/05/10/1191417.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个 Devexpress 报表 分 部门打印 的实例 （一）</title><link>http://www.cnblogs.com/gakaki/archive/2008/05/10/1191333.html</link><dc:creator>hxm</dc:creator><author>hxm</author><pubDate>Sat, 10 May 2008 08:12:00 GMT</pubDate><guid>http://www.cnblogs.com/gakaki/archive/2008/05/10/1191333.html</guid><wfw:comment>http://gakaki.cnblogs.com/comments/1191333.html</wfw:comment><comments>http://www.cnblogs.com/gakaki/archive/2008/05/10/1191333.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://gakaki.cnblogs.com/comments/commentRss/1191333.html</wfw:commentRss><trackback:ping>http://gakaki.cnblogs.com/services/trackbacks/1191333.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文讲述 餐饮软件  多份商品 分厨房打印 的问题 （OA也能用）<br>第一篇 使用2008的LINQ和Devexpress xtrareports 组件 打印一个基本的Report&nbsp;&nbsp;<a href='http://www.cnblogs.com/gakaki/archive/2008/05/10/1191333.html'>阅读全文</a><img src ="http://gakaki.cnblogs.com/aggbug/1191333.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://gakaki.cnblogs.com/" target="_blank">hxm</a> 2008-05-10 16:12 <a href="http://www.cnblogs.com/gakaki/archive/2008/05/10/1191333.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MOSS中的WebPart开发</title><link>http://www.cnblogs.com/carysun/archive/2008/05/10/webpart.html</link><dc:creator>生鱼片</dc:creator><author>生鱼片</author><pubDate>Sat, 10 May 2008 05:53:00 GMT</pubDate><guid>http://www.cnblogs.com/carysun/archive/2008/05/10/webpart.html</guid><wfw:comment>http://carysun.cnblogs.com/comments/1191181.html</wfw:comment><comments>http://www.cnblogs.com/carysun/archive/2008/05/10/webpart.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://carysun.cnblogs.com/comments/commentRss/1191181.html</wfw:commentRss><trackback:ping>http://carysun.cnblogs.com/services/trackbacks/1191181.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文通过几个小例子简要的说明了MOSS中WebPart的开发，部署等。&nbsp;&nbsp;<a href='http://www.cnblogs.com/carysun/archive/2008/05/10/webpart.html'>阅读全文</a><img src ="http://carysun.cnblogs.com/aggbug/1191181.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://carysun.cnblogs.com/" target="_blank">生鱼片</a> 2008-05-10 13:53 <a href="http://www.cnblogs.com/carysun/archive/2008/05/10/webpart.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>只需一行代码实现增删查改，微软已经让我们很简单。谈AccessDataSource的使用。</title><link>http://www.cnblogs.com/somesongs/archive/2008/05/10/1191081.html</link><dc:creator>somesongs</dc:creator><author>somesongs</author><pubDate>Sat, 10 May 2008 03:52:00 GMT</pubDate><guid>http://www.cnblogs.com/somesongs/archive/2008/05/10/1191081.html</guid><wfw:comment>http://somesongs.cnblogs.com/comments/1191081.html</wfw:comment><comments>http://www.cnblogs.com/somesongs/archive/2008/05/10/1191081.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://somesongs.cnblogs.com/comments/commentRss/1191081.html</wfw:commentRss><trackback:ping>http://somesongs.cnblogs.com/services/trackbacks/1191081.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这是一个很简单的内容。日常我们总腻烦做增删查改这样的重复性的劳动，如果你的项目不是太大，如果你的团队很小，或许就是你一个人，那么就完全可以参考以下这样简单的方式。微软已经给我们做了。我们只要写一行代码，便实现了增删查改。&nbsp;&nbsp;<a href='http://www.cnblogs.com/somesongs/archive/2008/05/10/1191081.html'>阅读全文</a><img src ="http://somesongs.cnblogs.com/aggbug/1191081.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://somesongs.cnblogs.com/" target="_blank">somesongs</a> 2008-05-10 11:52 <a href="http://www.cnblogs.com/somesongs/archive/2008/05/10/1191081.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>主键的故事</title><link>http://www.cnblogs.com/leadzen/archive/2008/05/10/1191010.html</link><dc:creator>李战</dc:creator><author>李战</author><pubDate>Sat, 10 May 2008 03:08:00 GMT</pubDate><guid>http://www.cnblogs.com/leadzen/archive/2008/05/10/1191010.html</guid><wfw:comment>http://leadzen.cnblogs.com/comments/1191010.html</wfw:comment><comments>http://www.cnblogs.com/leadzen/archive/2008/05/10/1191010.html#Feedback</comments><slash:comments>35</slash:comments><wfw:commentRss>http://leadzen.cnblogs.com/comments/commentRss/1191010.html</wfw:commentRss><trackback:ping>http://leadzen.cnblogs.com/services/trackbacks/1191010.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:    1969年8月8日，在北京协和医院降生了一个漂亮的小女孩。接生的阿姨说，她的声音这么大，好象想要全世界的人都听到。<br><br>    后来，她的父亲为她取了一个很好听的名字，叫“王菲”。于是，所有的小朋友就叫她“王菲”，“王菲”就是她童年的主键。<br>&nbsp;&nbsp;<a href='http://www.cnblogs.com/leadzen/archive/2008/05/10/1191010.html'>阅读全文</a><img src ="http://leadzen.cnblogs.com/aggbug/1191010.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://leadzen.cnblogs.com/" target="_blank">李战</a> 2008-05-10 11:08 <a href="http://www.cnblogs.com/leadzen/archive/2008/05/10/1191010.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>微型项目实践（7）：数据访问的定义</title><link>http://www.cnblogs.com/yuandong/archive/2008/05/10/1191019.html</link><dc:creator>冬冬</dc:creator><author>冬冬</author><pubDate>Sat, 10 May 2008 02:47:00 GMT</pubDate><guid>http://www.cnblogs.com/yuandong/archive/2008/05/10/1191019.html</guid><wfw:comment>http://yuandong.cnblogs.com/comments/1191019.html</wfw:comment><comments>http://www.cnblogs.com/yuandong/archive/2008/05/10/1191019.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://yuandong.cnblogs.com/comments/commentRss/1191019.html</wfw:commentRss><trackback:ping>http://yuandong.cnblogs.com/services/trackbacks/1191019.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <p>.Net发展的如此之快：2.0，3.0，3.5……版本的不断升级让人应接不暇；Linq，Ajax.Net，SilverLight……各种新特性更是让眼花缭乱。这些新技术一方面极大的提高了开发效率，另一方面，又给我们提出了严峻的考验：如何能在项目中合理的使用这些新技术，使它们相互配合，发挥出最大功效？<br /><br>本系列将以一个Blog系统的开发为例子，从数据分析开始，一步步讲解一个系统的架构，并在这个过程中介绍以上这些技术的使用方式。另外，文章还将介绍作者在实际项目中积累的一些经验和技巧。麻雀虽小，五脏俱全，希望本文对于哪些不知道该如何组织实际代码的朋友有些帮助！<br /><br>该篇分析了模块间耦合，并讲述了数据访问的定义。</p>&nbsp;&nbsp;<a href='http://www.cnblogs.com/yuandong/archive/2008/05/10/1191019.html'>阅读全文</a><img src ="http://yuandong.cnblogs.com/aggbug/1191019.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://yuandong.cnblogs.com/" target="_blank">冬冬</a> 2008-05-10 10:47 <a href="http://www.cnblogs.com/yuandong/archive/2008/05/10/1191019.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>西安俱乐部今天下午成立大会</title><link>http://www.cnblogs.com/caodaiming/archive/2008/05/10/1190909.html</link><dc:creator>good man</dc:creator><author>good man</author><pubDate>Sat, 10 May 2008 01:32:00 GMT</pubDate><guid>http://www.cnblogs.com/caodaiming/archive/2008/05/10/1190909.html</guid><wfw:comment>http://caodaiming.cnblogs.com/comments/1190909.html</wfw:comment><comments>http://www.cnblogs.com/caodaiming/archive/2008/05/10/1190909.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://caodaiming.cnblogs.com/comments/commentRss/1190909.html</wfw:commentRss><trackback:ping>http://caodaiming.cnblogs.com/services/trackbacks/1190909.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 西安具乐部成了，现在向博客园征集对西安具乐部的建议，我们欢迎你们的到来，对你们的建议我们会一起与会员们讨论，在这里就谢谢大家了&nbsp;&nbsp;<a href='http://www.cnblogs.com/caodaiming/archive/2008/05/10/1190909.html'>阅读全文</a><img src ="http://caodaiming.cnblogs.com/aggbug/1190909.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://caodaiming.cnblogs.com/" target="_blank">good man</a> 2008-05-10 09:32 <a href="http://www.cnblogs.com/caodaiming/archive/2008/05/10/1190909.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>动态加载控件_常见问题解决之道</title><link>http://www.cnblogs.com/volnet/archive/2008/05/10/solution-of-dynamic-load-usercontrol.html</link><dc:creator>volnet（可以叫我大V）</dc:creator><author>volnet（可以叫我大V）</author><pubDate>Fri, 09 May 2008 22:06:00 GMT</pubDate><guid>http://www.cnblogs.com/volnet/archive/2008/05/10/solution-of-dynamic-load-usercontrol.html</guid><wfw:comment>http://volnet.cnblogs.com/comments/1190818.html</wfw:comment><comments>http://www.cnblogs.com/volnet/archive/2008/05/10/solution-of-dynamic-load-usercontrol.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://volnet.cnblogs.com/comments/commentRss/1190818.html</wfw:commentRss><trackback:ping>http://volnet.cnblogs.com/services/trackbacks/1190818.html</trackback:ping><description><![CDATA[<p>动态加载控件貌似给很多程序员都带来了困扰，经常收到这样的邮件，干脆就写下面这个示例来演示如何解决那些常见的问题吧。<br />
其实常见的问题通常有这样两个:<br />
1、通常他们都通过一个按钮来添加一个UserControl并将它们加入PlaceHolder容器的Controls中。然后页面上就会有一个另外一个按钮，这个按钮什么相关的事也没做，就是做了一次回发。这样的情况动态添加的控件就不翼而飞了。 </p>
<p>2、今天收到了一封邮件说是要追加控件，和上面的情况看上去好像不一样，但实质就是同一回事。 <br />
</p>
<p>原因： </p>
<p>其实网上有很多帖子都不约而同地解释了这个问题，这里我还是不厌其烦地解释一下：</p>
<p>首先，要提到大家所熟知很多人一知半解的页面生命周期，以至于很多居然还停留在将ASP.NET和Winform一样处理的层次上，因此就会有人试图将变量存在实例字段中，然后一如既往地指望它能够用来共享数据，结果总是无功而返，以我所知这样的人居然还不在少数，当然了，咱博客园的素质相对偏高，这种问题一般不在话下。事实上每次页面PostBack都会从Aspnet线程池中返回一个空闲的用户线程，用于处理用户本次的请求。摆弄一下那种浏览器进度条会动的控件基本也都算是回发事件了。两次回发之间可以当作没有什么关联的。但是你总能看到很多控件等在回发之后还能保持状态比如文本框边上有个按钮。你填写完了文本后狂点那个按钮，你会发现文本框中的文字还是你填写的那些而不会被清空。这就不得不说到ViewState这种神奇的双刃剑了。它的原理在MSDN上讲的很清楚，找不到的留言或发邮件给我我再慢慢给你找&#8230;&#8230;</p>
<p>然后呢？还是查MSDN,关键字&#8220;TemplateControl.LoadControl &#8221;我们在用PlaceHolder中动态添加控件的时候就会用到这个方法了。我们注意到这里有一句：&#8220;在将控件加载到容器控件时，该容器引发所添加控件的所有事件，直到所添加控件参与当前事件为止。但是，所添加控件不参与回发数据处理。&#8221;因为所添加的控件是不参与回发数据处理的，因此就会出现问题1中所遇到的按另一个按钮就消失的现象了。问题2其实也是一样的问题，因为事实上它们遇到的现象是一样的，只不过它的需求有所不同罢了。（可以理解成一个是i=1;另一个是i+=1;）<br />
</p>
<p><strong>综上所述，问题的关键就是原本在页面加载的时候所有的控件初始化操作都应该完成，动态加载将加载的过程延迟到了事件被触发之后，因此在页面回发后，因为会有一次新的页面加载过程，显然这时候动态加载的控件是不存在的，但是用户预期的答案是显示已经加载的信息。这时候如果可能我们最好在加载的过程中进行控件的重新加载和数据绑定。常见的方法中我们呢通常通过LoadControl来动态加载控件，因此只要在页面输出之前的所有事件节点上我们都可以加载我们的控件。但是推荐的则是Init事件。在Load事件的时候进行数据绑定。</strong><br />
<br />
解决：</p>
<p>既然问题的原因找到了，我们就应该解决它，现在关键就是在回发后PlaceHolder.Controls的子集数量为0，也就是没有子控件，也就是很明显地控件跑没了。那么我们就应该在我们在他们还在的时候将其存放起来。在经典的回发模型中，ViewState通过将所有控件/其子控件的各个属性字段等都存放到ViewState中了，在最后Render的时候都一并丢给了用户。数据包括数据状态都一并发到了客户端，现在客户点击了一个能够引起回发的按钮或者下拉框按钮，所有这些数据状态以及客户修改（也许没有修改，但我们假定客户篡改过了）的数据都传回客户端。因为回发发生了，因此在加载数据的阶段IPostBackEventHandler和IPostBackDataHandler接口所定义的方法（通常由服务器控件实现）都将被调用，然后就是一系列的数据回填工作。用户的数据又被重新做成了新的ViewState放在页面里面又丢给了客户端。我曾经用一个比喻（相当拙劣的比喻，当时好像不是这样比喻的）是白衬衫（花花公子正版）被蓝笔画后，送去洗衣店，人家新拿了一件一样的白衬衫（花花公子高仿），然后用蓝笔划了一下还给你，事实上白衬衫不是你原来的那件了，但看上去还是无法分辨。因此我们这里也可以用类似的办法来解决。但是真的可以吗？用ViewState不仅有众所周知的性能问题，因为ViewState的存储介质（其实是指它的内容存储，可以理解成持久层）是页面，而页面是指接受文本的一种载体（正如网页事实上都是文本一样的道理）因此会有序列化的问题。这就给用户控件的开发带来了极大的不便。更关键的原因是不仅如此，因为UserControl压根没有支持序列化，因此你的控件即使精简到没有字段方法（就声明了个名字够精简了吧）再加上序列化特性，只要你继承自UserControl，就必然面临无法序列化的尴尬。况且它的性能问题确实也很值得关注。和ViewState有类似性质的常见的还有Session和HttpContext.Current.Cache等缓存，或者自己实现一个静态字典用于存储也是一个不错的选择。用它们是可以解决问题的，在下面的代码中将会用到。但这样的方案事实上是存在很多问题的。大家都知道Session是有超时时间的，默认长度也就是几十分钟，而且Session也有诸多其他方面的限制，因此用它来做容量如此之大的控件存储其实是非常不适合的。HttpContext.Current.Cache是一个高级的缓存对象，因为有完善的内部机制来限制其膨胀以及管理其内容，但也正因为这种管理比如大小限制等原因会导致在生产环境中可能会遭遇严重的性能问题。缓存应该用来存取较小的常用的数据，比如用户名/密码这样的常用数据，而不是这种大个头的东西。但是与ViewState相似的性质让它们有了承担这份责任的义务。（家里的大人都死光了，孩子也只好来当家了）这让我们想到了存储介质，事实上磁盘文件，数据库等都具有了同样的性质。另一条思路是来自简单地加载思路，因为对动态添加的控件来说，它有一个很明显的特征，它是动态添加的。因此既然可以在按钮事件处理程序中添加，同样也就可以在页面初始化事件处理程序中添加。按照页面的生命周期动态添加最好写在Init这时候理应做丰富的添加（不过不适合那种需要用按钮添加的用户需求了）[另外一点有点郁闷的是在MSDN中也是说应该在Init而不是Load中动态添加，但是同样是在MSDN的《如何：以编程方式创建 ASP.NET 用户控件的实例》居然就用了Load事件来处理，因此这种区分对页面开发人员事实上并不是那么严谨的，事实上也不会出现什么问题，因此也就没有人吹毛求疵了，而且Google出来的答案估计90%以上都是在Load中写的，一传十十传百的结果可能这个数值还在上升，所以就更没必要计较了]。刚刚打算帮发邮件的兄弟直接找一个答案发现了有网友说在每个页面都要做判断搞加载，很烦很烦&#8230;&#8230;所以如果您的需求不是那种追求打开一个页面两天后再来点一下要追加或则重新加载控件的朋友，我的方案还是可以考虑的。当然如果你比较追求那种近乎变态的需求或者您的页面和淘宝有一样大的访问量的话，不凡试试我的方案，更好的解释是，我的方案可以当作理解控件动态加载原理解释的一个入口罢了。</p>
<p>我的例子，因为代码比较多，我就贴出如何调用的部分（也就是&#8220;如何用&#8221;的代码）源码可以在后面的链接中下载。</p>
<p>扩展性：虽然是为我那位邮友给出的答案，但是还是考虑了扩展性，我们可以尝试扩展用磁盘文件、网络、或者数据库的方式来作为存储介质，当然，您必须为此实现部分接口。局限性，因为有存储介质一说，因此不同容器托管方面不允许同时使用多种存储介质，否则将会出现两个集合，因此就带来了另一个扩展性，您可以自行实现扩展存储之间的数据同步，不过做此之前提醒您一下，不同的存储介质可能存在不同的存储能力，比如Session有大小限制，而数据库简直就是容量大王，这些数据之间的同步可能会引发新的问题，另者就是这样的同步除了看上去很酷之外并没有什么好处，将数据乱存的结果可能导致程序显得混乱，更尴尬的是数据同步所白白消耗掉的性能。当然如果您只是练练手的话您确实可以这么做，做完记得告诉我一下，哈哈，我也想不劳而获。哈哈。下面贴一下代码就不多做解释了，因为如果你理解了上面这些，看懂那些代码就不可能有问题了。</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; padding-left: 4px; font-size: 13px; border-top: #cccccc 1px solid; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">partial</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;_Default&nbsp;:&nbsp;System.Web.UI.Page<br />
<img id="Codehighlighter1_59_2319_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_59_2319_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_59_2319_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_59_2319_Closed_Text').style.display='inline';" alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_59_2319_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_59_2319_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_59_2319_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_59_2319_Open_Text').style.display='inline';" alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; display: none; background-color: #ffffff" id="Codehighlighter1_59_2319_Closed_Text"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_59_2319_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;ContainerManager.ContainerManager&nbsp;cm&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ContainerManager.ContainerManager();<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&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(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br />
<img id="Codehighlighter1_226_440_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_226_440_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_226_440_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_226_440_Closed_Text').style.display='inline';" alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_226_440_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_226_440_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_226_440_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_226_440_Open_Text').style.display='inline';" alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; display: none; background-color: #ffffff" id="Codehighlighter1_226_440_Closed_Text"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_226_440_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">重载控件(HttpContext.Current.Cache作为存储介质)</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cm.ReloadControls(HttpContext.Current.Cache,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">PlaceHolder_DynamicUserControlContainer</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;PlaceHolder_DynamicUserControlContainer.Controls);<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&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;btnInsertDynamicUserControl_Click(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br />
<img id="Codehighlighter1_535_2125_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_535_2125_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_535_2125_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_535_2125_Closed_Text').style.display='inline';" alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_535_2125_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_535_2125_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_535_2125_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_535_2125_Open_Text').style.display='inline';" alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; display: none; background-color: #ffffff" id="Codehighlighter1_535_2125_Closed_Text"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_535_2125_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">Control&nbsp;c1&nbsp;=&nbsp;LoadControl("DynamicUserControl.ascx");<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">PlaceHolder_DynamicUserControlContainer.Controls.Add(c1);</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;displayCount;<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">.TryParse(txtNumber.Text,&nbsp;</span><span style="color: #0000ff">out</span><span style="color: #000000">&nbsp;displayCount);<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(displayCount&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_814_1081_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_814_1081_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_814_1081_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_814_1081_Closed_Text').style.display='inline';" alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_814_1081_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_814_1081_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_814_1081_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_814_1081_Open_Text').style.display='inline';" alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; display: none; background-color: #ffffff" id="Codehighlighter1_814_1081_Closed_Text"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_814_1081_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">追加控件(Session作为存储介质)</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Control&nbsp;c1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;LoadControl(</span><span style="color: #800000">"</span><span style="color: #800000">DynamicUserControl.ascx</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cm.AppendControl(</span><span style="color: #0000ff">this</span><span style="color: #000000">.Session,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">PlaceHolder_DynamicUserControlContainer</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;PlaceHolder_DynamicUserControlContainer.Controls,&nbsp;c1);<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(displayCount&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">1</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_1134_1655_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1134_1655_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1134_1655_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1134_1655_Closed_Text').style.display='inline';" alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1134_1655_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1134_1655_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1134_1655_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1134_1655_Open_Text').style.display='inline';" alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; display: none; background-color: #ffffff" id="Codehighlighter1_1134_1655_Closed_Text"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_1134_1655_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">追加控件(HttpContext.Current.Cache作为存储介质)</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Control&nbsp;c1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;LoadControl(</span><span style="color: #800000">"</span><span style="color: #800000">DynamicUserControl.ascx</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Control&nbsp;c2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;LoadControl(</span><span style="color: #800000">"</span><span style="color: #800000">WebUserControl.ascx</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cm.AppendControl(HttpContext.Current.Cache,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">PlaceHolder_DynamicUserControlContainer</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;PlaceHolder_DynamicUserControlContainer.Controls,&nbsp;c1);<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cm.AppendControl(HttpContext.Current.Cache,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">PlaceHolder_DynamicUserControlContainer</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;PlaceHolder_DynamicUserControlContainer.Controls,&nbsp;c2);<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
<img id="Codehighlighter1_1685_2115_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1685_2115_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1685_2115_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1685_2115_Closed_Text').style.display='inline';" alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1685_2115_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1685_2115_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1685_2115_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1685_2115_Open_Text').style.display='inline';" alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; display: none; background-color: #ffffff" id="Codehighlighter1_1685_2115_Closed_Text"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_1685_2115_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">常见的动态加载控件后点击其他回发事件就导致控件丢失</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PlaceHolder_DynamicUserControlContainer.Controls.Clear();<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Control&nbsp;c1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;LoadControl(</span><span style="color: #800000">"</span><span style="color: #800000">DynamicUserControl.ascx</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PlaceHolder_DynamicUserControlContainer.Controls.Add(c1);<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cm.CacheControls(HttpContext.Current.Cache,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">PlaceHolder_DynamicUserControlContainer</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;PlaceHolder_DynamicUserControlContainer.Controls);<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&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;btnUnloadStorage_Click(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br />
<img id="Codehighlighter1_2209_2313_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_2209_2313_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_2209_2313_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_2209_2313_Closed_Text').style.display='inline';" alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_2209_2313_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_2209_2313_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_2209_2313_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_2209_2313_Open_Text').style.display='inline';" alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; display: none; background-color: #ffffff" id="Codehighlighter1_2209_2313_Closed_Text"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_2209_2313_Open_Text"><span style="color: #000000">{<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cm.Remove(HttpContext.Current.Cache,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">PlaceHolder_DynamicUserControlContainer</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span> </div>
源码地址：<a href="http://www.cnblogs.com/Files/volnet/WebAppPlaceHolder.zip">http://www.cnblogs.com/Files/volnet/WebAppPlaceHolder.zip</a> 
<img src ="http://volnet.cnblogs.com/aggbug/1190818.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://volnet.cnblogs.com/" target="_blank">volnet（可以叫我大V）</a> 2008-05-10 06:06 <a href="http://www.cnblogs.com/volnet/archive/2008/05/10/solution-of-dynamic-load-usercontrol.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对Singleton的实现方法做一个总结</title><link>http://www.cnblogs.com/guaiguai/archive/2008/05/10/1190803.html</link><dc:creator>怪怪</dc:creator><author>怪怪</author><pubDate>Fri, 09 May 2008 18:02:00 GMT</pubDate><guid>http://www.cnblogs.com/guaiguai/archive/2008/05/10/1190803.html</guid><wfw:comment>http://guaiguai.cnblogs.com/comments/1190803.html</wfw:comment><comments>http://www.cnblogs.com/guaiguai/archive/2008/05/10/1190803.html#Feedback</comments><slash:comments>23</slash:comments><wfw:commentRss>http://guaiguai.cnblogs.com/comments/commentRss/1190803.html</wfw:commentRss><trackback:ping>http://guaiguai.cnblogs.com/services/trackbacks/1190803.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 说说Singleton的三种实现外加一个变种和一些细节。 还有什么没提到的， 大家也来讨论下～&nbsp;&nbsp;<a href='http://www.cnblogs.com/guaiguai/archive/2008/05/10/1190803.html'>阅读全文</a><img src ="http://guaiguai.cnblogs.com/aggbug/1190803.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://guaiguai.cnblogs.com/" target="_blank">怪怪</a> 2008-05-10 02:02 <a href="http://www.cnblogs.com/guaiguai/archive/2008/05/10/1190803.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从Facebook说起</title><link>http://www.cnblogs.com/shuizhuyu/archive/2008/05/10/1190795.html</link><dc:creator>水煮 鱼</dc:creator><author>水煮 鱼</author><pubDate>Fri, 09 May 2008 17:08:00 GMT</pubDate><guid>http://www.cnblogs.com/shuizhuyu/archive/2008/05/10/1190795.html</guid><wfw:comment>http://shuizhuyu.cnblogs.com/comments/1190795.html</wfw:comment><comments>http://www.cnblogs.com/shuizhuyu/archive/2008/05/10/1190795.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://shuizhuyu.cnblogs.com/comments/commentRss/1190795.html</wfw:commentRss><trackback:ping>http://shuizhuyu.cnblogs.com/services/trackbacks/1190795.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <p><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/0/06/Facebook.svg/200px-Facebook.svg.png" align="right"/>时间：2008-5-9 夜<br>版权申明：本文为水煮鱼为 水煮鱼@博客园 撰写，不得用于商业用途，如需摘用，请与水煮鱼联系。<br><br>最近在公司内部，有很多同事都在讨论Facebook的成功，但大部分同事都仅仅将Facebook看作SNS社区，根据理解，水煮 鱼想对此进行一个澄清。Facebook不仅仅是一个简单的SNS社区，如果真是这样，那么微软不必花费2.4亿美元，成就Facebook150亿美元的市场估值了。<br><br>那Facebook究竟是什么？<br></p>&nbsp;&nbsp;<a href='http://www.cnblogs.com/shuizhuyu/archive/2008/05/10/1190795.html'>阅读全文</a><img src ="http://shuizhuyu.cnblogs.com/aggbug/1190795.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://shuizhuyu.cnblogs.com/" target="_blank">水煮 鱼</a> 2008-05-10 01:08 <a href="http://www.cnblogs.com/shuizhuyu/archive/2008/05/10/1190795.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASP.NET自定义控件复杂属性声明持久性浅析</title><link>http://www.cnblogs.com/tedzhao/archive/2008/05/10/1190772.html</link><dc:creator>ted</dc:creator><author>ted</author><pubDate>Fri, 09 May 2008 16:26:00 GMT</pubDate><guid>http://www.cnblogs.com/tedzhao/archive/2008/05/10/1190772.html</guid><wfw:comment>http://tedzhao.cnblogs.com/comments/1190772.html</wfw:comment><comments>http://www.cnblogs.com/tedzhao/archive/2008/05/10/1190772.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://tedzhao.cnblogs.com/comments/commentRss/1190772.html</wfw:commentRss><trackback:ping>http://tedzhao.cnblogs.com/services/trackbacks/1190772.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ASP.NET自定义控件复杂属性声明持久性浅析在自定义控件的开发过程中，我们经常要给控件添加一些复杂类型的属性。利用声明持久性（Declarative Persistence）可使得页面开发人员能够让页面开发人员在ASP.NET页面中，声明性地设置这些复杂属性值，而无需编写任何C#或者VB.NET代码。参见下面的例子：    GridView的DataKeyNames属性，其数据类...&nbsp;&nbsp;<a href='http://www.cnblogs.com/tedzhao/archive/2008/05/10/1190772.html'>阅读全文</a><img src ="http://tedzhao.cnblogs.com/aggbug/1190772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://tedzhao.cnblogs.com/" target="_blank">ted</a> 2008-05-10 00:26 <a href="http://www.cnblogs.com/tedzhao/archive/2008/05/10/1190772.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BizTalk -  How to debug map in VS2005</title><link>http://www.cnblogs.com/netboy/archive/2008/05/09/1190623.html</link><dc:creator>zhanqiangz(闲云野鹤)</dc:creator><author>zhanqiangz(闲云野鹤)</author><pubDate>Fri, 09 May 2008 13:36:00 GMT</pubDate><guid>http://www.cnblogs.com/netboy/archive/2008/05/09/1190623.html</guid><wfw:comment>http://netboy.cnblogs.com/comments/1190623.html</wfw:comment><comments>http://www.cnblogs.com/netboy/archive/2008/05/09/1190623.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://netboy.cnblogs.com/comments/commentRss/1190623.html</wfw:commentRss><trackback:ping>http://netboy.cnblogs.com/services/trackbacks/1190623.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: I am here not talking about debugging BizTalk application with HAT, my topic is how to debug map in VS2005.&nbsp;&nbsp;<a href='http://www.cnblogs.com/netboy/archive/2008/05/09/1190623.html'>阅读全文</a><img src ="http://netboy.cnblogs.com/aggbug/1190623.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://netboy.cnblogs.com/" target="_blank">zhanqiangz(闲云野鹤)</a> 2008-05-09 21:36 <a href="http://www.cnblogs.com/netboy/archive/2008/05/09/1190623.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>微型项目实践（6）：Business层代码分析——实体类的生成策略</title><link>http://www.cnblogs.com/yuandong/archive/2008/05/09/1190563.html</link><dc:creator>冬冬</dc:creator><author>冬冬</author><pubDate>Fri, 09 May 2008 12:53:00 GMT</pubDate><guid>http://www.cnblogs.com/yuandong/archive/2008/05/09/1190563.html</guid><wfw:comment>http://yuandong.cnblogs.com/comments/1190563.html</wfw:comment><comments>http://www.cnblogs.com/yuandong/archive/2008/05/09/1190563.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://yuandong.cnblogs.com/comments/commentRss/1190563.html</wfw:commentRss><trackback:ping>http://yuandong.cnblogs.com/services/trackbacks/1190563.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <p>.Net发展的如此之快：2.0，3.0，3.5……版本的不断升级让人应接不暇；Linq，Ajax.Net，SilverLight……各种新特性更是让眼花缭乱。这些新技术一方面极大的提高了开发效率，另一方面，又给我们提出了严峻的考验：如何能在项目中合理的使用这些新技术，使它们相互配合，发挥出最大功效？<br /><br>本系列将以一个Blog系统的开发为例子，从数据分析开始，一步步讲解一个系统的架构，并在这个过程中介绍以上这些技术的使用方式。另外，文章还将介绍作者在实际项目中积累的一些经验和技巧。麻雀虽小，五脏俱全，希望本文对于哪些不知道该如何组织实际代码的朋友有些帮助！<br /><br>该篇分析了实体类的生成策略和用法。</p>&nbsp;&nbsp;<a href='http://www.cnblogs.com/yuandong/archive/2008/05/09/1190563.html'>阅读全文</a><img src ="http://yuandong.cnblogs.com/aggbug/1190563.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://yuandong.cnblogs.com/" target="_blank">冬冬</a> 2008-05-09 20:53 <a href="http://www.cnblogs.com/yuandong/archive/2008/05/09/1190563.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在SQL Server2005中进行错误捕捉</title><link>http://www.cnblogs.com/nokiaguy/archive/2008/05/09/1190551.html</link><dc:creator>银河使者</dc:creator><author>银河使者</author><pubDate>Fri, 09 May 2008 12:38:00 GMT</pubDate><guid>http://www.cnblogs.com/nokiaguy/archive/2008/05/09/1190551.html</guid><wfw:comment>http://nokiaguy.cnblogs.com/comments/1190551.html</wfw:comment><comments>http://www.cnblogs.com/nokiaguy/archive/2008/05/09/1190551.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://nokiaguy.cnblogs.com/comments/commentRss/1190551.html</wfw:commentRss><trackback:ping>http://nokiaguy.cnblogs.com/services/trackbacks/1190551.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 任何程序都可能出现错误，在SQL Server中执行Transact-SQL也不例外。如果在Transact-SQL中发生了错误，一般有两种捕捉错误的方法，一种是在客户端代码（如 c#、delphi等)中使用类似try...catch的语句进行捕捉；另外一种就是在Transact-SQL中利用Transact-SQL本身提供的错误捕捉机制进行捕捉。如果是因为Transact-SQL语句的执行而产生的错误，如键值冲突，使用第一种和第二种方法都可以捕捉，但是如果是逻辑错误，使用客户端代码进行捕捉就不太方便。因此，本文就如何使用Transact-SQL进行错误捕捉进行了讨论。&nbsp;&nbsp;<a href='http://www.cnblogs.com/nokiaguy/archive/2008/05/09/1190551.html'>阅读全文</a><img src ="http://nokiaguy.cnblogs.com/aggbug/1190551.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://nokiaguy.cnblogs.com/" target="_blank">银河使者</a> 2008-05-09 20:38 <a href="http://www.cnblogs.com/nokiaguy/archive/2008/05/09/1190551.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入认识javascript中的eval函数</title><link>http://www.cnblogs.com/agloat/archive/2008/05/09/1190468.html</link><dc:creator>李光耀</dc:creator><author>李光耀</author><pubDate>Fri, 09 May 2008 11:14:00 GMT</pubDate><guid>http://www.cnblogs.com/agloat/archive/2008/05/09/1190468.html</guid><wfw:comment>http://agloat.cnblogs.com/comments/1190468.html</wfw:comment><comments>http://www.cnblogs.com/agloat/archive/2008/05/09/1190468.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://agloat.cnblogs.com/comments/commentRss/1190468.html</wfw:commentRss><trackback:ping>http://agloat.cnblogs.com/services/trackbacks/1190468.html</trackback:ping><description><![CDATA[发现为本文起一个合适的标题还不是那么容易，呵呵，所以在此先说明下本文的两个目的：<br />
（1）介绍javascript中的eval函数的用法<br />
（2）如何在函数内执行全局代码<br />
<br />
►先来说eval的用法，内容比较简单，熟悉的可以跳过。<br />
eval函数接收一个参数s，如果s不是字符串，则直接返回s。否则执行s语句。如果s语句执行结果是一个值，则返回此值，否则返回undefined。<br />
需要特别注意的是对象声明语法&#8220;{}&#8221;并不能返回一个值，需要用括号括起来才会返回值，简单示例如下：<br />
<br />
var code1='"a" + 2'; //表达式<br />
var code2='{a:2}'; //语句<br />
alert(eval(code1)); //-&gt;'a2'<br />
alert(eval(code2)); //-&gt;undefined<br />
alert(eval('(' + code2 + ')')); //-&gt;[object Object]<br />
可以看到，对于对象声明语句来说，仅仅是执行，并不能返回值。为了返回常用的&#8220;{}&#8221;这样的对象声明语句，必须用括号括住，以将其转换为表达式，才能返回其值。这也是使用JSON来进行Ajax开发的基本原理之一。在例子中可以清楚的看到，第二个alert语句输出的是undefined，而第三个加了括号后输出的是语句表示的对象。<br />
<br />
►现在来说本文的重点，如何在函数内执行全局代码。为了说明这个问题，先看一个例子：<br />
<br />
var s='global'; //定义一个全局变量<br />
function demo1(){<br />
eval('var s="local"');<br />
}<br />
demo1();<br />
alert(s); //-&gt;global<br />
很好理解，上面的demo1函数等价于：function demo1(){var s='local';}，其中定义了一个局部变量s。<br />
所以最后的输出是global并不是什么奇怪的事情，毕竟大家都能很清楚的区分局部变量和全局变量。<br />
仔细体会一下，可以发现eval函数的特点，它总是在调用它的上下文变量空间（也称为：包，closure）内执行，无论是变量定义还是函数定义都是如此，所以如下的代码会产生函数未定义的错误：<br />
<br />
var s='function test(){return 1;}'; //一个函数定义语句<br />
function demo2(){<br />
eval(s);<br />
}<br />
demo2();<br />
alert(test()); //-&gt;error:test is not defined<br />
这是因为test函数在局部空间定义，demo2函数内可以访问到，外面就访问不到了。<br />
<br />
而在实际的Ajax开发中，有时我们需要从服务器动态获取代码来执行，以减轻一次载入代码过多的问题，或者是一些代码是通过Javascript自身生成的，希望用eval函数来使其执行。<br />
但这样的动态获取代码的工作一般在函数内完成，比如：<br />
<br />
function loadCode(){<br />
var code=getCode();<br />
eval(code);<br />
}<br />
可见eval不可能在全局空间内执行，这就给开发带来了不少问题，也看到过很多人为此郁闷。<br />
<br />
不过现在偶终于找到了解决办法，嘿嘿，可以同时兼容IE和Firefox，方法如下：<br />
<br />
var X2={} //my namespace:)<br />
X2.Eval=function(code){<br />
if(!!(window.attachEvent &amp;&amp; !window.opera)){<br />
//ie<br />
execScript(code); <br />
}else{<br />
//not ie<br />
window.eval(code);<br />
}<br />
}<br />
现在如果要想在函数内定义全局代码，就可以通过调用X2.Eval(code)方法，一个例子如下：<br />
<br />
var s='global';<br />
function demo3(){<br />
X2.Eval('var s="local"');<br />
}<br />
demo3();<br />
alert(s); //-&gt;'local'<br />
可见，在demo3函数内重新定义了全局变量s="local"。<br />
需要注意的是X2.Eval并不返回值，如果要进行表达式的求值，还是用系统的eval函数。X2.Eval设计为仅做全局代码定义用。<br />
<br />
其实看到这里，或许有人感觉问题也太容易解决了点，呵呵，但发现这个办法倒是需要些运气和技巧的：<br />
（1）对于IE浏览器，默认已经提供了这样的函数：execScript，用于在全局空间执行代码，只是知道的人还不多。<br />
（2）对于Firefox浏览器，直接调用eval函数，则在调用者的空间执行；如果调用window.eval则在全局空间执行。这个知道的人估计就更少了。毕竟alert(eval==window.eval)返回true！<br />
<br />
Firefox的eval函数的特点的确是很令人奇怪的，但从javascript规范中倒也能找到其来源：<br />
<br />
If value of the eval property is used in any way other than a direct call (that is, other than by the explicit use of its<br />
name as an Identifier which is the MemberExpression in a CallExpression), or if the eval property is assigned to,<br />
an EvalError exception may be thrown.<br />
意思大概就是说eval函数的执行是和调用者相关的，但并没有说其执行上下文的问题。所以IE和Firefox孰是孰非也就很难说了，大家知道解决办法就好。 
<img src ="http://agloat.cnblogs.com/aggbug/1190468.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://agloat.cnblogs.com/" target="_blank">李光耀</a> 2008-05-09 19:14 <a href="http://www.cnblogs.com/agloat/archive/2008/05/09/1190468.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>老调新弹，也玩Linq To Sql批操作</title><link>http://www.cnblogs.com/Endink/archive/2008/05/09/1190411.html</link><dc:creator>sharping</dc:creator><author>sharping</author><pubDate>Fri, 09 May 2008 10:25:00 GMT</pubDate><guid>http://www.cnblogs.com/Endink/archive/2008/05/09/1190411.html</guid><wfw:comment>http://Endink.cnblogs.com/comments/1190411.html</wfw:comment><comments>http://www.cnblogs.com/Endink/archive/2008/05/09/1190411.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://Endink.cnblogs.com/comments/commentRss/1190411.html</wfw:commentRss><trackback:ping>http://Endink.cnblogs.com/services/trackbacks/1190411.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近搞Linq To Sql（以下简称LS）上瘾了，越玩越好玩，废话不多说。切入正题批更新和批删除早就被作为LS的软肋被广大程序员们嗤之以鼻，园子里也有人做了些扩展来满足批操作需求，我本来打算直接COPY这些代码在项目中使用的，遗憾的是我没找到批更新的，批删除的有几种，但我都觉得要么不太取巧，要又是不完善，我这里也献丑一下，做个批操作扩展，既然大家都做了批删除，我挑个冷门的，批更新吧，其实删除和更新都差不多吧。<br>&nbsp;&nbsp;<a href='http://www.cnblogs.com/Endink/archive/2008/05/09/1190411.html'>阅读全文</a><img src ="http://Endink.cnblogs.com/aggbug/1190411.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://Endink.cnblogs.com/" target="_blank">sharping</a> 2008-05-09 18:25 <a href="http://www.cnblogs.com/Endink/archive/2008/05/09/1190411.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>“我们应该在用户计算机上存储一个魔饼”？</title><link>http://www.cnblogs.com/zhouyinhui/archive/2008/05/09/1190400.html</link><dc:creator>周银辉</dc:creator><author>周银辉</author><pubDate>Fri, 09 May 2008 10:16:00 GMT</pubDate><guid>http://www.cnblogs.com/zhouyinhui/archive/2008/05/09/1190400.html</guid><wfw:comment>http://zhouyinhui.cnblogs.com/comments/1190400.html</wfw:comment><comments>http://www.cnblogs.com/zhouyinhui/archive/2008/05/09/1190400.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://zhouyinhui.cnblogs.com/comments/commentRss/1190400.html</wfw:commentRss><trackback:ping>http://zhouyinhui.cnblogs.com/services/trackbacks/1190400.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 标题来自《JOEL 说软件》第48页第三段。<br>说实话，我的英文很烂，所以如果某书籍如果有中文版的话，我会首先考虑中文版的，毕竟可以提高阅读速度，以及把琢磨外文单词的时间节约出来以思考作者表达的真正含义。<br>今天在看《JOEL 说软件》实在有点忍受不下去了，当我看到那个“魔饼”时的确有点蒙，以至于两分钟后才反应过来：“Cookie” 有“饼干”的意思。<br>真是让人哭笑不得。&nbsp;&nbsp;<a href='http://www.cnblogs.com/zhouyinhui/archive/2008/05/09/1190400.html'>阅读全文</a><img src ="http://zhouyinhui.cnblogs.com/aggbug/1190400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://zhouyinhui.cnblogs.com/" target="_blank">周银辉</a> 2008-05-09 18:16 <a href="http://www.cnblogs.com/zhouyinhui/archive/2008/05/09/1190400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>匿名方法引起的异常</title><link>http://www.cnblogs.com/worldreason/archive/2008/05/09/1190358.html</link><dc:creator>信息加油站义工</dc:creator><author>信息加油站义工</author><pubDate>Fri, 09 May 2008 09:53:00 GMT</pubDate><guid>http://www.cnblogs.com/worldreason/archive/2008/05/09/1190358.html</guid><wfw:comment>http://worldreason.cnblogs.com/comments/1190358.html</wfw:comment><comments>http://www.cnblogs.com/worldreason/archive/2008/05/09/1190358.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://worldreason.cnblogs.com/comments/commentRss/1190358.html</wfw:commentRss><trackback:ping>http://worldreason.cnblogs.com/services/trackbacks/1190358.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 问题：最近编写一个低级的键盘钩子，用c#制作，于是用到了win32 api。但是运行大概不久后就会莫名其妙地发生异常，是非法访问内存导致的异常。<br><br>调试发现，异常的地方是不可捕获的。&nbsp;&nbsp;<a href='http://www.cnblogs.com/worldreason/archive/2008/05/09/1190358.html'>阅读全文</a><img src ="http://worldreason.cnblogs.com/aggbug/1190358.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://worldreason.cnblogs.com/" target="_blank">信息加油站义工</a> 2008-05-09 17:53 <a href="http://www.cnblogs.com/worldreason/archive/2008/05/09/1190358.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>资深工程师为何否定这种单例模式</title><link>http://www.cnblogs.com/ASPNET2008/archive/2008/05/09/1190328.html</link><dc:creator>姜敏</dc:creator><author>姜敏</author><pubDate>Fri, 09 May 2008 09:39:00 GMT</pubDate><guid>http://www.cnblogs.com/ASPNET2008/archive/2008/05/09/1190328.html</guid><wfw:comment>http://ASPNET2008.cnblogs.com/comments/1190328.html</wfw:comment><comments>http://www.cnblogs.com/ASPNET2008/archive/2008/05/09/1190328.html#Feedback</comments><slash:comments>21</slash:comments><wfw:commentRss>http://ASPNET2008.cnblogs.com/comments/commentRss/1190328.html</wfw:commentRss><trackback:ping>http://ASPNET2008.cnblogs.com/services/trackbacks/1190328.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本人在 横刀天笑 的一篇谈论单例模式的文章http://www.cnblogs.com/yuyijq/archive/2007/10/07/915941.html<br>里面有两种写单例的例子.有一种方法得到资深工程师的否定.事实证明他的想法是错误的。<br>&nbsp;&nbsp;<a href='http://www.cnblogs.com/ASPNET2008/archive/2008/05/09/1190328.html'>阅读全文</a><img src ="http://ASPNET2008.cnblogs.com/aggbug/1190328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://ASPNET2008.cnblogs.com/" target="_blank">姜敏</a> 2008-05-09 17:39 <a href="http://www.cnblogs.com/ASPNET2008/archive/2008/05/09/1190328.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>fckeditor的几个问题的解决</title><link>http://www.cnblogs.com/sifang2004/archive/2008/05/09/1190074.html</link><dc:creator>叶漂</dc:creator><author>叶漂</author><pubDate>Fri, 09 May 2008 07:27:00 GMT</pubDate><guid>http://www.cnblogs.com/sifang2004/archive/2008/05/09/1190074.html</guid><wfw:comment>http://sifang2004.cnblogs.com/comments/1190074.html</wfw:comment><comments>http://www.cnblogs.com/sifang2004/archive/2008/05/09/1190074.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://sifang2004.cnblogs.com/comments/commentRss/1190074.html</wfw:commentRss><trackback:ping>http://sifang2004.cnblogs.com/services/trackbacks/1190074.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;FCKEditor几个问题的解决&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fckedtior这款开源的网页富文本编辑器，我们在各个项目中经常用到，以前也碰到些问题，但解决起来都比较容易，网上的解决方案比较多，但在最新的版本（2.6）的应用时，又碰到了一些问题，也许某些问题在先前的版本中也会有，现在稍微总结一下，以免以后碰到...&nbsp;&nbsp;<a href='http://www.cnblogs.com/sifang2004/archive/2008/05/09/1190074.html'>阅读全文</a><img src ="http://sifang2004.cnblogs.com/aggbug/1190074.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://sifang2004.cnblogs.com/" target="_blank">叶漂</a> 2008-05-09 15:27 <a href="http://www.cnblogs.com/sifang2004/archive/2008/05/09/1190074.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web基础控件开发系列--属性</title><link>http://www.cnblogs.com/wmj/archive/2008/05/09/1190053.html</link><dc:creator>王孟军!</dc:creator><author>王孟军!</author><pubDate>Fri, 09 May 2008 07:17:00 GMT</pubDate><guid>http://www.cnblogs.com/wmj/archive/2008/05/09/1190053.html</guid><wfw:comment>http://wmj.cnblogs.com/comments/1190053.html</wfw:comment><comments>http://www.cnblogs.com/wmj/archive/2008/05/09/1190053.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://wmj.cnblogs.com/comments/commentRss/1190053.html</wfw:commentRss><trackback:ping>http://wmj.cnblogs.com/services/trackbacks/1190053.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近在弄公司的两个BS系统，也没学到什么新技术，倒是，打字速度比以前更快了，耽误了“Web基础控件开发系列”的进度，实在不好意思。<br>&nbsp;&nbsp;<a href='http://www.cnblogs.com/wmj/archive/2008/05/09/1190053.html'>阅读全文</a><img src ="http://wmj.cnblogs.com/aggbug/1190053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://wmj.cnblogs.com/" target="_blank">王孟军!</a> 2008-05-09 15:17 <a href="http://www.cnblogs.com/wmj/archive/2008/05/09/1190053.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>有关一些状态机制的封装</title><link>http://www.cnblogs.com/lovecherry/archive/2008/05/09/1189990.html</link><dc:creator>lovecherry</dc:creator><author>lovecherry</author><pubDate>Fri, 09 May 2008 06:36:00 GMT</pubDate><guid>http://www.cnblogs.com/lovecherry/archive/2008/05/09/1189990.html</guid><wfw:comment>http://lovecherry.cnblogs.com/comments/1189990.html</wfw:comment><comments>http://www.cnblogs.com/lovecherry/archive/2008/05/09/1189990.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://lovecherry.cnblogs.com/comments/commentRss/1189990.html</wfw:commentRss><trackback:ping>http://lovecherry.cnblogs.com/services/trackbacks/1189990.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cnblogs.com/lovecherry/archive/2008/05/09/1189990.html'>阅读全文</a><img src ="http://lovecherry.cnblogs.com/aggbug/1189990.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://lovecherry.cnblogs.com/" target="_blank">lovecherry</a> 2008-05-09 14:36 <a href="http://www.cnblogs.com/lovecherry/archive/2008/05/09/1189990.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Overlay中文显示</title><link>http://www.cnblogs.com/gogoplayer/archive/2008/05/09/1189874.html</link><dc:creator>gogoplayer</dc:creator><author>gogoplayer</author><pubDate>Fri, 09 May 2008 05:43:00 GMT</pubDate><guid>http://www.cnblogs.com/gogoplayer/archive/2008/05/09/1189874.html</guid><wfw:comment>http://gogoplayer.cnblogs.com/comments/1189874.html</wfw:comment><comments>http://www.cnblogs.com/gogoplayer/archive/2008/05/09/1189874.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://gogoplayer.cnblogs.com/comments/commentRss/1189874.html</wfw:commentRss><trackback:ping>http://gogoplayer.cnblogs.com/services/trackbacks/1189874.html</trackback:ping><description><![CDATA[&nbsp;
<p class="MsoNormal" style="text-indent: 21pt"><span style="font-family: '微软雅黑','sans-serif'">近日很多朋友咨询<span lang="EN-US">Overlay</span>中文显示问题，回答的多了想索性再写个文档算了，放在网上共享，于是就有了本篇。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: '微软雅黑','sans-serif'">在<span lang="EN-US">Ogre1.2.5</span>版本中，通过与<span lang="EN-US">Ogre</span>官方论坛的开发者讨论实现了<span lang="EN-US">Overlay</span>的中文显示，当初的实现非常的怪异，具体的实现可以参见<span lang="EN-US">Ogre</span>官方论坛。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="text-indent: 21pt"><span style="font-family: '微软雅黑','sans-serif'">随着<span lang="EN-US">Ogre</span>的更新，现在<span lang="EN-US">Ogre</span>已经发布了<span lang="EN-US">1.4.7</span>，<span lang="EN-US">1.4</span>系列版本有一个重要的改进，就是加入了<span lang="EN-US">UTFString</span>，这为<span lang="EN-US">Ogre</span>中文显示予以很大的帮助。为了便于演示，我直接使用<span lang="EN-US">Ogre</span>自带的<span lang="EN-US">Overlay</span>，也就是大家熟悉的<span lang="EN-US">DebugOverlay</span>，测试工程我选择<span lang="EN-US">Demo_ParticleFX</span>，选择其他的也没有关系。现在编译它，运行后得到下图：<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'; mso-no-proof: yes"><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype></span><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span style="font-family: '微软雅黑','sans-serif'"><img height="634" alt="" src="http://www.cnblogs.com/images/cnblogs_com/gogoplayer/Ogre/overlay_eng.JPG" width="808" border="0" /><br />
图的最左下角显示的就是英文<span lang="EN-US">DebugOverlay</span>，接下来我们的任务就是把它编程中文的，<span lang="EN-US">^_^</span>。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="text-indent: 21pt; text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'">Overlay</span><span style="font-family: '微软雅黑','sans-serif'">中文化操作步骤如下<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoListParagraph" style="margin-left: 42pt; text-indent: -21pt; text-align: left; mso-layout-grid-align: none; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑"><span style="mso-list: Ignore">1.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: '微软雅黑','sans-serif'">打开<span lang="EN-US">OgreSDK\media\packs\</span></span><span lang="EN-US"> </span><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'">OgreCore.zip</span><span style="font-family: '微软雅黑','sans-serif'">。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoListParagraph" style="margin-left: 42pt; text-indent: -21pt; text-align: left; mso-layout-grid-align: none; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑"><span style="mso-list: Ignore">2.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: '微软雅黑','sans-serif'">打开<span lang="EN-US">C:\WINDOWS\Fonts</span>，把<span lang="EN-US">simhei.ttf</span>添加到<span lang="EN-US">OgreCore.zip</span>，（什么，没有<span lang="EN-US">simhei.ttf</span>这个文件，那就还其他的中文<span lang="EN-US">ttf</span>字体吧）。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoListParagraph" style="margin-left: 42pt; text-indent: -21pt; text-align: left; mso-layout-grid-align: none; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑"><span style="mso-list: Ignore">3.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: '微软雅黑','sans-serif'">打开<span lang="EN-US">OgreCore.zip</span>中的<span lang="EN-US">Ogre.fontdef</span>，里面有<span lang="EN-US">BlueHighway</span>这个字体定义块，在他的下面添加我们的<span lang="EN-US">SimHei</span>，<span lang="EN-US">code_points</span>里面的一大堆数字看不明白没关系，随后文章会解释。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-align: left; mso-layout-grid-align: none; mso-para-margin-left: 4.0gd" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'">SimHei<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-align: left; mso-layout-grid-align: none; mso-para-margin-left: 4.0gd" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'">{<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-align: left; mso-layout-grid-align: none; mso-para-margin-left: 4.0gd" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>type <span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>truetype<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-align: left; mso-layout-grid-align: none; mso-para-margin-left: 4.0gd" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>source <span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>simhei.ttf<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-align: left; mso-layout-grid-align: none; mso-para-margin-left: 4.0gd" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>size <span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>16<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-align: left; mso-layout-grid-align: none; mso-para-margin-left: 4.0gd" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>resolution <span style="mso-tab-count: 1">&nbsp; </span>96<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-align: left; mso-layout-grid-align: none; mso-para-margin-left: 4.0gd" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>code_points 33-166 24403-24403 21069-21069 24103-24103 36895-36895 29575-29575 24179-24179 22343-22343 26368-26368 39640-39640 20302-20302 19977-19977 35282-35282 24418-24418 25968-25968 37327-37327 25209-25209 27425-27425 <o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-align: left; mso-layout-grid-align: none; mso-para-margin-left: 4.0gd" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'">}<o:p></o:p></span></p>
<p class="MsoListParagraph" style="margin-left: 42pt; text-indent: -21pt; text-align: left; mso-layout-grid-align: none; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑"><span style="mso-list: Ignore">4.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: '微软雅黑','sans-serif'">打开<span lang="EN-US">OgreCore.zip</span>中的<span lang="EN-US">OgreDebugPanel.overlay</span>，把<span lang="EN-US">BlueHighway</span>全部替换成<span lang="EN-US">SimHei</span>，我们要使用中文字体了，嘿嘿。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoListParagraph" style="margin-left: 42pt; text-indent: -21pt; text-align: left; mso-layout-grid-align: none; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑"><span style="mso-list: Ignore">5.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: '微软雅黑','sans-serif'">修改完成后，确保所做的修改已经保存到<span lang="EN-US">OgreCore.zip</span>。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoListParagraph" style="margin-left: 42pt; text-indent: -21pt; text-align: left; mso-layout-grid-align: none; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑"><span style="mso-list: Ignore">6.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: '微软雅黑','sans-serif'">进入<span lang="EN-US">Ogre</span>解决方案，打开文件<span lang="EN-US">ExampleFrameListener.h</span>，把<span lang="EN-US">54-59</span>行的代码替换如下：<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 9pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">static</span> String currFps = <span style="color: #a31515">"Current FPS: "</span>;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 9pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">static</span> String avgFps = <span style="color: #a31515">"Average FPS: "</span>;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 9pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">static</span> String bestFps = <span style="color: #a31515">"Best FPS: "</span>;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 9pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">static</span> String worstFps = <span style="color: #a31515">"Worst FPS: "</span>;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 9pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">static</span> String tris = <span style="color: #a31515">"Triangle Count: "</span>;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 9pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">static</span> String batches = <span style="color: #a31515">"Batch Count: "</span>;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 9pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">static</span> DisplayString currFps = L<span style="color: #a31515">"</span></span><span style="font-size: 9pt; color: #a31515; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">当前帧速率<span lang="EN-US">: "</span></span><span lang="EN-US" style="font-size: 9pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 9pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">static</span> DisplayString avgFps = L<span style="color: #a31515">"</span></span><span style="font-size: 9pt; color: #a31515; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">平均帧速率<span lang="EN-US">: "</span></span><span lang="EN-US" style="font-size: 9pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 9pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">static</span> DisplayString bestFps = L<span style="color: #a31515">"</span></span><span style="font-size: 9pt; color: #a31515; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">最高帧速率<span lang="EN-US">: "</span></span><span lang="EN-US" style="font-size: 9pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 9pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">static</span> DisplayString worstFps = L<span style="color: #a31515">"</span></span><span style="font-size: 9pt; color: #a31515; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">最低帧速率<span lang="EN-US">: "</span></span><span lang="EN-US" style="font-size: 9pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-size: 9pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">static</span> DisplayString tris = L<span style="color: #a31515">"</span></span><span style="font-size: 9pt; color: #a31515; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">三角形数量<span lang="EN-US">: "</span></span><span lang="EN-US" style="font-size: 9pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-pagination: widow-orphan" align="left"><span lang="EN-US" style="font-size: 9pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">static</span> DisplayString batches = L<span style="color: #a31515">"</span></span><span style="font-size: 9pt; color: #a31515; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">批次<span lang="EN-US">: "</span></span><span lang="EN-US" style="font-size: 9pt; font-family: '微软雅黑','sans-serif'; mso-no-proof: yes; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt">;</span><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'"><o:p></o:p></span></p>
<p class="MsoListParagraph" style="margin-left: 42pt; text-indent: -21pt; text-align: left; mso-layout-grid-align: none; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'; mso-bidi-font-family: 微软雅黑"><span style="mso-list: Ignore">7.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: '微软雅黑','sans-serif'">最后重新编译工程，下面是我运行的截图，是不是已经显示中文了，<span lang="EN-US">^_^</span>。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'"><span style="mso-tab-count: 1"><img height="634" alt="" src="http://www.cnblogs.com/images/cnblogs_com/gogoplayer/Ogre/overlay_chinese.JPG" width="808" border="0" /><br />
</span></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10.5pt; font-family: '微软雅黑','sans-serif'; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">现在再来看看<span lang="EN-US">SimHei</span>中的<span lang="EN-US">code_points</span>是如何生成的，这个可以参考我上次写的这篇文章<span lang="EN-US"><a href="http://www.cnblogs.com/gogoplayer/archive/2008/05/09/1189795.html">http://www.cnblogs.com/gogoplayer/archive/2008/05/09/1189795.html</a></span>，至此，实现<span lang="EN-US">Overlay</span>中文显示。</span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span style="font-family: '微软雅黑','sans-serif'">转载请注明出处：<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span style="font-family: '微软雅黑','sans-serif'">作者：<span lang="EN-US">gogoplayer<o:p></o:p></span></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'">E-mail : gogoplayer@163.com<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left; mso-layout-grid-align: none" align="left"><span lang="EN-US" style="font-family: '微软雅黑','sans-serif'">QQ : 78939328<o:p></o:p></span></p>
<span lang="EN-US" style="font-size: 10.5pt; font-family: 'Calibri','sans-serif'; mso-bidi-font-size: 11.0pt; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin"><a href="http://www.gogoplayer.com.cn/"><span style="font-family: '微软雅黑','sans-serif'">http://www.gogoplayer.com.cn</span></a></span>
<img src ="http://gogoplayer.cnblogs.com/aggbug/1189874.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://gogoplayer.cnblogs.com/" target="_blank">gogoplayer</a> 2008-05-09 13:43 <a href="http://www.cnblogs.com/gogoplayer/archive/2008/05/09/1189874.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>