﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-yizhu2000</title><link>http://www.cnblogs.com/yizhu2000/</link><description>--书到读透处，酒于微醺时</description><language>zh-cn</language><lastBuildDate>Sat, 30 Aug 2008 03:30:01 GMT</lastBuildDate><pubDate>Sat, 30 Aug 2008 03:30:01 GMT</pubDate><ttl>60</ttl><item><title>【组图】地震前线归来--心中的震撼</title><link>http://www.cnblogs.com/yizhu2000/archive/2008/05/17/1201130.html</link><dc:creator>二毛五</dc:creator><author>二毛五</author><pubDate>Fri, 16 May 2008 21:39:00 GMT</pubDate><guid>http://www.cnblogs.com/yizhu2000/archive/2008/05/17/1201130.html</guid><wfw:comment>http://www.cnblogs.com/yizhu2000/comments/1201130.html</wfw:comment><comments>http://www.cnblogs.com/yizhu2000/archive/2008/05/17/1201130.html#Feedback</comments><slash:comments>32</slash:comments><wfw:commentRss>http://www.cnblogs.com/yizhu2000/comments/commentRss/1201130.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yizhu2000/services/trackbacks/1201130.html</trackback:ping><description><![CDATA[摘要: 5.12号获悉家乡发生大地震，不放心在成都的家人朋友，于13日从北京赶回成都，再了解事态严重性，并确定家人情况后，14日与众多志愿者一起从成都出发，取道彭州市，通济镇，白水河镇，去了距离成都90公里的重灾区四川彭州龙门山（银厂沟）参与救灾工作，返回有感，特记录于此。&nbsp;&nbsp;<a href='http://www.cnblogs.com/yizhu2000/archive/2008/05/17/1201130.html'>阅读全文</a><img src ="http://www.cnblogs.com/yizhu2000/aggbug/1201130.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41965/" target="_blank">[新闻]美国年轻人最喜欢的15大网站</a>]]></description></item><item><title>【轻松一下】女朋友的保健作用</title><link>http://www.cnblogs.com/yizhu2000/archive/2008/05/07/1186265.html</link><dc:creator>二毛五</dc:creator><author>二毛五</author><pubDate>Wed, 07 May 2008 01:40:00 GMT</pubDate><guid>http://www.cnblogs.com/yizhu2000/archive/2008/05/07/1186265.html</guid><wfw:comment>http://www.cnblogs.com/yizhu2000/comments/1186265.html</wfw:comment><comments>http://www.cnblogs.com/yizhu2000/archive/2008/05/07/1186265.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/yizhu2000/comments/commentRss/1186265.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yizhu2000/services/trackbacks/1186265.html</trackback:ping><description><![CDATA[<div><font color="#cc33ff" size="3"><font face="Verdana">转自：<a href="http://www.mtime.com/group/bjfilm/discussion/205705/">http://www.mtime.com/group/bjfilm/discussion/205705/</a></font> <br />
<br />
<strong>增加運動:</strong> </div>
<div>當宅男有個非常不好的問題就是老坐著，老在家悶著，臉色是一天比一天差，身體機能是越來越糟糕，有了女朋友就能經常的壓馬路，增加室外活動，對身體健康確實有很大幫助！</font> </div>
<div>&shy;</div>
<div><font color="#cc33ff" size="3"><strong>防止嘴唇破皮：</strong> </div>
<div>保證有很多人納悶兒交女朋友還能保護嘴唇！當然了！特別是冬天，女孩子吧都愛抹個唇膏什么的，男人麼，不拘小節，嘴唇就經常的破皮，正好，有個女朋友抹了唇膏一接吻，一人的當倆人的用了。</font> </div>
<div>&shy;</div>
<div><font color="#cc33ff" size="3"><strong>補充營養：</strong> </div>
<div>這一個人活怎么招都能湊合，餓了吃點兒餅干面包方便面，改善一下就去外面來個蓋飯什么的，有女朋友可就不能湊合了，總不能讓她跟你一起啃面包不是！在外面吃什么都比在家吃泡面有營養！</font> </div>
<div>&shy;</div>
<div><font color="#cc33ff" size="3"><strong>戒煙戒酒：</strong> </div>
<div>這是惡習，自己一人的時候就愛放縱，沒事喝喝酒抽抽煙什么的！有女朋友在就不一樣了，你抽煙喝酒她就會老在邊上唠叨，唠叨多了你就煩了，一煩了煙量酒量不就小了，當然對身體有好處嘍！</font> </div>
<div>&shy;</div>
<div><font color="#cc33ff" size="3"><strong>稳定作息时间</strong>： </div>
<div>有女朋友以后玩电脑看电视的时间就会少，俩人在外面扯一天蛋了回家肯定没精力再鼓捣别的玩意儿，脑袋一沾枕头就睡，早睡就必然早起，作息时间就肯定规律了~</font> </div>
<div>&shy;</div>
<div><font color="#cc33ff" size="3"><strong>防止近视：</strong> </div>
<div>交女朋友不会是就为了玩儿电脑的，要是倆人出來約會還去網吧那這倆人可就基本上無可救藥了~倆人不管干什么都比整天看著電腦不容易的近視！</font> </div>
<div>&shy;</div>
<div><font color="#cc33ff" size="3"><strong>防止精力消耗过度：</strong> </div>
<div>男女朋友ml可比一人ml累的多。其他的我就不說了~</font> </div>
<div>&shy;</div>
<div><font color="#cc33ff" size="3"><strong>心情愉快：</strong> </div>
<div>不必因為沒有女朋友而煩惱的整夜睡不著覺，也會應為有愛情的滋潤而整日興奮，煩惱的事情自然就會忘得一干二凈~</font> </div>
<div>&shy;</div>
<div><font color="#cc33ff" size="3"><strong>增強記憶：</strong> </div>
<div>自然規律提示我們人要是平常不主動記點兒東西的話腦子會變得遲鈍，而且會慢慢的變成白癡，有女朋友就會經常記得約會，生日禮物也會時不常的送一下，以前的艷情史不小心說出來也會變得尷尬使兩個人的關系，所以說違背自然規律是萬萬不可取的昂~</font> </div>
<div>&shy;</div>
<div><font color="#cc33ff" size="3"><strong>保護牙齒：</strong> </div>
<div>現在的無糖口香糖那么的多，多吃一點兒確實對牙齒有幫助，我現在才知道口香糖最大的消費群體其實是熱戀中的情人。如果你不想讓你的女朋友聞到你吃的大蒜！</font> </div>
<div>&shy;</div>
<div><font color="#cc33ff" size="3"><strong>增加自信：</strong> </div>
<div>做愛結束后老婆夸你是多么的能干絕對是男人最自信的時候，沒有什么比這個更能振奮精神的了</font></div>
<img src ="http://www.cnblogs.com/yizhu2000/aggbug/1186265.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41964/" target="_blank">[新闻]2008年8月30日IT博客精选</a>]]></description></item><item><title>[转]网站架构收集</title><link>http://www.cnblogs.com/yizhu2000/archive/2008/05/06/1185934.html</link><dc:creator>二毛五</dc:creator><author>二毛五</author><pubDate>Tue, 06 May 2008 14:56:00 GMT</pubDate><guid>http://www.cnblogs.com/yizhu2000/archive/2008/05/06/1185934.html</guid><wfw:comment>http://www.cnblogs.com/yizhu2000/comments/1185934.html</wfw:comment><comments>http://www.cnblogs.com/yizhu2000/archive/2008/05/06/1185934.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/yizhu2000/comments/commentRss/1185934.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yizhu2000/services/trackbacks/1185934.html</trackback:ping><description><![CDATA[<div id="frame">
<div id="infobar">
<div id="browse"></div>
<div id="rss">
<p><font face="Verdana"><a href="http://www.hiadmin.com/?p=124">转自http://www.hiadmin.com/?p=124</a></font><br />
<br />
DBA notes上果然好东西很多<br />
许多大型(只是访问量,而不是公司规模)的web 2.0的网站架构<br />
上面都有<br />
现在收集整理一下<br />
这种资料.向来可遇不可求啊</p>
</div>
</div>
<div id="content">
<div id="left">
<div class="entry">
<div class="post" id="post-124">
<p>WikiPedia 技术架构学习分享<br />
<a href="http://www.dbanotes.net/opensource/wikipedia_arch.html">http://www.dbanotes.net/opensource/wikipedia_arch.html</a> </p>
<p>YouTube 的架构扩展<br />
<a href="http://www.dbanotes.net/opensource/youtube_web_arch.html">http://www.dbanotes.net/opensource/youtube_web_arch.html</a> </p>
<p>Internet Archive 的海量存储浅析<br />
<a href="http://www.dbanotes.net/database/internet_archive_storage.html">http://www.dbanotes.net/database/internet_archive_storage.html</a> </p>
<p>LinkedIn 架构笔记<br />
<a href="http://www.dbanotes.net/arch/linkedin.html">http://www.dbanotes.net/arch/linkedin.html</a> </p>
<p>Tailrank 网站架构<br />
<a href="http://www.dbanotes.net/review/tailrank_arch.html">http://www.dbanotes.net/review/tailrank_arch.html</a> </p>
<p>Twitter 的架构扩展: 100 倍性能提升<br />
<a href="http://www.dbanotes.net/arch/twitter_arch.html">http://www.dbanotes.net/arch/twitter_arch.html</a> </p>
<p>财帮子（caibangzi.com）网站架构<br />
<a href="http://www.dbanotes.net/arch/caibangzi_web_arch.html">http://www.dbanotes.net/arch/caibangzi_web_arch.html</a> </p>
<p>Yupoo! 的网站技术架构<br />
<a href="http://www.dbanotes.net/arch/yupoo_arch.html">http://www.dbanotes.net/arch/yupoo_arch.html</a> </p>
<p>37Signals 架构<br />
<a href="http://www.dbanotes.net/arch/37signals_arch.html">http://www.dbanotes.net/arch/37signals_arch.html</a> </p>
<p>Flickr 的访问统计实现以及其他<br />
<a href="http://www.dbanotes.net/arch/flickr_stats_and_dathan.html">http://www.dbanotes.net/arch/flickr_stats_and_dathan.html</a> </p>
<p>PlentyOfFish 网站架构学习<br />
<a href="http://www.dbanotes.net/arch/plentyoffish_arch.html">http://www.dbanotes.net/arch/plentyoffish_arch.html</a> </p>
<p>Yahoo！社区架构<br />
<a href="http://www.dbanotes.net/arch/yahoo_arch.html">http://www.dbanotes.net/arch/yahoo_arch.html</a> </p>
</div>
</div>
</div>
</div>
</div>
<img src ="http://www.cnblogs.com/yizhu2000/aggbug/1185934.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41963/" target="_blank">[新闻]《极品飞车12》最新真人照片、游戏截图</a>]]></description></item><item><title>MVP峰会，园子里有谁要去西雅图的，进来给点意见（请dudu留首页）</title><link>http://www.cnblogs.com/yizhu2000/archive/2008/04/02/1135004.html</link><dc:creator>二毛五</dc:creator><author>二毛五</author><pubDate>Wed, 02 Apr 2008 10:33:00 GMT</pubDate><guid>http://www.cnblogs.com/yizhu2000/archive/2008/04/02/1135004.html</guid><wfw:comment>http://www.cnblogs.com/yizhu2000/comments/1135004.html</wfw:comment><comments>http://www.cnblogs.com/yizhu2000/archive/2008/04/02/1135004.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.cnblogs.com/yizhu2000/comments/commentRss/1135004.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yizhu2000/services/trackbacks/1135004.html</trackback:ping><description><![CDATA[刚刚收到mvp，惊喜还没有过去，又收到了峰会的邀请函，算了一下，刚好有时间去，不过仔细一看，机票得自己掏，所以上来问问大家<br />
<br />
---不知道从北京出发，往返机票得多少银子，还需要带多少盘缠?<br />
<br />
---虽然已经有护照，不过现在办签证不知道来不来的及？<br />
<br />
有去过的，或者准备去的朋友给点意见 ，顺便感谢dudu和博客园的博友：）<br />
<br />
下面是邀请函里说的：<br />
<br />
<div style="background-color: #eee">
<p class="EC_MsoNormal"><span style="color: #ff0000"><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun"></p>
<p class="EC_MsoNormal"><strong><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">邀请您参加</span></strong><strong><span lang="EN-US" style="font-size: 12pt">2008</span></strong><strong><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">年</span></strong><strong><span lang="EN-US" style="font-size: 12pt">4</span></strong><strong><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">月</span></strong><strong><span lang="EN-US" style="font-size: 12pt">14</span></strong><strong><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">日至</span></strong><strong><span lang="EN-US" style="font-size: 12pt">17</span></strong><strong><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">日独一无二的最有价值专家全球峰会！</span></strong><strong></strong></p>
<p class="EC_MsoNormal"></p>
<p class="EC_MsoNormal"><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">在为期四天的高峰会中，</span><span lang="EN-US" style="font-size: 12pt">MVP</span><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">全球峰会将为您提供各种交流的机会如</span><span lang="EN-US" style="font-size: 12pt">400</span><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">余场会议和小组讨论。您将被邀请参加由微软高层执行领导的主题演讲，如微软首席执行官</span><span lang="EN-US" style="font-size: 12pt">Steve Ballmer</span><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">和首席软件构架师</span><span lang="EN-US" style="font-size: 12pt">Ray Ozzie</span><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">。</span><span lang="EN-US" style="font-size: 12pt">2008 MVP</span><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">全球峰会分别在西雅图的华盛顿会议贸易中心（</span><span lang="EN-US" style="font-size: 12pt">WSCTC</span><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">）和华盛顿</span><span lang="EN-US" style="font-size: 12pt">Redmond</span><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">微软总部举行。<strong>参加此活动，请点击并注册</strong></span><strong><span lang="EN-US" style="font-size: 12pt"><a onclick="onClickUnsafeLink(event);" href="https://microsoft.crgevents.com/MVP2008/Register/Login/default.aspx" target="_blank"><span style="color: windowtext">https://microsoft.crgevents.com/MVP2008/Register/Login/default.aspx</span></a></span></strong><strong><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">。由于时间安排较紧，如果您决定参加全球峰会，</span></strong><strong><span lang="EN-US" style="font-size: 12pt">4</span></strong><strong><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">月</span></strong><strong><span lang="EN-US" style="font-size: 12pt">7</span></strong><strong><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">日将是注册参会的截止时间。</span></strong></p>
<p class="EC_MsoNormal"></p>
<p class="EC_MsoNormal"><strong><span lang="EN-US" style="font-size: 12pt; background: yellow">[</span></strong><strong><span lang="ZH-CN" style="font-size: 12pt; background: yellow; font-family: SimSun">旅行和酒店入住信息</span></strong><strong><span lang="EN-US" style="font-size: 12pt; background: yellow">]</span></strong><strong></strong></p>
<p class="EC_MsoNormal"><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">微软将为您支付以下</span><span lang="EN-US" style="font-size: 12pt">4</span><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">晚的住宿和税款的费用</span></p>
<p class="EC_MsoNormal"><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">因此您只须负责您的旅行费用</span><span lang="EN-US" style="font-size: 12pt">(</span><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">机票以及从机场到饭店之间</span><span style="font-family: '新細明體','serif'">交通</span><span lang="ZH-CN" style="font-size: 12pt; font-family: SimSun">费用</span><span lang="EN-US" style="font-size: 12pt">)</span></span></span><br />
</p>
</div>
<img src ="http://www.cnblogs.com/yizhu2000/aggbug/1135004.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41962/" target="_blank">[新闻]IBM正在开发超强性能4TB固态硬盘阵列</a>]]></description></item><item><title>怎样利用CSDN论坛公开的API实现自己的论坛工具</title><link>http://www.cnblogs.com/yizhu2000/archive/2008/04/01/1131979.html</link><dc:creator>二毛五</dc:creator><author>二毛五</author><pubDate>Mon, 31 Mar 2008 17:18:00 GMT</pubDate><guid>http://www.cnblogs.com/yizhu2000/archive/2008/04/01/1131979.html</guid><wfw:comment>http://www.cnblogs.com/yizhu2000/comments/1131979.html</wfw:comment><comments>http://www.cnblogs.com/yizhu2000/archive/2008/04/01/1131979.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/yizhu2000/comments/commentRss/1131979.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yizhu2000/services/trackbacks/1131979.html</trackback:ping><description><![CDATA[摘要: csdn论坛公开了一些常用api,不过内部测试阶段,地址是http://forum.csdn.net/OpenApi/forumapi.asmx还有一个使用的demo,http://forum.csdn.net/OpenApi/ForumOpenAPIDemo.rar,源码在这里下载demo源码 总体概述: 公开的方法如下:  CheckOutTopic :结贴  GetForums :获得论坛列&nbsp;&nbsp;<a href='http://www.cnblogs.com/yizhu2000/archive/2008/04/01/1131979.html'>阅读全文</a><img src ="http://www.cnblogs.com/yizhu2000/aggbug/1131979.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41961/" target="_blank">[新闻]Microsoft F# CTP(2008年9月)</a>]]></description></item><item><title>网站跨站点单点登录</title><link>http://www.cnblogs.com/yizhu2000/archive/2008/04/01/1131976.html</link><dc:creator>二毛五</dc:creator><author>二毛五</author><pubDate>Mon, 31 Mar 2008 17:06:00 GMT</pubDate><guid>http://www.cnblogs.com/yizhu2000/archive/2008/04/01/1131976.html</guid><wfw:comment>http://www.cnblogs.com/yizhu2000/comments/1131976.html</wfw:comment><comments>http://www.cnblogs.com/yizhu2000/archive/2008/04/01/1131976.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/yizhu2000/comments/commentRss/1131976.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yizhu2000/services/trackbacks/1131976.html</trackback:ping><description><![CDATA[<p>昨天和几位朋友探讨到了这个话题，发现虽然单点登录，或者叫做独立的passport登录虽然已经有了很多实现方法，但是能真正了解并实现的人却并不太多，所以些下此文，希望从原理到实现，能让大家了解的多一些</p>
<p><br />
至于什么是单点登录，举个例子，如果你登录了msn messenger，访问hotmail邮件就不用在此登录。<br />
一般单点登录都需要有一个独立的登录站点,一般具有独立的域名，专门的进行注册，登录，注销等操作</p>
<p>我们为了讨论方便，把这个登录站点叫做站点P，设其Url为<a href="http://passport.yizhu2000.com">http://passport.yizhu2000.com</a>，需要提供服务的站点设为A和B，跨站点单点登录是指你在A网站进行登录后，使用B网站的服务就不需要再登录</p>
<p><br />
从技术角度讲单点登录分为：</p>
<ul>
    <li>跨子域单点登录  </li>
    <li>完全跨单点域登录</li>
</ul>
<h2>跨子域单点登录</h2>
<p>所谓跨子域登录，A，B站点和P站点位于同一个域下面，比如A站点为http://blog.yizhu2000.com&nbsp;&nbsp;&nbsp;&nbsp; B站点为 <a href="http://forum.yizhu2000.com">http://forum.yizhu2000.com</a>,他们和登录站点P的关系可以看到，都是属于同一个父域，yizhu2000.com,不同的是子域不同，一个为blog，一个为forum，一个是passport</p>
<p>我们先看看最常用的非跨站点普通登录的情况，一般登录验证通过后，一般会将你的用户名和一些用户信息，通过某一密钥进行加密，写在本地，也就是一个加密的cookie，我们把这个cookie叫做--票（ticket）。</p>
<p>需要判断用户是否登录的页面，需要读取这个ticket，并从其中解密出用户信息，如果ticket不存在，或者无法解密，意味着用户没有登录，或者登录信息不正确，这时就要跳转到登录页面进行登录，在这里加密的作用有两个，一是防止用户信息被不怀好意者看到，二是保证ticket不会被伪造，后者其实更为重要，加密后，各个应用需要采用与加密同样的密钥进行解密，如果不知道密钥，就不能伪造出ticket，</p>
<p>（注：加密和解密的密钥有可能不同，取决于采用什么加密算法，如果是对称加密，则为同一密钥，如果是非对称，就不同了，一般用私钥加密，公钥解密，但是无论怎样，密钥都只有内部知道，这样伪造者既无法伪造也无法解密ticket）</p>
<p>跨子域的单点登录，和上述普通登录的过程没有什么不同，唯一不同的是写cookie时，由于登录站点P和应用A处于不同的子域，P站写入的cookie的域为passport.yizhu2000.net，而A站点为forum.yizhu2000.net，A在判断用户登录时无法读到P站点的ticket</p>
<p>解决方法非常简单，当Login完成后P站点写ticket的时候，只需把cookie的域设为他们共同的父域，yizhu2000.net就可以了：cookie.domain="yizhu2000.net"，A站点自然就可以读到这个ticket了</p>
<p>ASP。Net的form验证本身实现了这个机制，大家可以参考http://blog.csdn.net/octverve/archive/2007/09/22/1796338.aspx</p>
<p><em><font color="#400080">ASP.NET身份验证信息跨域共享状态</font></em>  </p>
<p><em><font color="#400080">在ASP.NET 2.0 中只需修改web.config文件即可，修改方法如下:</font></em>  </p>
<p><em><font color="#400080">&lt;authentication mode="Forms"&gt; <br />
&lt;forms name=".ASPNETFORM"&nbsp;&nbsp; domain="imneio.com" loginUrl="/login.aspx" defaultUrl="/default.aspx" protection="All" timeout="30" path="/" requireSSL="false" slidingExpiration="true" enableCrossAppRedirects="false" cookieless="UseDeviceProfile" /&gt; <br />
&lt;/authentication&gt;</font></em>  </p>
<p><em><font color="#400080">domain指定了cookie保存的域，只要保存的是 abc.com形式或者.abc.com的形式，那么其二级域名都可以共享此cookie。</font></em>  </p>
<p><em><font color="#400080">此外，web.config标签中的&lt;sessionState &gt;也做相应修改，mode改为StateServer或者SqlServer，那么里面的session信息也就全部可以共享了。</font></em>  </p>
<p><font color="#400080"><em>StateServer需要在服务中开启&#8220;asp.net状态服务&#8221;的服务</em>。</font>  </p>
<p><a title="http://www.imneio.com/2007/11/17/aspnetnote1/" href="http://www.imneio.com/2007/11/17/aspnetnote1/">http://www.imneio.com/2007/11/17/aspnetnote1/</a>，以上斜体内容摘自此链接  </p>
<h2>完全跨单点域登录</h2>
<p>完全跨域登录，是指A，B站点和P站点没有共同的父域，比如A站点为forum.yizhu1999.net,B站点为blog.yizhu1998.net，大家可以参考微软旗下的几个站点<a title="http://www.live.com" href="http://www.live.com">http://www.live.com</a>，<a href="http://www.hotmail.com">www.hotmail.com</a>,这两个站点就没有共同的父域，而仍然可以共用登录，怎样才能实现呢？请参考下图，由于这种情况ticket比较复杂，我们暂时把P站点创建的的ticket叫做P-ticket，而A站点创建的ticket叫A-ticket，B的为B-ticket</p>
<p><a href="http://www.cnblogs.com/images/cnblogs_com/yizhu2000/WindowsLiveWriter/3616c09558a3_136C8/login_4.gif"><img style="border-width: 0px;" alt="login" src="http://www.cnblogs.com/images/cnblogs_com/yizhu2000/WindowsLiveWriter/3616c09558a3_136C8/login_thumb_1.gif" border="0" height="445" width="605" /></a> </p>
<p>&nbsp;</p>
<p>由于站点A（forum.yizhu1999.com）不能读取到由站点P（passport.yizhu2000.com）创建的加密ticket，所以当用户访问A站点上需要登录才能访问的资源时，A站点会首先查看是否有A-ticket，如果没有，证明用户没有在A站点登录过，不过并不保证用户没有在B站点登录，（重复一下，既然是单点登录，当然无论你在A，B任意一个站点登录过，另外一个站点都要可以访问），请求会被重定向到p站点的验证页面，验证页面读取P-ticket，如果没有，或者解密不成功，就需要重定向登录页面，登录页面完成登录后，写一个加密cookie，也就是P-ticket，并且重定向到A站点的登录处理页，并把加密的用户信息作为参数传递给这个页面，这个页面接收登录页的用户信息，解密后也要写一个cookie，也就是A-ticket，今后用户再次访问A站点上需要登录权限才能访问的资源时，只需要检查这个A-cookie是否存在就可以了</p>
<p>当用户访问B站点时，会重复上面的过程，监测到没有B-ticket，就会重定向到P站点的验证页面，去检查P-ticket，如果没有，就登录，有则返回B的登录处理页面写B-ticket</p>
<p>&nbsp;</p>
<p>注销的时候需要删除P-ticket和A-ticket</p>
<p>&nbsp;</p>
<p><a href="http://www.cnblogs.com/images/cnblogs_com/yizhu2000/WindowsLiveWriter/3616c09558a3_136C8/logout.gif"><img style="border-width: 0px;" alt="logout" src="http://www.cnblogs.com/images/cnblogs_com/yizhu2000/WindowsLiveWriter/3616c09558a3_136C8/logout_thumb.gif" border="0" height="347" width="568" /></a> </p>
<p>&nbsp;</p>
<p>怎么删除cookie：本来以为这个不是问题，不过还是有朋友问道，简单的说其实是创建一个和你要删除的cookie同名的cookie，并把cookie的expire设为当前时间之前的某个时间，不过在跨子域的删除cookie时有一点要注意：必须要把cookie的域设置为父域，在本文中为yizhu2000.com</p>
<p>为了保证各个环节的传输的安全性，最好使用https连接</p>
<img src ="http://www.cnblogs.com/yizhu2000/aggbug/1131976.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41961/" target="_blank">[新闻]Microsoft F# CTP(2008年9月)</a>]]></description></item><item><title>[轻松一下]90%的男人想作的事情</title><link>http://www.cnblogs.com/yizhu2000/archive/2008/03/21/1115864.html</link><dc:creator>二毛五</dc:creator><author>二毛五</author><pubDate>Fri, 21 Mar 2008 02:22:00 GMT</pubDate><guid>http://www.cnblogs.com/yizhu2000/archive/2008/03/21/1115864.html</guid><wfw:comment>http://www.cnblogs.com/yizhu2000/comments/1115864.html</wfw:comment><comments>http://www.cnblogs.com/yizhu2000/archive/2008/03/21/1115864.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/yizhu2000/comments/commentRss/1115864.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yizhu2000/services/trackbacks/1115864.html</trackback:ping><description><![CDATA[1、90%的男人不愿陪老婆逛街，去了，90%也是被老婆拉去的。&nbsp; <br />
2、90%的男人不愿去丈母娘家，去了，90%是为了家庭团结，给了老婆面子。&nbsp; <br />
3、90%的男人都幻想有钱，有了钱后，要换、换、换，除了孩子，换掉所有的一切,可90%的什么也没有换。&nbsp; <br />
4、90%的男人都喜欢看过情色小说或影像，但90%的会说很少看或不喜欢看或没有看过。&nbsp; <br />
5、90%的男人都有性幻想，而90%的幻想的不是自己的老婆。 <br />
6、90%的男人愿意接近女性，想留下好印象，或成为护花使者，但90%的没有达到愿望。&nbsp; <br />
7、90%的男人都自我感觉在各方面做的很好了，可90%的还被老婆指出一大堆毛病。&nbsp; <br />
8、90%的男人看别人的老婆很顺眼，但90%的不敢靠近。&nbsp; <br />
9、90%的男人不愿听老婆发唠叨，但90%还是听了。&nbsp; <br />
10、90%的男人知道自己的缺点，可90%的改不了。&nbsp; <br />
11、90%的男人看到漂亮的女人，有90%的在想，她嫁给谁了，没有让我找到真是遗憾。&nbsp; <br />
12、90%的男人后悔结婚早了，有90%的说，如果现在结婚就是不是这样了。&nbsp; <br />
13、90%的男人总感觉床上功夫很威风，但90%的对自己还是不满意。&nbsp; <br />
14、90%的男人想去风流潇洒一回.可90%的怕出事不好交待.&nbsp; <br />
15、90%的男人看到热恋中的人，卿卿我我，有90%的会说，让我再来一回吧&nbsp;。&nbsp; <br />
16、90%的男人看了帖子回了，好运一年。&nbsp;
<img src ="http://www.cnblogs.com/yizhu2000/aggbug/1115864.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41960/" target="_blank">[新闻]微软4.86亿美元收购Greenfield</a>]]></description></item><item><title>【转】c++中的sizeof</title><link>http://www.cnblogs.com/yizhu2000/archive/2008/03/20/1115426.html</link><dc:creator>二毛五</dc:creator><author>二毛五</author><pubDate>Thu, 20 Mar 2008 14:03:00 GMT</pubDate><guid>http://www.cnblogs.com/yizhu2000/archive/2008/03/20/1115426.html</guid><wfw:comment>http://www.cnblogs.com/yizhu2000/comments/1115426.html</wfw:comment><comments>http://www.cnblogs.com/yizhu2000/archive/2008/03/20/1115426.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/yizhu2000/comments/commentRss/1115426.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yizhu2000/services/trackbacks/1115426.html</trackback:ping><description><![CDATA[[int占４字节,short占２字节] <br />
<br />
1.0&nbsp;回答下列问题:［答案在文章末尾］ <br />
<br />
1.&nbsp;sizeof(char)&nbsp;=　　　　　　　　　　　　　　　　　　　　　　　　　　　 <br />
<br />
2.&nbsp;sizeof&nbsp;'a'&nbsp;&nbsp;&nbsp;=&nbsp;　　　　　　　　　　　　　　　　　　　　　　　　　　 <br />
<br />
3.&nbsp;sizeof&nbsp;"a"&nbsp;&nbsp;&nbsp;=&nbsp;　　　　　　　　　　　　　　　　　　　　　　　 <br />
<br />
4.&nbsp;strlen("a")&nbsp;= <br />
<br />
　　如果你答对了全部四道题，那么你可以不用细看下面关于sizeof的论述。如果你答错了部分题目，那么就跟着我来一起探讨关于sizeof的用法了。　　 <br />
<br />
　　对于前面的题目，我想一般有一定C基础的同志应该不会答错１和４题。至于第２题，我想应该要清楚sizeof是求字符串所占的内存。"a"在内存中的表现为a\0，别忘了末尾的\0也占一个字节呢。至于第２题，可能有些人会惊讶了。C&nbsp;语言中，字符常数是int&nbsp;型,&nbsp;因此&nbsp;sizeof('a')&nbsp;是&nbsp;sizeof(int),&nbsp;这是另一个与&nbsp;C++&nbsp;不同的地方。既然字符常数是int&nbsp;型，那么int就可以存放4个字符，我们可以得到sizeof&nbsp;'abcd'为&nbsp;4。　　 <br />
<br />
1.1&nbsp;回答以下题目［答案在文章末尾］ <br />
<br />
short&nbsp;(*ptr[100])[200]; <br />
<br />
1.&nbsp;sizeof(ptr)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= <br />
<br />
2.&nbsp;sizeof(ptr[0])&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= <br />
<br />
3.&nbsp;sizeof(*ptr[0])&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= <br />
<br />
4.&nbsp;sizeof((*ptr[0])[0]))&nbsp;=&nbsp;　　 <br />
<br />
　　是不是又开始晕了。这里我们定义了一个１００个指针数组，每个指针均指向有２００个元素的数组，其内存占用为２００*sizeof(short)字节。那么这１００个数组指针的大小sizeof(ptr)为１００*sizeof(short*)。接着，指针数组的第一个指针ptr[0]指向第一个数组，所以这个指针ptr[0]的大小实际上就是一个普通指针的大小，即sizeof(short*)。*ptr[0]指向第一个数组的起始地址，所以sizeof(*ptr[0])实际上求的是第一个组的内存大小２００*sizeof(short)。(*ptr[0])[0])是第一个数组的第一个元素，因为是short型，所以这个元素的大小sizeof((*ptr[0])[0]))等价于sizeof(short)。 <br />
<br />
1.2&nbsp;回答以下题目［答案在文章末尾］ <br />
<br />
#include&nbsp; &lt;stdio.h&gt; <br />
<br />
#pragma&nbsp;pack(push) <br />
<br />
#pragma&nbsp;pack(2) <br />
<br />
typedef&nbsp;struct&nbsp;_fruit <br />
{ <br />
&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;apple; <br />
&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;banana; <br />
&nbsp;&nbsp;short&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orange;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;watermelon; <br />
&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;plum:5; <br />
&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;peach:28;&nbsp; <br />
&nbsp;&nbsp;char*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tomato; <br />
&nbsp;&nbsp;struct&nbsp;fruit*&nbsp;next;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
}&nbsp;fruit; <br />
<br />
#pragma&nbsp;pack(4) <br />
&nbsp;&nbsp; <br />
typedef&nbsp;struct&nbsp;_fruit2 <br />
{ <br />
&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;apple; <br />
&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;banana;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;short&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;orange; <br />
&nbsp;&nbsp;double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;watermelon; <br />
&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;plum:5; <br />
&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;peach:28;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;char*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tomato; <br />
&nbsp;&nbsp;struct&nbsp;fruit2*&nbsp;next;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
}&nbsp;fruit2;&nbsp;&nbsp; <br />
<br />
#pragma&nbsp;pack(pop) <br />
<br />
int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;*argv[]) <br />
{ <br />
&nbsp;&nbsp;printf("fruit=%d,fruit2=%d\n",sizeof(fruit),sizeof(fruit2)); <br />
} <br />
<br />
问题：打印结果为什么呢？ <br />
<br />
如果你回答错误，那么你对数据结构的对齐还没有吃透。这里#pragma&nbsp;pack(2)强制设置编译器对齐属性为２，所以第一个数据结构以２对齐，sizeof(fruit)=(sizeof(apple)+1)+sizeof(banana)+sizeof(orange)+sizeof(watermelon)+((plum:5bit+peach:28bit+15bit)/8bit)+sizeof(tomato)+sizeof(next)(注意式子中1&nbsp;和&nbsp;15bit&nbsp;表示补齐内存，使其以２对齐,),既sizeof(fruit)=(sizeof(char)+1)+sizeof(int)+sizeof(short)+sizeof(double)+sizeof(char*)+sizeof(struct&nbsp;fruit*)。第一个数据结构声明完了之后，又使用#pragma&nbsp;pack(4)强制设置编译器对齐属性为４，所以同理，可以得到sizeof(fruit2)=(sizeof(char)+3)+sizeof(int)+(sizeof(short)+2)+sizeof(double)+((5bit+28bit+31bit)/8bit)+sizeof(char*)+sizeof(struct&nbsp;fruit2*)。 <br />
<br />
<br />
－－－－－答案: <br />
<br />
1.0:&nbsp;1,4,2,1 <br />
<br />
1.1:&nbsp;400,4,400,2 <br />
<br />
1.2:&nbsp;fruit=30,fruit2=36 <br />
<br />
"这里我们定义了一个１００个指针数组，每个指针均指向有２００个元素的数组，其内存占用为２００*sizeof(short)字节。那么这１００个数组指针的大小sizeof(ptr)为１００*sizeof(short*)。" <br />
<br />
这里有错误，应该是定义了一个指针数组，该数组有100个元素，其中每一个元素都是一个指针，每个指针指向一个含有200个元素的数组。
<img src ="http://www.cnblogs.com/yizhu2000/aggbug/1115426.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41959/" target="_blank">[新闻]苹果已然取代微软地位成行业众矢之的</a>]]></description></item><item><title>在Visual Studio 2008中使用Microsoft Reference源代码服务</title><link>http://www.cnblogs.com/yizhu2000/archive/2008/01/14/1038071.html</link><dc:creator>二毛五</dc:creator><author>二毛五</author><pubDate>Mon, 14 Jan 2008 04:42:00 GMT</pubDate><guid>http://www.cnblogs.com/yizhu2000/archive/2008/01/14/1038071.html</guid><wfw:comment>http://www.cnblogs.com/yizhu2000/comments/1038071.html</wfw:comment><comments>http://www.cnblogs.com/yizhu2000/archive/2008/01/14/1038071.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/yizhu2000/comments/commentRss/1038071.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yizhu2000/services/trackbacks/1038071.html</trackback:ping><description><![CDATA[<div class="post">
<h2>转自<font face="Verdana">http://blog.joycode.com/zhanbos/archive/2008/01/07/113466.aspx</font></h2>
<p>先前相关：<a id="viewpost_ascx_TitleUrl" href="http://blog.joycode.com/zhanbos/archive/2007/10/04/109092.aspx"><font color="#770000">微软将发布.NET框架库的大量源代码</font></a></p>
<p>在上次Blog的评论中，有人称赞道：确实，调试方便了不是一点点；这真是太cool了；很好，期待很久了！不过也有这样的评论：买一张MSDN就可以了。实际上，MSDN中并没有包含将发布的.NET Framework的源代码。</p>
<p>这项服务还在最后的调试阶段，很快就会对外发布。我在这个周末通过Visual Studio 2008使用了这一服务。对于.NET程序员来说，这真的是非常有助于调试，也提供了软件开发时候很有价值的参考。</p>
<p>为了在Visual Studio 2008中使用此服务，有以下几个要点：</p>
<ol>
    <li>在Debugging | General 选项中，不要选Enable Just My Code (Managed Only).
    <li>在Debugging | General 选项中，选择Enable source server support.
    <li>在Debugging | Symbols 选项中，添加Microsoft Reference源代码服务的URL。 正式的URL很快会对外发布。</li>
</ol>
<p>首次使用时需要接受2个License：一个是symbol，另外一个是Source. </p>
<p>这样在调试程序的时候就可以看到.NET Framework的源代码，也可以在调试时跟进（Step into）。</p>
<p>比如说WinForm的Button.cs就被下载到\src\source\.net\8.0\DEVDIV\depot\DevDiv\releases\whidbey\REDBITS\ndp\fx\src\WinForms\Managed\System\WinForms\Button.cs\1\Button.cs。从文件夹的结构可以看到，.NET框架3.5下的WinForm代码实质上还是Whidbey即.NET 2.0。但的确有了一些更新。REDBITS下是.NET 3.5发布时候的代码。</p>
<p>即使将Winform的项目的Target Framework改成2.0或者3.0，我们一样得到上述的Button.cs. 这是因为REDBITS在安装时取代了早先2.0的程序集。</p>
<p>在WPF下的Button.cs被下载到\src\source\.net\8.0\WIN_WINDOWS\lh_tools_devdiv_wpf\Windows\wcp\Framework\System\Windows\Controls\Button.cs\1\Button.cs。虽然现在WPF属于DevDiv的一部分了，从这个文件夹的结构可以看到以前WPF是隶属于Windows的。</p>
<p>在代码的格式上，您也一定能够看出DevDiv和Windows的区别。</p>
<p>除了在文件中添加了几行版权声明：</p>
<font color="#008000" size="2">
<p>// File provided for Reference Use Only by Microsoft Corporation (c) 2007.<br />
// Copyright (c) Microsoft Corporation. All rights reserved.</p>
</font>
<p>您看到的代码与微软内部能够看到的代码是完全相同的。那些代码中的注释，还有对private或者internal members的说明，都是在此之前无法从MSDN的文档中得到的信息。</p>
<p>当然没有任何代码是十全十美的。我已经注意到标有HACK HACK HACK注释的代码了。</p>
<p>阅读代码对程序员而言是一件有趣的活动。随着Microsoft Reference源代码服务的推出，我们有更多的阅读材料了！</p>
<p class="postfoot">发表于 2008年1月7日 10:31 - (阅读:1662;评论:15) </p>
</div>
<link href="http://blog.joycode.com/zhanbos/Services/Pingback.aspx" rel="pingback" /><!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description rdf:about="http://blog.joycode.com/zhanbos/archive/2008/01/07/113466.aspx" dc:identifier="http://blog.joycode.com/zhanbos/archive/2008/01/07/113466.aspx" dc:title="在Visual Studio 2008中使用Microsoft Reference源代码服务" trackback:ping="http://blog.joycode.com/zhanbos/services/trackbacks/113466.aspx"  />
</rdf:RDF>
-->
<img src ="http://www.cnblogs.com/yizhu2000/aggbug/1038071.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41958/" target="_blank">[新闻]Intel 收购 Poky Linux ,为 MID 注入新的动力</a>]]></description></item><item><title>跨域问题解决方案</title><link>http://www.cnblogs.com/yizhu2000/archive/2008/01/13/1037396.html</link><dc:creator>二毛五</dc:creator><author>二毛五</author><pubDate>Sun, 13 Jan 2008 14:06:00 GMT</pubDate><guid>http://www.cnblogs.com/yizhu2000/archive/2008/01/13/1037396.html</guid><wfw:comment>http://www.cnblogs.com/yizhu2000/comments/1037396.html</wfw:comment><comments>http://www.cnblogs.com/yizhu2000/archive/2008/01/13/1037396.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/yizhu2000/comments/commentRss/1037396.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yizhu2000/services/trackbacks/1037396.html</trackback:ping><description><![CDATA[<a href="http://blog.csdn.net/lenel">转自:http://blog.csdn.net/lenel</a><br />
<br />
关于跨域名问题还是问题么，这方面的解决实践非常多，今天我就旧话重提把我所知道的通过几个应用场景来分别总结一下<label class="lenel_info">（转帖请注明出处：http://blog.csdn.net/lenel）</label><br />
<br />
先说明一点：我说的某某域名在您的控制下的意思是这个域名下的网页由您来负责开发内部的JavaScript<br />
<span style="font-weight: bold">场景一</span>：将bbs.xxx.com的页面用iframe嵌入到www.xxx.com的中，如何在iframe内外使用js通信<label class="lenel_info">（转帖请注明出处：http://blog.csdn.net/lenel）</label><br />
一级域名都是xxx.com 这个域名一定是在您的控制下，所以你只要在两个页面中同时升级域名即可<br />
在父窗口和iframe内部分别加上js语句：document.domain="xxx.com";<br />
之后2个页面就等于在同一域名下，通过window.parent oIframe.contentDocument就可以相互访问，进行无障碍的JS通信<br />
在新浪、淘宝等很多页面都能找到这样的语句。不过document.domain不可以随便指定，只能向上升级，从bbs.xxx.com升级到yyy.com肯定会出错<br />
<br />
<span style="font-weight: bold">场景二</span>：将www.yyy.com的页面用iframe嵌入到www.xxx.com的中，两个域名都在您的控制下，如何在iframe内外进行一定的数据交流<label class="lenel_info">（转帖请注明出处：http://blog.csdn.net/lenel）</label><br />
你可以通过相互改变hash值的方式来进行一些数据的通信<br />
<br />
这里的实现基于如下技术要点：<br />
1、父窗口通过改变子窗口的src中的hash值把一部分信息传入，如果src只有hash部分改变，那么子窗口是不会重新载入的。<br />
2、子窗口可以重写父窗口的location.href，但是注意这里子窗口无法读取而只能重写location.href所以要求前提是您控制两个域名，知道当前父窗口的location.href是什么并写在子窗口内，这样通过parent.location.href = "已知的父窗口的href"+"#"+hash。这样父窗口只有hash改变也不会重载。<br />
3、上面两步分别做到了两个窗口之间的无刷新数据通知，那么下面的来说如何感知数据变化。标准中没有相关规定，所以当前的任意浏览器遇到location.hash变化都不会触发任何javaScript事件，也就是说您要自己写监听函数来监视loaction.hash的值的变化。做法是通过setTimeout或者setInterval来写一个监听函数每20-100ms查看一下hash是否变化，如果变化了驱动js根据新的数据做想做的事情。<br />
<br />
这种实现的一些分析：<br />
1、信息通道是双向的，当然会兼容单向，如果只是父窗口向子窗口通知数据，只需要子窗口写hash监听，反之亦然。<br />
2、局限性也是颇大，因为这种通信的前提是双方知道对方的location.href。如果父窗口带有动态的location.search也就是查询参数，那么子窗口的处理上就比较困难，需要把父窗口的location.search作为传递信息的一部分告知子窗口。<br />
3、另外的困扰会有浏览器带给你，IE之外的浏览器遇到hash的改变会记录历史，这样你在处理前进后退的时候会非常头疼<br />
<br />
<br />
<span style="font-weight: bold">场景三</span>：将www.yyy.com的页面用iframe嵌入到www.xxx.com的中，只有被嵌入的yyy.com在您的控制下，如何在iframe内外进行一定的交流<br />
真实场景：google adsence的一个需求，你希望google发现您的页面不能匹配出相关性非常好的按点击付费广告时，你希望google的广告iframe能够隐藏。<br />
google的广告iframe在google域下显然不能把自己隐藏掉，那么怎么办呢？<br />
1、google会提供给你一个html页面<br />
2、您将这个页面放置在您的域名下，并告诉google它的位置<br />
3、当google发现没有很好的广告时，会将子窗口的loaction重定向到您的那个页面下，这样您的页面因为同域名就可以访问父页面来隐藏自己了<br />
是不是很巧的方法？<br />
<br />
<span style="font-weight: bold">场景四</span>：您是内容发布商，如何改造接口，让其他域名下的页面可以从浏览器端出发获得您的数据<br />
我们知道ajax的xmlHttpRequest()说到底是一个无刷新请求服务器数据的辅助工具，但是xmlHttpRequest并不能跨域名请求数据，在某些情况下成了极大的限制。<br />
但是我们如果通过其他方式完成无刷新请求数据不也可以么，我们用Dom方法操作动态JS脚本请求来做这件事。<br />
&nbsp;&nbsp;&nbsp; //创建一个脚本节点<br />
&nbsp;&nbsp;&nbsp; var oScript = document.createElement('script');<br />
&nbsp;&nbsp;&nbsp; //指定脚本src src可以指向任意域名 <br />
&nbsp;&nbsp;&nbsp; //注意src不再指向静态js，而是带着查询参数指向一个动态脚本广播服务。<br />
&nbsp;&nbsp;&nbsp; oScript.src = "http://yyy.com/query.php?"+yourQueryString;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; //如果指定了charset 同时还可以解决xmlHttpRequest另一大困扰 乱码问题&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; //oScript.charset = "utf-8";<br />
&nbsp;&nbsp;&nbsp; //通过Dom操作把这个新的节点加入到文档当中&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; document.getElementsByTagName("head")[0].appendChild(oScript);<br />
<br />
这样只要query.php的输出是可执行的javaScript脚本，比如：djsCallBack（{jsondata}）;<br />
当他从服务器返回后就会自动执行,你可以方便的用json方式来做数据传递了。<br />
要注意，您的脚本请求最好带上时间戳，避免浏览器缓存造成取回数据实时性下降。<br />
<br />
如果您是数据提供者，您可以要求数据索取者在查询参数中提供回调函数名，比如query.php?callback=myDataHandler&amp;key=...?<br />
这样您就可以根据参数来提供给他myDataHandler({jsondata}),这样不同的数据索取者都会得到自定义的正确的异步回调。<br />
<br />
进一步发展，可以做一个统一的从xml到动态json的数据转化服务器，脱离数据的实际意义，针对任何xml接口都可以作为转化后提供给客户端直接访问。<br />
这样就不用针对单独xml数据服务，为了跨域名而做各自的后台数据抓取转化服务。<br />
<br />
用动态脚本传数据功能非常强大，去年我最先在YAHOO的站点上看到这样的应用，让人眼前一亮。<br />
<br />
<span style="font-weight: bold">总结总结</span>：<br />
第一种场景，相应的处理办法有这非常好的效果，可以说完全解决了问题。<br />
第二种场景，相应的处理办法具有一定的跨域数据交流功效，具有相当大的局限，并不适合在复杂业务流程中应用，实际上我也确实也没看到过基于此的大规模应用。<br />
第三种场景，相应的处理办法比较巧妙，虽然redirect之后就不干你什么事了，但如果你是google一样面向众多域名的内容提供商，也是个不错的解决思路。<br />
第四种场景，相应的处理办法非常强大，对比Ajax可以看到，跨域名没问题，无刷新没问题，本身又是异步的，JSON比xml快的多，同时解决乱码问题，只是请求都是Get方式的，不能做Post方式的请求。多一种武器自然可以从容选择了。<label class="lenel_info">（转帖请注明出处：http://blog.csdn.net/lenel）</label><br />
<br />
上面说的基本上都是从前端脚本出发的各种情景下跨域解决方案，我们还有一种新式的更强大的武器Flash，只是现在我还不会用。
 <img src ="http://www.cnblogs.com/yizhu2000/aggbug/1037396.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41957/" target="_blank">[新闻]雅虎将关闭社交网站Mash</a>]]></description></item><item><title>再分享几条短笑话</title><link>http://www.cnblogs.com/yizhu2000/archive/2008/01/11/1035133.html</link><dc:creator>二毛五</dc:creator><author>二毛五</author><pubDate>Fri, 11 Jan 2008 05:27:00 GMT</pubDate><guid>http://www.cnblogs.com/yizhu2000/archive/2008/01/11/1035133.html</guid><wfw:comment>http://www.cnblogs.com/yizhu2000/comments/1035133.html</wfw:comment><comments>http://www.cnblogs.com/yizhu2000/archive/2008/01/11/1035133.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/yizhu2000/comments/commentRss/1035133.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yizhu2000/services/trackbacks/1035133.html</trackback:ping><description><![CDATA[<p><font face="Verdana">某君眼神不好，一日到商场买菜，先买了一只鸡，又走到一个卖宝剑的摊位前<br />
</font><font face="Verdana">&#8216;请问，刀鱼多少钱一斤。&#8221;<br />
碰巧对方眼神也不咋地：&#8220;瞧你那眼神吧，还玩鹰那！！！&#8221; </font></p>
<p><font face="Verdana">&nbsp; </font></p>
<p><font face="Verdana">2楼跳下来和20楼跳下来有什么区别 <br />
</font><font face="Verdana">20楼跳下来 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊！ 啪～～！<br />
</font><font face="Verdana">2楼跳下来 啪～～！啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊！</font></p>
<p><font face="Verdana">&nbsp;</font></p>
<p><font face="Verdana">一士兵在修理电线杆时重重地摔下来后解释:"有一只松鼠钻进了我的裤裆,我<br />
</font><font face="Verdana">没担心,接着第二只松鼠钻进我的裤档,我也不担心,但当我听到其中一只松鼠<br />
</font><font face="Verdana">说'咱们把这只果子分了吧',我才害怕得摔了下来."</font></p>
<p><font face="Verdana">&nbsp;</font></p>
<p><font face="Verdana">老师：&#8220;硅和水反应能生成什么？？&#8221;<br />
一同学：&#8220;王八汤！！&#8221; </font></p>
<p><font face="Verdana">&nbsp; </font></p>
<p><font face="Verdana">瞎子骑自行车载聋子~<br />
聋子看见前面有条沟~就喊~沟!沟!沟!<br />
瞎子接道:啊勒啊勒啊勒~<br />
两人一起掉入沟中... </font></p>
<p><font face="Verdana">&nbsp;</font></p>
<p><font face="Verdana">有个朋友第一次勤工俭学在公园里卖冰棍，不好意思吆喝；这时候突然有一<br />
</font><font face="Verdana">人在那里大喊：&#8220;卖冰棍儿~~~~卖冰棍儿~~&#8221;。那朋友一听，心里可高兴了</font><font face="Verdana">，就跟着喊：&#8220;我也是~~~~我也是~~~~&#8221;。</font></p>
<p><font face="Verdana">&nbsp;</font></p>
<p><font face="Verdana">一只小白<br />
又一只小白<br />
猜动物<br />
——————————————<br />
小白兔 </font></p>
<p><font face="Verdana">&nbsp; </font></p>
<p><font face="Verdana">两个香蕉逛街<br />
前面的香蕉很热，就把外套脱了<br />
后面的香蕉就摔倒了 </font></p>
<p><font face="Verdana">&nbsp;</font></p>
<p><font face="Verdana">你猛地一看不怎么样，仔细一看还不如猛地一看。</font></p>
<p><font face="Verdana">&nbsp;</font></p>
<p><font face="Verdana">小蚯蚓跟着妈妈爬行，忽然问妈妈：妈妈，妈妈，爸爸呢？蚯蚓妈妈扭头对<br />
</font><font face="Verdana">小蚯蚓说：哦，你爸爸啊，他和渔夫一起钓鱼去了！</font></p>
<p><font face="Verdana">&nbsp;</font></p>
<p><font face="Verdana">你男生暗恋一女生 鼓气勇气问那女生喜欢什么样的男生<br />
&#8220;投缘的&#8221;女生答 连问几遍都是一样的答案 <br />
该男生泄气道：&#8220;头扁的行不行&#8221;。 </font></p>
<p><font face="Verdana">&nbsp;</font></p>
<p><font face="Verdana">英文:Do you understand?<br />
翻译:你能倒立吗？ </font></p>
<p><font face="Verdana">&nbsp;</font></p>
<p><font face="Verdana">一日,我上气不接下气追赶末班车，一边追一边喊：师傅!师傅等等我呀~ <br />
车窗突然有名乘客探出头来，慢条斯理的对着我说：悟空．你就别追了 </font></p>
<p><font face="Verdana">&nbsp; </font></p>
<p><font face="Verdana">老苍蝇带着小苍蝇又在吃牛粪，小苍蝇问道：妈妈，为什么我们每次都吃牛</font><font face="Verdana">粪?"<br />
老苍蝇随即就打了小苍蝇一巴掌：&#8220;吃饭的时候不要问这么恶心的问题？</font><font face="Verdana">&#8221; </font></p>
<p><font face="Verdana">&nbsp; </font></p>
<p><font face="Verdana">大象把大便排在路中央，一只蚂蚁正好路过，它抬<br />
</font><font face="Verdana">头望了望那云雾缭绕的顶峰，不禁唱到：呀啦索，这就是青藏高原！~~~~ </font></p>
<font face="Verdana">
<p><br />
&nbsp;</p>
<p>在超市一个人悄悄D把手放在条码扫描器上，只见屏幕显示：猪蹄 8元，他<br />
以为机器坏了，把脸凑过去，结果屏幕上显示：猪头肉 5元</p>
<p>&nbsp;</p>
<p>快醒醒,该吃安眠药了!</p>
<p>&nbsp;</p>
<p>报幕员：&#8220;下面，请大家欣赏新疆歌舞——掀起你的头盖骨&#8221;</p>
<p>&nbsp;</p>
<p>伸出四个指头，英文读：&#8220;four&#8221;。<br />
那么再把四个指头弯曲了用英文怎么读呢？<br />
对了，是——&#8220;wonderful&#8221;</p>
<p>&nbsp;</p>
<p>MM跟我打架，后来我还是屈服了。我伸出胳膊大义凛然道：&#8220;你还不解气就咬我吧！&#8221;<br />
MM：&#8220;对不起，我是回民！！！&#8221;</p>
<p>&nbsp;</p>
<p>以前买了两只狗，叫脸的一只送给你，叫屁股的给自己，可没几天你的脸逃跑了，<br />
三年后，每当我看见我的狗就想：要是脸没有逃～～～～你的脸应该有我的屁股那么大了～</p>
<p>&nbsp;</p>
<p>鲨鱼看着一个滑浪风帆运动员说：「招待真周到。既有早餐，又有盘子和餐巾。」 </p>
<p><br />
公园的椅子上坐着一位老妇人，一个小孩子走过来：&#8220;婆婆，您的牙还行吗？&#8221;<br />
&#8220;不行了，都掉了。&#8221;<br />
小孩子拿出一包胡桃说：&#8220;请您替我拿一下，我过去玩一会球&#8230;&#8230;&#8221; </p>
<p><br />
老师：&#8220;如何分辨章鱼的手和脚？&#8221;学生：&#8220;放个屁给它闻，会捂住鼻子的就是手，其他的就是脚。<br />
<br />
</p>
<p><font face="Verdana">医生问病人是怎么骨折的，答：我觉得鞋里有沙子，就扶着电线杆抖鞋，我</font><font face="Verdana">抖啊抖......有个人以为我触电了，便抄起木棒给了我两棒子。</font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">拉登给布什打电话:"我有一好一坏两消息，你先听哪个？"<br />
</font><font face="Verdana">布什:&#8220;先听好的&#8220;<br />
</font><font face="Verdana">拉登&#8220;我向你们自首来了&#8220;<br />
</font><font face="Verdana">布什&#8220;好啊，坏消息呢？&#8220;<br />
</font><font face="Verdana">拉登&#8220;我开飞机来的&#8220;</font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">一对新兵正在操练。班长命令道&#8220;抬起左腿，伸向前方&#8220;有人因为紧张伸出右</font><font face="Verdana">腿，结果和旁边的左腿并在一起。班长怒说&#8220;哪个该死的把两条腿都抬起了?!"</font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">一农民第一次打的，他怕被宰，到站时拿出水果刀边剔牙边说"多少钱啊?"<br />
</font><font face="Verdana">只见司机拿出一把菜刀边刮胡子边答&#8220;大哥您就看着给吧"</font></p>
<font face="Verdana">
<p></font>&nbsp;</p>
</font>
<img src ="http://www.cnblogs.com/yizhu2000/aggbug/1035133.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41956/" target="_blank">[新闻]中国互联网战争局势图</a>]]></description></item><item><title>排错案例分享</title><link>http://www.cnblogs.com/yizhu2000/archive/2008/01/10/1033652.html</link><dc:creator>二毛五</dc:creator><author>二毛五</author><pubDate>Thu, 10 Jan 2008 10:55:00 GMT</pubDate><guid>http://www.cnblogs.com/yizhu2000/archive/2008/01/10/1033652.html</guid><wfw:comment>http://www.cnblogs.com/yizhu2000/comments/1033652.html</wfw:comment><comments>http://www.cnblogs.com/yizhu2000/archive/2008/01/10/1033652.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cnblogs.com/yizhu2000/comments/commentRss/1033652.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yizhu2000/services/trackbacks/1033652.html</trackback:ping><description><![CDATA[摘要: 分享一个排错的过程,希望能够带给大家一些启示:如果不能debug,又没法写日志时,我们怎么办&nbsp;&nbsp;<a href='http://www.cnblogs.com/yizhu2000/archive/2008/01/10/1033652.html'>阅读全文</a><img src ="http://www.cnblogs.com/yizhu2000/aggbug/1033652.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41955/" target="_blank">[新闻]开源多点触摸技术试运行</a>]]></description></item><item><title>.Net线程问题解答</title><link>http://www.cnblogs.com/yizhu2000/archive/2008/01/03/1011958.html</link><dc:creator>二毛五</dc:creator><author>二毛五</author><pubDate>Thu, 03 Jan 2008 07:48:00 GMT</pubDate><guid>http://www.cnblogs.com/yizhu2000/archive/2008/01/03/1011958.html</guid><wfw:comment>http://www.cnblogs.com/yizhu2000/comments/1011958.html</wfw:comment><comments>http://www.cnblogs.com/yizhu2000/archive/2008/01/03/1011958.html#Feedback</comments><slash:comments>77</slash:comments><wfw:commentRss>http://www.cnblogs.com/yizhu2000/comments/commentRss/1011958.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yizhu2000/services/trackbacks/1011958.html</trackback:ping><description><![CDATA[摘要: 把遇到过的对.Net线程的一些问题和误解集中起来和大家分享,也希望大家能一起补充,热烈欢迎讨论&nbsp;&nbsp;<a href='http://www.cnblogs.com/yizhu2000/archive/2008/01/03/1011958.html'>阅读全文</a><img src ="http://www.cnblogs.com/yizhu2000/aggbug/1011958.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41954/" target="_blank">[新闻]国内软件外包高管集聚大连 探讨竞争与应对策略</a>]]></description></item><item><title>最近用到的浏览器兼容javascript总结</title><link>http://www.cnblogs.com/yizhu2000/archive/2007/12/26/1016084.html</link><dc:creator>二毛五</dc:creator><author>二毛五</author><pubDate>Wed, 26 Dec 2007 14:19:00 GMT</pubDate><guid>http://www.cnblogs.com/yizhu2000/archive/2007/12/26/1016084.html</guid><wfw:comment>http://www.cnblogs.com/yizhu2000/comments/1016084.html</wfw:comment><comments>http://www.cnblogs.com/yizhu2000/archive/2007/12/26/1016084.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/yizhu2000/comments/commentRss/1016084.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yizhu2000/services/trackbacks/1016084.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<h2>
<p>
<p><font size="2">最近做了一些javascript相关的工作,把收获和大家分享一下,感谢下meizz,他的框架jsframework给我提供了许多现成的工具</font></p>
<p>&nbsp;</p>
</h2>
<h2>title这个元素比较特殊</h2>
<p>如果title中有经过htmlencode的字符，通过document.title获得的内容将会自动解码,并且在ie中通过给title加上一个id然后用document.getElementById(titleid).innerHTML来获得其中内容也仍然是已经解码的，而firefox则不会</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">title&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="tt"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">&amp;lt;</span><span style="color: #000000">iframe&nbsp;src=</span><span style="color: #ff0000">&amp;quot;</span><span style="color: #000000">www.baidu.com</span><span style="color: #ff0000">&amp;quot;</span><span style="color: #000000">/</span><span style="color: #ff0000">&amp;gt</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="dd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">&amp;lt;</span><span style="color: #000000">iframe&nbsp;src=</span><span style="color: #ff0000">&amp;quot;</span><span style="color: #000000">www.baidu.com</span><span style="color: #ff0000">&amp;quot;</span><span style="color: #000000">/</span><span style="color: #ff0000">&amp;gt</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
document.title:</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="disp1"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
document.getElementById(titleid):</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="disp2"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
document.getElementbyId(divid):</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="disp3"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000; background-color: #f5f5f5"><br />
document.getElementById(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">disp1</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">).value</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">document.title;<br />
document.getElementById(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">disp2</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">).value</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">document.getElementById(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">tt</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">).innerHTML;<br />
document.getElementById(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">disp3</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">).value</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">document.getElementById(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">dd</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">).innerHTML;<br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
<br />
</span></div>
<p>ie中的结果
<p><a href="http://www.cnblogs.com/images/cnblogs_com/yizhu2000/WindowsLiveWriter/javascript_138EB/title%20ie.gif"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="181" alt="title ie" src="http://www.cnblogs.com/images/cnblogs_com/yizhu2000/WindowsLiveWriter/javascript_138EB/title%20ie_thumb.gif" width="455" border="0" /></a>
<p>firefox的结果
<p><a href="http://www.cnblogs.com/images/cnblogs_com/yizhu2000/WindowsLiveWriter/javascript_138EB/title%20ff.gif"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="161" alt="title ff" src="http://www.cnblogs.com/images/cnblogs_com/yizhu2000/WindowsLiveWriter/javascript_138EB/title%20ff_thumb.gif" width="463" border="0" /></a>
<h2>&nbsp;</h2>
<h2>xhtml不支持document.body.scrollTop</h2>
<p>当为html文档加上如下头以支持xhtml过渡标准时候，使用document.body.scrollTop值始终为0</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional//EN"&nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">html&nbsp;</span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://www.w3.org/1999/xhtml"</span><span style="color: #ff0000">&nbsp;xml:lang</span><span style="color: #0000ff">="zh-CN"</span><span style="color: #ff0000">&nbsp;lang</span><span style="color: #0000ff">="zh-CN"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;</span></div>
<p>这是document.body.scrollTop始终为0,这时需要用document.documentElement.scrollTop才能获得正确的值
<p>而如果不加xhtml的申明,document.documentElement.scrollTop将为0
<p>下面这个getScrollXY()方法可以包装这个变化
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="dd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
scrollLeft:</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="disp1"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
scrollTop:</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="disp2"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">button&nbsp;</span><span style="color: #ff0000">onclick</span><span style="color: #0000ff">="onClick()"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">获得scrollXY</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">button</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000; background-color: #f5f5f5"><br />
</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;getScrollXY(){<br />
</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;x,y;<br />
</span><span style="color: #0000ff; background-color: #f5f5f5">if</span><span style="color: #000000; background-color: #f5f5f5">(document.body.scrollTop){<br />
&nbsp;&nbsp;x</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">document.body.scrollLeft;<br />
&nbsp;&nbsp;y</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">document.body.scrollTop;<br />
}<br />
</span><span style="color: #0000ff; background-color: #f5f5f5">else</span><span style="color: #000000; background-color: #f5f5f5">{<br />
&nbsp;&nbsp;x</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">document.documentElement.scrollLeft;<br />
&nbsp;&nbsp;y</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">document.documentElement.scrollTop;<br />
}<br />
</span><span style="color: #0000ff; background-color: #f5f5f5">return</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;{x:x,y:y};<br />
}&nbsp;<br />
<br />
</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;onClick(){<br />
document.getElementById(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">disp1</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">).value</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">getScrollXY().x;<br />
document.getElementById(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">disp2</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">).value</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">getScrollXY().y;<br />
}<br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
</span></div>
<p>&nbsp;
<p><a href="http://www.cnblogs.com/images/cnblogs_com/yizhu2000/WindowsLiveWriter/javascript_138EB/scrollTop.gif"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="160" alt="scrollTop" src="http://www.cnblogs.com/images/cnblogs_com/yizhu2000/WindowsLiveWriter/javascript_138EB/scrollTop_thumb.gif" width="364" border="0" /></a>
<h2>&nbsp;</h2>
<h2>firefox的outerHTML</h2>
<p>firefox没有outerHTML这个很有用的属性,用下面这个方法可以让你的firefox也具有这个属性</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #0000ff">typeof</span><span style="color: #000000">(HTMLElement)</span><span style="color: #000000">!=</span><span style="color: #000000">"</span><span style="color: #000000">undefined</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!</span><span style="color: #000000">window.opera){<br />
HTMLElement.prototype.__defineGetter__(</span><span style="color: #000000">"</span><span style="color: #000000">outerHTML</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #0000ff">function</span><span style="color: #000000">()<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;a</span><span style="color: #000000">=</span><span style="color: #0000ff">this</span><span style="color: #000000">.attributes,&nbsp;str</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">&lt;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #0000ff">this</span><span style="color: #000000">.tagName,&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;</span><span style="color: #0000ff">for</span><span style="color: #000000">(;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">a.length;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(a[i].specified)&nbsp;str</span><span style="color: #000000">+=</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">a[i].name</span><span style="color: #000000">+</span><span style="color: #000000">'</span><span style="color: #000000">="</span><span style="color: #000000">'</span><span style="color: #000000">+</span><span style="color: #000000">a[i].value</span><span style="color: #000000">+</span><span style="color: #000000">'</span><span style="color: #000000">"</span><span style="color: #000000">'</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #0000ff">this</span><span style="color: #000000">.canHaveChildren)&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;str</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;/&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;str</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #0000ff">this</span><span style="color: #000000">.innerHTML</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&lt;/</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #0000ff">this</span><span style="color: #000000">.tagName</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;});&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;HTMLElement.prototype.__defineGetter__(</span><span style="color: #000000">"</span><span style="color: #000000">canHaveChildren</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #0000ff">function</span><span style="color: #000000">()<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">switch</span><span style="color: #000000">(</span><span style="color: #0000ff">this</span><span style="color: #000000">.tagName.toLowerCase())<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">area</span><span style="color: #000000">"</span><span style="color: #000000">:&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">base</span><span style="color: #000000">"</span><span style="color: #000000">:&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">basefont</span><span style="color: #000000">"</span><span style="color: #000000">:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">col</span><span style="color: #000000">"</span><span style="color: #000000">:&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">frame</span><span style="color: #000000">"</span><span style="color: #000000">:&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">hr</span><span style="color: #000000">"</span><span style="color: #000000">:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">img</span><span style="color: #000000">"</span><span style="color: #000000">:&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">br</span><span style="color: #000000">"</span><span style="color: #000000">:&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">input</span><span style="color: #000000">"</span><span style="color: #000000">:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">link</span><span style="color: #000000">"</span><span style="color: #000000">:&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">meta</span><span style="color: #000000">"</span><span style="color: #000000">:&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">isindex</span><span style="color: #000000">"</span><span style="color: #000000">:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">param</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
&nbsp;&nbsp;});<br />
}<br />
</span></div>
<p>&nbsp;
<h2>firefox和ie的事件</h2>
<p>firefox和ie的事件对象稍微不同,比方说下面这个在ie下获得鼠标位置的方法</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">&lt;</span><span style="color: #800000">button&nbsp;</span><span style="color: #ff0000">onclick</span><span style="color: #0000ff">="onClick()"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">获得鼠标点击横坐标</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">button</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000; background-color: #f5f5f5"><br />
<br />
</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;onclick(){<br />
<br />
alert(event.clientX);<br />
<br />
}<br />
<br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span></div>
<p>需要改成</p>
<p>&lt;button onclick="onClick(<font color="#ff0000"><strong>event</strong></font>)"&gt;获得OuterHTML&lt;/button&gt;</p>
<p>&lt;script type="text/javascript"&gt;</p>
<p>function onclick(<font color="#ff0000"><strong>event</strong></font>){</p>
<p>alert(event.clientX);</p>
<p>}</p>
<p>&lt;/script&gt;</p>
<p>才能在两种浏览器下使用</p>
<h2>&nbsp;children与childNodes</h2>
<p>ie提供的children,childNodes和firefox下的childNodes的行为是有区别的,firefox下childNodes会把换行和空白字符都算作父节点的子节点,而ie的childNodes和children不会</p>
<p>比如</p>
<p>&lt;div id="dd"&gt;<br />
&lt;div&gt;yizhu2000&lt;/div&gt;<br />
&lt;/div&gt;
<p>id为dd的div在ie下用childNodes查看,其子节点数为1,而ff下为三,我们可以从ff的dom查看器里面看到他的childNodes为[<a>"\n "</a>, <a>div</a>, <a>"\n"</a>]</p>
<p>要在ff下模拟children的属性我们可以这样做</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #0000ff">typeof</span><span style="color: #000000">(HTMLElement)</span><span style="color: #000000">!=</span><span style="color: #000000">"</span><span style="color: #000000">undefined</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!</span><span style="color: #000000">window.opera){<br />
<br />
HTMLElement.prototype.__defineGetter__(</span><span style="color: #000000">"</span><span style="color: #000000">children</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #0000ff">function</span><span style="color: #000000">()<br />
{<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;a</span><span style="color: #000000">=</span><span style="color: #000000">[],j</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">,n,i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">this</span><span style="color: #000000">.childNodes.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">){<br />
&nbsp;&nbsp;&nbsp;n</span><span style="color: #000000">=</span><span style="color: #0000ff">this</span><span style="color: #000000">.childNodes[i];</span><span style="color: #0000ff">if</span><span style="color: #000000">(n.nodeType</span><span style="color: #000000">==</span><span style="color: #000000">1</span><span style="color: #000000">){a[j</span><span style="color: #000000">++</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #000000">n;</span><span style="color: #0000ff">if</span><span style="color: #000000">(n.name){<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">a[n.name])a[n.name]</span><span style="color: #000000">=</span><span style="color: #000000">[];&nbsp;a[n.name][a[n.name].length]</span><span style="color: #000000">=</span><span style="color: #000000">n;}<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(n.id)&nbsp;a[n.id]</span><span style="color: #000000">=</span><span style="color: #000000">n;}}</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;a;<br />
});&nbsp;<br />
<br />
}&nbsp;<br />
</span></div>
<p>&nbsp;</p>
<h2>几个有用的工具函数</h2>
<p><strong>在ff下模拟ie的insertAdjacentHTML</strong></p>
<p><strong></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #0000ff">typeof</span><span style="color: #000000">(HTMLElement)</span><span style="color: #000000">!=</span><span style="color: #000000">"</span><span style="color: #000000">undefined</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!</span><span style="color: #000000">window.opera){<br />
<br />
HTMLElement.prototype.insertAdjacentHTML</span><span style="color: #000000">=</span><span style="color: #0000ff">function</span><span style="color: #000000">(where,&nbsp;html)<br />
{<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;e</span><span style="color: #000000">=</span><span style="color: #0000ff">this</span><span style="color: #000000">.ownerDocument.createRange();<br />
&nbsp;&nbsp;&nbsp;e.setStartBefore(</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;e</span><span style="color: #000000">=</span><span style="color: #000000">e.createContextualFragment(html);<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">switch</span><span style="color: #000000">&nbsp;(where)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">beforeBegin</span><span style="color: #000000">'</span><span style="color: #000000">:&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.parentNode.insertBefore(e,&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">);</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">afterBegin</span><span style="color: #000000">'</span><span style="color: #000000">:&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.insertBefore(e,&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.firstChild);&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">beforeEnd</span><span style="color: #000000">'</span><span style="color: #000000">:&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.appendChild(e);&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">afterEnd</span><span style="color: #000000">'</span><span style="color: #000000">:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #0000ff">this</span><span style="color: #000000">.nextSibling)&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.parentNode.appendChild(e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.parentNode.insertBefore(e,&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.nextSibling);&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;}<br />
};&nbsp;<br />
<br />
}&nbsp;<br />
<br />
</span></div>
<p>模拟DotNet的string.format</strong>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">String.prototype.format</span><span style="color: #000000">=</span><span style="color: #0000ff">function</span><span style="color: #000000">()<br />
{<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(arguments.length</span><span style="color: #000000">==</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;s</span><span style="color: #000000">=</span><span style="color: #0000ff">this</span><span style="color: #000000">,&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">arguments.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;s</span><span style="color: #000000">=</span><span style="color: #000000">s.replace(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;RegExp(</span><span style="color: #000000">"</span><span style="color: #000000">\\{</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">i</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">\\}</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">g</span><span style="color: #000000">"</span><span style="color: #000000">),&nbsp;arguments[i]);<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;s;<br />
};&nbsp;</span></div>
<p>&nbsp;
<p>这样我们就可以在程序里使用诸如:
<p>"username:{0} nickname {1}".format("yizhu2000","二毛五")
<p>&nbsp;
<p>资源
<p>meizz的blog <a title="http://blog.csdn.net/meizz/" href="http://blog.csdn.net/meizz/">http://blog.csdn.net/meizz/</a></p><img src ="http://www.cnblogs.com/yizhu2000/aggbug/1016084.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41953/" target="_blank">[新闻]Mac OS X 10.5.5 Build 9F23 测试版和 Safari 4 预览版</a>]]></description></item><item><title>[转]网友票选的2007我最牛msn签名(选摘)</title><link>http://www.cnblogs.com/yizhu2000/archive/2007/12/17/1003275.html</link><dc:creator>二毛五</dc:creator><author>二毛五</author><pubDate>Mon, 17 Dec 2007 08:30:00 GMT</pubDate><guid>http://www.cnblogs.com/yizhu2000/archive/2007/12/17/1003275.html</guid><wfw:comment>http://www.cnblogs.com/yizhu2000/comments/1003275.html</wfw:comment><comments>http://www.cnblogs.com/yizhu2000/archive/2007/12/17/1003275.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/yizhu2000/comments/commentRss/1003275.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yizhu2000/services/trackbacks/1003275.html</trackback:ping><description><![CDATA[<p>&nbsp;  <p>1.挤在北京，给首都添麻烦了……  <p>2.让房价涨的再猛烈一些吧！  <p>3.谁能对偶的感情就像对人民币一样忠诚？  <p>4.他们说我是BT，让我去做CT，结果我是ET。  <p>5.生是她的人，死是她的吉祥物。  <p>6.你真是个地道的美人啊。就是说你只有在地道里才算美人，因为地道里没灯。  <p>7.蹲在厕所里，想着500万……  <p>8.早知道前世的五百次回眸，能换来今生的与你相遇。我就该把头甩断，来换这一辈子与你相遇。  <p>9.彪悍的人生不需要解释。  <p>10.青春就像卫生纸。看着挺多的，用着用着就不够了。  <p>11.爷爷都是从孙子走过来的。  <p>12.琴棋书画不会，洗衣做饭嫌累。  <p>13.诚征小MM，共同来灌水；我灌长江头，君灌长江尾。  <p>14.水能载舟，亦能煮粥！  <p>15.也许似乎大概是，然而未必不见得。  <p>16.我喝酒是想把痛苦溺死，但这该死的痛苦却学会了游泳。  <p>17.不要等到人人都说你丑时才发现自己真的丑。  <p>18.不对，就是碗是铁的，里边没饭你吃啥去？  <p>19.我死了，但是在烈火中我又站起来了，你猜是涅磐，还是尸变？  <p>20.我对生命无悔，奈何心中有愧，只要不死……誓将RMB一赚到底！  <p>21.活着，以死的姿态……  <p>22.如果每个女朋友用一个字来代替的话，我的情史可以写一部长篇小说了。  <p>23.我们虔诚的祈祷：年终的奖金只多不少；领导动情的承诺：新年的工作只少不多。  <p>24.都是水何必装纯，都是狼何必装羊？  <p>25.带翅膀的不一定是天使，我妈说，那是鸟人。  <p>26.也因寂寞难耐，谈过几次恋爱。谁知屡战屡败，轻轻松松被踹！  <p>27.21世纪，什么最重要——我！  <p>28.错过一个人最可怕的方式就是：坐在她的身旁，你却知道永远都不会拥有她。  <p>29.以后不要在我面前说英文，OK？  <p>30.穿别人的鞋，走自己的路，让他们找去吧。  <p>31.爱情就像两个拉着橡皮筋的人，受伤的总是不愿意放手的那一个！  <p>32.我把硬币抛向空中：如果正面朝上，就上MSN，如果背面朝上，就上QQ，如果硬币立起来，我就去自习。  <p>33.每天早上起床都要看一遍“福布斯”富翁排行榜，如果上面没有我的名字，我就去上班…… </p><img src ="http://www.cnblogs.com/yizhu2000/aggbug/1003275.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41952/" target="_blank">[新闻]十月上市 Google手机HTC Dream官方图现</a>]]></description></item><item><title>JavaScript的9个陷阱及评点</title><link>http://www.cnblogs.com/yizhu2000/archive/2007/12/13/993625.html</link><dc:creator>二毛五</dc:creator><author>二毛五</author><pubDate>Thu, 13 Dec 2007 05:57:00 GMT</pubDate><guid>http://www.cnblogs.com/yizhu2000/archive/2007/12/13/993625.html</guid><wfw:comment>http://www.cnblogs.com/yizhu2000/comments/993625.html</wfw:comment><comments>http://www.cnblogs.com/yizhu2000/archive/2007/12/13/993625.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/yizhu2000/comments/commentRss/993625.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yizhu2000/services/trackbacks/993625.html</trackback:ping><description><![CDATA[<p>来自<a href="http://www.fitzblog.com/tabid/17782/bid/2127/Nine-Javascript-Gotchas.aspx">Nine Javascript Gotchas</a>, 以下是JavaScript容易犯错的九个陷阱。虽然不是什么很高深的技术问题，但注意一下，会使您的编程轻松些，即所谓make life easier. 笔者对某些陷阱会混杂一些评点。 </p>
<ol>
    <li>
    <h4>最后一个逗号</h4>
    <p>如这段代码，注意最后一个逗号，按语言学角度来说应该是不错的（python的类似数据类型辞典dictionary就允许如此）。IE会报语法错误，但语焉不详，你只能用人眼从几千行代码中扫描。</p>
    <pre><code>&lt;script&gt;<br />
    var theObj = {<br />
    city : "Boston",<br />
    state : "MA",<br />
    }<br />
    &lt;/script&gt; </code></pre>
    </li>
    <li>
    <h4><code>this</code>的引用会改变</h4>
    <p>如这段代码：</p>
    <pre><code>&lt;input type="button" value="Gotcha!" id="MyButton" &gt;<br />
    &lt;script&gt;<br />
    var MyObject = function () {<br />
    this.alertMessage = "Javascript rules";<br />
    this.ClickHandler = function() {<br />
    <strong>alert(this.alertMessage );</strong>
    }
    }();
    document.getElementById(&#8221;theText&#8221;).onclick =  MyObject.ClickHandler
    &lt;/script&gt;</code></pre>
    <p>并不如你所愿，答案并不是&#8221;JavaScript rules&#8221;。在执行<code>MyObject.ClickHandler</code>时，代码中红色这行，<code>this</code>的引用实际上指向的是<code>document.getElementById("theText")</code>的引用。可以这么解决：</p>
    <pre><code>&lt;input type="button" value="Gotcha!" id="theText" &gt;<br />
    &lt;script&gt;<br />
    var MyObject = function () {<br />
    <strong>var self = this;</strong></code>
    this.alertMessage = &#8220;Javascript rules&#8221;;
    this.OnClick = function() {
    alert(self.value);
    }
    }();
    document.getElementById(&#8221;theText&#8221;).onclick =  MyObject.OnClick
    &lt;/script&gt;</pre>
    <p>实质上，这就是<a href="http://realazy.org/blog/2007/07/18/scope-in-javascript/">JavaScript作用域的问题</a>。如果你看过，你会发现解决方案不止一种。</p>
    </li>
    <li>
    <h4>标识盗贼</h4>
    <p>在JavaScript中不要使用跟HTML的id一样的变量名。如下代码：</p>
    <pre><code>&lt;input type="button" id="TheButton"&gt;<br />
    &lt;script&gt;<br />
    TheButton = get("TheButton");<br />
    &lt;/script&gt;</code></pre>
    <p>IE会报对象未定义的错误。我只能说：IE sucks.</p>
    </li>
    <li>
    <h4>字符串只替换第一个匹配</h4>
    <p>如下代码：</p>
    <pre><code>&lt;script&gt;<br />
    var fileName = "This is a title".replace(" ","_");<br />
    &lt;/script&gt;</code></pre>
    <p>而实际上，结果是&#8221;<code>This_is a title</code>&#8220;. 在JavaScript中，<code>String.replace</code>的第一个参数应该是正则表达式。所以，正确的做法是这样：</p>
    <pre><code>var fileName = "This is a title".replace(/ /g,"_");</code></pre>
    </li>
    <li>
    <h4>mouseout意味着mousein</h4>
    <p>事实上，这是由于事件冒泡导致的。IE中有<code>mouseenter</code>和<code>mouseleave</code>，但不是标准的。作者在此建议大家使用库比如YUI来解决问题。</p>
    </li>
    <li>
    <h4><code>parseInt</code>是基于进制体系的</h4>
    <p>这个是常识，可是很多人给忽略了<code>parseInt</code>还有第二个参数，用以指明进制。比如，<code>parseInt("09")</code>，如果你认为答案是9，那就错了。因为，在此，字符串以0开头，<code>parseInt</code>以八进制来处理它，在八进制中，<code>09</code>是非法，返回<code>false</code>，布尔值<code>false</code>转化成数值就是0. 因此，正确的做法是<code>parseInt("09", 10)</code>. </p>
    </li>
    <li>
    <h4><code>for...in...</code>会遍历所有的东西</h4>
    <p>有一段这样的代码：</p>
    <pre><code>var arr = [5,10,15]<br />
    var total = 1;<br />
    for ( var x in arr) {<br />
    total = total * arr[x];<br />
    }</code></pre>
    <p>运行得好好的，不是吗？但是有一天它不干了，给我返回的值变成了<code>NaN</code>, 晕。我只不过引入了一个库而已啊。原来是这个库改写了<code>Array</code>的<code>prototype</code>，这样，我们的<code>arr</code>平白无过多出了一个属性（方法），而<code>for...in...</code>会把它给遍历出来。所以这样做才是比较安全的：</p>
    <pre><code>for ( var x = 0; x &lt; arr.length; x++) {<br />
    total = total * arr[x];<br />
    }</code></pre>
    <p>其实，这也是污染基本类的<code>prototype</code>会带来危害的一个例证。</p>
    </li>
    <li>
    <h4>事件处理器的陷阱</h4>
    <p>这其实只会存在使用作为对象属性的事件处理器才会存在的问题。比如<code>window.onclick = MyOnClickMethod</code><code>这样的代码，这会复写掉之前的</code><code>window.onclick</code>事件，还可能导致IE的内容泄露（sucks again）。在IE还没有支持DOM 2的事件注册之前，作者建议使用库来解决问题，比如使用YUI:</p>
    <pre><code>YAHOO.util.Event.addListener(window, "click", MyOnClickMethod);</code></pre>
    <p>这应该也属于常识问题，但新手可能容易犯错。</p>
    </li>
    <li>
    <h4>Focus Pocus</h4>
    <p>新建一个<code>input</code>文本元素，然后把焦点挪到它上面，按理说，这样的代码应该很自然：</p>
    <pre><code>var newInput = document.createElement("input");<br />
    document.body.appendChild(newInput);<br />
    newInput.focus();<br />
    newInput.select();</code></pre>
    <p>但是IE会报错（sucks again and again）。理由可能是当你执行<code>fouce()</code>的时候，元素尚未可用。因此，我们可以延迟执行：</p>
    <pre><code>var newInput = document.createElement("input");<br />
    newInput.id = "TheNewInput";<br />
    document.body.appendChild(newInput);<br />
    setTimeout(function(){ //这里我使用闭包改写过，若有兴趣可以对比原文<br />
    document.getElementById('TheNewInput').focus();<br />
    document.getElementById('TheNewInput').select();}, 10);</code></pre>
    </li>
</ol>
<p>在实践中，JavaScript的陷阱还有很多很多，大多是由于解析器的实现不到位而引起。这些东西一般都不会在教科书中出现，只能靠开发者之间的经验分享。谢天谢地，我们生活在网络时代，很多碰到的问题，一般都可以在Google中找到答案。
</p>
<p>转自 <a href="http://realazy.org/blog/2007/08/20/nine-javascript-gotchas/">Realazy &#187; JavaScript的9个陷阱及评点</a></p>
<img src ="http://www.cnblogs.com/yizhu2000/aggbug/993625.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41951/" target="_blank">[新闻]2008年8月29日IT博客精选</a>]]></description></item><item><title>SQLServer 2005 海量数据解决方案 分区表     </title><link>http://www.cnblogs.com/yizhu2000/archive/2007/12/13/992901.html</link><dc:creator>二毛五</dc:creator><author>二毛五</author><pubDate>Wed, 12 Dec 2007 16:00:00 GMT</pubDate><guid>http://www.cnblogs.com/yizhu2000/archive/2007/12/13/992901.html</guid><wfw:comment>http://www.cnblogs.com/yizhu2000/comments/992901.html</wfw:comment><comments>http://www.cnblogs.com/yizhu2000/archive/2007/12/13/992901.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/yizhu2000/comments/commentRss/992901.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/yizhu2000/services/trackbacks/992901.html</trackback:ping><description><![CDATA[Csdn Blog在2007年，由于访问量和数据量的大幅度增长，使得我们原有的在.text 0.96版本上修改的代码基本不堪重负。<br />
<br />
在数据库方面主要表现为，单单文章表，2007年1年的数据已经达到了30G的量（最后的解决方案是对把文章表分为两个表，分别存放文章相关信息和专门存放文章内容的表，然后对两个表作分区）。熟悉.Text得朋友可能知道，有一个专门记录流量的表，页面内的每一次点击，直接记录到数据库里面，反映到页面上就是单个用户的博客流量，分别是EntryID,BlogID,DateTime，表名称叫做blog_viewcount，这个表我们现在已经到了4亿的数据，之前仅仅是优化索引和索引试图来在真实的环境中查看到底sql2005单表能负载多大的量。<br />
最后得出结论，在sql2005中，单表的量最多不能超过200w数据。<br />
<br />
而文章表和blog_viewcount这个表，我们现在采用2005得新特性，分区表来实现。事实上，反映还不错。以下写出创建分区表的步鄹（我们用blog_viewcount来做实例）：<br />
<br />
先根据表数据的量大小，来拆分每一个分区，保证分区之间在200w以下的数据
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: rgb(230,230,230) 0% 50%; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; padding-top: 4px; border-bottom: windowtext 0.5pt solid; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">
<div><font size="3"><font size="+0"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: rgb(0,0,255)">CREATE</span><span style="color: rgb(0,0,0)">&nbsp;PARTITION&nbsp;</span><span style="color: rgb(0,0,255)">FUNCTION</span><span style="color: rgb(0,0,0)">&nbsp;OneYearDateRangePFN(</span><span style="font-weight: bold; color: rgb(0,0,0)">datetime</span><span style="color: rgb(0,0,0)">)<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;</span><span style="color: rgb(0,0,255)">AS</span><span style="color: rgb(0,0,0)">&nbsp;RANGE&nbsp;</span><span style="color: rgb(255,0,255)">LEFT</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">FOR</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">VALUES</span><span style="color: rgb(0,0,0)">&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />(&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">20070131&nbsp;23:59:59.997</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">20070228&nbsp;23:59:59.997</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">20070331&nbsp;23:59:59.997</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">20070430&nbsp;23:59:59.997</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">20070531&nbsp;23:59:59.997</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">20070630&nbsp;23:59:59.997</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">20070731&nbsp;23:59:59.997</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">20070831&nbsp;23:59:59.997</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">20070930&nbsp;23:59:59.997</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">20071031&nbsp;23:59:59.997</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">20071130&nbsp;23:59:59.997</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">20071231&nbsp;23:59:59.997</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />)&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span></font></font></div>
</div>
<font size="3"><br />
然后我们需要添加相应的文件组<br />
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: rgb(230,230,230) 0% 50%; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; padding-top: 4px; border-bottom: windowtext 0.5pt solid; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">
<div><font size="+0"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: rgb(0,0,255)">ALTER</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">DATABASE</span><span style="color: rgb(0,0,0)">&nbsp;newcsdnblog&nbsp;</span><span style="color: rgb(0,0,255)">ADD</span><span style="color: rgb(0,0,0)">&nbsp;FILEGROUP&nbsp;</span><span style="color: rgb(255,0,0)">[</span><span style="color: rgb(255,0,0)">ViewCount200701</span><span style="color: rgb(255,0,0)">]</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">ALTER</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">DATABASE</span><span style="color: rgb(0,0,0)">&nbsp;newcsdnblog&nbsp;</span><span style="color: rgb(0,0,255)">ADD</span><span style="color: rgb(0,0,0)">&nbsp;FILEGROUP&nbsp;</span><span style="color: rgb(255,0,0)">[</span><span style="color: rgb(255,0,0)">ViewCount200702</span><span style="color: rgb(255,0,0)">]</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">ALTER</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">DATABASE</span><span style="color: rgb(0,0,0)">&nbsp;newcsdnblog&nbsp;</span><span style="color: rgb(0,0,255)">ADD</span><span style="color: rgb(0,0,0)">&nbsp;FILEGROUP&nbsp;</span><span style="color: rgb(255,0,0)">[</span><span style="color: rgb(255,0,0)">ViewCount200703</span><span style="color: rgb(255,0,0)">]</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">ALTER</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">DATABASE</span><span style="color: rgb(0,0,0)">&nbsp;newcsdnblog&nbsp;</span><span style="color: rgb(0,0,255)">ADD</span><span style="color: rgb(0,0,0)">&nbsp;FILEGROUP&nbsp;</span><span style="color: rgb(255,0,0)">[</span><span style="color: rgb(255,0,0)">ViewCount200704</span><span style="color: rgb(255,0,0)">]</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">ALTER</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">DATABASE</span><span style="color: rgb(0,0,0)">&nbsp;newcsdnblog&nbsp;</span><span style="color: rgb(0,0,255)">ADD</span><span style="color: rgb(0,0,0)">&nbsp;FILEGROUP&nbsp;</span><span style="color: rgb(255,0,0)">[</span><span style="color: rgb(255,0,0)">ViewCount200705</span><span style="color: rgb(255,0,0)">]</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">ALTER</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">DATABASE</span><span style="color: rgb(0,0,0)">&nbsp;newcsdnblog&nbsp;</span><span style="color: rgb(0,0,255)">ADD</span><span style="color: rgb(0,0,0)">&nbsp;FILEGROUP&nbsp;</span><span style="color: rgb(255,0,0)">[</span><span style="color: rgb(255,0,0)">ViewCount200706</span><span style="color: rgb(255,0,0)">]</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">ALTER</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">DATABASE</span><span style="color: rgb(0,0,0)">&nbsp;newcsdnblog&nbsp;</span><span style="color: rgb(0,0,255)">ADD</span><span style="color: rgb(0,0,0)">&nbsp;FILEGROUP&nbsp;</span><span style="color: rgb(255,0,0)">[</span><span style="color: rgb(255,0,0)">ViewCount200707</span><span style="color: rgb(255,0,0)">]</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">ALTER</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">DATABASE</span><span style="color: rgb(0,0,0)">&nbsp;newcsdnblog&nbsp;</span><span style="color: rgb(0,0,255)">ADD</span><span style="color: rgb(0,0,0)">&nbsp;FILEGROUP&nbsp;</span><span style="color: rgb(255,0,0)">[</span><span style="color: rgb(255,0,0)">ViewCount200708</span><span style="color: rgb(255,0,0)">]</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">ALTER</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">DATABASE</span><span style="color: rgb(0,0,0)">&nbsp;newcsdnblog&nbsp;</span><span style="color: rgb(0,0,255)">ADD</span><span style="color: rgb(0,0,0)">&nbsp;FILEGROUP&nbsp;</span><span style="color: rgb(255,0,0)">[</span><span style="color: rgb(255,0,0)">ViewCount200709</span><span style="color: rgb(255,0,0)">]</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">ALTER</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">DATABASE</span><span style="color: rgb(0,0,0)">&nbsp;newcsdnblog&nbsp;</span><span style="color: rgb(0,0,255)">ADD</span><span style="color: rgb(0,0,0)">&nbsp;FILEGROUP&nbsp;</span><span style="color: rgb(255,0,0)">[</span><span style="color: rgb(255,0,0)">ViewCount200710</span><span style="color: rgb(255,0,0)">]</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">ALTER</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">DATABASE</span><span style="color: rgb(0,0,0)">&nbsp;newcsdnblog&nbsp;</span><span style="color: rgb(0,0,255)">ADD</span><span style="color: rgb(0,0,0)">&nbsp;FILEGROUP&nbsp;</span><span style="color: rgb(255,0,0)">[</span><span style="color: rgb(255,0,0)">ViewCount200711</span><span style="color: rgb(255,0,0)">]</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">ALTER</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">DATABASE</span><span style="color: rgb(0,0,0)">&nbsp;newcsdnblog&nbsp;</span><span style="color: rgb(0,0,255)">ADD</span><span style="color: rgb(0,0,0)">&nbsp;FILEGROUP&nbsp;</span><span style="color: rgb(255,0,0)">[</span><span style="color: rgb(255,0,0)">ViewCount200712</span><span style="color: rgb(255,0,0)">]<br />
</span><span style="color: rgb(0,0,0)"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span></font></div>
</div>
<br />
<br />
第三步，我们需要在服务器上建立出单独的文件（涉及到的朋友可能知道，我们如果把文件分布在不同的磁盘上，可以最大限度的提高磁头的读写能力；另：这里微软建议数据库服务器最好作Raid0 + Raid1）<br />
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: rgb(230,230,230) 0% 50%; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; padding-top: 4px; border-bottom: windowtext 0.5pt solid; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">
<div><font size="+0"><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: rgb(0,0,255)">ALTER</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">DATABASE</span><span style="color: rgb(0,0,0)">&nbsp;newcsdnblog<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">ADD</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">FILE</span><span style="color: rgb(0,0,0)">&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />(NAME&nbsp;</span><span style="color: rgb(128,128,128)">=</span><span style="color: rgb(0,0,0)">&nbsp;N</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">ViewCount200701</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,FILENAME&nbsp;</span><span style="color: rgb(128,128,128)">=</span><span style="color: rgb(0,0,0)">&nbsp;N</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">f:SmallTableViewCount200701.ndf</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,SIZE&nbsp;</span><span style="color: rgb(128,128,128)">=</span><span style="color: rgb(0,0,0)">&nbsp;5MB,MAXSIZE&nbsp;</span><span style="color: rgb(128,128,128)">=</span><span style="color: rgb(0,0,0)">&nbsp;100MB,FILEGROWTH&nbsp;</span><span style="color: rgb(128,128,128)">=</span><span style="color: rgb(0,0,0)">&nbsp;5MB)<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">TO</span><span style="color: rgb(0,0,0)">&nbsp;FILEGROUP&nbsp;</span><span style="color: rgb(255,0,0)">[</span><span style="color: rgb(255,0,0)">ViewCount200701</span><span style="color: rgb(255,0,0)">]</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">ALTER</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">DATABASE</span><span style="color: rgb(0,0,0)">&nbsp;newcsdnblog<br />
<img a