<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/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>baicaps' World</title>
        <link>http://blog.rongzhiwang.com/baicaps/Default.aspx</link>
        <description>分享技术，享受生活！</description>
        <language>zh-CHS</language>
        <copyright>baicaps</copyright>
        <managingEditor>baicaps@126.com</managingEditor>
        <generator>interwis.net Blog Version 3.0.0.0</generator>
        <image>
            <title>baicaps' World</title>
            <url>http://blog.rongzhiwang.com/images/RSS2Image.gif</url>
            <link>http://blog.rongzhiwang.com/baicaps/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>在普通JavaScript中也使用$来代替document.getElementById</title>
            <category>javascript</category>
            <link>http://blog.rongzhiwang.com/baicaps/archive/2010/06/10/javascriptdocument.getelementbyid.aspx</link>
            <description>&lt;div&gt; &lt;/div&gt;
&lt;div&gt;在博客园看到某篇&lt;span style="font-size: 14px"&gt;&lt;a href="http://www.cnblogs.com/fengfan/archive/2010/06/09/1754463.html" target="_blank"&gt;&lt;span style="font-size: 14px"&gt;焦点图切换效果&lt;/span&gt;&lt;/a&gt;觉得不错，便下来看看，发现它的&lt;font face="Times New Roman"&gt;JavaScript&lt;/font&gt;有&lt;font face="Times New Roman"&gt;$&lt;/font&gt;符号，还以为引用了prototype和jquery等框架，但发现并没有。原来它是这样：&lt;br /&gt;
&lt;br /&gt;
&lt;font style="color: #ff0000" face="Times New Roman"&gt;function $(id){return document.getElementById(id);&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;来实现&lt;font size="3" face="Times New Roman"&gt;$代替document.getElementById的效果，虽然简单，但对于没有引用了prototype和jquery等框架的，避免了每次写&lt;font size="3" face="Times New Roman"&gt;document.getElementById&lt;/font&gt;，只需在一个公共&lt;font face="Times New Roman"&gt;JavaScript文件定义后便可处处使用了。&lt;/font&gt;自己以前没有想到，看来经验不足啊！&lt;/font&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;p&gt;&lt;font size="3" face="Times New Roman"&gt; &lt;font size="3" face="Times New Roman"&gt;&lt;font size="3" face="Times New Roman"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;img src="http://blog.rongzhiwang.com/baicaps/aggbug/149.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>baicaps</dc:creator>
            <guid>http://blog.rongzhiwang.com/baicaps/archive/2010/06/10/javascriptdocument.getelementbyid.aspx</guid>
            <pubDate>Thu, 10 Jun 2010 01:50:58 GMT</pubDate>
            <wfw:comment>http://blog.rongzhiwang.com/baicaps/comments/149.aspx</wfw:comment>
            <comments>http://blog.rongzhiwang.com/baicaps/archive/2010/06/10/javascriptdocument.getelementbyid.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blog.rongzhiwang.com/baicaps/comments/commentRss/149.aspx</wfw:commentRss>
            <trackback:ping>http://blog.rongzhiwang.com/baicaps/services/trackbacks/149.aspx</trackback:ping>
        </item>
        <item>
            <title>Firefox必备的24款web开发插件</title>
            <category>DIV+CSS</category>
            <link>http://blog.rongzhiwang.com/baicaps/archive/2010/03/05/firefox24web.aspx</link>
            <description>&lt;strong&gt;开发工具&lt;/strong&gt;
&lt;p&gt;&lt;strong&gt;　　Web Developer 1.1.8&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/60" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/60&lt;/a&gt;&lt;br /&gt;
　　 以工具栏的形式对网页的(X)HTML、脚本、多媒体、CSS、缓存、图象等多方面的实用工具。使我们能轻易的获得网页的更多信息，使我们进一步的了解当前所浏览的网页。&lt;br /&gt;
　　说明：超强的web分析工具，开发人员必装。&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;Firebug 1.5.0&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1843" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/1843&lt;/a&gt;&lt;br /&gt;
　 　Firebug是firefox下的一个插件,能够调试所有网站语言,如Html,Css等，但FireBug最吸引我的就是javascript调试 功能，使用起来非常方便，而且在各种浏览器下都能使用（IE,Firefox,Opera, Safari），简直难以置信。除此之外，其他功能还很强大。比如html,css,dom的察看与调试，网站整体分析等等。总之就是一整套完整而强大的 WEB开发工具。&lt;br /&gt;
　　说明：查看，编辑，Debug页面的CSS,HTML,JavaScript。超强的开发调试的工具，开发人员必装。&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;LinrLightWeb 0.2.1&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1843" target="_blank"&gt;https://addons.mozilla.org/zh-CN/firefox/addon/14068&lt;/a&gt;&lt;br /&gt;
　　F*安装前，请确认您已安装Firebug插件，获取Firebug请访问:http://getfirebug.com/&lt;br /&gt;
　　1. 开启网页编辑模式，随意编辑网页——Fiddler的好搭档;&lt;br /&gt;
　　2. 超强Selector，查找操作标记;&lt;br /&gt;
　　3. 刷新CSS，无需刷新整页;&lt;br /&gt;
　　4. 快速设置CSS Sprites背景，&lt;a title="鼠标" href="http://product.it168.com/list/b/0220_1.shtml" target="_blank"&gt;鼠标&lt;/a&gt;拖移即可得到位置;&lt;br /&gt;
　　5. 保持登录状态，Session不过期;禁用&lt;br /&gt;
　　6. 同步发行IE版，Chrome版。&lt;br /&gt;
　　说明：非常强的web开发工具。&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;View Source Char 2.7&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/655" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/655&lt;/a&gt;&lt;br /&gt;
　　画一个 Color-Coded 的图表的 Web 页的源代码。&lt;br /&gt;
　　说明：显示非常好看的源码, 分级缩进, 不同颜色区分。&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;Tamper Data 11.0.0&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/966" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/966&lt;/a&gt;&lt;br /&gt;
　 　Tamper Data 的真实含义，即“篡改数据”（或者说定制 HTTP 请求）：截取浏览器发出的每一个 HTTP 请求，提示我们选择是要进行定制，还是不做定制而直接提交请求，还是终止当前被截取的请求，然后根据我们的选择决定是打开定制窗口，还是直接向 WEB &lt;a title="服务器" href="http://server.it168.com/" target="_blank"&gt;服务器&lt;/a&gt;提交请求，还是终止当前的请求。&lt;br /&gt;
　　说明：查看 firefox 收发请求的 header, 特别是在发出请求前, 可以修改 header。&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;JavaScript Debuger 0.9.87.4&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/216" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/216&lt;/a&gt;&lt;br /&gt;
　　Venkman 作为Mozilla的调试器，是针对Mozilla(Firefox)的自由工具&lt;br /&gt;
　　说明：firefox 环境下的 JavaScript Debugger, 强大的脚本调试工具。&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;Live Http Headers 0.15&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/3829" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/3829&lt;/a&gt;&lt;br /&gt;
　　可以用来实时监测发起的http请求和响应，也可以修改请求参数之后重新发起请求。&lt;br /&gt;
　　说明：浏览页面同时记录所有 HTTP headers 。&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;Add N Edit Cookies 0.2.1.3&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/573" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/573&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;　　查看和修改本地的Cookie，Cookie欺骗必备。&lt;br /&gt;
　　说明：查看并且修改 cookies, 不方便的地方是显示所有浏览器的 cookies 而不仅是当前页。&lt;/p&gt;
&lt;p&gt;　   &lt;strong&gt;XPath Checker 0.4.1&lt;/strong&gt;
&lt;/p&gt;&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1095" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/1095&lt;/a&gt;&lt;br /&gt;
　　这个工具没什么好多说的，就是安装后可以直接用，在网上看了使用方法，开始没看明白，后来才知道是在页面上点&lt;a title="鼠标" href="http://product.it168.com/list/b/0220_1.shtml" target="_blank"&gt;鼠标&lt;/a&gt;右键，下面有个view xpath,点击就可以了。&lt;br /&gt;
　　说明：据说可以调试 XPath。&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;YSlow 2.0.6&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1095" target="_blank"&gt;https://addons.mozilla.org/zh-cn/firefox/addon/5369&lt;/a&gt;&lt;br /&gt;
　　YSlow分析网页,并提出如何提高其性能的基础上一套规则,高性能的网页。&lt;br /&gt;
　　说明：能够帮我们分析web页面比较慢的原因，它是基于Firebug的，也能分开浏览web页面的元素，比如js,css.&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;HTML验证&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;HTML Validator(based on CSE HTML Validator)1.2.3&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/887" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/887&lt;/a&gt;&lt;br /&gt;
　　HTML Validator是一个Firefox扩展，它能查找并标志出HTML页面上的错误。HTML Validator以Tidy为基础，Tidy最初是W3C为验证HTML代码开发的一个工具。&lt;br /&gt;
　　说明：著名的 CSE HTML Validator 引擎。&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;Relaxed the HTML Validator 0.9.5&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/3939" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/3939&lt;/a&gt;&lt;br /&gt;
　　Relaxed the HTML Validator 0.9.5 这是一个做html验证的小插件，可以很容易的检测出页面的错误的html代码。&lt;br /&gt;
　　说明：直接在当前页面上进行 HTML validation, 界面清晰直观。&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;Total Validator 6.2.0&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/2318" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/2318&lt;/a&gt;&lt;br /&gt;
　　这&lt;a title="软件" href="http://software.it168.com/" target="_blank"&gt;软件&lt;/a&gt;帮助你检查你的网页是否符合标准,结果将帮助你迅速地解决问题。 &lt;br /&gt;
　　说明：把当前页面在 http://www.totalvalidator.com 做HTML Validation,输出结果用红字进行了语法修正, 比较友好。不过由于通过其他网站验证, 速度有点慢, 并且结果不易保存。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;　　页面设计&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;　　MeasureIt 0.3.92&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/539" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/539&lt;/a&gt;&lt;br /&gt;
　　通过可以绘制在页面任何地方的刻度尺来显示以像素(px)计算的宽度、高度、元素缩进量。&lt;br /&gt;
　　说明：可以测量页面上任何选择区域的长宽, 对界面设计人员非常有帮助。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;　　ColorZilla 2.0.2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/271" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/271&lt;/a&gt;&lt;br /&gt;
　　利用ColorZilla 您可以从浏览器中的任一点读取色彩值，快速调节颜色并粘贴到其他应用程序。您可以缩放正在查看的页面或测量页面任意两点之间的距离。&lt;br /&gt;
　　说明：从页面, 或者调色板上取色, 同时可以缩放页面。&lt;/p&gt;
&lt;p&gt;　&lt;strong&gt;　SEO广告&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;　　RankQuest SEO Toolbar 3.9.2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1471" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/1471&lt;/a&gt;&lt;br /&gt;
　　检查网站在搜索引擎和alexa的状态&lt;br /&gt;
　　说明：SEO 工具插件, 访问一个页面时, 显示此页面的各种排名及 SEO 信息。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;     Adsense Preview 1.5&lt;/strong&gt;
&lt;/p&gt;&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/2132" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/2132&lt;/a&gt;&lt;br /&gt;
　　将谷歌广告放到你的网页上&lt;br /&gt;
　　说明：在当前页面上显示 Google ADs 帮助确定广告位置。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;　　其他工具&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;　　HackBar 1.4.2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/3899" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/3899&lt;/a&gt;&lt;br /&gt;
　　包含一些常用的工具。(SQL injection,XSS,加密等) &lt;br /&gt;
　　说明：快速对字符串进行各种编码的工具, MD5, Base64, URLencode, URLDecode。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;　　Document Map 0.6.1&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/475" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/475&lt;/a&gt;&lt;br /&gt;
　　显示当前页的标题结构中侧栏让之间快速导航...&lt;br /&gt;
　　说明：提供页面资源结构信息.。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;　　IE View Lite 1.3.5&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1429" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/1429&lt;/a&gt;&lt;br /&gt;
　　IE View 简装版，将选项集成到了右键关联菜单中，同时增加了一个工具栏按钮。&lt;br /&gt;
　　说明：点右键可以选择在 IE 中打开页面, 有助于跨浏览器调试。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;　　TimeStamp Converter 2.0.0&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/2063" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/2063&lt;/a&gt;&lt;br /&gt;
　　将转换日期和 timestamps.Context 菜单选项将所选的时间戳转换为日期。&lt;br /&gt;
　　说明：除去从上下文中转换, 还可以手动将 timestamp 时间戳与 date/time 转换。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;　　TimestampDecode 0.1.8&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/3208" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/3208&lt;/a&gt;&lt;br /&gt;
　　将所选的编号视为一个时间戳并显示一个已解码的日期/时间。&lt;br /&gt;
　　说明：将选中的数字作为 timestamp 时间戳转换为 date/time。&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;Fire Encrypter 4.0&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/2063" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/2063&lt;/a&gt;&lt;br /&gt;
　　说明：将文字加密成各种算法的密文, 甚至包括摩尔斯码。&lt;/p&gt;
&lt;p&gt;　&lt;strong&gt;　Add-in-one Sidebar&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1027" target="_blank"&gt;https://addons.mozilla.org/en-US/firefox/addon/1027&lt;/a&gt;&lt;br /&gt;
　　全方位多功能侧边栏。&lt;br /&gt;
　　说明：在浏览器左侧增加打开书签, 历史, 插件等的工具条。&lt;/p&gt;
 原文： &lt;font size="3" face="Times New Roman"&gt;http://www.cnblogs.com/zhaozhan/archive/2010/02/19/1669426.html&lt;/font&gt;&lt;img src="http://blog.rongzhiwang.com/baicaps/aggbug/137.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>baicaps</dc:creator>
            <guid>http://blog.rongzhiwang.com/baicaps/archive/2010/03/05/firefox24web.aspx</guid>
            <pubDate>Fri, 05 Mar 2010 11:45:52 GMT</pubDate>
            <wfw:comment>http://blog.rongzhiwang.com/baicaps/comments/137.aspx</wfw:comment>
            <comments>http://blog.rongzhiwang.com/baicaps/archive/2010/03/05/firefox24web.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.rongzhiwang.com/baicaps/comments/commentRss/137.aspx</wfw:commentRss>
            <trackback:ping>http://blog.rongzhiwang.com/baicaps/services/trackbacks/137.aspx</trackback:ping>
        </item>
        <item>
            <title>实例讲解符合中国特色的和网络现状的实用CSS Hack</title>
            <category>DIV+CSS</category>
            <link>http://blog.rongzhiwang.com/baicaps/archive/2010/02/28/css-hack.aspx</link>
            <description>首先解释一下标题的定语：
&lt;ul&gt;
    &lt;li&gt;&lt;span style="color: red"&gt;实例讲解的：&lt;/span&gt;文章中会出现可以运行并可立即看到结果的实例代码。
    &lt;/li&gt;&lt;li&gt;&lt;span style="color: red"&gt;符合中国特色的：&lt;/span&gt;中国网民使用最多的浏览器是IE和FireFox。所以这些CssHack主要是为了解决这2种浏览器的兼容问题。中国电脑用户的操作系统主要是Windows，所以这些CssHack主要针对Windows操作系统浏览器，并不包含Mac等。
    &lt;/li&gt;&lt;li&gt;&lt;span style="color: red"&gt;符合网络现状的：&lt;/span&gt;现在网民中最多使用的浏览器是IE6（或者IE6内核的浏览器），其次是IE7（或者IE7内核的浏览器），再次是FireFox。所以这些CssHack主要是为了解决这3种浏览器的兼容问题。
    &lt;/li&gt;&lt;li&gt;&lt;span style="color: red"&gt;实用的：&lt;/span&gt;这些CssHack都是比较简单而且有效的。 &lt;/li&gt;
&lt;/ul&gt;
多说两句：
&lt;ol&gt;
    &lt;li&gt;首先应该明确的是：尽量不要使用css hack，因为它的向后兼容是未知的。
    &lt;/li&gt;&lt;li&gt;基于现在中国互联网的现状,这里主要对IE6，IE7和FF的最常用且实用的css Hack进行了介绍，但是并不表示css只有这些。（比较完整请访问:&lt;a title="CSS hack浏览器兼容一览表" href="http://www.cnblogs.com/JustinYoung/articles/891782.html" target="_blank"&gt;CSS hack浏览器兼容一览表&lt;/a&gt; ）
    &lt;/li&gt;&lt;li&gt;有些其实已经不是css hack了，而是css的一些新的选择器，例如"#div1&amp;gt;#div2"和"#div1:first-child",对于这样的选择器一般可以放心的使用，因为有较好的向后兼容性。 &lt;/li&gt;
&lt;/ol&gt;
&lt;span style="color: red"&gt;正文&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: green; font-weight: bold"&gt;下面的CssHack在这些浏览器中有效:&lt;/span&gt;&lt;img class="chimg" alt="css hack for FireFox" src="http://images.cnblogs.com/cnblogs_com/justinyoung/2007/logo_FF_s.gif" /&gt; &lt;img class="chimg" alt="css hack for IE7" src="http://images.cnblogs.com/cnblogs_com/justinyoung/2007/logo_IE7_s.gif" /&gt; &lt;img class="chimg" alt="css hack for OP" src="http://images.cnblogs.com/cnblogs_com/justinyoung/2007/logo_OP_s.gif" /&gt;&lt;br /&gt;
&lt;span style="color: mediumvioletred; font-weight: bold"&gt;下面的CssHack在这些浏览器中无效:&lt;/span&gt;&lt;img class="chimg" alt="css hack for IE6" src="http://images.cnblogs.com/cnblogs_com/justinyoung/2007/logo_IE6_s.gif" /&gt;&lt;br /&gt;
&lt;div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; padding-left: 4px; width: 98%; padding-right: 5px; background: url(http://images.cnblogs.com/cnblogs_com/justinyoung/2007/chBG.gif) #eeeeee no-repeat right 50%; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"&gt;&lt;span style="color: #800000"&gt;#div1:first-child&lt;/span&gt;&lt;span style="color: #000000"&gt;{&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;
    color&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #0000ff"&gt;red&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: #000000"&gt;}&lt;/span&gt;&lt;span style="color: #800000"&gt;&lt;br /&gt;
&lt;br /&gt;
#div1&amp;gt;#div2&lt;/span&gt;&lt;span style="color: #000000"&gt;{&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;
    font-size&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #0000ff"&gt;200%&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: #000000"&gt;}&lt;/span&gt;&lt;span style="color: #800000"&gt;&lt;br /&gt;
&lt;br /&gt;
html[xmlns] #div2&lt;/span&gt;&lt;span style="color: #000000"&gt;{&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;
    text-decoration&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #0000ff"&gt;underline&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: #000000"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style="color: green; font-weight: bold"&gt;下面的CssHack在这些浏览器中有效:&lt;/span&gt;&lt;img class="chimg" alt="css hack for IE6" src="http://images.cnblogs.com/cnblogs_com/justinyoung/2007/logo_IE6_s.gif" /&gt; &lt;img class="chimg" alt="css hack for IE7" src="http://images.cnblogs.com/cnblogs_com/justinyoung/2007/logo_IE7_s.gif" /&gt; &lt;br /&gt;
&lt;span style="color: mediumvioletred; font-weight: bold"&gt;下面的CssHack在这些浏览器中无效:&lt;/span&gt;&lt;img class="chimg" alt="css hack for FireFox" src="http://images.cnblogs.com/cnblogs_com/justinyoung/2007/logo_FF_s.gif" /&gt; &lt;img class="chimg" alt="css hack for OP" src="http://images.cnblogs.com/cnblogs_com/justinyoung/2007/logo_OP_s.gif" /&gt;&lt;br /&gt;
&lt;div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"&gt;&lt;span style="color: #800000"&gt;#div2&lt;/span&gt;&lt;span style="color: #000000"&gt;{&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;
    *border&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #0000ff"&gt;2px solid red&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: #000000"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style="color: green; font-weight: bold"&gt;下面的CssHack在这些浏览器中有效:&lt;/span&gt;&lt;img class="chimg" alt="css hack for IE6" src="http://images.cnblogs.com/cnblogs_com/justinyoung/2007/logo_IE6_s.gif" /&gt;&lt;br /&gt;
&lt;span style="color: mediumvioletred; font-weight: bold"&gt;下面的CssHack在这些浏览器中无效:&lt;/span&gt;&lt;img class="chimg" alt="css hack for IE7" src="http://images.cnblogs.com/cnblogs_com/justinyoung/2007/logo_IE7_s.gif" /&gt; &lt;img class="chimg" alt="css hack for FireFox" src="http://images.cnblogs.com/cnblogs_com/justinyoung/2007/logo_FF_s.gif" /&gt;&lt;br /&gt;
&lt;div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; padding-left: 4px; width: 98%; padding-right: 5px; background: url(http://images.cnblogs.com/cnblogs_com/justinyoung/2007/chBG.gif) #eeeeee no-repeat right 50%; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"&gt;&lt;span style="color: #800000"&gt;#div2&lt;/span&gt;&lt;span style="color: #000000"&gt;{&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;
    _width&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #0000ff"&gt;100px&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: #000000"&gt;}&lt;/span&gt;&lt;span style="color: #800000"&gt;&lt;br /&gt;
&lt;br /&gt;
* html #div2&lt;/span&gt;&lt;span style="color: #000000"&gt;{&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;
    height&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #0000ff"&gt;100px&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: #000000"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style="color: green; font-weight: bold"&gt;下面的CssHack在这些浏览器中有效:&lt;/span&gt;&lt;img class="chimg" alt="css hack for IE7" src="http://images.cnblogs.com/cnblogs_com/justinyoung/2007/logo_IE7_s.gif" /&gt; &lt;br /&gt;
&lt;span style="color: mediumvioletred; font-weight: bold"&gt;下面的CssHack在这些浏览器中无效:&lt;/span&gt;&lt;img class="chimg" alt="css hack for IE6" src="http://images.cnblogs.com/cnblogs_com/justinyoung/2007/logo_IE6_s.gif" /&gt; &lt;img class="chimg" alt="css hack for FireFox" src="http://images.cnblogs.com/cnblogs_com/justinyoung/2007/logo_FF_s.gif" /&gt;&lt;br /&gt;
&lt;div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"&gt;&lt;span style="color: #800000"&gt;*+html #div2&lt;/span&gt;&lt;span style="color: #000000"&gt;{&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;
    background-color&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #0000ff"&gt;yellow&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: #000000"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
下面是完整的代码，你可以在不同的浏览器下浏览以便查看效果。&lt;br /&gt;
&lt;div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; padding-left: 4px; width: 98%; padding-right: 5px; background: url(http://images.cnblogs.com/cnblogs_com/justinyoung/2007/chBG.gif) #eeeeee no-repeat right top; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color: #ff00ff"&gt;doctype html public "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;html &lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
    &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;meta &lt;/span&gt;&lt;span style="color: #ff0000"&gt;http-equiv&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Content-Type"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; content&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="text/html; charset=utf-8"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
    &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;meta &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Keywords"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; content&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="YES!B/S!"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
    &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;meta &lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Description"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; content&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="This page is from http://Justinyoung.cnblogs.com"&lt;/span&gt;&lt;span style="color: #ff0000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
    &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;CSS/Javascript demo&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
    &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;style &lt;/span&gt;&lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="text/css"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;&lt;br /&gt;
        *&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;{&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
            font-size&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;:&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff"&gt;medium&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
            margin&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;:&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff"&gt;2px&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
            padding&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;:&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff"&gt;2px&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;}&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000"&gt;/*&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000"&gt;&lt;br /&gt;
        valid    :    FF    IE7 OP8&lt;br /&gt;
        invalid    :    IE6&lt;br /&gt;
        &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000"&gt;*/&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;&lt;br /&gt;
        #div1:first-child&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;{&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
            color&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;:&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff"&gt;red&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;}&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;&lt;br /&gt;
        #div1&amp;gt;#div2&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;{&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
            font-size&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;:&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff"&gt;200%&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;}&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;&lt;br /&gt;
        html[xmlns] #div2&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;{&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
            text-decoration&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;:&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff"&gt;underline&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;}&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000"&gt;/*&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000"&gt;&lt;br /&gt;
        valid    :    IE6    IE7&lt;br /&gt;
        invalid    :    FF    OP8&lt;br /&gt;
        &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000"&gt;*/&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;&lt;br /&gt;
        #div2&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;{&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
            *border&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;:&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff"&gt;2px solid red&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;}&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;&lt;br /&gt;
        &lt;br /&gt;
        &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000"&gt;/*&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000"&gt;&lt;br /&gt;
        valid    :    IE6&lt;br /&gt;
        invalid    :    FF    IE7&lt;br /&gt;
        &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000"&gt;*/&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;&lt;br /&gt;
        #div2&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;{&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
            _width&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;:&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff"&gt;100px&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;}&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;&lt;br /&gt;
        * html #div2&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;{&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
            height&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;:&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff"&gt;100px&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;}&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000"&gt;/*&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000"&gt;&lt;br /&gt;
        valid    :    IE7&lt;br /&gt;
        invalid    :    FF    IE6&lt;br /&gt;
        &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000"&gt;*/&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;&lt;br /&gt;
        *+html #div2&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;{&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
            background-color&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;:&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff"&gt;yellow&lt;br /&gt;
        &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;}&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000"&gt;/*&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000"&gt;Test Min-height&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000"&gt;*/&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;&lt;br /&gt;
        #div3&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;{&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
            border&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;:&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff"&gt;1px dotted green&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
            width&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;:&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff"&gt;100px&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
            &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000"&gt;/*&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000"&gt;min-height is valid in FF and IE7.&lt;br /&gt;
              it's very important for kill "auto height" problem&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #008000"&gt;*/&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
            min-height&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;:&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff"&gt;100px&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
            height&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;:&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #0000ff"&gt;50px&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;;&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #ff0000"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #000000"&gt;}&lt;/span&gt;&lt;span style="background-color: #f5f5f5; color: #800000"&gt;&lt;br /&gt;
    &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;style&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;div &lt;/span&gt;&lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="div1"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
    &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;div &lt;/span&gt;&lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="div2"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
     i'm test text.&lt;br /&gt;
    &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
    &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;div &lt;/span&gt;&lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="div3"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
        test min-height!&lt;br /&gt;
    &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
    &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;p&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
        首先应该明确的是：尽量不要使用css hack，因为它的向前兼容是未知的。&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;br&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
        基于现在中国互联网的现状,这里主要对IE6，IE7和FF的最常用且实用的css Hack进行了介绍，但是并不表示css只有这些。&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;br&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
        有些其实已经不是css hack了，而是css的一些新的选择器，例如"#div1&amp;gt;#div2"和"#div1:first-child",对于这样的选择器一般可以放心的使用，因为有较好的向后兼容性。&lt;br /&gt;
    &lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;p&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;html&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;三种浏览器的最终效果图：&lt;br /&gt;
&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/justinyoung/2007/cssHacksShow.gif" width="529" height="301" /&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;原文地址&lt;font size="3" face="Times New Roman"&gt;&lt;a href="http://www.cnblogs.com/justinyoung/articles/892414.html" target="_blank"&gt;http://www.cnblogs.com/justinyoung/articles/892414.html&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;
&lt;img src="http://blog.rongzhiwang.com/baicaps/aggbug/133.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>baicaps</dc:creator>
            <guid>http://blog.rongzhiwang.com/baicaps/archive/2010/02/28/css-hack.aspx</guid>
            <pubDate>Sun, 28 Feb 2010 10:43:44 GMT</pubDate>
            <comments>http://blog.rongzhiwang.com/baicaps/archive/2010/02/28/css-hack.aspx#feedback</comments>
            <wfw:commentRss>http://blog.rongzhiwang.com/baicaps/comments/commentRss/133.aspx</wfw:commentRss>
            <trackback:ping>http://blog.rongzhiwang.com/baicaps/services/trackbacks/133.aspx</trackback:ping>
        </item>
        <item>
            <title>09年最受关注的十大Visual Studio插件</title>
            <category>.NET</category>
            <link>http://blog.rongzhiwang.com/baicaps/archive/2010/02/26/09visual-studio.aspx</link>
            <description>&lt;div&gt;      1. AnkhSVN - Subversion SCC Provider&lt;/div&gt;
&lt;div&gt;       &lt;a href="http://ankhsvn.open.collab.net/"&gt;http://ankhsvn.open.collab.net/&lt;/a&gt; &lt;/div&gt;
&lt;p&gt;　　AnkhSVN是一个VS的Subversion 源代码管理提供者。通过这个插件,你可以方便的在Visual Studio中使用Subversion管理你的项目和代码。这个项目保持着相当的活跃性。在本文发表时最新的版本是2.1.7444。强烈推荐开发者使用，尤其是你将你的项目托管到google code或者sourceforge上，你可以使用这个插件连接你的项目。&lt;/p&gt;
&lt;p style="text-align: center"&gt;　　&lt;img style="width: 326px; height: 343px" alt="" src="http://image4.it168.com/2009/12/16/01fd5b51-eb90-45ec-ace0-ce9187082bfe.jpg" width="326" height="343" /&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;2. MetalScroll&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　   &lt;a href="http://code.google.com/p/metalscroll/"&gt;http://code.google.com/p/metalscroll/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;　　MetalScroll是RockScroll插件的替代者。它用一个代码缩略图替换代码编辑器的滚动条。&lt;/p&gt;
&lt;p style="text-align: center" id="img1403348"&gt;&lt;img style="width: 419px; height: 360px" alt="" src="http://image4.it168.com/2009/12/16/0e9c4b3c-6fb9-4848-a83c-b7a6b2ee0250.jpg" width="419" height="360" /&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;3. Source Code Outliner Power Toy&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="http://www.codeplex.com/SourceCodeOutliner"&gt;http://www.codeplex.com/SourceCodeOutliner&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;　　是另外一个方便查看代码大纲的插件。如果使用Eclipse进行Java项目的开发，你可能习惯了Eclipse大纲显示的便捷性。这个插件实现了此特别有用的功能，它可以在一个窗口内显示类的成员信息，方便开发者查看和导航。&lt;/p&gt;
&lt;p style="text-align: center" id="img7849383"&gt;&lt;img style="width: 439px; height: 348px" alt="" src="http://image4.it168.com/2009/12/16/707c674c-1538-4386-87f9-74d66d7b5f27.jpg" width="439" height="348" /&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;4. GhostDoc&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="http://submain.com/products/ghostdoc.aspx"&gt;http://submain.com/products/ghostdoc.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;　　GhostDoc是一个免费的文档自动生成插件。它可以根据方法和方法的类型信息和参数自动生成XML注释信息。&lt;/p&gt;
&lt;p style="text-align: center" id="img9128054"&gt;&lt;img style="width: 429px; height: 131px" alt="" src="http://image4.it168.com/2009/12/16/311533bc-584e-40c3-a301-3fcdd9161435.jpg" width="429" height="131" /&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;5. Copy As HTML&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="http://www.lavernockenterprises.co.uk/downloads/copyashtml/copyashtml.aspx"&gt;http://www.lavernockenterprises.co.uk/downloads/copyashtml/copyashtml.aspx&lt;/a&gt;&lt;/p&gt;
&lt;div style="text-align: center" id="img7538246"&gt;&lt;img alt="" src="http://image4.it168.com/2009/12/16/7834cb5a-b557-4e90-ae1b-49492d0311e4.jpg" width="205" height="374" /&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;       6. VsVim&lt;/strong&gt;
&lt;p&gt;　　&lt;a href="http://blogs.msdn.com/jaredpar/archive/2009/09/09/vim-emulator-editor-extension-released.aspx"&gt;http://blogs.msdn.com/jaredpar/archive/2009/09/09/vim-emulator-editor-extension-released.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;　　你是一个VIM的狂热分子吗?&lt;a class="nounderline" title="网络" href="http://net.it168.com/" target="_blank"&gt;网络&lt;/a&gt;不乏这些忠实的信众，如迷春哥狂热的坚持使用vim做自己的开发。这个插件为VS提供了一个VIM模拟器。你可以使用”VIM”编辑你的代码。&lt;/p&gt;
&lt;p style="text-align: center" id="img6455618"&gt;&lt;img alt="" src="http://image4.it168.com/2009/12/16/1ae01449-7f26-41f2-b170-7bec3f7d354b.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;7. VS 2008 File Finder&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="http://www.huffs.us/blogEngine/page/VS-2008-File-Finder.aspx"&gt;http://www.huffs.us/blogEngine/page/VS-2008-File-Finder.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;　　在一个包含N个project的解决方案中查找一个文件时，使用这个插件相当有用。它提供一个窗口，可以快速的找到项目中的某个文件。类似Eclipse的Ctrl+Shift+R快捷键。&lt;/p&gt;
&lt;p style="text-align: center" id="img1369002"&gt;&lt;img style="width: 357px; height: 339px" alt="" src="http://image4.it168.com/2009/12/16/097fd18c-7441-4c25-8b13-27a0bf6fe30c.jpg" width="357" height="339" /&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;8. PowerCommands for Visual Studio 2008&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=PowerCommands&amp;amp;ReleaseId=559"&gt;http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=PowerCommands&amp;amp;ReleaseId=559&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;　　为VS提供了一堆的命令扩展。&lt;/p&gt;
&lt;p style="text-align: center" id="img6533921"&gt;&lt;img style="width: 267px; height: 273px" alt="" src="http://image4.it168.com/2009/12/16/2987c5c8-44c1-4bbd-aeae-99ded59a39f7.jpg" width="267" height="273" /&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;9. TracExplorer&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="http://tracexplorer.devjavu.com/"&gt;http://tracexplorer.devjavu.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="https://groups.google.com/group/tracexplorer?pli=1"&gt;https://groups.google.com/group/tracexplorer?pli=1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;　　tracexplorer是一个Trac客户端。你可以在VS中浏览和管理Trac中的ticket。&lt;/p&gt;
&lt;p style="text-align: center" id="img9723950"&gt;&lt;img alt="" src="http://image4.it168.com/2009/12/16/96598dce-b4fe-4e7a-9ea5-188b579aa28a.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;strong&gt;10. Clone Detective for Visual Studio&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;　　&lt;a href="http://clonedetectivevs.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=16114"&gt;http://clonedetectivevs.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=16114&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;　　此插件可以分析项目中的代码，找到那些重复的代码。重复的代码不但冗余，而且一旦修改业务逻辑，多处代码也不好维护一致性。&lt;br /&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;img src="http://blog.rongzhiwang.com/baicaps/aggbug/131.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>baicaps</dc:creator>
            <guid>http://blog.rongzhiwang.com/baicaps/archive/2010/02/26/09visual-studio.aspx</guid>
            <pubDate>Fri, 26 Feb 2010 10:57:16 GMT</pubDate>
            <wfw:comment>http://blog.rongzhiwang.com/baicaps/comments/131.aspx</wfw:comment>
            <comments>http://blog.rongzhiwang.com/baicaps/archive/2010/02/26/09visual-studio.aspx#feedback</comments>
            <wfw:commentRss>http://blog.rongzhiwang.com/baicaps/comments/commentRss/131.aspx</wfw:commentRss>
            <trackback:ping>http://blog.rongzhiwang.com/baicaps/services/trackbacks/131.aspx</trackback:ping>
        </item>
        <item>
            <title>未来五年程序员应当具备的十项技能</title>
            <category>程序员生活</category>
            <link>http://blog.rongzhiwang.com/baicaps/archive/2009/09/16/70.aspx</link>
            <description>&lt;p&gt;作为一名程序员，如果你想在这个领域内继续向前进步或者在当前的经济形势下保持不被炒鱿鱼，那么你就决不应当自满自足，你需要继续学习。近日，著名 IT评论员Justin James在他的博客中列出了未来五年程序员应当具备的十项技能，如果照此实践，你未来的工作前景一定一片光明。&lt;/p&gt;
&lt;p&gt;当前的经济形势下，很多程序员将目光聚焦在短期内的工作形式上，但是你仍然要抽出时间和精力学习新的技能。以下是作为程序员应当即刻学习的十项技能，以确保在未来五年内你的简历上有真材实料。当然这个名单很难做到详尽而没有遗漏，有些领域没有涉及到（比如大型机开发者）。然而，对于一般的主流开发而言，你至少要学会以下十条中的七条，而且掌握的程度不是那种你在工作面试上能够夸夸其谈，而是真正能够用于实际开发。&lt;/p&gt;
&lt;p&gt;1，三大主流开发体系之一(.NET, Java, PHP)&lt;/p&gt;
&lt;p&gt;除非软件开发领域发生巨大的变革（这机率好比行星撞击地球），不然程序员至少需要知道三大开发系统中（.NET (VB.NET or C#), Java, PHP）的一种。而且仅仅了解核心语言是不够的，因为现在的项目拥有越来越多的不同功能，这也迫使程序员对相关的框架和库了解得更深。&lt;/p&gt;
&lt;p&gt;2，富客户端应用（Rich Internet Applications）&lt;/p&gt;
&lt;p&gt;无论你对Flash是爱还是恨，我们都不得不承认在过去的几年里Flash的发展壮大已远不仅是应用于动画制作。Flash以及Flex和AIR都具备越来越多的功能。而Flash的竞争者，如JavaFX和Silverlight等也在不断提升自身的性能和表现。让富互联网应用更加活跃的是，HTML 5正整合进所有种类的RIA功能，包括数据库连接、将W3C置于AJAX上等。在不远的将来，作为一名RIA领域的专家无疑将给你的简历添上浓重的一笔。&lt;/p&gt;
&lt;p&gt;3，Web页面开发&lt;/p&gt;
&lt;p&gt;Web开发恐怕在未来的很长时间内都是主流技术之一。许多程序员往往满足于构建后台、或者只是专注于框架基础而忽略了Web。但是越来越多的企业需要如何在交互代码（hand code）级别处理Web技术的人员，所以掌握JavaScript、CSS和HTML必将在未来五年内的职场上无往不胜。&lt;/p&gt;
&lt;p&gt;4，Web服务端开发&lt;/p&gt;
&lt;p&gt;REST 还是SOAP? JSON 还是XML?当然选择答案得依据项目来定，但如果一名程序员不会创建Web服务（尽管这个程序员也许不用写Web应用），那么他在工作岗位上一定倍感艰难。因为即便是过去那些被ODBC, COM或者 RPC主宰的领域现在也转到了一些形式的Web服务上了。&lt;/p&gt;
&lt;p&gt;5，软性技能&lt;/p&gt;
&lt;p&gt;一段时间以来就有这样一种趋势即：无论在企业内部还是企业外部提高IT的能见度。程序员被越来越多地带去参加非开发性会议来提供技术支持。例如，没有IT升级系统，首席财务官不可能改变收支细则；没有IT升级CRM工作流，运营总监不可能改变一个中心呼叫进程。同样，客户经常直接与开发团队沟通以确保他们的需求被完成。是否每个程序员都应该回去学习礼仪课来与别人更好的交往呢？那倒不必，但是程序员的确要提高待人接物的软性能力，以在职场上获得更大的价值。&lt;/p&gt;
&lt;p&gt;6，一种动态或者函数式程序设计语言(Functional Programming Language)&lt;/p&gt;
&lt;p&gt;类如Ruby, Python, F#和Groovy等的语言虽然不完全主流，但是语言内部包含的思想却是开发界的主流。比如，微软.NET中的LINQ系统就是函数式程序设计语言的一个直接派生。得益于Rails框架和Silverlight的发展，Ruby和Python语言在一些领域变得很热门。学习这样一门语言不仅丰富了你的简历，而且会开阔你的开发视野。我所遇到的顶级开发者几乎都曾在演讲中提到学习一门动态语言或者函数式程序设计语言的重要性，就我的个人经历而言，这确实很有用。&lt;/p&gt;
&lt;p&gt;7，敏捷开发&lt;/p&gt;
&lt;p&gt;当敏捷开发第一次冲击主流的开发意识时，我跟许多开发者一样持怀疑的观点。因为它抛弃了控制、标准等，看起来是一种完全与传统方法相悖的开发方法。但随着时间的发展，敏捷背后的思想被定义的越来越好，应用得也越来越棒。许多开发或者采用敏捷，或者在敏捷开发的实验阶段。尽管敏捷不是失败项目的万灵药，但它确实在软件开发中有一席之地。那些对敏捷有很好的理解并且有应用经历的开发者必将在未来五年内成为抢手货。&lt;/p&gt;
&lt;p&gt;8，业务领域知识&lt;/p&gt;
&lt;p&gt;开发团队越来越被看做是项目的合作者，这意味着了解该领域的开发者将对该项目的贡献更大。有了敏捷，开发者可以说我们可以在这儿很简单地增加这个功能，而这将让我们的产品更具价值。或者这个要求不符合我们日志显示的常用类型。由于越来越多的程序员反对必须了解该领域内的所有问题（实际上也不可能做到），所以不可否认的是越来越多的企业希望开发者起码了解该领域内的基础知识，越多越好。&lt;/p&gt;
&lt;p&gt;9，质量控制&lt;/p&gt;
&lt;p&gt;几年前的时候，很多企业和产品没有bug跟踪系统、没有版本控制和其他类似的工具，所写出的代码和产品都只是跟程序员和他所用的IDE有关。幸而开发领域有了新的、集成的工具如Microsoft Visual Studio Team System，而且产品、代码高质量及可用性的透明度提高，开源环境等，现在没有这种工具的企业已经越来越少稀少。开发者除了知道如何源代码控制、如何使用VM系统构建测试环境之外，还要做更多的质量控制工作，并具备很好的清洁意识来确保他与他的团队协调一致。那些将代码处存在个人硬盘中，没有记录代码变更、任务目录等的开发者，不但在传统的开发环境中不受欢迎，在敏捷的开发环境中也不受欢迎。&lt;/p&gt;
&lt;p&gt;10，移动开发&lt;/p&gt;
&lt;p&gt;在上世纪90年代末，Web开发一跃成为主流并且将原来传统的桌面应用开发边缘化。在2008，移动开发大肆进入人们的视野，而且至少在五年内移动开发都将是开发领域的重中之重。当然移动开发的方式有很多种，但无论你选择哪一种都将令你成为未来的抢手货。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;本文来自CSDN博客：&lt;a href="http://blog.csdn.net/phphot/archive/2009/04/11/4065887.aspx"&gt;http://blog.csdn.net/phphot/archive/2009/04/11/4065887.aspx&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://blog.rongzhiwang.com/baicaps/aggbug/70.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>baicaps</dc:creator>
            <guid>http://blog.rongzhiwang.com/baicaps/archive/2009/09/16/70.aspx</guid>
            <pubDate>Wed, 16 Sep 2009 12:58:56 GMT</pubDate>
            <wfw:comment>http://blog.rongzhiwang.com/baicaps/comments/70.aspx</wfw:comment>
            <comments>http://blog.rongzhiwang.com/baicaps/archive/2009/09/16/70.aspx#feedback</comments>
            <wfw:commentRss>http://blog.rongzhiwang.com/baicaps/comments/commentRss/70.aspx</wfw:commentRss>
            <trackback:ping>http://blog.rongzhiwang.com/baicaps/services/trackbacks/70.aspx</trackback:ping>
        </item>
        <item>
            <title>全面的ASP.NET面试题目集锦（2） </title>
            <category>.NET</category>
            <link>http://blog.rongzhiwang.com/baicaps/archive/2009/09/04/asp.net2.aspx</link>
            <description>&lt;p&gt;51.数组有没有length()这个方法? String有没有length()这个方法？ &lt;br /&gt;
答：数组没有length()这个方法，有length的属性。String有有length()这个方法。&lt;/p&gt;
&lt;p&gt;52.sleep() 和 wait() 有什么区别? &lt;br /&gt;
答：sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后，线程不一定立即恢复执行。这是因为在那个时刻，其它线程可能正在运行而且没有被调度为放弃执行，除非(a)“醒来”的线程具有更高的优先级 &lt;br /&gt;
(b)正在运行的线程因为其它原因而阻塞。 &lt;br /&gt;
wait()是线程交互时，如果线程对一个同步对象x 发出一个wait()调用，该线程会暂停执行，被调对象进入等待状态，直到被唤醒或等待时间到。&lt;/p&gt;
&lt;p&gt;53.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?&lt;br /&gt;
答：short s1 = 1; s1 = s1 + 1;有错，s1是short型，s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。&lt;/p&gt;
&lt;p&gt;54.谈谈final, finally, finalize的区别。 &lt;br /&gt;
答： &lt;br /&gt;
final—修饰符（关键字）如果一个类被声明为final，意味着它不能再派生出新的子类，不能作为父类被继承。因此 一个类不能既被声明为 abstract的，又被声明为final的。将变量或方法声明为final，可以保证它们在使用中 不被改变。被声明为final的变量必须在声明时给定初值，而在以后的引用中只能读取，不可修改。被声明为 final的方法也同样只能使用，不能重载 &lt;br /&gt;
finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常，那么相匹配的 catch 子句就会 执行，然后控制就会进入 finally 块（如果有的话）。 &lt;br /&gt;
finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理 工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的 ，因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。&lt;/p&gt;
&lt;p&gt;55.如何处理几十万条并发数据？ &lt;br /&gt;
答：用存储过程或事务。取得最大标识的时候同时更新..注意主键不是自增量方式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过程来获取.&lt;/p&gt;
&lt;p&gt;56.Session有什么重大BUG，微软提出了什么方法加以解决？ &lt;br /&gt;
答：是iis中由于有进程回收机制，系统繁忙的话Session会丢失，可以用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢，而且无法捕获Session的END事件。&lt;/p&gt;
&lt;p&gt;57.进程和线程的区别？ &lt;br /&gt;
答：进程是系统进行资源分配和调度的单位；线程是CPU调度和分派的单位，一个进程可以有多个线程，这些线程共享这个进程的资源。&lt;/p&gt;
&lt;p&gt;58.堆和栈的区别？ &lt;br /&gt;
答： &lt;br /&gt;
栈：由编译器自动分配、释放。在函数体中定义的变量通常在栈上。 &lt;br /&gt;
堆：一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上。&lt;/p&gt;
&lt;p&gt;59.成员变量和成员函数前加static的作用？ &lt;br /&gt;
答：它们被称为常成员变量和常成员函数，又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量，类成员函数负责这种统计的动作。&lt;/p&gt;
&lt;p&gt;60.ASP。NET与ASP相比，主要有哪些进步？ &lt;br /&gt;
答：asp解释形，aspx编译型，性能提高，有利于保护源码。&lt;/p&gt;
&lt;p&gt;61.产生一个int数组，长度为100，并向其中随机插入1-100，并且不能重复。 &lt;br /&gt;
int[] intArr=new int[100]; &lt;br /&gt;
ArrayList myList=new ArrayList(); &lt;br /&gt;
Random rnd=new Random(); &lt;br /&gt;
while(myList.Count&amp;lt;100) &lt;br /&gt;
{ &lt;br /&gt;
int num=rnd.Next(1,101); &lt;br /&gt;
if(!myList.Contains(num)) &lt;br /&gt;
myList.Add(num);&lt;br /&gt;
} &lt;br /&gt;
for(int i=0;i&amp;lt;100;i++) &lt;br /&gt;
intArr[i]=(int)myList[i];&lt;/p&gt;
&lt;p&gt;62.请说明在.net中常用的几种页面间传递参数的方法，并说出他们的优缺点。 &lt;br /&gt;
答：session(viewstate) 简单，但易丢失 &lt;br /&gt;
application 全局 &lt;br /&gt;
cookie 简单，但可能不支持，可能被伪造 &lt;br /&gt;
input ttype="hidden" 简单，可能被伪造 &lt;br /&gt;
url参数 简单，显示于地址栏，长度有限 &lt;br /&gt;
数据库 稳定，安全，但性能相对弱&lt;/p&gt;
&lt;p&gt;63.请指出GAC的含义？ &lt;br /&gt;
答：全局程序集缓存。&lt;/p&gt;
&lt;p&gt;64.向服务器发送请求有几种方式？ &lt;br /&gt;
答：get,post。get一般为链接方式，post一般为按钮方式。&lt;/p&gt;
&lt;p&gt;65.DataReader与Dataset有什么区别？ &lt;br /&gt;
答：一个是只能向前的只读游标，一个是内存中的表。&lt;/p&gt;
&lt;p&gt;66.软件开发过程一般有几个阶段？每个阶段的作用？ &lt;br /&gt;
答：需求分析，架构设计，代码编写，QA，部署&lt;/p&gt;
&lt;p&gt;67.在c#中using和new这两个关键字有什么意义，请写出你所知道的意义？using 指令 和语句 new 创建实例 new 隐藏基类中方法。 &lt;br /&gt;
答：using 引入名称空间或者使用非托管资源 &lt;br /&gt;
new 新建实例或者隐藏父类方法&lt;/p&gt;
&lt;p&gt;68.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个. &lt;br /&gt;
答：string inputStr=" xx xx "; &lt;br /&gt;
inputStr=Regex.Replace(inputStr.Trim()," *"," ");&lt;/p&gt;
&lt;p&gt;69.下面这段代码输出什么？为什么？ &lt;br /&gt;
int i=5; &lt;br /&gt;
int j=5; &lt;br /&gt;
if (Object.ReferenceEquals(i,j)) &lt;br /&gt;
Console.WriteLine("Equal"); &lt;br /&gt;
else &lt;br /&gt;
Console.WriteLine("Not Equal"); &lt;br /&gt;
答：不相等，因为比较的是对象&lt;/p&gt;
&lt;p&gt;70.什么叫做SQL注入，如何防止？请举例说明。 &lt;br /&gt;
答：利用sql关键字对网站进行攻击。过滤关键字’等&lt;/p&gt;
&lt;p&gt;71.什么是反射？ &lt;br /&gt;
答：动态获取程序集信息&lt;/p&gt;
&lt;p&gt;72.用Singleton如何写设计模式 &lt;br /&gt;
答：static属性里面new ,构造函数private&lt;/p&gt;
&lt;p&gt;73.什么是Application Pool？ &lt;br /&gt;
答：Web应用，类似Thread Pool，提高并发性能。&lt;/p&gt;
&lt;p&gt;74.什么是虚函数？什么是抽象函数？ &lt;br /&gt;
答：虚函数：没有实现的，可由子类继承并重写的函数。抽象函数：规定其非虚子类必须实现的函数，必须被重写。&lt;/p&gt;
&lt;p&gt;75.什么是XML？ &lt;br /&gt;
答：XML即可扩展标记语言。eXtensible Markup Language.标记是指计算机所能理解的信息符号，通过此种标记，计算机之间可以处理包含各种信息的文章等。如何定义这些标记，即可以选择国际通用的标记语言，比如HTML，也可以使用象XML这样由相关人士自由决定的标记语言，这就是语言的可扩展性。XML是从SGML中简化修改出来的。它主要用到的有XML、XSL和XPath等。&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
 &lt;/p&gt;
&lt;p&gt;76.什么是Web Service？UDDI？ &lt;br /&gt;
答：Web Service便是基于网络的、分布式的模块化组件，它执行特定的任务，遵守具体的技术规范，这些规范使得Web Service能与其他兼容的组件进行互操作。 &lt;br /&gt;
　 UDDI 的目的是为电子商务建立标准；UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范，同时也包含一组使企业能将自身提供的Web Service注册，以使别的企业能够发现的访问协议的实现标准。&lt;br /&gt;
77.什么是ASP.net中的用户控件？ &lt;br /&gt;
答：用户控件一般用在内容多为静态,或者少许会改变的情况下..用的比较大..类似ASP中的include..但是功能要强大的多。&lt;/p&gt;
&lt;p&gt;78.列举一下你所了解的XML技术及其应用 &lt;br /&gt;
答：xml用于配置,用于保存静态数据类型.接触XML最多的是web Services..和config&lt;/p&gt;
&lt;p&gt;79.ADO.net中常用的对象有哪些？分别描述一下。 &lt;br /&gt;
答：Connection 数据库连接对象 &lt;br /&gt;
Command 数据库命令 &lt;br /&gt;
DataReader 数据读取器 &lt;br /&gt;
DataSet 数据集&lt;/p&gt;
&lt;p&gt;80.什么是code-Behind技术。 &lt;br /&gt;
答：ASPX,RESX和CS三个后缀的文件，这个就是代码分离.实现了HTML代码和服务器代码分离.方便代码编写和整理.&lt;/p&gt;
&lt;p&gt;81.什么是SOAP,有哪些应用。 &lt;br /&gt;
答：simple object access protocal,简单对象接受协议.以xml为基本编码结构,建立在已有通信协议上(如http,不过据说ms在搞最底层的架构在tcp/ip上的soap)的一种规范Web Service使用的协议..&lt;/p&gt;
&lt;p&gt;82.C#中 property 与 attribute的区别，他们各有什么用处，这种机制的好处在哪里？ &lt;br /&gt;
答：一个是属性，用于存取类的字段，一个是特性，用来标识类，方法等的附加性质&lt;/p&gt;
&lt;p&gt;83.XML 与 HTML 的主要区别 &lt;br /&gt;
答：1. XML是区分大小写字母的，HTML不区分。  &lt;br /&gt;
2. 在HTML中，如果上下文清楚地显示出段落或者列表键在何处结尾，那么你可以省略&lt;/p&gt;
&lt;p&gt;或者之类的结束 标记。在XML中，绝对不能省略掉结束标记。  &lt;br /&gt;
3. 在XML中，拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为结尾。这样分析器就知道不用 查找结束标记了。  &lt;br /&gt;
4. 在XML中，属性值必须分装在引号中。在HTML中，引号是可用可不用的。  &lt;br /&gt;
5. 在HTML中，可以拥有不带值的属性名。在XML中，所有的属性都必须带有相应的值。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;84.c#中的三元运算符是？ &lt;br /&gt;
答：？：。&lt;/p&gt;
&lt;p&gt;85.当整数a赋值给一个object对象时，整数a将会被？ &lt;br /&gt;
答：装箱。&lt;/p&gt;
&lt;p&gt;86.类成员有_____种可访问形式？ &lt;br /&gt;
答：this.;new Class().Method;&lt;/p&gt;
&lt;p&gt;87.public static const int A=1;这段代码有错误么？是什么？ &lt;br /&gt;
答：const不能用static修饰。&lt;/p&gt;
&lt;p&gt;88.float f=-123.567F; int i=(int)f;i的值现在是_____?  &lt;br /&gt;
答：-123。&lt;/p&gt;
&lt;p&gt;89.委托声明的关键字是______? &lt;br /&gt;
答：delegate.&lt;/p&gt;
&lt;p&gt;90.用sealed修饰的类有什么特点？ &lt;br /&gt;
答：密封，不能继承。&lt;/p&gt;
&lt;p&gt;91.在Asp.net中所有的自定义用户控件都必须继承自________? &lt;br /&gt;
答：Control。&lt;/p&gt;
&lt;p&gt;92.在.Net中所有可序列化的类都被标记为_____?  &lt;br /&gt;
答：[serializable]&lt;/p&gt;
&lt;p&gt;93.在.Net托管代码中我们不用担心内存漏洞，这是因为有了______? &lt;br /&gt;
答：GC。&lt;/p&gt;
&lt;p&gt;94.下面的代码中有什么错误吗？_______ &lt;br /&gt;
using System; &lt;br /&gt;
class A &lt;br /&gt;
{ &lt;br /&gt;
public virtual void F(){ &lt;br /&gt;
Console.WriteLine("A.F"); &lt;br /&gt;
} &lt;br /&gt;
} &lt;br /&gt;
abstract class B:A &lt;br /&gt;
{ &lt;br /&gt;
public abstract override void F(); 答：abstract override 是不可以一起修饰.  &lt;br /&gt;
} // new public abstract void F();&lt;/p&gt;
&lt;p&gt;95.当类T只声明了私有实例构造函数时，则在T的程序文本外部，___可以___（可以 or 不可以）从T派生出新的类，不可以____（可以 or 不可以）直接创建T的任何实例。 &lt;br /&gt;
答：不可以，不可以。&lt;/p&gt;
&lt;p&gt;96.下面这段代码有错误么？ &lt;br /&gt;
switch (i){ &lt;br /&gt;
case(): 答：//case()条件不能为空 &lt;br /&gt;
CaseZero(); &lt;br /&gt;
break; &lt;br /&gt;
case 1: &lt;br /&gt;
CaseOne(); &lt;br /&gt;
break; &lt;br /&gt;
case 2: &lt;br /&gt;
dufault; 答：//wrong，格式不正确 &lt;br /&gt;
CaseTwo(); &lt;br /&gt;
break; &lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;97.在.Net中，类System.Web.UI.Page 可以被继承么？ &lt;br /&gt;
答：可以。&lt;/p&gt;
&lt;p&gt;98..net的错误处理机制是什么？ &lt;br /&gt;
答：.net错误处理机制采用try-&amp;gt;catch-&amp;gt;finally结构，发生错误时，层层上抛，直到找到匹配的Catch为止。&lt;/p&gt;
&lt;p&gt;99.利用operator声明且仅声明了==，有什么错误么? &lt;br /&gt;
答：要同时修改Equale和GetHash() ? 重载了"==" 就必须重载 "!="&lt;/p&gt;
&lt;p&gt;100.在.net（C# or vb.net）中如何用户自定义消息，并在窗体中处理这些消息。 &lt;br /&gt;
答：在form中重载DefWndProc函数来处理消息: &lt;br /&gt;
protected override void DefWndProc ( ref System.WinForms.Message m )  &lt;br /&gt;
{  &lt;br /&gt;
switch(m.msg)  &lt;br /&gt;
{  &lt;br /&gt;
case WM_Lbutton :  &lt;br /&gt;
　 ///string与MFC中的CString的Format函数的使用方法有所不同  &lt;br /&gt;
　 string message = string.Format("收到消息!参数为:{0},{1}",m.wParam,m.lParam);  &lt;br /&gt;
　 MessageBox.Show(message);///显示一个消息框  &lt;br /&gt;
　 break;  &lt;br /&gt;
case USER: &lt;br /&gt;
处理的代码 &lt;br /&gt;
default:  &lt;br /&gt;
　 base.DefWndProc(ref m);///调用基类函数处理非自定义消息。  &lt;br /&gt;
　 break;  &lt;br /&gt;
}  &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
 &lt;/p&gt;
&lt;p&gt;101.在.net（C# or vb.net）中如何取消一个窗体的关闭。 &lt;br /&gt;
答：private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) &lt;br /&gt;
{ &lt;br /&gt;
e.Cancel=true; &lt;br /&gt;
} &lt;/p&gt;
&lt;p&gt;102.在.net（C# or vb.net）中，Appplication.Exit 还是 Form.Close有什么不同？ &lt;br /&gt;
答：一个是退出整个应用程序，一个是关闭其中一个form。&lt;/p&gt;
&lt;p&gt;103.在C#中有一个double型的变量，比如10321.5，比如122235401.21644，作为货币的值如何按各个不同国家的习惯来输出。比如美国用$10,321.50和$122，235，401.22而在英国则为￡10 321.50和￡122 235 401.22 &lt;br /&gt;
答：System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-US"); &lt;br /&gt;
//System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-GB");为英 国 货币类型 &lt;br /&gt;
decimal y = 9999999999999999999999999999m; &lt;br /&gt;
string str = String.Format(MyCulture,"My amount = {0:c}",y);&lt;/p&gt;
&lt;p&gt;104.某一密码仅使用K、L、M、N、O共5个字母，密码中的单词从左向右排列，密码单词必须遵循如下规则： &lt;br /&gt;
（1） 密码单词的最小长度是两个字母，可以相同，也可以不同&lt;br /&gt;
（2） K不可能是单词的第一个字母 &lt;br /&gt;
（3） 如果L出现，则出现次数不止一次 &lt;br /&gt;
（4） M不能使最后一个也不能是倒数第二个字母 &lt;br /&gt;
（5） K出现，则N就一定出现 &lt;br /&gt;
（6） O如果是最后一个字母，则L一定出现 &lt;br /&gt;
问题一：下列哪一个字母可以放在LO中的O后面，形成一个3个字母的密码单词？ &lt;br /&gt;
A) K B)L C) M D) N &lt;br /&gt;
答案:B&lt;/p&gt;
&lt;p&gt;问题二：如果能得到的字母是K、L、M，那么能够形成的两个字母长的密码单词的总数是多少？ &lt;br /&gt;
A)1个 B)3个 C)6个 D）9个 &lt;br /&gt;
答案:A&lt;/p&gt;
&lt;p&gt;问题三：下列哪一个是单词密码？ &lt;br /&gt;
A) KLLN B) LOML C) MLLO D)NMKO &lt;br /&gt;
答案:C&lt;/p&gt;
&lt;p&gt;8. 62-63=1 等式不成立，请移动一个数字（不可以移动减号和等于号），使得等式成立，如何移动？ &lt;br /&gt;
答案:62移动成2的6次方&lt;/p&gt;
&lt;p&gt;105.对于这样的一个枚举类型： &lt;br /&gt;
enum Color:byte &lt;br /&gt;
{ &lt;br /&gt;
Red, &lt;br /&gt;
Green, &lt;br /&gt;
Blue, &lt;br /&gt;
orange &lt;br /&gt;
} &lt;br /&gt;
答：string[] ss=Enum.GetNames(typeof(Color)); &lt;br /&gt;
byte[] bb=Enum.GetValues(typeof(Color));&lt;/p&gt;
&lt;p&gt;106. C#中 property 与 attribute的区别，他们各有什么用处，这种机制的好处在哪里？ &lt;br /&gt;
答：attribute:自定义属性的基类;property :类中的属性&lt;/p&gt;
&lt;p&gt;107.C#可否对内存进行直接的操作？ &lt;br /&gt;
答：在.net下，.net引用了垃圾回收（GC）功能，它替代了程序员 不过在C#中，不能直接实现Finalize方法，而是在析构函数中调用基类的Finalize()方法&lt;/p&gt;
&lt;p&gt;108.ADO。NET相对于ADO等主要有什么改进？ &lt;br /&gt;
答：1:ado.net不依赖于ole db提供程序,而是使用.net托管提供的程序,2:不使用com3:不在支持动态游标和服务器端游 4:,可以断开connection而保留当前数据集可用 5:强类型转换 6:xml支持&lt;/p&gt;
&lt;p&gt;109.写一个HTML页面，实现以下功能，左键点击页面时显示“您好”，右键点击时显示“禁止右键”。并在2分钟后自动关闭页面。 &lt;br /&gt;
答： &amp;lt;!-- Inject Script Filtered --&amp;gt;&lt;/p&gt;
&lt;p&gt;110.大概描述一下ASP。NET服务器控件的生命周期 &lt;br /&gt;
答：初始化 加载视图状态 处理回发数据 加载 发送回发更改通知 处理回发事件 预呈现 保存状态 呈现 处置 卸载&lt;/p&gt;
&lt;p&gt;111.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类，是否可以implements(实现)interface(接口)? &lt;br /&gt;
答：不能，可以实现接口&lt;/p&gt;
&lt;p&gt;112.Static Nested Class 和 Inner Class的不同，说得越多越好 &lt;br /&gt;
答：Static Nested Class是被声明为静态（static）的内部类，它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。&lt;/p&gt;
&lt;p&gt;113.，&amp;amp;和&amp;amp;&amp;amp;的区别。 &lt;br /&gt;
&amp;amp;是位运算符，表示按位与运算，&amp;amp;&amp;amp;是逻辑运算符，表示逻辑与（and）.&lt;/p&gt;
&lt;p&gt;114.HashMap和Hashtable的区别。&lt;br /&gt;
答：HashMap是Hashtable的轻量级实现（非线程安全的实现），他们都完成了Map接口，主要区别在于HashMap允许空（null）键值（key）,由于非线程安全，效率上可能高于Hashtable.&lt;/p&gt;
&lt;p&gt;115.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? &lt;br /&gt;
答：short s1 = 1; s1 = s1 + 1; （s1+1运算结果是int型，需要强制转换类型） &lt;br /&gt;
short s1 = 1; s1 += 1;（可以正确编译）&lt;/p&gt;
&lt;p&gt;116.Overloaded的方法是否可以改变返回值的类型? &lt;br /&gt;
答：Overloaded的方法是可以改变返回值的类型。&lt;/p&gt;
&lt;p&gt;117.error和exception有什么区别? &lt;br /&gt;
答：error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 &lt;br /&gt;
exception 表示一种设计或实现问题。也就是说，它表示如果程序运行正常，从不会发生的情况。&lt;/p&gt;
&lt;p&gt;118. 和 有什么区别？ &lt;br /&gt;
答：表示绑定的数据源 &lt;br /&gt;
是服务器端代码块&lt;/p&gt;
&lt;p&gt;119.你觉得ASP.NET 2.0（VS2005）和你以前使用的开发工具（.Net 1.0或其他）有什么最大的区别？你在以前的平台上使用的哪些开发思想（pattern / architecture）可以移植到ASP.NET 2.0上 (或者已经内嵌在ASP.NET 2.0中) &lt;br /&gt;
答：1 ASP.NET 2.0 把一些代码进行了封装打包,所以相比1.0相同功能减少了很多代码. &lt;br /&gt;
2 同时支持代码分离和页面嵌入服务器端代码两种模式,以前1.0版本,.NET提示帮助只有在分离的代码文件,无 法 在页面嵌入服务器端代码获得帮助提示, &lt;br /&gt;
3 代码和设计界面切换的时候,2.0支持光标定位.这个我比较喜欢 &lt;br /&gt;
4 在绑定数据,做表的分页.Update,Delete,等操作都可以可视化操作,方便了初学者 &lt;br /&gt;
5 在ASP.NET中增加了40多个新的控件,减少了工作量&lt;/p&gt;
&lt;p&gt;120.重载与覆盖的区别？ &lt;br /&gt;
答：1、方法的覆盖是子类和父类之间的关系，是垂直关系；方法的重载是同一个类中方法之间的关系，是水平关系 &lt;br /&gt;
2、覆盖只能由一个方法，或只能由一对方法产生关系；方法的重载是多个方法之间的关系。 &lt;br /&gt;
3、覆盖要求参数列表相同；重载要求参数列表不同。 &lt;br /&gt;
4、覆盖关系中，调用那个方法体，是根据对象的类型（对象对应存储空间类型）来决定；重载关系，是根据调 用时的实参表与形参表来选择方法体的。&lt;/p&gt;
&lt;p&gt;121.描述一下C#中索引器的实现过程，是否只能根据数字进行索引？  &lt;br /&gt;
答：不是。可以用任意类型。&lt;/p&gt;
&lt;p&gt;122.在C＃中，string str = null 与 string str = " " 请尽量使用文字或图象说明其中的区别。 &lt;br /&gt;
答：null是没有空间引用的； &lt;br /&gt;
" " 是空间为0的字符串；&lt;/p&gt;
&lt;p&gt;123.分析以下代码，完成填空 &lt;br /&gt;
string strTmp = "abcdefg某某某";  &lt;br /&gt;
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;  &lt;br /&gt;
int j= strTmp.Length; &lt;br /&gt;
以上代码执行完后，i= j=  &lt;br /&gt;
答：i=13.j=10&lt;/p&gt;
&lt;p&gt;124.SQLSERVER服务器中，给定表 table1 中有两个字段 ID、LastUpdateDate，ID表示更新的事务号， LastUpdateDate表示更新时的服务器时间，请使用一句SQL语句获得最后更新的事务号 &lt;br /&gt;
答：Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1) &lt;/p&gt;
&lt;p&gt;125.分析以下代码。 &lt;br /&gt;
public static void test(string ConnectString) &lt;/p&gt;
&lt;p&gt;{ &lt;/p&gt;
&lt;p&gt;System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();  &lt;br /&gt;
conn.ConnectionString = ConnectString;  &lt;br /&gt;
try &lt;/p&gt;
&lt;p&gt;{  &lt;br /&gt;
conn.Open();  &lt;br /&gt;
…….  &lt;br /&gt;
} &lt;br /&gt;
catch(Exception Ex)  &lt;br /&gt;
{  &lt;br /&gt;
MessageBox.Show(Ex.ToString());  &lt;br /&gt;
} &lt;br /&gt;
finally  &lt;br /&gt;
{ &lt;/p&gt;
&lt;p&gt;if (!conn.State.Equals(ConnectionState.Closed))  &lt;br /&gt;
conn.Close();  &lt;br /&gt;
}  &lt;br /&gt;
} &lt;br /&gt;
请问 &lt;/p&gt;
&lt;p&gt;1)以上代码可以正确使用连接池吗？ &lt;/p&gt;
&lt;p&gt;答：回答：如果传入的connectionString是一模一样的话，可以正确使用连接池。不过一模一样的意思是，连字符的空格数，顺序完全一致。 &lt;/p&gt;
&lt;p&gt;2)以上代码所使用的异常处理方法，是否所有在test方法内的异常都可以被捕捉并显示出来？ &lt;/p&gt;
&lt;p&gt;答：只可以捕捉数据库连接中的异常吧. （finally中，catch中，如果有别的可能引发异常的操作，也应该用try,catch。所以理论上并非所有异常都会被捕捉。） &lt;/p&gt;
&lt;p&gt;126.公司要求开发一个继承System.Windows.Forms.ListView类的组件，要求达到以下的特殊功能：点击ListView各列列头时，能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识，请简要谈一下您的思路： &lt;br /&gt;
答：根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中&lt;/p&gt;
&lt;p&gt;127.什么是WSE？目前最新的版本是多少？ &lt;br /&gt;
答：WSE (Web Service Extension) 包来提供最新的WEB服务安全保证，目前最新版本2.0。&lt;/p&gt;
&lt;p&gt;128.在下面的例子里&lt;br /&gt;
using System;&lt;br /&gt;
class A&lt;br /&gt;
{&lt;br /&gt;
public A(){&lt;br /&gt;
PrintFields();&lt;br /&gt;
}&lt;br /&gt;
public virtual void PrintFields(){}&lt;br /&gt;
}&lt;br /&gt;
class B:A&lt;br /&gt;
{&lt;br /&gt;
int x=1;&lt;br /&gt;
int y;&lt;br /&gt;
public B(){&lt;br /&gt;
y=-1;&lt;br /&gt;
}&lt;br /&gt;
public override void PrintFields(){&lt;br /&gt;
Console.WriteLine("x={0},y={1}",x,y);&lt;br /&gt;
}&lt;br /&gt;
当使用new B()创建B的实例时，产生什么输出？&lt;br /&gt;
答：X=1,Y=0&lt;/p&gt;
&lt;p&gt;129.下面的例子中&lt;br /&gt;
using System;&lt;br /&gt;
class A&lt;br /&gt;
{&lt;br /&gt;
public static int X;&lt;br /&gt;
static A(){&lt;br /&gt;
X=B.Y+1;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
class B&lt;br /&gt;
{&lt;br /&gt;
public static int Y=A.X+1;&lt;br /&gt;
static B(){}&lt;br /&gt;
static void Main(){&lt;br /&gt;
Console.WriteLine("X={0},Y={1}",A.X,B.Y);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
产生的输出结果是什么？&lt;br /&gt;
答：x=1,y=2&lt;/p&gt;
&lt;p&gt;130.abstract class和interface有什么区别?&lt;br /&gt;
答：声明方法的存在而不去实现它的类被叫做抽像类（abstract class），它用于要创建一个体现某些基本行为的类，并为该类声明方法，但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量，其类型是一个抽像类，并让它指向具体子类的一个实例。不能有抽像构造函数或抽像静态方法。Abstract 类的子类为它们父类中的所有抽像方法提供实现，否则它们也是抽像类为。取而代之，在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。&lt;br /&gt;
接口（interface）是抽像类的变体。在接口中，所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的，没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似，除了该实现类不能从接口定义中继承行为。当类实现特殊接口时，它定义（即将程序体给予）所有这种接口的方法。然后，它可以在实现了该接口的类的任何对像上调用接口的方法。由于有抽像类，它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换，instanceof 运算符可以用来决定某对象的类是否实现了接口。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相关链接：&lt;a href="http://blog.csiis.net/baicaps/archive/2009/09/04/asp.net.aspx" target="_self"&gt;全面的ASP.NET面试题目集锦（1）&lt;/a&gt;&lt;br /&gt;
 &lt;/p&gt;
&lt;img src="http://blog.rongzhiwang.com/baicaps/aggbug/67.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>baicaps</dc:creator>
            <guid>http://blog.rongzhiwang.com/baicaps/archive/2009/09/04/asp.net2.aspx</guid>
            <pubDate>Fri, 04 Sep 2009 15:05:52 GMT</pubDate>
            <wfw:comment>http://blog.rongzhiwang.com/baicaps/comments/67.aspx</wfw:comment>
            <comments>http://blog.rongzhiwang.com/baicaps/archive/2009/09/04/asp.net2.aspx#feedback</comments>
            <wfw:commentRss>http://blog.rongzhiwang.com/baicaps/comments/commentRss/67.aspx</wfw:commentRss>
            <trackback:ping>http://blog.rongzhiwang.com/baicaps/services/trackbacks/67.aspx</trackback:ping>
        </item>
        <item>
            <title>全面的ASP.NET面试题目集锦（1）</title>
            <category>.NET</category>
            <link>http://blog.rongzhiwang.com/baicaps/archive/2009/09/04/asp.net.aspx</link>
            <description>&lt;p&gt;对ASP.NET程序员来说，面试时经常遇到一些技术问题。本文为您收集130道常见的ASP.NET面试题目，供大家参考。&lt;/p&gt;
&lt;p&gt;1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 &lt;br /&gt;
答 . private : 私有成员, 在类的内部才可以访问。  &lt;br /&gt;
protected : 保护成员，该类内部和继承类中可以访问。  &lt;br /&gt;
public : 公共成员，完全公开，没有访问限制。  &lt;br /&gt;
internal: 在同一命名空间内可以访问。&lt;/p&gt;
&lt;p&gt;2 .列举ASP.NET 页面之间传递值的几种方式。  &lt;br /&gt;
答. 1.使用QueryString, 如....?id=1; response. Redirect()....  &lt;br /&gt;
2.使用Session变量  &lt;br /&gt;
3.使用Server.Transfer&lt;/p&gt;
&lt;p&gt;3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少， 用递归算法实现。&lt;br /&gt;
答：public class MainClass  &lt;br /&gt;
{  &lt;br /&gt;
public static void Main()  &lt;br /&gt;
{  &lt;br /&gt;
Console.WriteLine(Foo(30));  &lt;br /&gt;
}  &lt;br /&gt;
public static int Foo(int i)  &lt;br /&gt;
{  &lt;br /&gt;
if (i &amp;lt;= 0)  &lt;br /&gt;
return 0;  &lt;br /&gt;
else if(i &amp;gt; 0 &amp;amp;&amp;amp; i &amp;lt;= 2)  &lt;br /&gt;
return 1;  &lt;br /&gt;
else return Foo(i -1) + Foo(i - 2);  &lt;br /&gt;
}  &lt;br /&gt;
} &lt;/p&gt;
&lt;p&gt;4.C#中的委托是什么？事件是不是一种委托？ &lt;br /&gt;
答 ：  &lt;br /&gt;
委托可以把一个方法作为参数代入另一个方法。 &lt;br /&gt;
委托可以理解为指向一个函数的引用。 &lt;br /&gt;
是，是一种特殊的委托&lt;/p&gt;
&lt;p&gt;5.override与重载的区别 &lt;br /&gt;
答 ： &lt;br /&gt;
override 与重载的区别。重载是方法的名称相同。参数或参数类型不同，进行多次重载以适应不同的需要 &lt;br /&gt;
Override 是进行基类中函数的重写。为了适应需要。&lt;/p&gt;
&lt;p&gt;6.如果在一个B/S结构的系统中需要传递变量值，但是又不能使用Session、Cookie、Application，您有几种方法进行处理？ &lt;br /&gt;
答 ：  &lt;br /&gt;
this.Server.Transfer&lt;/p&gt;
&lt;p&gt;7.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty？ &lt;br /&gt;
答： &lt;br /&gt;
foreach (System.Windows.Forms.Control control in this.Controls) &lt;br /&gt;
{ &lt;br /&gt;
if (control is System.Windows.Forms.TextBox) &lt;br /&gt;
{ &lt;br /&gt;
System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;  &lt;br /&gt;
tb.Text = String.Empty ; &lt;br /&gt;
} &lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;8.请编程实现一个冒泡排序算法？ &lt;br /&gt;
答： &lt;br /&gt;
int [] array = new int  &lt;br /&gt;
; &lt;br /&gt;
int temp = 0 ; &lt;br /&gt;
for (int i = 0 ; i &amp;lt; array.Length - 1 ; i++) &lt;br /&gt;
{ &lt;br /&gt;
for (int j = i + 1 ; j &amp;lt; array.Length ; j++) &lt;br /&gt;
{ &lt;br /&gt;
if (array[j] &amp;lt; array[i]) &lt;br /&gt;
{ &lt;br /&gt;
temp = array[i] ; &lt;br /&gt;
array[i] = array[j] ; &lt;br /&gt;
array[j] = temp ; &lt;br /&gt;
} &lt;br /&gt;
} &lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;9.描述一下C#中索引器的实现过程，是否只能根据数字进行索引？ &lt;br /&gt;
答：不是。可以用任意类型。&lt;/p&gt;
&lt;p&gt;10.求以下表达式的值，写出您想到的一种或几种实现方法： 1-2+3-4+……+m&lt;br /&gt;
答： &lt;br /&gt;
int Num = this.TextBox1.Text.ToString() ; &lt;br /&gt;
int Sum = 0 ; &lt;br /&gt;
for (int i = 0 ; i &amp;lt; Num + 1 ; i++) &lt;br /&gt;
{ &lt;br /&gt;
if((i%2) == 1) &lt;br /&gt;
{ &lt;br /&gt;
Sum += i ; &lt;br /&gt;
} &lt;br /&gt;
else &lt;br /&gt;
{ &lt;br /&gt;
Sum = Sum - I ; &lt;br /&gt;
} &lt;br /&gt;
} &lt;br /&gt;
System.Console.WriteLine(Sum.ToString()); &lt;br /&gt;
System.Console.ReadLine() ;&lt;/p&gt;
&lt;p&gt;11.用.net做B/S结构的系统，您是用几层结构来开发，每一层之间的关系以及为什么要这样分层？ &lt;br /&gt;
答：一般为3层 &lt;br /&gt;
数据访问层，业务层，表示层。 &lt;br /&gt;
数据访问层对数据库进行增删查改。 &lt;br /&gt;
业务层一般分为二层，业务表观层实现与表示层的沟通，业务规则层实现用户密码的安全等。 &lt;br /&gt;
表示层为了与用户交互例如用户添加表单。 &lt;br /&gt;
优点： 分工明确，条理清晰，易于调试，而且具有可扩展性。 &lt;br /&gt;
缺点： 增加成本。&lt;/p&gt;
&lt;p&gt;12.在下面的例子里 &lt;br /&gt;
using System; &lt;br /&gt;
class A &lt;br /&gt;
{ &lt;br /&gt;
public A() &lt;br /&gt;
{ &lt;br /&gt;
PrintFields(); &lt;br /&gt;
} &lt;br /&gt;
public virtual void PrintFields(){} &lt;br /&gt;
} &lt;br /&gt;
class B:A &lt;br /&gt;
{ &lt;br /&gt;
int x=1; &lt;br /&gt;
int y; &lt;br /&gt;
public B() &lt;br /&gt;
{ &lt;br /&gt;
y=-1; &lt;br /&gt;
} &lt;br /&gt;
public override void PrintFields() &lt;br /&gt;
{ &lt;br /&gt;
Console.WriteLine("x={0},y={1}",x,y); &lt;br /&gt;
} &lt;br /&gt;
当使用new B()创建B的实例时，产生什么输出？ &lt;br /&gt;
答：X=1,Y=0;x= 1 y = -1&lt;/p&gt;
&lt;p&gt;13.什么叫应用程序域？ &lt;br /&gt;
答：应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。&lt;/p&gt;
&lt;p&gt;14.CTS、CLS、CLR分别作何解释？ &lt;br /&gt;
答：CTS：通用语言系统。CLS：通用语言规范。CLR：公共语言运行库。&lt;/p&gt;
&lt;p&gt;15.什么是装箱和拆箱？ &lt;br /&gt;
答：从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。&lt;/p&gt;
&lt;p&gt;16.什么是受管制的代码？ &lt;br /&gt;
答：unsafe：非托管代码。不经过CLR运行。&lt;/p&gt;
&lt;p&gt;17.什么是强类型系统？ &lt;br /&gt;
答：RTTI：类型识别系统。&lt;/p&gt;
&lt;p&gt;18.net中读写数据库需要用到那些类？他们的作用？ &lt;br /&gt;
答：DataSet:数据存储器。 &lt;br /&gt;
DataCommand:执行语句命令。 &lt;br /&gt;
DataAdapter:数据的集合，用语填充。&lt;/p&gt;
&lt;p&gt;19.ASP.net的身份验证方式有哪些？分别是什么原理？ &lt;br /&gt;
答：10。Windwos(默认)用IIS...From(窗体)用帐户....Passport(密钥)&lt;/p&gt;
&lt;p&gt;20.什么是Code-Behind技术？ &lt;br /&gt;
答：代码后植。&lt;/p&gt;
&lt;p&gt;21.在.net中，配件的意思是？ &lt;br /&gt;
答：程序集。（中间语言，源数据，资源，装配清单）&lt;/p&gt;
&lt;p&gt;22.常用的调用WebService的方法有哪些？ &lt;br /&gt;
答：1.使用WSDL.exe命令行工具。 &lt;br /&gt;
2.使用VS.NET中的Add Web Reference菜单选项&lt;/p&gt;
&lt;p&gt;23..net Remoting 的工作原理是什么？ &lt;br /&gt;
答：服务器端向客户端发送一个进程编号，一个程序域编号，以确定对象的位置。&lt;/p&gt;
&lt;p&gt;24.在C＃中，string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。  &lt;br /&gt;
答：string str = null 是不给他分配内存空间,而string str = "" 给它分配长度为空字符串的内存空间。&lt;/p&gt;
&lt;p&gt;25.请详述在dotnet中类(class)与结构(struct)的异同？ &lt;br /&gt;
答：Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. &lt;br /&gt;
&lt;br /&gt;
 &lt;/p&gt;
&lt;p&gt;26.根据委托(delegate)的知识，请完成以下用户控件中代码片段的填写：  &lt;br /&gt;
namespace test  &lt;br /&gt;
{  &lt;br /&gt;
public delegate void OnDBOperate();  &lt;br /&gt;
public class UserControlBase : System.Windows.Forms.UserControl  &lt;br /&gt;
{  &lt;br /&gt;
public event OnDBOperate OnNew;  &lt;br /&gt;
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)&lt;br /&gt;
{  &lt;br /&gt;
if(e.Button.Equals(BtnNew))  &lt;br /&gt;
{  &lt;br /&gt;
//请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。 &lt;br /&gt;
}  &lt;br /&gt;
}  &lt;br /&gt;
} &lt;br /&gt;
答：if( OnNew != null )  &lt;br /&gt;
OnNew( this, e ); &lt;/p&gt;
&lt;p&gt;27.分析以下代码，完成填空  &lt;br /&gt;
string strTmp = "abcdefg某某某";  &lt;br /&gt;
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;  &lt;br /&gt;
int j= strTmp.Length;  &lt;br /&gt;
以上代码执行完后，i= j=  &lt;br /&gt;
答：i=13,j=10 &lt;/p&gt;
&lt;p&gt;28.SQLSERVER服务器中，给定表 table1 中有两个字段 ID、LastUpdateDate，ID表示更新的事务号， LastUpdateDate表示更新时的服务器时间，请使用一句SQL语句获得最后更新的事务号 &lt;br /&gt;
答：Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1) &lt;/p&gt;
&lt;p&gt;29.根据线程安全的相关知识，分析以下代码，当调用test方法时i&amp;gt;10时是否会引起死锁?并简要说明理由。 &lt;br /&gt;
public void test(int i)  &lt;br /&gt;
{  &lt;br /&gt;
lock(this)  &lt;br /&gt;
{  &lt;br /&gt;
if (i&amp;gt;10)  &lt;br /&gt;
{  &lt;br /&gt;
i--;  &lt;br /&gt;
test(i);  &lt;br /&gt;
}  &lt;br /&gt;
}  &lt;br /&gt;
} &lt;br /&gt;
答：不会发生死锁，（但有一点int是按值传递的，所以每次改变的都只是一个副本，因此不会出现死锁。但如果把int换做一个object，那么死锁会发生）&lt;/p&gt;
&lt;p&gt;30.简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。 &lt;br /&gt;
答：WS主要是可利用HTTP，穿透防火墙。而Remoting可以利用TCP/IP，二进制传送提高效率。&lt;/p&gt;
&lt;p&gt;31.公司要求开发一个继承System.Windows.Forms.ListView类的组件，要求达到以下的特殊功能：点击ListView各列列头时，能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识，请简要谈一下您的思路 &lt;br /&gt;
答：根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。&lt;/p&gt;
&lt;p&gt;32.给定以下XML文件，完成算法流程图。 &lt;br /&gt;
&lt;filesystem /&gt;  &lt;br /&gt;
&amp;lt; DriverC &amp;gt;  &lt;br /&gt;
 &lt;/p&gt;
&lt;dir dirname="”MSDOS622”"&gt;&lt;br /&gt;
&lt;file filename="”" /&gt;  &lt;br /&gt;
&lt;/dir&gt;
&lt;p&gt;  &lt;br /&gt;
&lt;file filename="”MSDOS.SYS”" /&gt;  &lt;br /&gt;
&lt;file filename="”" /&gt;  &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
请画出遍历所有文件名（FileName）的流程图(请使用递归算法)。 &lt;br /&gt;
答： &lt;br /&gt;
void FindFile( Directory d )  &lt;br /&gt;
{  &lt;br /&gt;
FileOrFolders = d.GetFileOrFolders();  &lt;br /&gt;
foreach( FileOrFolder fof in FileOrFolders )  &lt;br /&gt;
{  &lt;br /&gt;
if( fof is File )  &lt;br /&gt;
You Found a file;  &lt;br /&gt;
else if ( fof is Directory )  &lt;br /&gt;
FindFile( fof );  &lt;br /&gt;
}  &lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;33.写出一条Sql语句：取出表A中第31到第40记录（SQLServer,以自动增长的ID作为主键,注意：ID可能不是连续的。 &lt;br /&gt;
答：解1: select top 10 * from A where id not in (select top 30 id from A)  &lt;br /&gt;
解2: select top 10 * from A where id &amp;gt; (select max(id) from (select top 30 id from A )as A) &lt;/p&gt;
&lt;p&gt;34.面向对象的语言具有________性、_________性、________性 &lt;br /&gt;
答：封装、继承、多态。&lt;/p&gt;
&lt;p&gt;35.能用foreach遍历访问的对象需要实现 ________________接口或声明________________方法的类型。 &lt;br /&gt;
答：IEnumerable 、 GetEnumerator。&lt;/p&gt;
&lt;p&gt;36.GC是什么? 为什么要有GC? &lt;br /&gt;
答：GC是垃圾收集器。程序员不用担心内存管理，因为垃圾收集器会自动进行管理。要请求垃圾收集，可以调用下面的方法之一：  &lt;br /&gt;
System.gc() &lt;br /&gt;
Runtime.getRuntime().gc()&lt;/p&gt;
&lt;p&gt;37.String s = new String("xyz");创建了几个String Object? &lt;br /&gt;
答：两个对象，一个是“xyx”,一个是指向“xyx”的引用对象s。&lt;/p&gt;
&lt;p&gt;38.abstract class和interface有什么区别? &lt;br /&gt;
答：声明方法的存在而不去实现它的类被叫做抽象类（abstract class），它用于要创建一个体现某些基本行为的类，并为该类声明方法，但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量，其类型是一个抽象类，并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现，否则它们也是抽象类为。取而代之，在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。 &lt;br /&gt;
接口（interface）是抽象类的变体。在接口中，所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的，没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似，除了该实现类不能从接口定义中继承行为。当类实现特殊接口时，它定义（即将程序体给予）所有这种接口的方法。然后，它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类，它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换，instanceof 运算符可以用来决定某对象的类是否实现了接口。&lt;/p&gt;
&lt;p&gt;39.启动一个线程是用run()还是start()? &lt;br /&gt;
答：启动一个线程是调用start()方法，使线程所代表的虚拟处理机处于可运行状态，这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。&lt;/p&gt;
&lt;p&gt;40.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? &lt;br /&gt;
答：接口可以继承接口。抽象类可以实现(implements)接口，抽象类是否可继承实体类，但前提是实体类必须有明确的构造函数。&lt;/p&gt;
&lt;p&gt;41.构造器Constructor是否可被override? &lt;br /&gt;
答：构造器Constructor不能被继承，因此不能重写Overriding，但可以被重载Overloading。&lt;/p&gt;
&lt;p&gt;42.是否可以继承String类? &lt;br /&gt;
答：String类是final类故不可以继承。&lt;/p&gt;
&lt;p&gt;43.try {}里有一个return语句，那么紧跟在这个try后的finally {}里的code会不会被执行，什么时候被执行，在return前还是后? &lt;br /&gt;
答：会执行，在return前执行。&lt;/p&gt;
&lt;p&gt;44.两个对象值相同(x.equals(y) == true)，但却可有不同的hash code，这句话对不对? &lt;br /&gt;
答：不对，有相同的hash code。&lt;/p&gt;
&lt;p&gt;45.swtich是否能作用在byte上，是否能作用在long上，是否能作用在String上? &lt;br /&gt;
答：switch（expr1）中，expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。&lt;/p&gt;
&lt;p&gt;47.当一个线程进入一个对象的一个synchronized方法后，其它线程是否可进入此对象的其它方法? &lt;br /&gt;
不能，一个对象的一个synchronized方法只能由一个线程访问。&lt;/p&gt;
&lt;p&gt;48.abstract的method是否可同时是static,是否可同时是native，是否可同时是synchronized? &lt;br /&gt;
答：都不能。&lt;/p&gt;
&lt;p&gt;49.List, Set, Map是否继承自Collection接口? &lt;br /&gt;
答：List，Set是Map不是&lt;/p&gt;
&lt;p&gt;50.Set里的元素是不能重复的，那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? &lt;br /&gt;
答：Set里的元素是不能重复的，那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。 &lt;br /&gt;
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖，为的是当两个分离的对象的内容和类型相配的话，返回真值。&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
 相关链接：&lt;a href="http://blog.csiis.net/baicaps/archive/2009/09/04/asp.net2.aspx" target="_self"&gt;全面的ASP.NET面试题目集锦（2）&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://blog.rongzhiwang.com/baicaps/aggbug/66.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>baicaps</dc:creator>
            <guid>http://blog.rongzhiwang.com/baicaps/archive/2009/09/04/asp.net.aspx</guid>
            <pubDate>Fri, 04 Sep 2009 14:59:11 GMT</pubDate>
            <wfw:comment>http://blog.rongzhiwang.com/baicaps/comments/66.aspx</wfw:comment>
            <comments>http://blog.rongzhiwang.com/baicaps/archive/2009/09/04/asp.net.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.rongzhiwang.com/baicaps/comments/commentRss/66.aspx</wfw:commentRss>
            <trackback:ping>http://blog.rongzhiwang.com/baicaps/services/trackbacks/66.aspx</trackback:ping>
        </item>
        <item>
            <title>最重要的十大开源软件</title>
            <category>杂谈</category>
            <link>http://blog.rongzhiwang.com/baicaps/archive/2009/08/19/62.aspx</link>
            <description>&lt;strong&gt;
&lt;p&gt;知名IT网站InfoWorld近日评出了十大开源软件，并且评价称它们是最重要最有价值的开源软件，很少有什么软件产品是无可替代的，但是如果没有了这些软件，整个软件业都会黯然失色，也无法像现在这样精彩。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1、Linux内核&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Linux并不是第一个开源软件项目，但却是它向世人展示了开源的力量并对开源的普及做出了巨大的贡献。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://news.mydrivers.com/Img/20090819/10522993.jpg" target="_blank" mce_href="http://news.mydrivers.com/Img/20090819/10522993.jpg"&gt;&lt;img alt="最重要的十大开源软件" src="http://news.mydrivers.com/Img/20090819/10522993.jpg" width="313" height="375" mce_src="http://news.mydrivers.com/Img/20090819/10522993.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2、GNU工具及GNU编译器&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;GNU项目是一种由自由软件项目和各类工具及应用组成的集合，它和Linux内核结合在一起提供了一种完整的操作系统，由GNU工具、GNU编译器和Linux内核组成了完整的Linux世界。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://news.mydrivers.com/Img/20090819/10524852.png" target="_blank" mce_href="http://news.mydrivers.com/Img/20090819/10524852.png"&gt;&lt;img alt="最重要的十大开源软件" src="http://news.mydrivers.com/Img/20090819/S10524852.png" width="440" height="389" mce_src="http://news.mydrivers.com/Img/20090819/S10524852.png" /&gt;&lt;/a&gt;&lt;br /&gt;
 &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3、Ubuntu&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;作为Linux的一个颇受欢迎的发行版本，Ubuntu最大的特点就是易用性，也正是这一原则使得新的用户和PC厂家接受了对Linux的预装，它起源于Debian GNU/Linux并且吸取了其中的精华。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://news.mydrivers.com/Img/20090819/10525955.png" target="_blank" mce_href="http://news.mydrivers.com/Img/20090819/10525955.png"&gt;&lt;img alt="最重要的十大开源软件" src="http://news.mydrivers.com/Img/20090819/10525955.png" width="439" height="182" mce_src="http://news.mydrivers.com/Img/20090819/10525955.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4、BSD操作系统&lt;/strong&gt;（FreeBSD、NetBSD和OpenBSD）&lt;/p&gt;
&lt;p&gt;在开源操作系统中除了Linux之外BSD也非常受欢迎，FreeBSD以稳定性和性能著称，NetBSD则以对大量硬件平台的支持见长，包括嵌入式系统和移动设备，OpenBSD可以称得上是最安全的类Unix操作系统。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://news.mydrivers.com/Img/20090819/10545771.png" target="_blank" mce_href="http://news.mydrivers.com/Img/20090819/10545771.png"&gt;&lt;img alt="最重要的十大开源软件" src="http://news.mydrivers.com/Img/20090819/S10545771.png" width="440" height="167" mce_src="http://news.mydrivers.com/Img/20090819/S10545771.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://news.mydrivers.com/Img/20090819/10532090.jpg" target="_blank" mce_href="http://news.mydrivers.com/Img/20090819/10532090.jpg"&gt;&lt;img alt="最重要的十大开源软件" src="http://news.mydrivers.com/Img/20090819/10532090.jpg" mce_src="http://news.mydrivers.com/Img/20090819/10532090.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://news.mydrivers.com/Img/20090819/10532091.bmp" target="_blank" mce_href="http://news.mydrivers.com/Img/20090819/10532091.bmp"&gt;&lt;img alt="最重要的十大开源软件" src="http://news.mydrivers.com/Img/20090819/10532091.bmp" mce_src="http://news.mydrivers.com/Img/20090819/10532091.bmp" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5、Samba&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Samba最大的贡献莫过于在Linux/Unix和Windows之间架起了一座桥梁，它帮助实现了Linux和Unix服务器向Windows客户端提供文件和打印服务。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://news.mydrivers.com/Img/20090819/10551416.png" target="_blank" mce_href="http://news.mydrivers.com/Img/20090819/10551416.png"&gt;&lt;img alt="最重要的十大开源软件" src="http://news.mydrivers.com/Img/20090819/10551416.png" width="439" height="219" mce_src="http://news.mydrivers.com/Img/20090819/10551416.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt; &lt;/p&gt;
&lt;div id="ArticleCnt"&gt;
&lt;p style="text-align: left" mce_style="text-align: left;"&gt;&lt;strong&gt;6、MySQL&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: left" mce_style="text-align: left;"&gt;MySQL数据库的易管理、优异的查询性能和对多线程的支持等特性让它成为多数网站的首选。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://news.mydrivers.com/Img/20090819/10553749.jpg" target="_blank" mce_href="http://news.mydrivers.com/Img/20090819/10553749.jpg"&gt;&lt;img alt="最重要的十大开源软件" src="http://news.mydrivers.com/Img/20090819/10553749.jpg" mce_src="http://news.mydrivers.com/Img/20090819/10553749.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: left" mce_style="text-align: left;"&gt;&lt;strong&gt;7、BIND&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: left" mce_style="text-align: left;"&gt;从互联网兴起时开始DNS服务器就受到了广泛欢迎，不过这也少不了BIND的功劳，正是因为有了它，我们才可以隐藏繁琐的计算机IP地址，才可以通过简单的名字比如csiis.net来访问网络。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://news.mydrivers.com/Img/20090819/10555888.png" target="_blank" mce_href="http://news.mydrivers.com/Img/20090819/10555888.png"&gt;&lt;img alt="最重要的十大开源软件" src="http://news.mydrivers.com/Img/20090819/10555888.png" width="356" height="369" mce_src="http://news.mydrivers.com/Img/20090819/10555888.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: left" mce_style="text-align: left;"&gt;&lt;strong&gt;8、Sendmail&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: left" mce_style="text-align: left;"&gt;在互联网没有定型前的上世纪80年代至90年代，Sendmail作为行业的中流砥柱为用户提供网络邮箱服务，虽然近年来它的市场被Postfix、Qmail、Exim和微软Exchange等蚕食了很多，不过依然身处最受欢迎的电子邮件邮件传输代理之列。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://news.mydrivers.com/Img/20090819/10561351.png" target="_blank" mce_href="http://news.mydrivers.com/Img/20090819/10561351.png"&gt;&lt;img alt="最重要的十大开源软件" src="http://news.mydrivers.com/Img/20090819/10561351.png" width="439" height="192" mce_src="http://news.mydrivers.com/Img/20090819/10561351.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: left" mce_style="text-align: left;"&gt;&lt;strong&gt;9、OpenSSH和OpenSSL&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: left" mce_style="text-align: left;"&gt;OpenSSH和OpenSSL为自由软件和开源软件业提供了必不可少了网络安全通信工具。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://news.mydrivers.com/Img/20090819/10562462.png" target="_blank" mce_href="http://news.mydrivers.com/Img/20090819/10562462.png"&gt;&lt;img alt="最重要的十大开源软件" src="http://news.mydrivers.com/Img/20090819/10562462.png" width="440" height="215" mce_src="http://news.mydrivers.com/Img/20090819/10562462.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: left" mce_style="text-align: left;"&gt;&lt;strong&gt;10、Apache&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: left" mce_style="text-align: left;"&gt;Apache是最流行的Web服务器软件之一，它几乎可以运行在所有广泛使用的计算机平台上。Apache源于NCSAhttpd服务器，其特点是简单、速度快、性能稳定并且可做代理服务器来使用。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://news.mydrivers.com/Img/20090819/10563623.png" target="_blank" mce_href="http://news.mydrivers.com/Img/20090819/10563623.png"&gt;&lt;img alt="最重要的十大开源软件" src="http://news.mydrivers.com/Img/20090819/10563623.png" width="440" height="210" mce_src="http://news.mydrivers.com/Img/20090819/10563623.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/strong&gt;
&lt;img src="http://blog.rongzhiwang.com/baicaps/aggbug/62.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>baicaps</dc:creator>
            <guid>http://blog.rongzhiwang.com/baicaps/archive/2009/08/19/62.aspx</guid>
            <pubDate>Wed, 19 Aug 2009 14:55:42 GMT</pubDate>
            <wfw:comment>http://blog.rongzhiwang.com/baicaps/comments/62.aspx</wfw:comment>
            <comments>http://blog.rongzhiwang.com/baicaps/archive/2009/08/19/62.aspx#feedback</comments>
            <wfw:commentRss>http://blog.rongzhiwang.com/baicaps/comments/commentRss/62.aspx</wfw:commentRss>
            <trackback:ping>http://blog.rongzhiwang.com/baicaps/services/trackbacks/62.aspx</trackback:ping>
        </item>
        <item>
            <title>VS.Net 的一些小技巧</title>
            <category>.NET</category>
            <link>http://blog.rongzhiwang.com/baicaps/archive/2009/08/16/vs.net.aspx</link>
            <description>&lt;p&gt;1&lt;span style="font-family: 宋体"&gt;、注释或重复代码片断&lt;br /&gt;
    &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;在我们写代码的往往要写代码注释，可是在每个类中写这些注释的文字是不是很烦，如果你每次用复制，粘贴的花是不是也是很麻烦，如果我们能想拖控件一样，拖到代码文件中多好啊，其实在在&lt;/span&gt;Vs&lt;span style="font-family: 宋体"&gt;中是可能的，我们只要把我们的代码块选中，然后在代码模式中向工具箱中把这个代码快直接拖到工具箱中就行了，接下来，我们在要注释的地方直接把这个“控件”拖到我们的代码中就行了，是不是很酷！ &lt;br /&gt;
             &lt;img style="width: 481px; height: 216px" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/xbf321/Vs.net/vs_1.gif" /&gt;&lt;br /&gt;
&lt;br /&gt;
  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;2&lt;span style="font-family: 宋体"&gt;、格式化整个块&lt;/span&gt;&lt;/p&gt;
    &lt;span style="font-family: 宋体"&gt;我们在编写代码，或者从别人的&lt;/span&gt;Html&lt;span style="font-family: 宋体"&gt;源文件中粘贴一段&lt;/span&gt;Html&lt;span style="font-family: 宋体"&gt;代码粘到我们的&lt;/span&gt;Vs&lt;span style="font-family: 宋体"&gt;中的设计模式中的时候，是不是格式都是原模原样的，编写代码的时候，&lt;/span&gt;Vs&lt;span style="font-family: 宋体"&gt;可以很好的给我们用很整齐的格式排列好，方便阅读，可是粘到&lt;/span&gt;vs&lt;span style="font-family: 宋体"&gt;设计模式下的&lt;/span&gt;Html&lt;span style="font-family: 宋体"&gt;代码的就不能保证这么有格式了，以至于我们在查找某个标记是否关闭的时候，全部都是红色的波浪线，特别的头痛。现在有一个方便的方法，让&lt;/span&gt;vs&lt;span style="font-family: 宋体"&gt;为我们做这个排版的工作，我们可以从编辑&lt;/span&gt;—&lt;span style="font-family: 宋体"&gt;高级&lt;/span&gt;—&lt;span style="font-family: 宋体"&gt;下点击设计文档的格式，那么我们的代码或者&lt;/span&gt;Html&lt;span style="font-family: 宋体"&gt;就很整齐的排版好了。快捷键：Ctrl+K+D&lt;br /&gt;
&lt;br /&gt;
                    &lt;img style="width: 399px; height: 189px" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/xbf321/Vs.net/vs_2.gif" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                            (html混乱)&lt;br /&gt;
用Ctrl+K+D后&lt;br /&gt;
&lt;br /&gt;
                 &lt;img style="width: 478px; height: 180px" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/xbf321/Vs.net/vs_3.gif" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
         现在的Html标记是不是按着层次排好了！同样适用于cs代码&lt;br /&gt;
  &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;
&lt;p&gt;3&lt;span style="font-family: 宋体"&gt;、创建区域选择&lt;br /&gt;
   &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;在&lt;/span&gt;VS.NET&lt;span style="font-family: 宋体"&gt;中通过按住&lt;/span&gt;Alt&lt;span style="font-family: 宋体"&gt;键，拖运鼠标在一个矩形区域上来做一个区域选择。不知道你是否这样选择过区域？这个技巧允许你创造一个区域并不包含其间的行（见图&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;）。通过这个方法非常容易拷贝，剪切，粘贴矩形区域块。   &lt;br /&gt;
                         &lt;br /&gt;
&lt;br /&gt;
                   &lt;img style="width: 455px; height: 239px" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/xbf321/Vs.net/vs_6.gif" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;      你可能惊奇为什么有人需要这个深奥的特性。事实上，我经常使用它在上特定的文档段落中作一个目标查找&lt;/span&gt;-&lt;span style="font-family: 宋体"&gt;替换操作，但是由于常规的自动换行选项使得我没有办法这样作。我相信你会发现这个特性是非常方便的。&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;4&lt;span style="font-family: 宋体"&gt;、查找匹配的标记&lt;br /&gt;
     &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;某些标识总是成对出现。例如，“&lt;/span&gt;{&lt;span style="font-family: 宋体"&gt;”标识必须用对应的“&lt;/span&gt;}&lt;span style="font-family: 宋体"&gt;”标识关闭。虽然在&lt;/span&gt;Vs2005&lt;span style="font-family: 宋体"&gt;你点击一个&lt;/span&gt;{&lt;span style="font-family: 宋体"&gt;，和他匹配的&lt;/span&gt;}&lt;span style="font-family: 宋体"&gt;就会高亮显示，但是如果代码过长的话就不好找了，同样，编译器指示符“&lt;/span&gt;#region&lt;span style="font-family: 宋体"&gt;”必须有对应的“&lt;/span&gt;#endregion&lt;span style="font-family: 宋体"&gt;”指示符。当导航你的代码时，你有时需要查找对应的标识。通过按&lt;/span&gt;Ctrl-]&lt;span style="font-family: 宋体"&gt;你可以这样做。这个快捷键只有当光标在这些标识符的任何一个的下面时才起作用，它会立即跳转到对应的标识符而不管它是开的或闭的标识。&lt;br /&gt;
     &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;如果你想显亮两个匹配的标识之间的所有代码时，按&lt;/span&gt;Ctrl-Shift-]&lt;span style="font-family: 宋体"&gt;显亮整个块，并移动光标到开的标识处。这个快捷键只有当光标在任意的标识的下面时才起作用（如光标在区域内它就不会起作用了）。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;5、跳转的方法的定义&lt;br /&gt;
    &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 10.5pt"&gt;当你看到你一个类的方法调用时，你极有可能想看看方法体。在&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt"&gt;VS.NET&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 10.5pt"&gt;中通过上下文菜单实现。在文本编辑器中在方法名称内右击，从弹出菜单中选择到定义。&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt"&gt;VS.NET&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 10.5pt"&gt;立即跳转到这个方法的定义处。这个特性的缺省的快捷键是&lt;/span&gt;&lt;span&gt;F12。&lt;br /&gt;
&lt;br /&gt;
6&lt;span style="font-family: 宋体"&gt;、实用预定义的代码片断&lt;br /&gt;
    &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 10.5pt"&gt;代码片断是流行的，预定义的文本模板，开发者能够选择，而不是手工敲入。例如，对&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt"&gt;Foreach&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 10.5pt"&gt;循环，代替敲你需要的所有代码，你能简单地敲&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt"&gt;foreach&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 10.5pt"&gt;。智能感知用新的代码片断图标显示&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt"&gt;Foreach&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 10.5pt"&gt;项（见图）。如果你从智能感知列表中选择代码片项，接着按&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt"&gt;Tab&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 10.5pt"&gt;，&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt"&gt;VS&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 10.5pt"&gt;会插入对于“&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 10.5pt"&gt;foreach&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 10.5pt"&gt;”的预定义的代码片断。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                   &lt;img style="width: 409px; height: 156px" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/xbf321/Vs.net/vs_7.gif" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7、设计视图和代码(cs)文件切换&lt;br /&gt;
     我们在添加一个.aspx文件的时候，要想切换到后台代码，可以在设计视图下，右击鼠标右键，有一个“查看代码”选项，我们就可以很容易的切换到后台代码中，我们也可以用快捷键F7,来相互切换。&lt;br /&gt;
  8、自定义的字符串大小写切换&lt;br /&gt;
     可能这个小标题命名的不太确切，这里的意思就是如果我们定义了一个想这样的字符串：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; strValue &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;aaaaaaa&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: 宋体"&gt;
&lt;p&gt;   如果我们想让这个aaaaa变成大写的AAAAAA怎么办呢？删掉在重写？其实有个方便的变法就是用Ctrl+Shift+U,这个只能是小写转换成大写，如果我们把大写转换成小写的话就用Ctrl+U.&lt;br /&gt;
&lt;span style="color: #ff0000"&gt;2007-10-31更新&lt;/span&gt;&lt;br /&gt;
   9、整行剪切，复制&lt;br /&gt;
     如果我们在对整行进行剪切，复制的时候，在不选中的情况下怎么复制或剪切呢？我们可以把鼠标移到这一行的前面，然后按下Ctrl+X,或者Ctrl+C，就可以对这整行进行复制，剪切了。(同样适用于粘贴)&lt;br /&gt;
 &lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;img src="http://blog.rongzhiwang.com/baicaps/aggbug/60.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>baicaps</dc:creator>
            <guid>http://blog.rongzhiwang.com/baicaps/archive/2009/08/16/vs.net.aspx</guid>
            <pubDate>Sun, 16 Aug 2009 02:38:11 GMT</pubDate>
            <wfw:comment>http://blog.rongzhiwang.com/baicaps/comments/60.aspx</wfw:comment>
            <comments>http://blog.rongzhiwang.com/baicaps/archive/2009/08/16/vs.net.aspx#feedback</comments>
            <wfw:commentRss>http://blog.rongzhiwang.com/baicaps/comments/commentRss/60.aspx</wfw:commentRss>
            <trackback:ping>http://blog.rongzhiwang.com/baicaps/services/trackbacks/60.aspx</trackback:ping>
        </item>
        <item>
            <title>DIV+CSS网页布局常用的一些基础知识整理</title>
            <category>DIV+CSS</category>
            <link>http://blog.rongzhiwang.com/baicaps/archive/2009/08/15/divcss.aspx</link>
            <description>&lt;p&gt;CSS命名规范&lt;/p&gt;
&lt;p&gt;一．文件命名规范&lt;/p&gt;
&lt;p&gt;全局样式：global.css；&lt;br /&gt;
框架布局：layout.css；&lt;br /&gt;
字体样式：font.css；&lt;br /&gt;
链接样式：link.css；&lt;br /&gt;
打印样式：print.css；&lt;/p&gt;
&lt;p&gt;二．常用类/ID命名规范&lt;/p&gt;
&lt;p&gt;页　眉：header&lt;br /&gt;
内　容：content&lt;br /&gt;
容　器：container&lt;br /&gt;
页　脚：footer&lt;br /&gt;
版　权：copyright　&lt;br /&gt;
导　航：menu&lt;br /&gt;
主导航：mainMenu&lt;br /&gt;
子导航：subMenu&lt;br /&gt;
标　志：logo&lt;br /&gt;
标　语：banner&lt;br /&gt;
标　题：title&lt;br /&gt;
侧边栏：sidebar&lt;br /&gt;
图　标：Icon&lt;br /&gt;
注　释：note&lt;br /&gt;
搜　索：search&lt;br /&gt;
按　钮：btn&lt;br /&gt;
登　录：login&lt;br /&gt;
链　接：link&lt;br /&gt;
信息框：manage&lt;br /&gt;
……&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;常用类的命名应尽量以常见英文单词为准，做到通俗易懂，并在适当的地方加以注释。对于二级类/ID命名，则采用组合书写的模式，后一个单词的首字母应大写： &lt;br /&gt;
诸如“搜索框”则应命名为“searchInput”、&lt;br /&gt;
       “搜索图标”命名这“searchIcon”、&lt;br /&gt;
       “搜索按钮”命名为“searchBtn&lt;/p&gt;
&lt;p&gt;CSS书写规范及方法&lt;/p&gt;
&lt;p&gt;一. 常规书写规范及方法&lt;/p&gt;
&lt;p&gt;1. 选择DOCTYPE：&lt;/p&gt;
&lt;p&gt;XHTML 1.0 提供了三种DTD声明可供选择：&lt;/p&gt;
&lt;p&gt;过渡的(Transitional):要求非常宽松的DTD，它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法)。完整代码如下：&lt;/p&gt;
&lt;p&gt;&lt;br class="spacer_" /&gt;
 &lt;/p&gt;
&lt;p&gt;严格的(Strict):要求严格的DTD，你不能使用任何表现层的标识和属性，例如&lt;br /&gt;
。完整代码如下：&lt;/p&gt;
&lt;p&gt;&lt;br class="spacer_" /&gt;
 &lt;/p&gt;
&lt;p&gt;框架的(Frameset):专门针对框架页面设计使用的DTD，如果你的页面中包含有框架，需要采用这种DTD。完整代码如下：&lt;/p&gt;
&lt;p&gt;&lt;br class="spacer_" /&gt;
 &lt;/p&gt;
&lt;p&gt;理想情况当然是严格的DTD，但对于我们大多数刚接触web标准的设计师来说，过渡的DTD(XHTML 1.0 Transitional)是目前理想选择(包括本站，使用的也是过渡型DTD)。因为这种DTD还允许我们使用表现层的标识、元素和属性，也比较容易通过W3C的代码校验。&lt;/p&gt;
&lt;p&gt;2. 指定语言及字符集：&lt;/p&gt;
&lt;p&gt;为文档指定语言：&lt;/p&gt;
&lt;p&gt;&lt;br class="spacer_" /&gt;
 &lt;/p&gt;
&lt;p&gt;为了被浏览器正确解释和通过W3C代码校验，所有的XHTML文档都必须声明它们所使用的编码语言；如：&lt;br /&gt;
常用的语言定义：&lt;/p&gt;
&lt;p&gt;标准的XML文档语言定义：&lt;/p&gt;
&lt;p&gt;针对老版本的浏览器的语言定义：&lt;/p&gt;
&lt;p&gt;为提高字符集，建议采用“utf-8”。&lt;/p&gt;
&lt;p&gt;3. 调用样式表：&lt;/p&gt;
&lt;p&gt;外部样式表调用：&lt;/p&gt;
&lt;p&gt;页面内嵌法：就是将样式表直接写在页面代码的head区。 如：&lt;/p&gt;
&lt;p&gt;&amp;lt;style type=”text/css”&amp;gt;&amp;lt;!– body { background : white ; color : black ; } –&amp;gt; &amp;lt;/style&amp;gt;&lt;br /&gt;
外部调用法：将样式表写在一个独立的.css文件中，然后在页面head区用类似以下代码调用。&lt;/p&gt;
&lt;p&gt;&amp;lt;link rel=”stylesheet” rev=”stylesheet” href=”css/style.css” type=”text/css” media=”all” /&amp;gt;&lt;/p&gt;
&lt;p&gt;在符合web标准的设计中，推荐使用外部调用法，可以不修改页面只修改.css文件而改变页面的样式。如果所有页面都调用同一个样式表文件，那么改一个样式表文件，可以改变所有文件的样式。&lt;/p&gt;
&lt;p&gt;4、选用恰当的元素：&lt;/p&gt;
&lt;p&gt;根据文档的结构来选择HTML元素，而不是根据HTML元素的样式来选择。例如，使用P元素来包含文字段落，而不是为了换行。如果在创建文档时找不到适当的元素，则可以考虑使用通用的div 或者是span；&lt;/p&gt;
&lt;p&gt;避免过渡使用div和span。少量、适当的使用div和span元素可以使文档的结构更加清晰合理并且易于使用样式；&lt;/p&gt;
&lt;p&gt;尽可能少地使用标签和结构嵌套，这样不但可以使文档结构清晰，同时也可以保持文件的小巧，在提高用户下载速度的同时，也易于浏览器对文档的解释及呈视；&lt;/p&gt;
&lt;p&gt;5、派生选择器：&lt;/p&gt;
&lt;p&gt;可以使用派生选择器给一个元素里的子元素定义样式，在简化命名的同时也使结构更加的清晰化，如：&lt;/p&gt;
&lt;p&gt;.mainMenu ul li {background:url(images/bg.gif;)}&lt;/p&gt;
&lt;p&gt;6、辅助图片用背影图处理：&lt;/p&gt;
&lt;p&gt;这里的”辅助图片”是指那些不是作为页面要表达的内容的一部分，而仅仅用于修饰、间隔、提醒的图片。将其做背影图处理，可以在不改动页面的情况下通过CSS样式来进行改动，如：&lt;/p&gt;
&lt;p&gt;#logo {background:url(images/logo.jpg) #FEFEFE no-repeat right bottom;}&lt;/p&gt;
&lt;p&gt;7、结构与样式分离：&lt;/p&gt;
&lt;p&gt;在页面里只写入文档的结构，而将样式写于css文件中，通过外部调用CSS样式表来实现结构与样式的分离。&lt;/p&gt;
&lt;p&gt;8、文档的结构化书写：&lt;/p&gt;
&lt;p&gt;页面CSS文档都应采用结构化的书写方式，逻辑清晰易于阅读。如：&lt;/p&gt;
&lt;p&gt;&amp;lt;div id=”mainMenu”&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;a href=”#” &amp;gt;首页&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;a href=”#” &amp;gt;介绍&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;a href=”#” &amp;gt;服务&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;/*=====主导航=====*/&lt;br /&gt;
#mainMenu {&lt;br /&gt;
width:100%;&lt;br /&gt;
height:30px;&lt;br /&gt;
background:url(images/mainMenu_bg.jpg) repeat-x;&lt;br /&gt;
}&lt;br /&gt;
#mainMenu ul li {&lt;br /&gt;
float:left;&lt;br /&gt;
line-height:30px;&lt;br /&gt;
margin-right:1px;&lt;br /&gt;
cursor:pointer;&lt;br /&gt;
}&lt;br /&gt;
/*=====主导航结束=====*/&lt;/p&gt;
&lt;p&gt;9、鼠标手势：&lt;/p&gt;
&lt;p&gt;在XHTML标准中，hand只被IE识别，当需要将鼠标手势转换为“手形”时，则将“hand”换为“pointer”，即“cursor:pointer;”&lt;/p&gt;
&lt;p&gt;二．注释书写规范&lt;/p&gt;
&lt;p&gt;1、行间注释：&lt;/p&gt;
&lt;p&gt;直接写于属性值后面，如：&lt;/p&gt;
&lt;p&gt;.search{&lt;br /&gt;
border:1px solid #fff;/*定义搜索输入框边框*/&lt;br /&gt;
background:url(../images/icon.gif) no-report #333;/*定义搜索框的背景*/&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;2、整段注释：&lt;/p&gt;
&lt;p&gt;分别在开始及结束地方加入注释，如：&lt;/p&gt;
&lt;p&gt;/*=====搜索条=====*/&lt;br /&gt;
.search {&lt;br /&gt;
border:1px solid #fff;&lt;br /&gt;
background:url(../images/icon.gif) no-repeat #333;&lt;br /&gt;
}&lt;br /&gt;
/*=====搜索条结束=====*/&lt;/p&gt;
&lt;p&gt;三．样式属性代码缩写&lt;/p&gt;
&lt;p&gt;1、不同类有相同属性及属性值的缩写：&lt;/p&gt;
&lt;p&gt;对于两个不同的类，但是其中有部分相同甚至是全部相同的属性及属性值时，应对其加以合并缩写，特别是当有多个不同的类而有相同的属性及属性值时，合并缩写可以减少代码量并易于控制。如：&lt;/p&gt;
&lt;p&gt;#mainMenu {&lt;br /&gt;
background:url(../images/bg.gif);&lt;br /&gt;
border:1px solid #333;&lt;br /&gt;
width:100%;&lt;br /&gt;
height:30px;&lt;br /&gt;
overflow:hidden;&lt;br /&gt;
}&lt;br /&gt;
#subMenu {&lt;br /&gt;
background:url(../images/bg.gif);&lt;br /&gt;
border:1px solid #333;&lt;br /&gt;
width:100%;&lt;br /&gt;
height:20px;&lt;br /&gt;
overflow:hidden;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;两个不同类的属性值有重复之处，刚可以缩写为：&lt;/p&gt;
&lt;p&gt;#mainMenu,#subMenu {&lt;br /&gt;
background:url(../images/bg.gif);&lt;br /&gt;
border:1px solid #333;&lt;br /&gt;
width:100%;&lt;br /&gt;
overflow:hidden;&lt;br /&gt;
}&lt;br /&gt;
#mainMenu {height:30px;}&lt;br /&gt;
#subMenu {height:20px;}&lt;/p&gt;
&lt;p&gt;2、同一属性的缩写：&lt;/p&gt;
&lt;p&gt;同一属性根据它的属性值也可以进行简写，如：&lt;/p&gt;
&lt;p&gt;.search {&lt;br /&gt;
background-color:#333;&lt;br /&gt;
background-image:url(../images/icon.gif);&lt;br /&gt;
background-repeat: no-repeat;&lt;br /&gt;
background-position:50% 50%;&lt;br /&gt;
}&lt;br /&gt;
.search {&lt;br /&gt;
background:#333 url(../images/icon.gif) no-repeat 50% 50%;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;3、内外侧边框的缩写：&lt;/p&gt;
&lt;p&gt;在CSS中关于内外侧边框的距离是按照上、右、下、左的顺序来排列的，当这四个属性值不同时也可直接缩写，如：&lt;/p&gt;
&lt;p&gt;.btn {&lt;br /&gt;
margin-top:10px;&lt;br /&gt;
margin-right:8px;&lt;br /&gt;
margin-bottom:12px;&lt;br /&gt;
margin-left:5px;&lt;br /&gt;
padding-top:10px;&lt;br /&gt;
padding-right:8px;&lt;br /&gt;
padding-bottom:12px;&lt;br /&gt;
padding-left:8px;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;则可缩写为：&lt;/p&gt;
&lt;p&gt;.btn {&lt;br /&gt;
Margin:10px 8px 12px 5px;&lt;br /&gt;
Padding:10px 8px 12px 5px;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;而如果当上边与下边、左边与右边的边框属性值相同时，则属性值可以直接缩写为两个，如：&lt;/p&gt;
&lt;p&gt;.btn {&lt;br /&gt;
margin-top:10px;&lt;br /&gt;
margin-right:5px;&lt;br /&gt;
margin-bottom:10px;&lt;br /&gt;
margin-left:5px;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;缩写为：&lt;/p&gt;
&lt;p&gt;.btn {margin:10px 5px;}&lt;/p&gt;
&lt;p&gt;而当上下左右四个边框的属性值都相同时，则可以直接缩写成一个，如：&lt;/p&gt;
&lt;p&gt;.btn {&lt;br /&gt;
margin-top:10px;&lt;br /&gt;
margin-right:10px;&lt;br /&gt;
margin-bottom:10px;&lt;br /&gt;
margin-left:10px;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;缩写为：&lt;/p&gt;
&lt;p&gt;.btn{margin:10px;}&lt;/p&gt;
&lt;p&gt;4、颜色值的缩写：&lt;/p&gt;
&lt;p&gt;当RGB三个颜色值数值相同时，可缩写颜色值代码。如：&lt;/p&gt;
&lt;p&gt;.menu { color:#ff3333;}&lt;/p&gt;
&lt;p&gt;可缩写为:&lt;/p&gt;
&lt;p&gt;.menu {color:#f33;}&lt;/p&gt;
&lt;p&gt;四．hack书写规范 &lt;/p&gt;
&lt;p&gt;因为不同浏览器对W3C标准的支持不一样，各个浏览器对于页面的解释呈视也不尽相同，比如IE在很多情况下就与FF存在3px的差距，对于这些差异性，就需要利用css 的hack来进行调整，当然在没有必要的情况下，最好不要写hack来进行调整，避免因为hack而导致页面出现问题。&lt;/p&gt;
&lt;p&gt;1、 IE6、IE7、Firefox之间的兼容写法：&lt;/p&gt;
&lt;p&gt;写法一：&lt;/p&gt;
&lt;p&gt;IE都能识别*;标准浏览器(如FF)不能识别*；&lt;br /&gt;
IE6能识别*，但不能识别 !important,&lt;br /&gt;
IE7能识别*，也能识别!important;&lt;br /&gt;
FF不能识别*，但能识别!important;&lt;br /&gt;
根据上述表达，同一类/ID下的CSS 　hack可写为：&lt;br /&gt;
.searchInput {&lt;br /&gt;
background-color:#333;/*三者皆可*/&lt;br /&gt;
*background-color:#666　!important; /*仅IE7*/&lt;br /&gt;
*background-color:#999; /*仅IE6及IE6以下*/&lt;br /&gt;
}&lt;br /&gt;
一般三者的书写顺序为：FF、IE7、IE6.&lt;/p&gt;
&lt;p&gt;写法二：&lt;/p&gt;
&lt;p&gt;IE6可识别“_”，而IE7及FF皆不能识别，所以当只针对IE6与IE7及FF之间的区别时，可这样书写：&lt;br /&gt;
.searchInput {&lt;br /&gt;
background-color:#333;/*通用*/&lt;br /&gt;
_background-color:#666;/*仅IE6可识别*/&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;写法三：&lt;/p&gt;
&lt;p&gt;*+html 与 *html 是IE特有的标签, Firefox 暂不支持。&lt;br /&gt;
.searchInput {background-color:#333;}&lt;br /&gt;
*html .searchInput {background-color:#666;}/*仅IE6*/&lt;br /&gt;
*+html .searchInput {background-color:#555;}/*仅IE7*/&lt;/p&gt;
&lt;p&gt;屏蔽IE浏览器：&lt;/p&gt;
&lt;p&gt;select是选择符，根据情况更换。第二句是MAC上safari浏览器独有的。&lt;/p&gt;
&lt;p&gt;*:lang(zh) select {font:12px  !important;} /*FF的专用*/&lt;br /&gt;
select:empty {font:12px  !important;} /*safari可见*/&lt;/p&gt;
&lt;p&gt;IE6可识别：&lt;/p&gt;
&lt;p&gt;这里主要是通过CSS注释分开一个属性与值，注释在冒号前。&lt;/p&gt;
&lt;p&gt;select { display /*IE6不识别*/:none;}&lt;/p&gt;
&lt;p&gt;IE的if条件hack写法：&lt;/p&gt;
&lt;p&gt;所有的IE可识别：&lt;/p&gt;
&lt;p&gt;&amp;lt;!–[if IE]&amp;gt; Only IE &amp;lt;![end if]–&amp;gt;&lt;br /&gt;
只有IE5.0可以识别:&lt;br /&gt;
&amp;lt;!–[if IE 5.0]&amp;gt; Only IE 5.0 &amp;lt;![end if]–&amp;gt;&lt;br /&gt;
IE5.0包换IE5.5都可以识别:&lt;br /&gt;
&amp;lt;!–[if gt IE 5.0]&amp;gt; Only IE 5.0+ &amp;lt;![end if]–&amp;gt;&lt;br /&gt;
仅IE6可识别:&lt;br /&gt;
&amp;lt;!–[if lt IE 6]&amp;gt; Only IE 6- &amp;lt;![end if]–&amp;gt;&lt;br /&gt;
IE6以及IE6以下的IE5.x都可识别:&lt;br /&gt;
&amp;lt;!–[if gte IE 6]&amp;gt; Only IE 6/+ &amp;lt;![end if]–&amp;gt;&lt;br /&gt;
仅IE7可识别:&lt;br /&gt;
&amp;lt;!–[if lte IE 7]&amp;gt; Only IE 7/- &amp;lt;![end if]–&amp;gt;&lt;/p&gt;
&lt;p&gt;2、清除浮动：&lt;/p&gt;
&lt;p&gt;在Firefox中，当子级都为浮动时，那么父级的高度就无法完全的包住整个子级，那么这时用这个清除浮动的HACK来对父级做一次定义，那么就可以解决这个问题。&lt;/p&gt;
&lt;p&gt;select:after {&lt;br /&gt;
content:”.”;&lt;br /&gt;
display:block;&lt;br /&gt;
height:0;&lt;br /&gt;
clear:both;&lt;br /&gt;
visibility:hidden;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;&lt;br class="spacer_" /&gt;
 &lt;/p&gt;
&lt;p style="text-align: right"&gt;来源：&lt;a href="http://52css.com/article.asp?id=828" target="_blank"&gt;&lt;font color="#00a0e3"&gt;我爱CSS&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- You can start editing here. --&gt;&lt;!-- If comments are open, but there are no comments. --&gt;&lt;br /&gt;
&lt;!-- Ends CommentsList--&gt;&lt;/p&gt;
&lt;img src="http://blog.rongzhiwang.com/baicaps/aggbug/59.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>baicaps</dc:creator>
            <guid>http://blog.rongzhiwang.com/baicaps/archive/2009/08/15/divcss.aspx</guid>
            <pubDate>Sat, 15 Aug 2009 04:28:30 GMT</pubDate>
            <wfw:comment>http://blog.rongzhiwang.com/baicaps/comments/59.aspx</wfw:comment>
            <comments>http://blog.rongzhiwang.com/baicaps/archive/2009/08/15/divcss.aspx#feedback</comments>
            <wfw:commentRss>http://blog.rongzhiwang.com/baicaps/comments/commentRss/59.aspx</wfw:commentRss>
            <trackback:ping>http://blog.rongzhiwang.com/baicaps/services/trackbacks/59.aspx</trackback:ping>
        </item>
        <item>
            <title>新版.Net开发必备十大工具 </title>
            <category>.NET</category>
            <link>http://blog.rongzhiwang.com/baicaps/archive/2009/08/07/.net.aspx</link>
            <description>&lt;p&gt;&lt;strong&gt;Snippet Compiler&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;   Snippet Compiler是一个基于 &lt;a class="channel_keylink" href="http://windows.chinaitlab.com/" target="_blank"&gt;Windows&lt;/a&gt; 的小型应用程序，你可以通过它来编写、编译和运行代码。如果你具有较小的代码段，并且你不想创建完整的 Visual Studio .NET 项目（以及该项目附带的所有文件），则该工具会很有用。现在Snippet Compiler已经支持.NET Framework 3.5，最新版本为Snippet Compiler Live 2008 Ultimate Edition for Developers (Alpha)，如下图所示：&lt;br /&gt;
   &lt;br /&gt;
  &lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="" src="http://dotnet.chinaitlab.com/UploadFiles_6597/200806/20080620100836928.JPG" width="475" height="465" twffan="done" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
   &lt;br /&gt;
   官方主页：&lt;a href="http://www.sliver.comhttp//dotnet.chinaitlab.com/SnippetCompiler/"&gt;&lt;font color="#0000ff"&gt;http://www.sliver.comhttp://dotnet.chinaitlab.com/SnippetCompiler/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;strong&gt;  Microsoft Source Analysis for &lt;a class="channel_keylink" href="http://dotnet.chinaitlab.com/List_233.html" target="_blank"&gt;C#&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;   Microsoft Source Analysis for &lt;a class="channel_keylink" href="http://dotnet.chinaitlab.com/List_233.html" target="_blank"&gt;C#&lt;/a&gt;是一款&lt;a class="channel_keylink" href="http://dotnet.chinaitlab.com/List_233.html" target="_blank"&gt;C#&lt;/a&gt;（不支持VB.NET）代码规范检查工具，前身是微软内部代码规范检查和代码格式强制工具StyleCop，目的是帮助项目团队执行一系列常用的源代码格式规范，它会根据预定义的C#代码格式的最佳实践进行检查，与FxCop不同的是它直接对源代码进行检查，且并不提供灵活的规则设置，强制开发者使用相同的习惯进行C#代码的编写。如下图所示：&lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="" src="http://dotnet.chinaitlab.com/UploadFiles_6597/200806/20080620100836727.JPG" width="488" height="373" twffan="done" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GhostDoc&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;   GhostDoc是Visual Studio的一个免费插件，可以帮助开发者生成比较完整规范的XML格式代码注释，如果你的代码遵循微软类库开发人员设计规范 ，由它自动产生的注释就已经完全可以很好地表达开发者创建的方法或者属性的意图，无需手工再进行修改。有了这些标准的XML注释，我们可以使用微软的文档工具Sandcastle生成专业级别的帮助文档。如我们有这样一段代码：&lt;/p&gt;
&lt;p&gt;   &lt;/p&gt;
&lt;table border="1" cellspacing="0" bordercolor="#cccccc" cellpadding="1" width="80%" bgcolor="#ffffff" align="center" heihgt=""&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt; public bool Add(string item) &lt;br /&gt;
            { &lt;br /&gt;
            //...... &lt;br /&gt;
            } &lt;br /&gt;
            &lt;br /&gt;
            public void AppendHtmlText(IHtmlProvider htmlProvider) &lt;br /&gt;
            { &lt;br /&gt;
            //...... &lt;br /&gt;
            }&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;   &lt;br /&gt;
   使用GhostDoc生成的注释如下：&lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;table border="1" cellspacing="0" bordercolor="#cccccc" cellpadding="1" width="80%" bgcolor="#ffffff" align="center" heihgt=""&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt; /// &amp;lt;summary&amp;gt; &lt;br /&gt;
            /// Adds the specified item. &lt;br /&gt;
            /// &amp;lt;/summary&amp;gt; &lt;br /&gt;
            /// &amp;lt;param name="item"&amp;gt;The item.&amp;lt;/param&amp;gt; &lt;br /&gt;
            /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt; &lt;br /&gt;
            public bool Add(string item) &lt;br /&gt;
            { &lt;br /&gt;
            //...... &lt;br /&gt;
            } &lt;br /&gt;
            &lt;br /&gt;
            /// &amp;lt;summary&amp;gt; &lt;br /&gt;
            /// Appends the HTML text. &lt;br /&gt;
            /// &amp;lt;/summary&amp;gt; &lt;br /&gt;
            /// &amp;lt;param name="htmlProvider"&amp;gt;The HTML provider.&amp;lt;/param&amp;gt; &lt;br /&gt;
            public void AppendHtmlText(IHtmlProvider htmlProvider) &lt;br /&gt;
            { &lt;br /&gt;
            //...... &lt;br /&gt;
            } &lt;br /&gt;
            &lt;br /&gt;
             &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;br /&gt;
   &lt;br /&gt;
   官方主页：&lt;a href="http://www.roland-weigelt.de/ghostdoc/"&gt;&lt;font color="#0033ff"&gt;http://www.roland-weigelt.de/ghostdoc/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;  &lt;strong&gt; Sandcastle&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;   Sandcastle是微软发布的一个帮助文档生成工具，它通过反射程序集中的源代码和添加代码到中的XML注释来创建专业级别的帮助文档。Sandcastle于2006年推出，它的面世也使得曾经列入.NET开发必备十大工具之一的文档生成工具NDoc的作者Kevin Downs在2006年7月宣告不再投入NDoc Open Source Project的开发。生成的文档效果如下图所示：&lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="" src="http://dotnet.chinaitlab.com/UploadFiles_6597/200806/20080620100837877.JPG" width="459" height="311" twffan="done" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Nunit  + &lt;/strong&gt;TestDriven.Net  &lt;/p&gt;
&lt;p&gt;   NUnit 是为 .NET 框架生成的开放源代码单元&lt;a class="channel_keylink" href="http://softtest.chinaitlab.com/" target="_blank"&gt;测试&lt;/a&gt;框架。NUnit 使你可以用你喜欢的语言编写&lt;a class="channel_keylink" href="http://softtest.chinaitlab.com/" target="_blank"&gt;测试&lt;/a&gt;，从而测试应用程序的特定功能。当你首次编写代码时，单元测试是一种测试代码功能的很好方法，它还提供了一种对应用程序进行回归测试的方法。NUnit 应用程序提供了一个用于编写单元测试的框架，以及一个运行这些测试和查看结果的图形界面。&lt;/p&gt;
&lt;p&gt;   官方主页：&lt;a href="http://www.nunit.org/"&gt;&lt;font color="#0033ff"&gt;http://www.nunit.org&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;    &lt;strong&gt;MyGeneration&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;   作为.NET开发人员，手边有一款代码生成工具必不可少。旧版.NET开发必备十大工具中，作者曾经推荐了非常著名的CodeSmith，不幸的是现在CodeSmith已经商业化，需要花钱购买；幸运的是我们又有一款免费并开源的代码生成工具选择MyGeneration，它的功能丝毫不亚于CodeSmith，完全基于模板引擎进行代码的生成，如下图所示：&lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="" src="http://dotnet.chinaitlab.com/UploadFiles_6597/200806/20080620100837763.JPG" width="441" height="339" twffan="done" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
   &lt;br /&gt;
   官方主页：&lt;a href="http://sourceforge.net/projects/mygeneration"&gt;&lt;font color="#0033ff"&gt;http://sourceforge.net/projects/mygeneration&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;   Reflector for .NET&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;   相信大名鼎鼎的Reflector for .NET大家都已经用过了，几年前它已经位于.NET开发必备十大工具榜，现在自然也不能例外。它是一个类浏览器和反编译器，可以分析程序集并向你展示它的所有秘密。使用Reflector for .NET可以浏览程序集的类和方法，可以分析由这些类和方法生成的 Microsoft 中间语言 (MSIL)，并且可以反编译这些类和方法并查看 C# 或 Visual Basic.NET 中的等价类和方法。经过多年的发展，Reflector for .NET已经发展到了5.1版本，并且提供了相当丰富的插件，利用这些插件我们可以浏览Silverlight程序结构、浏览WPF资源文件、与TestDriven.net集成等。如下图所示：&lt;br /&gt;
   &lt;br /&gt;
  &lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="" src="http://dotnet.chinaitlab.com/UploadFiles_6597/200806/20080620100837152.JPG" width="460" height="339" twffan="done" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;The Regulator&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;   The Regulator能够使生成和测试正则表达式变得很容易，它允许你输入一个正则表达式以及一些针对其运行该表达式的输入。这样，在应用程序中实现该正则表达式之前，你便可以了解它将产生什么效果以及它将返回哪些种类的匹配项。另外它还提供了正则表达式库管理功能，在线更新正则表达式库，可以在RegexLib.com上搜索需要的正则表达式，如下图所示：&lt;/p&gt;
&lt;p&gt;  &lt;/p&gt;
&lt;p align="center"&gt;&lt;img alt="" src="http://dotnet.chinaitlab.com/UploadFiles_6597/200806/20080620100838793.JPG" width="450" height="328" twffan="done" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
   &lt;br /&gt;
   官方主页：&lt;a href="http://sourceforge.net/projects/regulator/"&gt;&lt;font color="#0033ff"&gt;http://sourceforge.net/projects/regulator/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;    LINQPad&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;    随着在.NET Framework 3.5中对于LINQ的支持，越来越多的开发者在开发中使用了LINQ to SQL，但是编写LINQ to SQL查询似乎又成了一件很麻烦的事情，好在我们还有LINQPad这个工具，用来编写LINQ查询，不仅仅是LINQ to SQL，同时它也支持LINQ to XML、LINQ to Objects，另外LINQPad是完全免费的且无需安装，只要&lt;a class="channel_keylink" href="http://download.chinaitlab.com/" target="_blank"&gt;下载&lt;/a&gt;它的可执行文件就可以了。官方主页：&lt;a href="http://www.linqpad.net/"&gt;&lt;font color="#333333"&gt;http://www.linqpad.net/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;strong&gt;   NAnt&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;   NAnt 是一个基于 .NET 的生成工具，与当前版本的 Visual Studio .NET 不同，它使得为你的项目创建生成过程变得非常容易。当你拥有大量从事单个项目的开发人员时，你不能依赖于从单个用户的座位进行生成。你也不希望必须定期手动生成该项目。你更愿意创建每天晚上运行的自动生成过程。NAnt 使你可以生成解决方案、复制文件、运行 NUnit 测试、发送电子邮件，等等。遗憾的是，NAnt 缺少漂亮的图形界面，但它的确具有可以指定应该在生成过程中完成哪些任务的控制台应用程序和 XML 文件。目前NAnt已经支持.NET Framework 3.5，它的最新版本是0.86 Beta 1。官方主页：&lt;a href="http://nant.sourceforge.net/"&gt;&lt;font color="#333333"&gt;http://nant.sourceforge.net/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://blog.rongzhiwang.com/baicaps/aggbug/57.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>baicaps</dc:creator>
            <guid>http://blog.rongzhiwang.com/baicaps/archive/2009/08/07/.net.aspx</guid>
            <pubDate>Fri, 07 Aug 2009 12:56:05 GMT</pubDate>
            <wfw:comment>http://blog.rongzhiwang.com/baicaps/comments/57.aspx</wfw:comment>
            <comments>http://blog.rongzhiwang.com/baicaps/archive/2009/08/07/.net.aspx#feedback</comments>
            <wfw:commentRss>http://blog.rongzhiwang.com/baicaps/comments/commentRss/57.aspx</wfw:commentRss>
            <trackback:ping>http://blog.rongzhiwang.com/baicaps/services/trackbacks/57.aspx</trackback:ping>
        </item>
        <item>
            <title>ASP.NET Web应用程序安全解决方案浅析</title>
            <category>.NET</category>
            <link>http://blog.rongzhiwang.com/baicaps/archive/2009/07/30/asp.net-web.aspx</link>
            <description>&lt;div class="postText"&gt;&lt;span&gt;一、&lt;/span&gt;ASP.NET Web&lt;span style="font-family: SimSun"&gt;应用程序架构安全隐患&lt;/span&gt;
&lt;p style="text-indent: -18pt; margin-left: 18pt"&gt;&lt;span&gt;1.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;对于程序集主要威胁：未验证的访问、反向工程、代码注入、通过异常获得程序信息、未审核访问。&lt;/span&gt; &lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 18pt"&gt;&lt;span&gt;2.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;客户端与&lt;/span&gt;Web&lt;span style="font-family: SimSun"&gt;应用程序之间的安全隐患：代码注入（跨站点脚本或缓冲区溢出攻击）、网络监控（密码和敏感应用程序数据探测）、参数破解（表单字段、查询字符串、&lt;/span&gt;Cookie&lt;span style="font-family: SimSun"&gt;、视图状态、&lt;/span&gt;HTTP&lt;span style="font-family: SimSun"&gt;头信息）、会话状态变量&lt;/span&gt;ID&lt;span style="font-family: SimSun"&gt;取得、信息获取（通常使用异常）。&lt;/span&gt; &lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 18pt"&gt;&lt;span&gt;3.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;Web&lt;span style="font-family: SimSun"&gt;应用程序客户端与企业服务之间的安全隐患：非审核访问、破解配置数据、网络监视、未约束代理、数据复制。&lt;/span&gt; &lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 18pt"&gt;&lt;span&gt;4.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;Web&lt;span style="font-family: SimSun"&gt;服务客户端及其服务之间的安全隐患：非审核访问、参数破解、配置数据取得、网络监、消息回复。&lt;/span&gt; &lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 18pt"&gt;&lt;span&gt;5.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;Remoting&lt;span style="font-family: SimSun"&gt;客户端及服务器之间的安全隐患：非审核访问、参数破解、序列化、网络监控。&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 18pt"&gt;&lt;span&gt;6.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;客户端到数据之间的安全隐患：非审核访问、&lt;/span&gt;SQL&lt;span style="font-family: SimSun"&gt;注入、破解数据模型和链接详细信息、网络监控、破解配置数据、破解面干应用程序数据。&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 10.5pt"&gt;&lt;br /&gt;
* ASP.NET&lt;span style="font-family: SimSun"&gt;安全架构注意事项&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;1.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;在浏览器认证用户；&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 28.5pt"&gt;&lt;span&gt;2.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;在浏览器和防火墙通路中&lt;/span&gt;1)&lt;span style="font-family: SimSun"&gt;保护敏感数据&lt;/span&gt;2)&lt;span style="font-family: SimSun"&gt;阻止参数破解&lt;/span&gt;3)&lt;span style="font-family: SimSun"&gt;阻止会话攻击和&lt;/span&gt;Cookie&lt;span style="font-family: SimSun"&gt;回复攻击&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 28.5pt"&gt;&lt;span&gt;3.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;在&lt;/span&gt;Web&lt;span style="font-family: SimSun"&gt;应用程序侧&lt;/span&gt;1)&lt;span style="font-family: SimSun"&gt;提供安全配置&lt;/span&gt;2)&lt;span style="font-family: SimSun"&gt;处理异常&lt;/span&gt;3)&lt;span style="font-family: SimSun"&gt;审核用户&lt;/span&gt;4)&lt;span style="font-family: SimSun"&gt;验证输入&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 28.5pt"&gt;&lt;span&gt;4.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;应用程序服务器&lt;/span&gt;1)&lt;span style="font-family: SimSun"&gt;认证和审核上传身份&lt;/span&gt;2)&lt;span style="font-family: SimSun"&gt;审核并记录活动和事务&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 28.5pt"&gt;&lt;span&gt;5.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;在应用程序服务器和数据库间保护敏感数据&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 28.5pt"&gt;&lt;span&gt;6.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;数据库中加密或者哈希加密敏感数据&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: SimSun"&gt;二、&lt;/span&gt;ASP.NET Web&lt;span style="font-family: SimSun"&gt;应用程序安全性隐患防治办法&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 18pt"&gt;&lt;span&gt;1.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;防止跨站点脚本攻击（&lt;/span&gt;Cross-Site Scripting Attack&lt;span style="font-family: SimSun"&gt;）&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;攻击方法：在页面通过输入脚本或HTML内容获取敏感数据。&lt;br /&gt;
威胁指数：6&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;攻击结果：应用程序拒绝服务或重启，获得错误堆栈信息（※）推测代码进行下一步攻击。&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;※注：在ASP.NET配置文件中如果未关闭CustomErrors则可能导致在出现系统异常时显示错误行代码或数据库连接字符串，泄漏配置数据，造成危险隐患。&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;预防措施：ASP.NET控件验证或服务器端输入验证。&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 15pt"&gt;采用客户端验证和服务器端验证结合的方式对用户输入进行验证，通过比较控件输入和其HTML译码值的一致性确认输入字符串中是否含有HTML特殊符号，以此作为依据转化HTML特殊符号，防止脚本在回发表示时触发。&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm"&gt; &lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 18pt"&gt;&lt;span&gt;2.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;防止&lt;/span&gt;SQL&lt;span style="font-family: SimSun"&gt;注入攻击（&lt;/span&gt;SQL Injection Attack&lt;span style="font-family: SimSun"&gt;）&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;攻击方法：通过画面输入或URL参数修改，利用其作为SQL查询条件的特殊性，将输入SQL文注入并返回结果的攻击。&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;威胁指数：9&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;攻击结果：可查询敏感数据并可修改系统数据。&lt;/p&gt;
&lt;p style="margin-left: 18pt"&gt;&lt;span style="font-family: SimSun"&gt;预防措施：在数据更新和查询时使用数据库参数对象或使用自定义方法转换输入参数，以使注入&lt;/span&gt;SQL&lt;span style="font-family: SimSun"&gt;文失效。&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 18pt"&gt;&lt;span&gt;3.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;验证用户输入&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 18pt"&gt;&lt;span style="font-family: SimSun"&gt;通过客户端验证为主、服务器端验证为辅（当禁用客户端&lt;/span&gt;Javascript&lt;span style="font-family: SimSun"&gt;时服务器端验证就尤为重要）&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 18pt"&gt;&lt;span style="font-family: SimSun"&gt;客户端验证主要负责验证用户输入的类型、长度、关联关系的验证（此功能由系统扩展控件提供）；&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 18pt"&gt;&lt;span style="font-family: SimSun"&gt;服务器端验证分为两部分：&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 36pt"&gt;&lt;span&gt;1)&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;输入验证&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family: SimSun"&gt;输入验证需要对用户输入文字的&lt;/span&gt;HTML&lt;span style="font-family: SimSun"&gt;特殊字符进行验证，含有特殊字符的要抛出系统错误；数据的长度控制尽量在画面通过控件的允许输入长度进行控制；&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 36pt"&gt;&lt;span&gt;2)&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;数据验证&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family: SimSun"&gt;验证数据类型、长度等；此验证行为在对象上进行。&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 18pt"&gt;&lt;span&gt;4.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;使用&lt;/span&gt;Hash&lt;span style="font-family: SimSun"&gt;算法保存密码&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 18pt"&gt;&lt;span style="font-family: SimSun"&gt;使用&lt;/span&gt;ASP.NET Membership&lt;span style="font-family: SimSun"&gt;管理用户，用户密码使用&lt;/span&gt;Hash&lt;span style="font-family: SimSun"&gt;算法和&lt;/span&gt;Salt&lt;span style="font-family: SimSun"&gt;加密，安全性高；&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 18pt"&gt;&lt;span style="font-family: SimSun"&gt;对于其它需要保存的密码，系统基础结构将提供&lt;/span&gt;Hash&lt;span style="font-family: SimSun"&gt;加密算法进行不可反向加密，作为验证凭据，或者先取先用不保存在数据存储中。&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 18pt"&gt;&lt;span&gt;5.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;数据安全性&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 60pt"&gt;&lt;span&gt;1)&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;加密敏感数据：基础结构应提供&lt;/span&gt;Hash&lt;span style="font-family: SimSun"&gt;加密算法支持数据加密。&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 60pt"&gt;&lt;span&gt;2)&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;XML&lt;span style="font-family: SimSun"&gt;数据安全性：防止&lt;/span&gt;XML&lt;span style="font-family: SimSun"&gt;数据攻击。&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 59.95pt"&gt;攻击方法：XPath注入和XXE（扩展XML实体）注入攻击。&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 59.95pt"&gt;威胁指数：8&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 59.95pt"&gt;攻击结果：获得XML文件信息。&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 59.95pt"&gt;预防措施：不在XML中保存敏感信息，所有配置文件中的敏感信息需要加密保存，对于要写入XML的数据应先通过验证。&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 60pt"&gt;&lt;span&gt;3)&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;ViewState&lt;span style="font-family: SimSun"&gt;数据安全性：防止从&lt;/span&gt;ViewState&lt;span style="font-family: SimSun"&gt;获取敏感数据。&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 59.95pt"&gt;攻击方法：通过解码ViewState获得敏感信息。&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 59.95pt"&gt;威胁指数：6&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 59.95pt"&gt;攻击结果：获得ViewState中的敏感信息。&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 59.95pt"&gt;预防措施：禁用ViewState或避免，使用简单控件采用加密方式保存敏感信息。&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 59.95pt"&gt;关联问题：使用JSON字符串时注意敏感数据的处理。&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 18pt"&gt;&lt;span&gt;6.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;存储安全信息到注册表和配置文件&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 18pt"&gt;&lt;span style="font-family: SimSun"&gt;控制远程用户对配置文件的访问权限，保护配置文件中的敏感数据。&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 18pt"&gt;&lt;span&gt;7.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;再发布前修正配置文件&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;为防止错误堆栈信息推测以及通过其它信息查获手段进行攻击，ASP.NET Web应用程序在发布前应对配置文件进行修正。&lt;br /&gt;
 &lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;错误堆栈信息推测攻击&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;攻击方法：造成系统异常，通过错误页上的堆栈信息推测代码进行下一步攻击。&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;威胁指数：6&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;攻击结果：推测系统版本和代码逻辑。&lt;/p&gt;
&lt;p style="margin-left: 18pt"&gt;&lt;span style="font-family: SimSun"&gt;预&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;防措施：捕&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;获&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;系&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;统&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;异常使用&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;统&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;一&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;页&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;面&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;进&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;行&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;处&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;理不表示&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;错误&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;堆&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;栈&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;信息，&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;将自定&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;义错误节&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;点&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;设&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;置&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;为&lt;/span&gt;&amp;lt;customErrors mode=”Off” /&amp;gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;即可防止&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;错误&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;信息表示&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;给远&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;程&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;用&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;户&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;；同&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;时应&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;关&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;闭调试&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;开关&lt;/span&gt;&amp;lt;compilation defaultLanguage=”vb” debug=”false” /&amp;gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;防止通&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;过调试&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;信息泄漏源代&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;码&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;或&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;进&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;行&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;代&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;码&lt;/span&gt;&lt;span style="font-family: 'ＭＳ 明朝'"&gt;注入。&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 18pt"&gt;&lt;span style="font-family: SimSun"&gt;&lt;br /&gt;
同时应该关闭&lt;/span&gt;Trace&lt;span style="font-family: SimSun"&gt;优化性能并防止方法攻击者利用&lt;/span&gt;Trace&lt;span style="font-family: SimSun"&gt;推测代码执行过程和详细内容：&lt;/span&gt;&amp;lt;trace enabled=”false” requestLimit=”10” pageOutput=”false” traceMode = ”SortByTime” /&amp;gt;&lt;br /&gt;
 &lt;/p&gt;
&lt;p style="margin-left: 18pt"&gt;&lt;span style="font-family: SimSun"&gt;对于&lt;/span&gt;Web&lt;span style="font-family: SimSun"&gt;服务要防止远程用户利用&lt;/span&gt;WSDL&lt;span style="font-family: SimSun"&gt;描述进行推测攻击。&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;攻击方法：访问Web服务WSDL文件，获得Web服务相关信息。&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;威胁指数：4&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;攻击结果：获得Web服务方法描述，推测Web服务参数，进行下一步攻击。&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;预防措施：在配置文件中指定不表示Web方法描述内容，配置文件改修如下：&lt;/p&gt;
&lt;p align="left"&gt;&lt;span&gt;              &lt;/span&gt;&lt;span style="font-family: Courier; color: #231f20; font-size: 9pt"&gt;&amp;lt;webServices&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 52.5pt" align="left"&gt;&lt;span style="font-family: Courier; color: #231f20; font-size: 9pt"&gt;&amp;lt;protocols&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 52.5pt" align="left"&gt;&lt;span style="font-family: Courier; color: #231f20; font-size: 9pt"&gt;&amp;lt;remove name="Documentation"/&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 52.5pt" align="left"&gt;&lt;span style="font-family: Courier; color: #231f20; font-size: 9pt"&gt;&amp;lt;/protocols&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 21.2pt; margin-left: 21.2pt"&gt;&amp;lt;/webServices&amp;gt;&lt;/p&gt;
&lt;p style="margin-left: 18pt"&gt; &lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 18pt"&gt;&lt;span&gt;8.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;使用&lt;/span&gt;Session&lt;span style="font-family: SimSun"&gt;但不使用&lt;/span&gt;Cookieless&lt;span style="font-family: SimSun"&gt;的&lt;/span&gt;Session&lt;/p&gt;
&lt;p style="margin-left: 18pt"&gt;&lt;span style="font-family: SimSun"&gt;原因：&lt;/span&gt;Cookieless&lt;span style="font-family: SimSun"&gt;的&lt;/span&gt;Session&lt;span style="font-family: SimSun"&gt;将在&lt;/span&gt;URL&lt;span style="font-family: SimSun"&gt;中曝露&lt;/span&gt;SessionID&lt;span style="font-family: SimSun"&gt;，使别人易于利用进行攻击。&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent: -18pt; margin-left: 18pt"&gt;&lt;span&gt;9.&lt;span style="font: 7pt 'Times New Roman'"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: SimSun"&gt;预防方向工程&lt;/span&gt;&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;攻击方法：获得程序集使用工具进行反向工程。&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;威胁指数：9&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;攻击结果：了解程序逻辑，盗取开发成果。&lt;/p&gt;
&lt;p style="line-height: normal; text-indent: 0mm; margin-left: 18pt"&gt;预防措施：在发布时进行强加密和混淆工程。&lt;br /&gt;
&lt;br /&gt;
 &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: SimSun"&gt;参考：&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;ASP.NET Security: 8 Ways to Avoid Attack&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.devx.com/security/Article/20898/1954"&gt;&lt;font color="#000080"&gt;http://www.devx.com/security/Article/20898/1954&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: SimSun"&gt;《&lt;/span&gt;Hacking Exposed Web 2.0 : Web 2.0 Security Secrets and Solutions&lt;span style="font-family: SimSun"&gt;》&lt;/span&gt;,Rich Cannings, Himanshu Dwivedi, Zane Lackey,2008.&lt;/p&gt;
&lt;div id="div_digg"&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;div /&gt;
&lt;img src="http://blog.rongzhiwang.com/baicaps/aggbug/43.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>baicaps</dc:creator>
            <guid>http://blog.rongzhiwang.com/baicaps/archive/2009/07/30/asp.net-web.aspx</guid>
            <pubDate>Thu, 30 Jul 2009 15:10:57 GMT</pubDate>
            <wfw:comment>http://blog.rongzhiwang.com/baicaps/comments/43.aspx</wfw:comment>
            <comments>http://blog.rongzhiwang.com/baicaps/archive/2009/07/30/asp.net-web.aspx#feedback</comments>
            <wfw:commentRss>http://blog.rongzhiwang.com/baicaps/comments/commentRss/43.aspx</wfw:commentRss>
            <trackback:ping>http://blog.rongzhiwang.com/baicaps/services/trackbacks/43.aspx</trackback:ping>
        </item>
        <item>
            <title>程序员30岁以后的发展迷途</title>
            <category>程序员生活</category>
            <link>http://blog.rongzhiwang.com/baicaps/archive/2009/07/28/n-30.aspx</link>
            <description>刚进IT行业时，小张有股火一般的热情，参与了很多项目，而且都成功了。公司对他也很器重，付给他的薪水在当时的同学中可算是天价。&lt;br /&gt;
&lt;br /&gt;
　　后来，小张曾换了两家公司，虽说薪水越来越高，但他却越来越困惑。以前不觉得，但现在他感觉程序员的工作强度太大，自己每天都在超负荷运转，感觉自己是透支生命来挣钱，这意味着后半生要用钱来维持生命，总之不是长久发展之计。并且，感觉自己在学习能力、反应速度、工作效率等方面已经有一点衰退，相对年轻的程序员竞争力已经有些不足。行业内有个传统，程序员到了35岁就有转岗的可能，未来该向什么方向发展呢?小张有些困惑。 &lt;br /&gt;
&lt;br /&gt;
　　职业发展需要转型获得下一个“春天” &lt;br /&gt;
&lt;br /&gt;
　　小张的处境代表了这个行业一个共同的问题。职业规划专家经过对类似这种情况分析指出，IT人才市场的整体年龄状况趋于年轻化，22岁以下的择业者占总体比例的71%，而35岁以上的只占10%，年轻的人才给市场注入了活力，也使得IT行业的竞争更加白热化——人才流动性很大，岗位相对不够稳定。 &lt;br /&gt;
&lt;br /&gt;
　　程序员是个属于年轻人的职业，“小张们”如果没有在职业生涯最初的5年或8年时间里得到晋升或实现转型，随着年龄的增长，在技术更新的大潮中便面临竞争力衰减的残酷现实，需要重新定位和转型。“小张们”与其咬着牙继续在编程队伍里打拼，还不如重新审核自己的职业兴趣、能力和性格，立足核心竞争力，寻求职业发展的下一个春天。 &lt;br /&gt;
&lt;br /&gt;
　　因此，职业规划专家建议热爱IT行业的小张，可以借助丰富的技术经验和人脉关系寻求新的发展。 &lt;br /&gt;
&lt;br /&gt;
　　程序员可选择的出路 &lt;br /&gt;
&lt;br /&gt;
　　出路一：向软件实施顾问转型 &lt;br /&gt;
&lt;br /&gt;
　　分析：在当今称为信息化时代的互联网环境中，企业面临转型，否则就要被淘汰，不管企业选择了哪一种转型的方法、途径，都离不开信息化。信息化成为帮助中国企业转型升级的加速器。企业转型期将需要大量的信息化实施——管理软件应用顾问人才，估计到2010年管理软件应用顾问人才的缺口是5-6万，而目前市场的人才不到3万，人才缺口巨大。 &lt;br /&gt;
&lt;br /&gt;
　　编程10年，操作过大量项目，由技术背景又有实施经验，向管理软件实施顾问转型是相对比较容易的。如果怕自己知识不够系统可以去用友学院的管理软件应用顾问培训班学习一下，拿到用友的认证在中国基本上可以畅行无阻了，因为用友是亚太地区最大的管理软件提供商，中国企业大部分都是他们的客户，这样的话他们认证和培训过的人员企业是更愿意接受的。 &lt;br /&gt;
&lt;br /&gt;
　　优势：10年编程经验，对软件的技术、原理等知识掌握的相当牢固，参与过大量项目，实践经验丰富。 &lt;br /&gt;
&lt;br /&gt;
　　挑战：小张以前的经验主要是编程，接触过企业的部分业务流程，对企业整体业务流程把握有点难度，对企业管理知识不够系统，如果能有一个系统的学习，拿到一个认证，将是一个优秀的实施顾问。 &lt;br /&gt;
&lt;br /&gt;
　　出路二：向IT培训师转型 &lt;br /&gt;
&lt;br /&gt;
　　分析：IT企业在招聘新人后，一般都须经过培训才能上岗，这个培训有时是在岗位上进行的，由富有实践经验的“老人”负责。年轻人想要进入IT行业，必须接受这样的专业培训。如今IT培训市场蛋糕相当大，利润空间可观，行业发展前景看好。根据国际数据公司(IDC)统计数据显示，2004年中国IT培训市场共实现销售额24.4亿元，相比2003年增长了22.1%，2005年市场前景发展更为可观。小张无论是在IT公司内部转型担任培训工作，还是到IT培训机构担任教师，都应该有发展空间。这样的工作不会有太大压力，且比较稳定，对年龄也没什么要求。更何况，这还没有脱离小张所喜欢的IT行业。&lt;br /&gt;
&lt;br /&gt;
　　优势：在这个行业工作了10年，拥有丰富编程、项目经验，曾参与过许多成功案例，这都是小张的优势。而10年积攒的行业人脉关系，还可以帮助他发展企业客户，顺便担任市场拓展工作。 &lt;br /&gt;
&lt;br /&gt;
　　挑战：小张在过去10年中一直埋头苦干，只是在公司培训新人时担任过培训工作，缺少培训工作经验。如果要向培训师转型，小张需要接受一些专业训练，提高担任培训师的能力。 &lt;br /&gt;
&lt;br /&gt;
　　出路三：向IT营销转型 &lt;br /&gt;
&lt;br /&gt;
　　分析：IT与其它行业不同，由于技术性较强，营销人员一般也须有较强的技术背景，且最好有着丰富经验。互联网公司、电子商务公司、软件公司目前都需要有技术背景的营销人员; 另外，电子商务的再度火爆，使得传统企业开始重视电子商务营销，也需要有技术背景的营销人员。这类工作薪水不低，加上提成应该可以拿到高于程序员的薪水，同时也比较稳定。 &lt;br /&gt;
&lt;br /&gt;
　　优势：深厚的技术背景仍然是小张的核心竞争力，在10年的从业经历中，小张广泛涉猎了各种编程软件和工具，对IT行业也有相对深入的了解，这些都为他转向营销提供了平台。 &lt;br /&gt;
&lt;br /&gt;
　　挑战：小张过去的工作主要是跟机器打交道，而营销工作恰恰需要跟人打交道，这对小张来说是最大的挑战，要求他彻底改变工作方式，加强沟通能力与人际交往能力; 此外，营销工作会面临销售指标的压力，这些问题都是小张转型前必须深入考虑的。 &lt;br /&gt;
&lt;br /&gt;
　　出路四：向项目管理努力 &lt;br /&gt;
&lt;br /&gt;
　　分析：如果说前面两条出路转型的成分多，那么项目管理可以说是小张更为便捷的发展之路。目前，软件项目经理是人才市场上炙手可热的人才，有丰富经验、外语好的软件项目经理是抢手的香饽饽，供不应求，薪水自然也是水涨船高。在上海市劳动部门新发布的2005年软件行业薪资调查中，项目主管的薪水是同层次主管中最高的，年薪高位数达到211011元，平均年薪达109414元。最重要的是，一个优秀的项目经理可以在这个岗位上长久工作下去，并且有向高层进一步提升的可能。 &lt;br /&gt;
&lt;br /&gt;
　　优势：对小张这样有经验、有技术、有人脉、有能力、参与过多个软件开发、有一定经验的人，项目管理无疑是小张发展的一个很好的方向。 &lt;br /&gt;
&lt;br /&gt;
　　挑战：小张以往参与过不少项目的开发，但一直是项目团队里的一分子，没担任过项目带头人。而很多公司在招聘项目经理时，都需要有带领团队进行项目开发的经验，这是小张的一个劣势。建议他参加一些项目管理方面的培训课程，自学相关的知识，增长自己在流程管理、沟通协调等方面的能力，以便积累资本，逐步向项目管理岗位迈进。 &lt;br /&gt;
来源：qq论坛 
&lt;img src="http://blog.rongzhiwang.com/baicaps/aggbug/40.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>baicaps</dc:creator>
            <guid>http://blog.rongzhiwang.com/baicaps/archive/2009/07/28/n-30.aspx</guid>
            <pubDate>Tue, 28 Jul 2009 13:17:55 GMT</pubDate>
            <wfw:comment>http://blog.rongzhiwang.com/baicaps/comments/40.aspx</wfw:comment>
            <comments>http://blog.rongzhiwang.com/baicaps/archive/2009/07/28/n-30.aspx#feedback</comments>
            <wfw:commentRss>http://blog.rongzhiwang.com/baicaps/comments/commentRss/40.aspx</wfw:commentRss>
            <trackback:ping>http://blog.rongzhiwang.com/baicaps/services/trackbacks/40.aspx</trackback:ping>
        </item>
        <item>
            <title>程序员办网站创业，几个问题你想好了吗？</title>
            <category>程序员生活</category>
            <link>http://blog.rongzhiwang.com/baicaps/archive/2009/07/24/38.aspx</link>
            <description>&lt;p&gt;很多程序员都想自己办个网站进行互联网创业，因为建站很容易，有现成的UCHome，discuz等可以快速建论坛或SNS网站，而且自己是程序员，技术上没有问题，貌似现在网站创业的门槛越来越低了。事实真的如此吗？在你办网站前，几个问题要先想清楚：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 你网站的定位是什么？用户群是谁？市场空间有多大？你向他们提供什么来吸引他们？用户的真正需求你调查了吗？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;    这是你需要首先想好的问题。定位最好细分，不要想着中国12亿人都来上你的网站，那是不可能的。事实是你只能吸引某一类人。这就是你网站的主要用户群。定位决定了你的市场空间有多大。市场空间是风险投资（VC）经常会问题的问题。市场空间不大的网站他们会认为没前（钱）途。&lt;/p&gt;
&lt;p&gt;    接下来一个问题是：你向他们提供什么来吸引他们？这很重要。成功需要理由，人们爱上你的网站也需要理由。你可以向他们提供有用的信息（内容性网站），或是提供了好玩的东西（满足娱乐需求），或是使用户更省钱（例如优惠券，京东商城），或是是用户可以炫耀自我（博客类），或是能营造一种分享或炫耀的气氛（社区类），总之，人人希望被关注，人人喜欢娱乐，人人喜欢少花钱多办事，这些都是需求，是能够吸引他们的，就是他们每天都上你的网站的理由。&lt;/p&gt;
&lt;p&gt;    程序员这点比较难，就是获得用户的真实需求。很多人不会告诉你他的需求，打开你的网站，不喜欢，不到一秒就关闭了。所以要获得用户的真实需求很难，尤其对程序员很难。温州人很重要的特点是做任何生意，先问顾客你要不要，要什么样。这就是市场调查，能获得用户真正需求，这非常重要。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 先做大流量还是实现盈利？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;    先全心全意做大流量，还是边做流量边进行盈利模式的探索？这是个问题。流量是肯定要做的，盈利呢也是目标，但是否要一味追求大流量就未必了。有时候流量大了反而一些优质用户会流失，离盈利反而更远。所以还是应该边做流量边进行盈利模式的探索。&lt;/p&gt;
&lt;p&gt;    做大流量的不二法门就是要烧钱。当然也有个别像Google那样不烧钱就做大的案例，但那只是特例。对于没有风投（VC）的个人创业者来说，大把烧自己的钱是不可能的，也是不能持续的。比较现实的推广策略是找准目标用户群，用较小的投资进行宣传。当然效果要看你的市场推广功夫了，有时候做流量需要几年，而实现盈利更是遥遥无期，当然如果你有好的盈利模式除外。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 你网站有没有竞争壁垒？创意会不会被快速复制？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;   创意被抄袭在中国已屡见不鲜，在互联网行业更甚。从开心网到开心网，从Yes!PPG到Vancl。有的人只做后来者，但后来居上。你的创意被他抄袭，还免费为他培养了用户认知。互联网是公认的“快”行业，不仅会“抄”，而且还“抄”得“快”，“新”！。所以最好不要做被巨头瞄上或有可能瞄上的市场，腾讯就说过：腾讯做的你不要做。也是有道理的。啥东西被巨头瞄上，你多半必死。&lt;/p&gt;
&lt;p&gt;    这个问题也是现在风险投资（VC）都会问你的竞争壁垒问题，就是怕简单复制。当然，在中国互联网发展的早期，风险投资像“疯钱”、“傻钱”，比如1998年到1999年，在咖啡馆里拿着商业计划书给投资人讲生动故事的大有人在。在几个星期内融到几百万甚至几千万美金绝不是天方夜谭。现在不行了，只是讲一个概念，没有人给你钱，哪怕你是借一点钱，找一点钱，做点什么，人们看这个东西，它有扶持价值，然后才能投。而且还要问你竞争壁垒，没有竞争壁垒会被简单复制的一分不投。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 你有没有团队？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;   前期你可能说会一个人开发，但是网站成功的关键是后期运营和推广，一个人恐怕运营和后期跟不上，因为后期用户的需求会增加，而且要反映迅速，否则很容易被竞争对手超过。&lt;/p&gt;
&lt;p&gt;   而且你的时间也要保证。你现在干的工作加班加点干不了，创业那就是三份十份的加班加点，想让员工加班加点，员工跳槽了，你没办法必须把活干了，你加班加点把活干完了，也不见得把事搞得定，因为没人测试。所以你没团队是不行的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. 你有没有毅力，能不能折腾，有没有好的心态？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;   有时候做流量需要几年，而实现盈利更是遥遥无期，你还能坚持吗？你还能有开始时候的良好的心态吗？心态是什么？心态就是你每天上班不管是坐三轮，坐公交，还是自己开宝马车，都没有心态差别。不要觉得骑个自行车上班就低人一等，开车上班就牛皮哄哄，保持好的心态，记得马云说过，创业的时候不要把自己当人看。无论做什么事情，心态是首要的。要坚信自己会成功，而且离成功越来越近了。&lt;br /&gt;
（转载）&lt;/p&gt;
&lt;img src="http://blog.rongzhiwang.com/baicaps/aggbug/38.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>baicaps</dc:creator>
            <guid>http://blog.rongzhiwang.com/baicaps/archive/2009/07/24/38.aspx</guid>
            <pubDate>Fri, 24 Jul 2009 13:20:01 GMT</pubDate>
            <wfw:comment>http://blog.rongzhiwang.com/baicaps/comments/38.aspx</wfw:comment>
            <comments>http://blog.rongzhiwang.com/baicaps/archive/2009/07/24/38.aspx#feedback</comments>
            <wfw:commentRss>http://blog.rongzhiwang.com/baicaps/comments/commentRss/38.aspx</wfw:commentRss>
            <trackback:ping>http://blog.rongzhiwang.com/baicaps/services/trackbacks/38.aspx</trackback:ping>
        </item>
        <item>
            <title>电子商务中第三方支付网关谈</title>
            <category>杂谈</category>
            <link>http://blog.rongzhiwang.com/baicaps/archive/2009/07/22/32.aspx</link>
            <description>&lt;p&gt;在电子商务越来越发达的今天，第三方支付网关也越来越多，虽然第三方支付的公司很多，但在接口方面还是比较相似的，都有一定的规则在其中，比如支付，它势必会有订单生成、支付、返回成功标志、对账等功能，当然，各家网关还有自己独有的一些特点，比如IPS的分账系统。&lt;/p&gt;
&lt;p&gt;或许大家会在各家公司之间取舍，就我个人来看，现在做的比较成功的，还算支付宝，有淘宝这个得天独厚的电子商务平台，使支付宝这个第三方成为了国内首屈一指的支付平台，稳定性和安全性都相对比较好。IPS是国内较早起家的第三方支付网关，成熟的商业模式和完善的客服体系，也在这个市场中，赢得了较好的口碑。还有一些大家比较熟悉的，快钱、财付通、chinapay、paypal等，就在今年，国内的银联机构也加入了这场战斗中，再加上各种第四方支付接口，电子商务在金融危机下的今天，正在迅速的发展中。&lt;/p&gt;
&lt;p&gt;现在支付支持的方式越来越多，大概分为：&lt;/p&gt;
&lt;p&gt;1、网银支付（银行卡）&lt;/p&gt;
&lt;p&gt;2、充值卡支付（esales）&lt;/p&gt;
&lt;p&gt;3、手机卡支付&lt;/p&gt;
&lt;p&gt;4、第三方货币支付&lt;/p&gt;
&lt;p&gt;除了网银支付这个大家都有的支付方式外，各家公司的其他功能，也是我们选择支付网关时需要考虑的。所以我们选择的时候需要考虑的一些问题如下：&lt;/p&gt;
&lt;p&gt;1、稳定性&lt;/p&gt;
&lt;p&gt;2、安全性&lt;/p&gt;
&lt;p&gt;3、功能&lt;/p&gt;
&lt;p&gt;4、手续费&lt;/p&gt;
&lt;p&gt;5、结算时间&lt;/p&gt;
&lt;p&gt;6、接口的复杂度&lt;/p&gt;
&lt;p&gt;重要性从上往下，或许很多人会看手续费，但这其实并不是很重要，我使用过各种支付接口，有收费和免费的，免费的手续费也比较低，但在结算和功能上比收费的网关差的真的很多，所以大家在选择的时候一定要按照自己的网站规模来进行选择，那样才能更好的。这里我想说一下，就是第四方支付网关，这类网关其实是整合了多家网关，然后变为自己的一个支付网关，这类网关收费也相对较高，安全性方面也不是很好，如果可能还是不要选择这类网关比较好。&lt;/p&gt;
&lt;p&gt;当你选择好支付网关后，请一定要下载他们的API文档，在这里 你可以下载 &lt;a href="http://union.alipay.com/alipay/zhichi/shiwu/实物商品交易服务集成技术文档V1[1].35.pdf" target="_blank"&gt;&lt;font color="#000000"&gt;支付宝API&lt;/font&gt;&lt;/a&gt;  &lt;a href="http://main.ips.com.cn/download/ips003.rar" target="_blank"&gt;&lt;font color="#000000"&gt;IPSAPI&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;因为各家公司还有自己的特色，所有文档会不太一样，不过大致相同的是网银的支付方式，其实大概的流程如下：&lt;/p&gt;
&lt;p&gt;提交：用户 –&amp;gt;  生成订单 –&amp;gt;  生成支付网关订单 –&amp;gt;  提交到支付网关（我们只需要到这里） –&amp;gt;  与银行支付网关交互&lt;/p&gt;
&lt;p&gt;返回：银行返回到支付网关（我们无需知道） –&amp;gt;  支付网关返回网站 -&amp;gt;  处理返回数据 –&amp;gt;  返回给用户友好信息&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;知道了处理流程和API，我们的代码写起来就非常的简单，但我看了好多公司写的支付接口，说实在的，大多没有考虑到自己网站会使用多支付方式，造成了一个支付网关，一堆相互无关的代码，日积月累，留给后续程序人员带来了无尽的烦恼。其实我想大家也明白了，支付网关大体都差不多，只不过个别不一样，我们可以利用抽象工厂等设计模式，设计出漂亮的架构出来。关于支付网关框架，我是想做一个，其实很多CMS和BBS已经带了完整的支付框架，不过.Net的好像不多，我们可以参考他们的优点，仅仅需要配置，就可以方便任何人进行使用，如果有兴趣，大家可以联系我：）&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;说了支付，其实很多网关都功能比较完善，但仅仅支付是不够的，我们还需要考虑其他一些问题，比如技术支持、稳定性、数据完整性、掉单处理等等，都是我们网站开发人员需要考虑的问题。在支付网关中，有一项是大家比较忽略，但非常重要的一个环节：&lt;font color="#ff0000"&gt;对账系统&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;何为对账系统呢？说白了，就像会计在核查账本，那我们在何种情况下会使用到呢？我想说的是，何处我们都要使用。看下面几种情况：&lt;/p&gt;
&lt;p&gt;1、支付按流程完成，返回到用户。&lt;/p&gt;
&lt;p&gt;2、用户支付途中遇到错误（包括网关异常、网络错误、返回错误等）&lt;/p&gt;
&lt;p&gt;3、遇到骗子&lt;/p&gt;
&lt;p&gt;第一种情况，大家会问既然成功了，为什么还要对账呢？因为我们与网关的交互都是依靠网络的，而网络却是最最不安全的东西，而金钱又是至关重要的东西，所以我们一定要对它严谨的处理。因为我们的支付包括返回，都是Post数据，Get返回，所以很可能有恶意的用户进行构造数据，蒙蔽你的返回处理系统，当然，如果你觉得你的返回接口比较强大，没有漏洞那就另当别论了。对账系统能够确保数据的再次比对，让你的数据能够安全的核对，因为对账系统一般都是由网关直接post给你，会有一定的安全措施在其中，比如域名、ip限制等。&lt;/p&gt;
&lt;p&gt;第二种情况，相信大家会遇到的很多，这是无法避免的情况，不过大多情况都是发生在用户身上，网站服务器一般都是托管，24×7服务的，有了对账系统，能够在大多数情况下避免此种麻烦。当然还会遇到其个别的错误，这时候对账也无法成功，这时候就需要手工处理掉单。&lt;/p&gt;
&lt;p&gt;第三种情况，为什么把他也列为一列呢？因为真的会有不少骗子，给你造成很多不必要的麻烦，这时候，我们可以根据自己的支付系统和对账系统一起来调查，这样也比较快捷，遇到了骗子就直接拉黑。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;支付网关对账系统是非常严谨的一个系统，因为其中也包含了很多用户信息，包括安全验证码等，所以一般的对账系统，都有时间限制，比如5分钟，在5分钟内一直发送对账信息，如果成功，此条信息就销毁，避免不必要的麻烦。这是非常好的措施，但有时也会造成麻烦，万一我重启呢？不过好在这种情况，我们很少会遇到，除非遇到机房断电，519断网事件等。&lt;/p&gt;
&lt;p&gt;那我们的对账系统需要如何来做呢？以我多年的经验，除了处理对账数据（与返回数据相类似），还要限定ip、限定域名等，以确保数据的安全性。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;好了，就说到这里吧，后续我想还说说如何构建统一的支付接口，要看有没有时间了，这次把自己对支付网关的理解说了下，也把一些需要注意的说了说，希望能对你起到一些作用。&lt;/p&gt;
&lt;p&gt;最后推荐几个国内好的支付网关：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ips.com.cn/" target="_blank"&gt;&lt;font color="#000000"&gt;IPS&lt;/font&gt;&lt;/a&gt;   &lt;a href="http://www.alipay.com/" target="_blank"&gt;&lt;font color="#000000"&gt;支付宝&lt;/font&gt;&lt;/a&gt;    &lt;a href="http://www.tenpay.com/" target="_blank"&gt;&lt;font color="#000000"&gt;财付通&lt;/font&gt;&lt;/a&gt;   &lt;a href="http://www.99bill.com/" target="_blank"&gt;&lt;font color="#000000"&gt;快钱&lt;/font&gt;&lt;/a&gt;   &lt;/p&gt;
&lt;p&gt; （转）&lt;/p&gt;
&lt;img src="http://blog.rongzhiwang.com/baicaps/aggbug/32.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>baicaps</dc:creator>
            <guid>http://blog.rongzhiwang.com/baicaps/archive/2009/07/22/32.aspx</guid>
            <pubDate>Wed, 22 Jul 2009 15:37:08 GMT</pubDate>
            <wfw:comment>http://blog.rongzhiwang.com/baicaps/comments/32.aspx</wfw:comment>
            <comments>http://blog.rongzhiwang.com/baicaps/archive/2009/07/22/32.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.rongzhiwang.com/baicaps/comments/commentRss/32.aspx</wfw:commentRss>
            <trackback:ping>http://blog.rongzhiwang.com/baicaps/services/trackbacks/32.aspx</trackback:ping>
        </item>
        <item>
            <title>总结：关于ASP.NET 2.0一些简单而有用的技巧</title>
            <category>.NET</category>
            <link>http://blog.rongzhiwang.com/baicaps/archive/2009/07/15/asp.net-2.0.aspx</link>
            <description>&lt;p&gt;&lt;strong&gt;1、在CallBack之后保持滚动条的位置&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在Asp.Net1.1中，CallBack之后保持滚动条的位置是一件非常痛苦的事情，特别是页中有一个Grid并且想要编辑特定的行。为了不停留在想要得行，页面会重新加载并且必须在顶部向下滚动。在Asp2.0中，只需要简单的在页面的属性中加入MaintainScrollPostionOnPostBack属性即可：&lt;/p&gt;
&lt;p class="code"&gt;&amp;lt;%@ Page Language="C#" MaintainScrollPositionOnPostback="true" AutoEventWireup="true" CodeFile="" Inherits="" %&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2、页面加载后设置默认焦点到控件上&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这也是一个非常简单的例子，不需要javascript的辅助即可完成。如果在页面中有一两个textbox，为什么要让用户去点击textbox来开始输入数据呢？是不是可以能够让光标已经停留在textbox进而可以输入数据呢？使用HtmlForm控件的DefaultFocus属性就可以轻易的做到：&lt;/p&gt;
&lt;p class="code"&gt;&amp;lt;form id="frm" DefaultFocus="txtUserName" runat="server"&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;/form&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3、用户点击“Enter”键时触发默认按钮的click实践。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在Asp1.1中，想要使用户点击“Enter”键就能关联到一个button的服务器段的click事件需要借助于javascript，这是很痛苦的。幸好，现在可你使用HtmlForm控件的DefaultButton属性来设置。这个属性也可以设置到Panel控件上，当用户移动到页面中不同的Panel上，点击enter键来触发不同的button控件的click事件。&lt;/p&gt;
&lt;p class="code"&gt;   &amp;lt;form id="frm" DefaultButton="btnSubmit" runat="server"&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
   &amp;lt;/form&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4、简单的寻找固定的控件。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在页面的控件中按层次寻找控件很痛苦，但是如果你知道控件怎样固定在页面中，就可以用简写”$”来查找控件而不用写递归的代码。请看下面代码，注意”$”的使用：&lt;/p&gt;
&lt;p class="code"&gt;&amp;lt;form id="form1" runat="server" DefaultFocus="formVw$txtName"&amp;gt;&lt;br /&gt;
    &amp;lt;div&amp;gt;&lt;br /&gt;
        &amp;lt;asp:FormView ID="formVw" runat="server"&amp;gt;&lt;br /&gt;
            &amp;lt;ItemTemplate&amp;gt;&lt;br /&gt;
                Name: &lt;br /&gt;
                &amp;lt;asp:TextBox ID="txtName" runat="server" &lt;br /&gt;
                    Text='&amp;lt;%# Eval("FirstName") + " " + Eval("LastName") %&amp;gt;' /&amp;gt;&lt;br /&gt;
            &amp;lt;/ItemTemplate&amp;gt;&lt;br /&gt;
        &amp;lt;/asp:FormView&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;/p&gt;
&lt;p&gt;这个小技巧也可以用在服务器端的 使用FindControl()函数时：&lt;/p&gt;
&lt;p class="code"&gt;TextBox tb = this.FindControl("form1$formVw$txtName") as TextBox;&lt;br /&gt;
if (tb != null)&lt;br /&gt;
{&lt;br /&gt;
    //Access TextBox control&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5、强类型访问跨页提交的控件&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个比其他的要内容多一点，但是很有用。ASP.NET 2.0引入了交叉回发的概念使得一个页面可以将信息回发到另一个不同的页面，可以将button控件的PostBackUrl属性设置为接受回发数据的页面来完成。一般的，回发的数据可以象前一页那样做一些事情。但是，如果你要获得前一页制定控件的属性就需要一个cast()，如果你给引起回发的code-behide页面添加了一个公共属性，你就可以直接以强类型的方式添加PreviousPageType来指向引起回发的页面从而能够访问那个属性。&lt;/p&gt;
&lt;p&gt;如果有一个页面Default.aspx，他有一个公共属性来返回此页面上一个TextBox，数据回发目的页(SearchResults.aspx)可以以强类型的方式(不需要FindControl() 方法)，在页面的顶部添加：&lt;/p&gt;
&lt;p class="code"&gt;&amp;lt;%@ PreviousPageType VirtualPath="Default.aspx" %&amp;gt;&lt;/p&gt;
&lt;p&gt;这样，SearchResults.aspx中代码就可以以强类型的方式访问Default.aspx的TextBox。下面的例子假定Default.aspx定义的属性名为SearchTextBox：&lt;/p&gt;
&lt;p class="code"&gt;TextBox tb = PreviousPage.SearchTextBox; PreviousPageType还有一个TypeName属性，你可以定义一个基本类型，一个或多个页面从此类型继承下来，使得这种技术可以在多页面上使用。&lt;/p&gt;
&lt;p&gt;PreviousPage.IsCrossPagePostBack可以判断是否为垮页提交。&lt;/p&gt;
&lt;p&gt;对于跨页提交的补充：&lt;/p&gt;
&lt;p&gt;在ASP.NET 1.X 版本中，页面都是提交到自己本身，并不能方便的指定需要提交的目的页面。例如FirstPage.aspx中的button只能提交到 FirstPage.aspx，而不能提交到SecondPage.aspx。很多时候，ASP.NET 1.X这样工作方式使我们的开发方式受到不少限制。熟悉ASP/JSP/PHP的朋友大概很不习惯，因为以前经常使用的提交方式突然无法使用，虽然也有解决这个问题的方法（欲详细了解的读者可去微软网站收看webcast），可是过程太烦琐，不甚方便。令我们高兴的是，ASP.NET 2.0中有了跨页面提交的简单方法。可在第一个页面中的button添加PostBackUrl属性设置为接受提交的页面，并且这个页面增加PreviousPageType 指令，若要是目标页面在新窗口中打开则可以在源页面＜form＞标记增加target=’_blank’属性。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6、强类型访问母版页的控件&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;PreviousPageType指令并不是唯一的可以强类型访问控件的方法。如果在母版页中定义了一个公共属性，并且想要以强类型的方式访问它，那么就可以在页面顶部添加MasterType指令(注意：MasterType指令同PreviousPageType一样允许定义一个TypeName)&lt;/p&gt;
&lt;p class="code"&gt;&amp;lt;%@ MasterType VirtualPath="MasterPage.master" %&amp;gt;&lt;/p&gt;
&lt;p&gt;你可以在内容页书写如下的代码来访问目标母版页的属性：&lt;/p&gt;
&lt;p class="code"&gt;this.Master.HeaderText = "Label updated using MasterType directive with VirtualPath attribute.";&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7、Validation groups验证组&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一个页中可能有多个控件和多个按钮。当其中的一个按钮被点击后想要特定的validator被激发而不是页面中的所有validator。在ASP.NET 1.1中除了hack code没有更好的办法。ASP.NET 2.0中给所有的validator控件和按钮(button、linkbutton等等)增加了ValidatorGroup属性，就可以轻松地解决这个问题。如果在页面中有一个TextBox并且紧挨着他有一个RequiredFieldValidator 和Button控件，可以将RequiredFieldValidator和Button的ValidationGroup属性设置成一样的值从而使得点击button时只触发这个RequiredFieldValidator的validor，任何没有定义在ValidationGroup内的其他的validator都会被忽略。看下例：&lt;/p&gt;
&lt;p class="code"&gt;&amp;lt;form id="form1" runat="server"&amp;gt;&lt;br /&gt;
    Search Text: &amp;lt;asp:TextBox ID="txtSearch" runat="server" /&amp;gt; &lt;br /&gt;
                    &amp;lt;asp:RequiredFieldValidator ID="valSearch" runat="Server" &lt;br /&gt;
     ControlToValidate="txtSearch" ValidationGroup="SearchGroup" /&amp;gt; &lt;br /&gt;
                    &amp;lt;asp:Button ID="btnSearch" runat="server" Text="Search"&lt;br /&gt;
         ValidationGroup="SearchGroup" /&amp;gt;  .&lt;br /&gt;
        Other controls with validators and buttons defined here&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;/p&gt;
&lt;img src="http://blog.rongzhiwang.com/baicaps/aggbug/29.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>baicaps</dc:creator>
            <guid>http://blog.rongzhiwang.com/baicaps/archive/2009/07/15/asp.net-2.0.aspx</guid>
            <pubDate>Wed, 15 Jul 2009 09:45:31 GMT</pubDate>
            <wfw:comment>http://blog.rongzhiwang.com/baicaps/comments/29.aspx</wfw:comment>
            <comments>http://blog.rongzhiwang.com/baicaps/archive/2009/07/15/asp.net-2.0.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.rongzhiwang.com/baicaps/comments/commentRss/29.aspx</wfw:commentRss>
            <trackback:ping>http://blog.rongzhiwang.com/baicaps/services/trackbacks/29.aspx</trackback:ping>
        </item>
    </channel>
</rss>
