﻿<?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>博客园-adamxx</title><link>http://www.cnblogs.com/adamxx/</link><description>天下事,法无定法,然后知非法法之世间人,尤了未了,何妨以不了了之</description><language>zh-cn</language><lastBuildDate>Sat, 04 Jul 2009 05:14:32 GMT</lastBuildDate><pubDate>Sat, 04 Jul 2009 05:14:32 GMT</pubDate><ttl>60</ttl><item><title>献给苏苏的梦呓</title><link>http://www.cnblogs.com/adamxx/archive/2008/06/11/1216850.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Wed, 11 Jun 2008 04:07:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/06/11/1216850.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1216850.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/06/11/1216850.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1216850.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1216850.html</trackback:ping><description><![CDATA[<p>献给苏苏的梦呓<br />
真人真事...<br />
<br />
第一幕:<br />
<br />
她是我的高中同学!<br />
传说我是她的初恋!<br />
<br />
话说8年前:<br />
对面:清纯的脸<br />
这边:连哄带骗<br />
<br />
说来也好,这般的美女就被我遇见了.其实她那时还不是那么的美,我也是预算到她未来会很美,于是...埋下了伏笔!这叫做布局.<br />
事态发展,人还小,事情也少,你看我我看你的就走了半年,平淡!<br />
<br />
说来惭愧,自古"英雄"出少年,在大好局势下走错了一步,离开了她,于是...留下了隐患!这叫做弃子.<br />
<br />
想起后悔,据说之后,但凡想起此事,伤心欲绝,痛苦流涕,这叫做背时.<br />
<br />
唉,忘不了的..不只是那低头的温柔!<br />
<hr />
<br />
第二幕:<br />
<br />
她是我的女朋友!<br />
我爱她!<br />
<br />
8年后的相遇不是偶然...这叫做缘<br />
话说那一年的分别就是8年...<br />
<br />
夏天,傍晚,雨<br />
街的对面是她,我认得很清楚,她,是她,她变了,变得更美了...<br />
<br />
天微微有些暗了,细雨落在身上感觉有些凉意,还有些下班的人快步的走着.再转个弯就是约好的地点.她变了吗?<br />
那时只见,对面...........................<br />
赞：%^&amp;^*%#%—&#8230;&#8230;%&#8230;&#8230;*—&#183;#&#183;#&#183;#%%<br />
我靠,她对我笑,操,我只是个人,何况是个男人.瞬时间,全身血液沸腾,顾不上一切向她奔去，要不是后面有人拉我,我肯定被撞死了.<br />
再赞:%&#8230;&#8230;%%—*&#8230;&#8230;—##&#183;#&#183;#%#&#8230;&#8230;*&#8230;&#8230;<br />
<br />
她太美了,我相信世间没有哪中语言能形容她的美.<br />
我不禁惊呼:此女只于天上有...............这叫做天使.<br />
<br />
这一幕改变了我的一生......................这叫做转角遇见爱.<br />
<br />
于是,一场战役又打响了...<br />
女子,人生大事,悲喜之地,不可不察也...经过1个月的艰苦奋战,终于............这叫做收复失地.<br />
才发现:女人说她美,男人说她不只是美,还有贤惠.<br />
若娶苏苏为妻,当造金屋储之.....<br />
<br />
于是:<br />
立下2志:<br />
1志:35岁前赚够一亿<br />
2志:30岁前娶苏苏为妻.<br />
<br />
突然发现那么爱她,我很感激她,那么久来照顾我,相信我,爱我!<br />
<hr />
<br />
第三幕:<br />
<br />
她是我明天的老婆!<br />
我永远爱她! <br />
<br />
待续...&nbsp; 
<img src ="http://www.cnblogs.com/adamxx/aggbug/1216850.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47970/" target="_blank">19岁天才黑客发布首个iPhone 3GS破解软件</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>奋斗</title><link>http://www.cnblogs.com/adamxx/archive/2008/02/29/1086658.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Fri, 29 Feb 2008 13:56:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/02/29/1086658.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1086658.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/02/29/1086658.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1086658.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1086658.html</trackback:ping><description><![CDATA[<p>&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;&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; </p>
<img src ="http://www.cnblogs.com/adamxx/aggbug/1086658.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47969/" target="_blank">新浪邮箱大本营粉墨登场！Sina.cn开放注册</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[转]Linq 解爱因斯坦迷题</title><link>http://www.cnblogs.com/adamxx/archive/2008/01/14/1038040.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Mon, 14 Jan 2008 04:28:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/14/1038040.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1038040.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/14/1038040.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1038040.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1038040.html</trackback:ping><description><![CDATA[摘要: 原文地址:http://www.cnblogs.com/foundation/archive/2008/01/14/1037907.html据说是爱因斯坦迷题,不知是真是假，不过这道集合运算的题还是挺有意思的，比一般的[谁是凶手]的题多了集合项之间的关系用linq的集合运算符，不用if、for等控制流语句解一下这道题.本题的解题方式用的是工作流处理问题的方式将事项分为阶段（也叫状态），每个阶段按一&nbsp;&nbsp;<a href='http://www.cnblogs.com/adamxx/archive/2008/01/14/1038040.html'>阅读全文</a><img src ="http://www.cnblogs.com/adamxx/aggbug/1038040.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47968/" target="_blank">IE市场份额首次跌破60%</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>在自定义Sharepoint Webpart中使用Linq的问题</title><link>http://www.cnblogs.com/adamxx/archive/2008/01/11/1034860.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Fri, 11 Jan 2008 02:49:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/11/1034860.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1034860.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/11/1034860.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1034860.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1034860.html</trackback:ping><description><![CDATA[<p>今天我们将一个Web Application迁移到Moss上,在这个过程中出现了很多的问题<br />
除开一些基本的问题以外,Linq在Moss上也会导致一些问题,记录如下:<br />
<br />
数据库:<br />
<img height="44" alt="" src="http://www.cnblogs.com/images/cnblogs_com/adamxx/MossLinq2.jpg" width="444" border="0" /><br />
<br />
字段AutoPassowrdSync数据类型bit ,允许空.<br />
<br />
在Linq to&nbsp;sql后,数据类型为 bool?,也就是Nullable&lt;bool&gt;<br />
<img height="418" alt="" src="http://www.cnblogs.com/images/cnblogs_com/adamxx/MossLinq3.JPG" width="304" border="0" /><br />
<img height="88" alt="" src="http://www.cnblogs.com/images/cnblogs_com/adamxx/MossLinq4.JPG" width="398" border="0" /><br />
<br />
测试发现,在MOSS上,到遇到类似这种Nullable&lt;bool&gt;的值将会报错.<br />
将数据库中AutoPasswordSync字段设置为不允许空,相应的在dbml里,数据类型改为bool,问题解决!<font face="Verdana"><br />
</font></p>
<img src ="http://www.cnblogs.com/adamxx/aggbug/1034860.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47965/" target="_blank">Google App Engine宕机6小时——云的安全在哪里？</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Silverlight 自定义光标 Custom Cursor</title><link>http://www.cnblogs.com/adamxx/archive/2008/01/10/1034006.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Thu, 10 Jan 2008 09:36:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/10/1034006.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1034006.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/10/1034006.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1034006.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1034006.html</trackback:ping><description><![CDATA[<h1><script type="text/javascript" src="http://agappdom.net/h/silverlight.js"></script><script type="text/javascript">
function CreateSilverlight(){
  Silverlight.createHostedObjectEx({
    source: "streaming:/44081/CustomCursor",parentElement: Wrapper_CustomCursor});
}
</script><span style="font-size: 12pt">Silverlight 自定义光标 Custom Cursor<br />
</h1>
<font face="Verdana">
<div id="Wrapper_CustomCursor" style="overflow: hidden; width: 500px; height: 400px"></div>
<br />
<br />
其实很简单,将在Load的时候将光标设置为none值,在前台随便画一个东西,鼠标移动的时候跟随就行<br />
<br />
<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"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">Rectangle&nbsp;</span><span style="color: #ff0000">Width</span><span style="color: #0000ff">="20"</span><span style="color: #ff0000">&nbsp;Height</span><span style="color: #0000ff">="20"</span><span style="color: #ff0000">&nbsp;x:Name</span><span style="color: #0000ff">="cursor"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Rectangle.Triggers</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">EventTrigger&nbsp;</span><span style="color: #ff0000">RoutedEvent</span><span style="color: #0000ff">="Canvas.Loaded"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">BeginStoryboard</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Storyboard</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">DoubleAnimation<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">Storyboard.TargetName</span><span style="color: #0000ff">="rotate"</span><span style="color: #ff0000">&nbsp;Storyboard.TargetProperty</span><span style="color: #0000ff">="Angle"</span><span style="color: #ff0000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By</span><span style="color: #0000ff">="360"</span><span style="color: #ff0000">&nbsp;Duration</span><span style="color: #0000ff">="00:00:03"</span><span style="color: #ff0000">&nbsp;RepeatBehavior</span><span style="color: #0000ff">="Forever"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Storyboard</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">BeginStoryboard</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">EventTrigger</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Rectangle.Triggers</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Rectangle.RenderTransform</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">RotateTransform&nbsp;</span><span style="color: #ff0000">x:Name</span><span style="color: #0000ff">="rotate"</span><span style="color: #ff0000">&nbsp;CenterX</span><span style="color: #0000ff">="10"</span><span style="color: #ff0000">&nbsp;CenterY</span><span style="color: #0000ff">="10"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Rectangle.RenderTransform</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Rectangle.Fill</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">LinearGradientBrush</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">GradientStop&nbsp;</span><span style="color: #ff0000">Color</span><span style="color: #0000ff">="White"</span><span style="color: #ff0000">&nbsp;Offset</span><span style="color: #0000ff">="0"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">GradientStop&nbsp;</span><span style="color: #ff0000">Color</span><span style="color: #0000ff">="Red"</span><span style="color: #ff0000">&nbsp;Offset</span><span style="color: #0000ff">=".5"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">GradientStop&nbsp;</span><span style="color: #ff0000">Color</span><span style="color: #0000ff">="Black"</span><span style="color: #ff0000">&nbsp;Offset</span><span style="color: #0000ff">="1"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">LinearGradientBrush</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Rectangle.Fill</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Rectangle</span><span style="color: #0000ff">&gt;</span></div>
<br />
<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"><img id="Codehighlighter1_47_181_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_47_181_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_47_181_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_47_181_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_47_181_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_47_181_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_47_181_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_47_181_Open_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Page_Loaded(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;o,&nbsp;EventArgs&nbsp;e)&nbsp;</span><span id="Codehighlighter1_47_181_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_47_181_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Required&nbsp;to&nbsp;initialize&nbsp;variables</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InitializeComponent();<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.Cursor&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Cursors.None;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
<br />
<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"><img id="Codehighlighter1_57_519_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_57_519_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_57_519_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_57_519_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_57_519_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_57_519_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_57_519_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_57_519_Open_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;OnMouseMove(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;MouseEventArgs&nbsp;e)&nbsp;</span><span id="Codehighlighter1_57_519_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_57_519_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;x&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;e.GetPosition(</span><span style="color: #0000ff">this</span><span style="color: #000000">).X;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;y&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;e.GetPosition(</span><span style="color: #0000ff">this</span><span style="color: #000000">).Y;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(x&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">20</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;x&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.Width&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">20</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;y&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">20</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;y&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.Height&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">20</span><span style="color: #000000">)<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.cursor.Visibility&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Visibility.Collapsed;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.cursor.Visibility&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Visibility.Visible;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.cursor.SetValue</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">double</span><span style="color: #000000">&gt;</span><span style="color: #000000">(Canvas.LeftProperty,&nbsp;x);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.cursor.SetValue</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">double</span><span style="color: #000000">&gt;</span><span style="color: #000000">(Canvas.TopProperty,&nbsp;y);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
</span></font><script type="text/javascript">
var Wrapper_CustomCursor = document.getElementById("Wrapper_CustomCursor");
CreateSilverlight();
</script>
<img src ="http://www.cnblogs.com/adamxx/aggbug/1034006.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47961/" target="_blank">微软新推社交网站Windows Live Planet</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>根据浏览器的大小,自动调整Silverlight的大小</title><link>http://www.cnblogs.com/adamxx/archive/2008/01/10/1033161.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Thu, 10 Jan 2008 02:49:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/10/1033161.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1033161.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/10/1033161.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1033161.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1033161.html</trackback:ping><description><![CDATA[<p><font style="font-size: 14pt; font-family: 微软雅黑" face="Verdana">根据浏览器的大小,自动调整Silverlight的大小<br />
<br />
<span style="font-size: 10pt">在Page_Load方法中添加<br />
</span><br />
</font></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"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">BrowserHost.Resize&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;EventHandler(BrowserHost_Resize);</span></div>
<br />
Resize事件处理:<br />
<br />
<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"><img id="Codehighlighter1_52_363_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_52_363_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_52_363_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_52_363_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_52_363_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_52_363_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_52_363_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_52_363_Open_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;BrowserHost_Resize(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;EventArgs&nbsp;e)&nbsp;</span><span id="Codehighlighter1_52_363_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_52_363_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;xscale&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;BrowserHost.ActualWidth&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.Width;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;yscale&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;BrowserHost.ActualHeight&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.Height;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ScaleTransform&nbsp;scale&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ScaleTransform();<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scale.ScaleX&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;xscale&nbsp;;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scale.ScaleY&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;yscale&nbsp;;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RenderTransform&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;scale;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
将silverlightHost的height与width成100%, 好让 Silverlight control&nbsp;随着 html 自动缩放<br />
修改<font face="Verdana">createSilverlight中的</font><font face="Verdana">properties: </font>width:"100%",height:"100%"<br />
<br />
该代码在IE7下测试成功,可以点击<a href="http://www.cnblogs.com/Files/adamxx/ResizeTest.zip">这里</a>下载演示<br />
<br />
对于Firefox:<br />
删除&nbsp;, 之前的 &lt;!DOCTYPE ...&gt;。 如果不删 &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;, 虽然在IE上不会有问题,但在Firefox上则无法正常运行,因为Firefox遇到&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional"&gt;时,HTML的大小会有不同的解释
<img src ="http://www.cnblogs.com/adamxx/aggbug/1033161.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47961/" target="_blank">微软新推社交网站Windows Live Planet</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Silerlight 3D Demo</title><link>http://www.cnblogs.com/adamxx/archive/2008/01/09/1032341.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Wed, 09 Jan 2008 09:34:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/09/1032341.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1032341.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/09/1032341.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1032341.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1032341.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://agappdom.net/h/silverlight.js"></script><script type="text/javascript">
function CreateSilverlight(){
  Silverlight.createHostedObjectEx({
    source: "streaming:/44081/Silverlight3DDemo",parentElement: Wrapper_Silverlight3DDemo});
}
</script><span class="postbody">Silverlight在微软的产品特性中是没有3D功能的，但是开源社区的力量是强大的，现在有一个开源项目来实现这个功能，项目名称叫做Balder<br />
<a href="http://www.codeplex.com/Balder" target="_blank" rel="nofollow">http://www.codeplex.com/Balder</a> <br />
<br />
是1.0的框架,可以下载他的一个demo的代码,由javascript写的3d核心,看起来还是不是很爽<br />
<br />
下面看到的这个3D demo是由1.1改写后的,用C#编写的3D核心.<br />
</span><br />
<div id="Wrapper_Silverlight3DDemo" style="overflow: hidden; width: 500px; height: 400px"></div>
<br />
在Silverlight 1.1下的3D引擎也在测试阶段,并且会添加新的一些3D特性,我也会考虑在<a href="http://www.codeplex.com" target="_blank">Codeplex</a>上建立一个开源的项目,<br />
并且发布一个工作在WPF上面的3D建摸工具,初步的构想是,使用该工具能够生成3D模块的后台代码,这个代码不会以XAML的<br />
形式给出,而采用C#封装的Class初始化代码的形式给出.<br />
<br />
虽然在zam3D上已经有了类似的功能,我并没有使用过该功能,但类似的产品我已经有了一些体验,很多工具都以XAML的代码给<br />
出,你也可以很方便的实现使用该代码呈现出3D的效果,但是如果你想让他动起来,依然是一件很困难的事情.<br />
<br />
Balder项目给了我一定的启发,在FLASH上也有类似的实现,但我们需要的是一个框架,利用这个框架我们可以轻松的实现3D的<br />
展现.<br />
<br />
如果你关注Silvserlight 3D,你可以留意我的Blog,或者<a href="http://slt.cnblogs.com">Silverlight开发团队</a><br />
<script type="text/javascript">
var Wrapper_Silverlight3DDemo = document.getElementById("Wrapper_Silverlight3DDemo");
CreateSilverlight();
</script>
<img src ="http://www.cnblogs.com/adamxx/aggbug/1032341.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47960/" target="_blank">火狐3.5版被指推出太匆忙：存在50多个漏洞</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Silverlight全浏览器显示</title><link>http://www.cnblogs.com/adamxx/archive/2008/01/09/1031863.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Wed, 09 Jan 2008 06:14:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/09/1031863.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1031863.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/09/1031863.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1031863.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1031863.html</trackback:ping><description><![CDATA[很多人问该怎么做<br />
<br />
在TestPage.html.js里面修改createSilverlight 函数<br />
主要修改<br />
<font face="Verdana"><font face="Verdana">properties: {<br />
&nbsp;&nbsp;&nbsp;width: "100%",<br />
&nbsp;&nbsp;&nbsp;height: "100%",<br />
&nbsp;&nbsp;&nbsp;version: "1.1",<br />
&nbsp;&nbsp;&nbsp;enableHtmlAccess: "true"<br />
&nbsp;&nbsp;},</font><br />
<br />
将width和height改为100%即可.<br />
<br />
但如此改动后也不是完全填满整个浏览器,silverlightHost还留有些边距<br />
这里需要修改样式,在TestPage.html中增加
<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"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #800000">&lt;style&gt;<br />
<img id="Codehighlighter1_9_29_Open_Image" style="display: inline" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_9_29_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_9_29_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_9_29_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_9_29_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_9_29_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_9_29_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_9_29_Open_Text').style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />*</span><span id="Codehighlighter1_9_29_Open_Text" style="display: inline"><span style="color: #000000">{</span><span style="color: #ff0000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;margin</span><span style="color: #000000">:</span><span style="color: #0000ff">0px</span><span style="color: #000000">;</span><span style="color: #ff0000">&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span><span style="color: #000000">}</span></span><span style="color: #800000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&lt;/style&gt;</span></div>
</font>
<img src ="http://www.cnblogs.com/adamxx/aggbug/1031863.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47960/" target="_blank">火狐3.5版被指推出太匆忙：存在50多个漏洞</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Silverlight Logo</title><link>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030151.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Tue, 08 Jan 2008 04:06:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030151.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1030151.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030151.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1030151.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1030151.html</trackback:ping><description><![CDATA[<script type="text/javascript" src="http://agappdom.net/h/silverlight.js"></script><script type="text/javascript">
function CreateSilverlight(){
  Silverlight.createHostedObjectEx({
    source: "streaming:/44081/SilverlightTitle",parentElement: Wrapper_SilverlightTitle});
}
</script>
<div id="Wrapper_SilverlightTitle" style="overflow: hidden; width: 200px; height: 60px"></div>
<script type="text/javascript">
var Wrapper_SilverlightTitle = document.getElementById("Wrapper_SilverlightTitle");
CreateSilverlight();
</script>      <img src ="http://www.cnblogs.com/adamxx/aggbug/1030151.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47959/" target="_blank">Google对手机搜索进行优化升级</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[转]Silverlight3D模型能力之三 </title><link>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030146.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Tue, 08 Jan 2008 04:03:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030146.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1030146.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030146.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1030146.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1030146.html</trackback:ping><description><![CDATA[<p>原文地址 <font face="Courier New">http://blog.csdn.net/dotfun/archive/2007/12/21/1957140.aspx</font><br />
<br />
使Silverlight显示3D动画的第三种方式是使用ZAM3D Tools! 它是一个基于XAML的3D Tool，以下是关于ZAM 3D的介绍（引用）：</p>
<blockquote>Electric Rain <span class="caps">ZAM 3D</span>&#8482; is a full-featured 3D modeling application that enables easy creation, customization and animation of 3D interface elements for &#8220;Avalon&#8221; based applications. Once a 3D scene is created, <span class="caps">ZAM 3D</span> automatically generates the <span class="caps">XAML </span>(eXtensible Application Markup Language) markup necessary to covert the 3D elements into an &#8220;Avalon&#8221; 3D scene. <span class="caps">XAML</span> files created with <span class="caps">ZAM 3D</span> can be directly integrated into your application development environment to create rich and engaging user experiences never before possible.</blockquote>
<p><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/dotfun/ZamSS.jpg" /></p>
<p><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/dotfun/ZAM-AvalonChart.jpg" /></p>
<p>&nbsp;界面展示：</p>
<p><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/dotfun/ZAMWallStreetAppSM.jpg" /></p>
<p><a onmouseover="javascript:window.status='http://www.erain.com/products/zam3d/'; return false;" title="(464 hits)" onmouseout="javascript:window.status=''; return false;" href="http://www.erain.com/products/zam3d/">http://www.erain.com/products/zam3d/</a> </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<br />
<br />
<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1957140</p>
  <img src ="http://www.cnblogs.com/adamxx/aggbug/1030146.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47959/" target="_blank">Google对手机搜索进行优化升级</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[转]Silverlight3D模型能力之二 </title><link>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030141.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Tue, 08 Jan 2008 04:01:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030141.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1030141.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030141.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1030141.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1030141.html</trackback:ping><description><![CDATA[<script src="http://blog.csdn.net/count.aspx?ID=1957101&amp;Type=Rank"></script>
<div class="postText">
<p>原文地址 <font face="Courier New">http://blog.csdn.net/dotfun/archive/2007/12/21/1957101.aspx</font><br />
<br />
<strong><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/dotfun/xaml_export_dialog.jpg" align="left" /></strong></p>
<p><strong><font size="3">使Silverlight显示3D效果的另一种方式是使用SWIFT3D 5.0，以下是SWIFT3D官方关于Silverlight3D支持的介绍</font></strong></p>
<p><strong><font size="3">Silverlight 的&nbsp;XAML导入功能：</font></strong></p>
<p><strong><font size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以使任何安装Silverlight插件的用户在浏览器上显示3D场景，正如FLASH中使用FlashPlayer来显示，Swift3D导入关键桢动画在2D的XAML格式（模拟3D效果），在比较大型SL项目中这些XAML文件同样可以使用Microsoft Expression Blend进行设计和编辑&#8230;&#8230;</font></strong></p>
<p><a href="http://www.erain.com/products/swift3d/silverlight/"><font size="3">http://www.erain.com/products/swift3d/silverlight/</font></a><font size="3">&nbsp;</font></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<br />
<br />
<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1957101</p>
</div>
 <img src ="http://www.cnblogs.com/adamxx/aggbug/1030141.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47959/" target="_blank">Google对手机搜索进行优化升级</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[转]Silverlight3D模型能力之一 </title><link>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030140.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Tue, 08 Jan 2008 03:59:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030140.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1030140.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/08/1030140.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1030140.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1030140.html</trackback:ping><description><![CDATA[原文地址 <font face="Courier New">http://blog.csdn.net/dotfun/archive/2007/12/21/1957077.aspx</font><br />
<br />
正如大家所知道的，Silverlight1.0到目前的1.1是不支持3D的，而Adobe的FLASH10已经声明直接支持3D，而Silverlight号称Flash&#8220;终结者&#8221;竟然在1.1没有支持，同时在Silverlight2.0的特性中也没有3D这块&#8230;&#8230;，唯一可以解释的是：这是微软的一种商业战略—&#8220;后来者居上&#8221;，虽然Silverlight目前不直接支持3D，但已经有名为&#8220;Balder&#8221;的开源项目，在CodePlex.com上可以下载，同时是Opensource的项目，这给Silverlight 3D方面带来了希望!
<p><font size="3">Silverlight3D模型能力</font>&nbsp;</p>
<p><img height="383" alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/dotfun/22.jpg" width="443" /></p>
<p>&nbsp;</p>
<p><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/dotfun/3d1.jpg" /></p>
<p><strong>以下是引用：</strong></p>
<p><strong>Project Description<br />
</strong>A 3D game engine for Silverlight and possibly other .net based technologies.<br />
<br />
The name Balder comes from Norse Mythology. Balder is the modern Norwegian, Swedish and Danish form. He is also known as Baldr or Baldur (icelandic). Balder is the god of innocence.<br />
<br />
The second son of Odin is Baldr, and good things are to be said of him. He is best, and all praise him; he is so fair of feature, and so bright, that light shines from him. A certain herb is so white that it is likened to Baldr's brow; of all grasses it is whitest, and by it thou mayest judge his fairness, both in hair and in body. He is the wisest of the &#198;sir, and the fairest-spoken and most gracious; and that quality attends him, that none may gainsay his judgments. He dwells in the place called Breidablik, which is in heaven; in that place may nothing unclean be[.] - Brodeur's translation <br />
<br />
http://en.wikipedia.org/wiki/Balder<br />
<br />
<br />
For a demonstration of the first published version, go to : <br />
http://www.dolittle.com/blogs/einar/archive/2007/05/19/3d-in-silverlight-1-1-alpha.aspx<br />
</p>
<img src ="http://www.cnblogs.com/adamxx/aggbug/1030140.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47959/" target="_blank">Google对手机搜索进行优化升级</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[转]Silverlight：你需要知道的十件事情</title><link>http://www.cnblogs.com/adamxx/archive/2008/01/03/1024443.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Thu, 03 Jan 2008 05:25:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2008/01/03/1024443.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/1024443.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2008/01/03/1024443.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/1024443.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/1024443.html</trackback:ping><description><![CDATA[<span style="color: navy">原文地址:&nbsp;&nbsp;&nbsp;&nbsp;<font face="Courier New">http://silverlighting.net/article.asp?id=128</font><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;微软高调推出号称&#8220;Flash杀手&#8221;的Silverlight之后，虽然得到了普遍的关注，但是仅有的几个演示内容似乎仍不能让大家弄明白这到底是有什么独到之处，如果仅仅是替代Flash的已有功能的话，肯定不值得微软如此隆重的登场推介。</span><br />
简单的说，Silverlight是一个跨平台跨操作系统的插件，使Web开发者能够在浏览器中建造丰富的媒体体验和RIA应用。目前发布的版本为 RC版，可用于Windows平台上的IE和Firefox浏览器，以及Mac OS X平台上的Firefox和Safari浏览器。 <br />
　　在公共发布版本来临之际，现在正是了解Silverlight的好时候，本文解释了微软的Silverlight 10个主要特点，希望能够帮助你更多了解Silverlight的好处和局限性。<br />
<br />
<span style="color: navy">1、Silverlight是跨平台/浏览器的</span><br />
　　对于大部分开发团队，创建一个能够在所有流行的浏览器(包括IE、Firefox、Safari、Opera)上完美运行的Web站点是很具挑战性的事情。这不只是增加代码实现的问题，还要进行大量复杂的测试。<br />
　　通常面对这个问题的解决方法有两个：仅支持少数最流行的浏览器或者增加质量保证人员的数量。<br />
　　而Silverlight允许&#8220;一次开发，到处运行&#8221;，微软已经承诺会支持Windows和Mac上的Opera，而Silverlight的Linux版Moonlight也正在开发中。<br />
<br />
<span style="color: navy">2、Silverlight 1.1 才是好戏开场</span><br />
　　对于目前的Silverlight 1.0 RC版，仍有很多组织在考虑是否开始在此平台上进行开发。Silverlight 1.0已经有了许多重要有趣的功能，但还有更多的精彩内容仍需到1.1版才会出现。<br />
　　Silverlight 1.1(目前仍处于Alpha预览)初次开始支持.NET，包括了基本的.NET语言：C#和Visual Basic。而微软说，Silverlight 1.1将会带有.NET对动态语言的支持，例如Ruby、Python、动态VB和托管JScript。等到1.1正式发布，所有.NET语言的支持都会 加入近来，这等于给浏览器添加了.NET编译器。<br />
<br />
<span style="color: navy">3、Silverlight 使用开发者们已经掌握的技术</span><br />
　　Silverlight由微软现有的一些技术创建而成，如XAML，JavaScript以及.NET技术。如果你已经很熟悉微软.NET和Web开发技术，这些都可以应用在Silverlight的开发中。<br />
　　你选择开始新项目的Silverlight版本主要基于开发团队的技术方向。如果你的开发团队主要做ASP.NET服务器端开发(主要是C#和 VB.NET)，你就需要等待1.1的正式发布，如果你的团队专攻像JavaScript这类的客户端开发，Silverlight就正适合你。<br />
<br />
<span style="color: navy">4、Silverlight的用户界面使用标记语言——就像HTML</span><br />
　　Silverlight使用XAML来进行用户界面设计。你可能已经很熟悉另一种标记语言了：HTML。HTML文件是纯文本的，它只需要告诉浏览器如何渲染网页，XAML也是这样的，只不过，执行文本命令的不再是浏览器，而是Silverlight。<br />
　　无论开发者在服务器端用什么工具进行怎样的开发，最后你总要创建动态的HTML页面。XAML是标记语言，因此你可以使用服务器端技术动态创建XAML，就像你的开发团队动态创建HTML一样。标记语言有所不同，但技术并未变化。<br />
<br />
<span style="color: navy">5、Silverlight和AJAX技术互为补充</span><br />
　　网络是不断进化的。回到1990年代，所有人都告诉开发者应该把尽可能多的执行都放在服务器端，技术上没问题，但是这相当影响用户体验。现在AJAX已经广泛流行开来，把代码直接放置在浏览器中就可以有效改善用户体验，这方面最典型的代表就是Google Maps。<br />
　　Silverlight也参照了这样的模型，允许在浏览器中创造更加丰富的用户界面，而采用AJAX和服务器端交换数据使Silverlight更加强大，结合了Silverlight丰富的用户界面和AJAX的异步数据传输，用户将得到非常舒适的交互体验。<br />
<br />
<span style="color: navy">6、Silverlight允许开发者和设计者协同工作</span><br />
　　网络要求开发者们必须越来越多地考虑设计和美观问题，对用户的快速响应和直观的界面已经成为开发标准，这需要在开发中同时加入美术设计和用户体验规划。<br />
　　然而，美术师和程序员使用完全不同的资源和工具。通常情况是，美术师把图片文件或者HTML框架发给开发者以整合应用程序代码，当设计做出更改，整合就没完没了地进行。<br />
　　Silverlight能提供更好的开发模式。微软提供给Silverlight的工具包是一系列复杂工具的集合，例如Visual Studio，还有连接设计者的工具，成为Expression Studio。<br />
　　对于Silverlight，主要的设计工具是Expression Blend，它可以按设计者们所熟知的方式创建XAML内容，使用起来和Adobe Illustrator或者Photoshop差不多。但不同之处在于Blend和开发者使用同样的工程项目文件，XAML和JavaScript文件， 就像在Visual Studio中那样。当设计完成并修整好，不需要进行中间的整合过程，设计者就可以看到开发人员直接将其作为项目素材加入开发项目。这样做有助于设计者和 开发人员更加紧密地协同工作。<br />
<br />
<span style="color: navy">7、Silverlight将分包发布</span><br />
　　Silverlight会分成多个数据包发送给浏览器，也就是说代码会分成一个或多个包(JavaScript文件，编译文件等等)，设计也分成一个或多个包(XAML)，以及其他文件(包括图片、字体、视频)。<br />
　　刚开始习惯了Flash的单文件分发模式的开发者会不大理解为什么这样做。实际上，这是有好处的。分离的包比现在的Flash完整打包更有助于在服 务器端动态地创建内容，并按照标记语言自由组合。Silverlight也提供功能可以使用zip文件把所有XAML代码使用的内容打包给用户下载。<br />
<br />
<span style="color: navy">8、Silverlight是崭新的</span><br />
　　在写就本文的时候，Silverlight 1.0为RC版，Silverlight 1.1则刚刚发布Alpha版，这项技术与类似的其他公司同类技术(尤其是Adobe的Flash和Flex)相比还不够成熟。Flash目前已经到了 9.0，它花了很长时间才达到现在的普及度，但这不是说Silverlight追不上来，微软在学习他人的经验和教训方面很有一手(可以参考一下Java 和.NET)，当然这也不是绝对的。<br />
　　Silverlight不是Windows Forms、Windows Presentation Foundation(WPF)、Java Applet或者Sharepoint的替代者，简单的说，如果你需要创建丰富的，优秀的，同时具备跨所有平台和操作系统的应用，那么 Silverlight正合适。<br />
<br />
<span style="color: navy">9、Silverlight XAML对照WPF XAML</span><br />
　　要把XAML吹捧成为微软WPF的特长之处并不难，但是它实际上并没有看起来那么优秀，这一方面是由于WPF较低的采用率，另一方面就是WPF XAML和Silverlight XAML的区别了。<br />
　　首先，WPF的采用率相对于其他客户端技术而言(例如Visual Basic 6和.NET的Windows Forms)比较低，因此XAML也基本上被荒废了。<br />
　　第二，Silverlight XAML的语法比WPF XAML要简单一些，当然也会比WPF XAML弱一点，这既是好事也是坏事。Silverlight非常容易上手，但是从WPF转移而来的开发者可能会觉得有点不够用。<br />
　　按我的感觉，较简洁的语法对于Silverlight实际上是最合适的，因为运行环境对于用户而言越精简越好。Silverlight并不需要把所 有东西都囊括进来，对于一个轻量级客户端而言没有这个必要。当然，要能给Silverlight增加更多的功能肯定不错，但是目前不能仅仅考虑这些，我们 需要谨慎考量加入多少，同时还能保持接口的简洁和高效。<br />
<br />
<span style="color: navy">10、Silverlight非常适合学习XAML</span><br />
　　就象前一节所说的，Silverlight有着轻量级的XAML语法，这意味着它对于学习XAML的工作方式非常有益，引导那些正在学习XAML的 开发者创建简明清晰的代码，帮助他们快速理解Silverlight的功能特性，当他们开始投向WPF的XAML的时候，就会发现更多的功能和特性已经准 备就绪了。<br />
　　相反的，如果开发者从WPF开始应用XAML，随后换到Silverlight的话就不得不扔掉许多特性。Silverlight的运行时库目前只有大约4.5MB，.NET 3.0运行时库(第一个支持WPF的)则接近30MB。<br />
<br />
　　Silverlight是一个对公司、消费者、用户都大有裨益的新技术，看了上面这些，现在你可以决定该如何在你的Web战略中应用Silverlight了。 
  <img src ="http://www.cnblogs.com/adamxx/aggbug/1024443.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47958/" target="_blank">风声又起 Windows 7 RTM版7月13日完成</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[转]在ASP.NET中使用LINQ(第一部分) </title><link>http://www.cnblogs.com/adamxx/archive/2007/05/18/751191.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Fri, 18 May 2007 02:37:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/05/18/751191.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/751191.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/05/18/751191.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/751191.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/751191.html</trackback:ping><description><![CDATA[摘要: 在ASP.NET中使用LINQ(第一部分) 【原文地址】Using LINQ with ASP.NET (Part 1) 【原文发表日期】Sunday, May 14, 2006 9:49 PM最近使我激动不已的新鲜事之一就是LINQ系列技术的出现，包括LINQ，DLINQ，XLINQ和不久后的其他技术。LINQ将被完全集成到代号为Orcas的下个版本Visual Studio中，而且它也包含了一&nbsp;&nbsp;<a href='http://www.cnblogs.com/adamxx/archive/2007/05/18/751191.html'>阅读全文</a><img src ="http://www.cnblogs.com/adamxx/aggbug/751191.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47957/" target="_blank">乔布斯和埃利森</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[转]代码中的力与美</title><link>http://www.cnblogs.com/adamxx/archive/2007/05/01/733909.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Tue, 01 May 2007 02:02:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/05/01/733909.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/733909.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/05/01/733909.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/733909.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/733909.html</trackback:ping><description><![CDATA[<p>原文地址见:http://dev.yesky.com/440/2338940.shtml</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 似漫漫征途，半个世纪，代码发展至今已有大从如同象形文字般的纸孔设计到01机器指令序列、到能进行简单翻译的汇编伪指令集..到后来的结构化<a class=bluekey href="http://dev.yesky.com/" target=_blank><font color=#000000>程序</font></a>语言和如今的面向对象语言设计、脚本语言以及更多将来未知的代码语言,可谓层出不穷。在如同物种优胜劣汰般的法则下，代码也随着我们思想力、行动力的不断前进、不断进化。代码对我犹如一座雕像般具有着力与美。 <br><br>　　<strong>代码之力<br></strong><br>　　代码之力体现在它代表了创作者的意志力和思想力。<br><br>　　那些简单的符号，它们孕育在苦思冥想之中、生长于严谨的设计之下、绽放在千锤百炼的雕琢之后。可以说每一行都浸透着作者的深厚的思考，看似毫无血肉的行行代码便有了生机。作者的思考便是代码的母体和起源，也许就是一个闪过的念头，却生发出许多思路。<br><br>　　当我作为一个设计者，在动工修建这座程序大厦之前，总是要细心研究:从实际出发、从需求开始、从框架着手.... 在这一个时期虽没有半字的代码产生，可正是这个阶段决定了代码的形状、姿态、性格、特征。方案中的的每一个细节都我经过仔细推敲、慎重分析，我们的思想力、意志力决定着代码生死存亡。<br><br>　　我们思考的能力越强,代码的生命力就越久；我们的意志力越强,代码的体质就越壮。任凭风吹日晒,不会千疮百孔。在智慧的推动下、保护中，它们一天天成长。<br><br>　　<strong>代码之美<br></strong><br>　　代码之美，是看似铅印的简单字母，却有一种美潜在其中。<br><br>　　虽然这美并不金玉其外，也绝非造型优雅，但却是从不同角度、不同深度，甚至于在转念的瞬间而闪过的想象之美。代码因了人的先天孕育和后天雕琢而变得丰美、变得千姿百态、变得珠圆玉润..<br><br>　　代码产生之前，是经怎样的想象、理解设计而成，在此过程中有很多冲动、茫然和冥思。如同一幅画，无论其美丑那都是旁人的评价，就作者而言，那是无论结果如何，都是他思想和奋斗的结晶。而这一份在心中印下的美是别人的批评无法抹去，也是别人的赞扬替代不了的。<br><br>　　代码雏形之后，要经过反复的修改测试，就像一座青铜雕像，在石膏模具完成之后，必然要经历一番千锤百炼、水深火热，才见得世人。程序员对代码品质的要求丝毫不比艺术家们来的少，.. 且与艺术家们一样，程序员的灵魂也是他们的思想，若抛去了思想就如同无水之渊。与剪纸、泥塑一样，有多少不同风格的创作就有多少不同模式、形态、思路的代码，仿若是一座大大的花园中，开放着五颜六色的花。美的风景，潜在其中、唯有心知。<br><br>　　<strong>代码之感悟</strong><br><br>　　代码与一般的艺术创作不同，它并非让人看后就足矣，而是身负着作者寄予的厚望：让用户受益、让工作变得更轻松。这千行万行的代码在不同的机器、不同的系统、不同得行业上日以继夜地运转着，感<br>悟当我们在咖啡馆里轻松地与朋友喝茶聊天，当我们在书房享受散文诗歌的魅力时，计算机程序已为我们备好第二天要汇总的大量数据、各种家电芯片中的固化程序已帮我们处理好那些繁重的家务。<br><br>　　但我们仍不能因为重视功能、效果而忽略代码作为我们思想行动的延伸而产生的力与美。<br><br>　　程序员也绝非为了某个项目而存在的职业，而是赋予了创造美与力的生涯。在每个程序员的眼中，那些别人看来乏味难懂的代码，却是闪耀在思想银河之中的点点繁星。也许，到了匮乏精力、体力不支的时候，无法再为自己的一次冲动或某个灵机一闪，而写出隽秀的程序。但在回忆之时，也会有泉涌般的感动：感动在那个深夜的灯下执著地书写、感动在那瑟瑟的寒风中痴迷地思考、感动在看到那些你多少个日夜拼搏出来的代码在为他人默默地工作、感动在于千头万绪的苦思之后终于看到曙光..<br><br>　　每当我写完一段复杂的程序，就会有一种众里寻他千<a class=bluekey href="http://com.chinabyte.com/baidu/" target=_blank><font color=#000000>百度</font></a>的感受，而当看到那灯火阑珊处的人时，却又如张爱玲所言&#8220;原来你也在这里&#8221;。而当我完成一个<a class=bluekey href="http://soft.yesky.com/" target=_blank><font color=#000000>软件</font></a>项目，就如同走过一段人生的荆棘之路，有一种苦与乐相互搀扶的体会。<br><br>　　对于程序员的感受是笔触纸端如流水,爱恨百味难诉完。回归到力与美的理解,希望每一个在程序生涯中奋斗的同道中人,都怀有一种执著与感恩:执著在这无尽的思想疆域,用每一行代码实现我们人生的价值;感恩于这小小的代码,能让我们把所想所愿发挥得淋漓尽致。&nbsp;</p>
<img src ="http://www.cnblogs.com/adamxx/aggbug/733909.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47956/" target="_blank">Xbox Live将投放Silverlight广告</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>结束的时候只有我知道</title><link>http://www.cnblogs.com/adamxx/archive/2007/04/14/713515.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Sat, 14 Apr 2007 11:21:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/04/14/713515.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/713515.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/04/14/713515.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/713515.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/713515.html</trackback:ping><description><![CDATA[今天就是这一天了,看吧,天都变灰了.<br><br>其实我真的好委屈,突然觉得那么久都不值得,明明就是我被欺负了,到头来还是她在我面前哭.<br>一切都是假的,都是虚伪的.这个世界太不公平... 
<img src ="http://www.cnblogs.com/adamxx/aggbug/713515.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47951/" target="_blank">Debian无视GNU创始人警告 接受Mono</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>.NET中多线程的同步资源访问</title><link>http://www.cnblogs.com/adamxx/archive/2007/04/08/704549.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Sun, 08 Apr 2007 04:35:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/04/08/704549.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/704549.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/04/08/704549.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/704549.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/704549.html</trackback:ping><description><![CDATA[<p>在应用程序中使用多个线程的一个好处是每个线程都可以异步执行。对于 Windows 应用程序，耗时的任务可以在后台执行，而使应用程序窗口和控件保持响应。对于服务器应用程序，多线程处理提供了用不同线程处理每个传入请求的能力。否则，在完全满足前一个请求之前，将无法处理每个新请求。</p>
<p>然而，线程的异步特性意味着必须协调对资源（如文件句柄、网络连接和内存）的访问。否则，两个或更多的线程可能在同一时间访问相同的资源，而每个线程都不知道其他线程的操作。结果将产生不可预知的数据损坏。 </p>
让我们先来看一片java的例子:<a id=_250ed33299e9_HomePageDays_DaysList_ctl01_DayItem_DayList_ctl00_TitleUrl href="http://www.cnblogs.com/adamxx/archive/2007/03/31/703264.html"><font color=#0000ff>多线程未同步可能导致的问题及其解决方案</font></a><br>下面是C#的代码<br>transfer方法<br>
<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"><img id=Codehighlighter1_54_412_Open_Image onclick="this.style.display='none'; Codehighlighter1_54_412_Open_Text.style.display='none'; Codehighlighter1_54_412_Closed_Image.style.display='inline'; Codehighlighter1_54_412_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_54_412_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_54_412_Closed_Text.style.display='none'; Codehighlighter1_54_412_Open_Image.style.display='inline'; Codehighlighter1_54_412_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;transfer(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;from,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;to,&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;amount)&nbsp;</span><span id=Codehighlighter1_54_412_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_54_412_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(accounts[from]&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;amount)&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(System.Threading.Thread.CurrentThread.Name);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accounts[from]&nbsp;</span><span style="COLOR: #000000">-=</span><span style="COLOR: #000000">&nbsp;amount;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">{0:F2}&nbsp;from&nbsp;{1}&nbsp;to&nbsp;{2}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;amount,&nbsp;from,&nbsp;to);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accounts[to]&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;amount;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Total&nbsp;Balance:&nbsp;{0:F2}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;getTotalBalance());<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
run方法<br>
<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"><img id=Codehighlighter1_18_457_Open_Image onclick="this.style.display='none'; Codehighlighter1_18_457_Open_Text.style.display='none'; Codehighlighter1_18_457_Closed_Image.style.display='inline'; Codehighlighter1_18_457_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_18_457_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_18_457_Closed_Text.style.display='none'; Codehighlighter1_18_457_Open_Image.style.display='inline'; Codehighlighter1_18_457_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;run()&nbsp;</span><span id=Codehighlighter1_18_457_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_18_457_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Random&nbsp;rand;<br><img id=Codehighlighter1_61_425_Open_Image onclick="this.style.display='none'; Codehighlighter1_61_425_Open_Text.style.display='none'; Codehighlighter1_61_425_Closed_Image.style.display='inline'; Codehighlighter1_61_425_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_61_425_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_61_425_Closed_Text.style.display='none'; Codehighlighter1_61_425_Open_Image.style.display='inline'; Codehighlighter1_61_425_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_61_425_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_61_425_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_92_411_Open_Image onclick="this.style.display='none'; Codehighlighter1_92_411_Open_Text.style.display='none'; Codehighlighter1_92_411_Closed_Image.style.display='inline'; Codehighlighter1_92_411_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_92_411_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_92_411_Closed_Text.style.display='none'; Codehighlighter1_92_411_Open_Image.style.display='inline'; Codehighlighter1_92_411_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">)&nbsp;</span><span id=Codehighlighter1_92_411_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_92_411_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rand&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Random();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;toAccount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;rand.Next(bank.size);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;amount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;rand.NextDouble()&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;maxAmount;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bank.transfer(fromAccount,&nbsp;toAccount,&nbsp;amount);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Threading.Thread.Sleep(rand.Next(DELY));<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_445_447_Open_Image onclick="this.style.display='none'; Codehighlighter1_445_447_Open_Text.style.display='none'; Codehighlighter1_445_447_Closed_Image.style.display='inline'; Codehighlighter1_445_447_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_445_447_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_445_447_Closed_Text.style.display='none'; Codehighlighter1_445_447_Open_Image.style.display='inline'; Codehighlighter1_445_447_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_445_447_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_445_447_Open_Text><span style="COLOR: #000000">{&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br>这个问题在.net中同样存在,对于.net有下面几中解决方案可以确保安全的执行多线程处理:<br><br>1)lock 关键字<br>2)监视器<br>3)同步事件和等待句柄<br>4)Mutex 对象<br><br>这里我们只说一下使用lock关键字,如果需要更多信息,请访问msdn:<br>ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/413e1f28-a2c5-4eec-8338-aa43e7982ff4.htm<br><br>lock 关键字可以用来确保代码块完成运行，而不会被其他线程中断。这是通过在代码块运行期间为给定对象获取互斥锁来实现的。 <br>lock 语句以关键字 lock 开头，它有一个作为参数的对象，在该参数的后面还有一个一次只能由一个线程执行的代码块。例如：<br><br>public void Function()<br>{<br>&nbsp;&nbsp;&nbsp; System.Object lockThis = new System.Object();<br>&nbsp;&nbsp;&nbsp; lock(lockThis)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Access thread-sensitive resources.<br>&nbsp;&nbsp;&nbsp; }<br>}<br>修改run方法<br>
<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"><img id=Codehighlighter1_18_530_Open_Image onclick="this.style.display='none'; Codehighlighter1_18_530_Open_Text.style.display='none'; Codehighlighter1_18_530_Closed_Image.style.display='inline'; Codehighlighter1_18_530_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_18_530_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_18_530_Closed_Text.style.display='none'; Codehighlighter1_18_530_Open_Image.style.display='inline'; Codehighlighter1_18_530_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;run()&nbsp;</span><span id=Codehighlighter1_18_530_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_18_530_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Random&nbsp;rand;<br><img id=Codehighlighter1_60_500_Open_Image onclick="this.style.display='none'; Codehighlighter1_60_500_Open_Text.style.display='none'; Codehighlighter1_60_500_Closed_Image.style.display='inline'; Codehighlighter1_60_500_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_60_500_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_60_500_Closed_Text.style.display='none'; Codehighlighter1_60_500_Open_Image.style.display='inline'; Codehighlighter1_60_500_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span id=Codehighlighter1_60_500_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_60_500_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_91_486_Open_Image onclick="this.style.display='none'; Codehighlighter1_91_486_Open_Text.style.display='none'; Codehighlighter1_91_486_Closed_Image.style.display='inline'; Codehighlighter1_91_486_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_91_486_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_91_486_Closed_Text.style.display='none'; Codehighlighter1_91_486_Open_Image.style.display='inline'; Codehighlighter1_91_486_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">)&nbsp;</span><span id=Codehighlighter1_91_486_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_91_486_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_125_468_Open_Image onclick="this.style.display='none'; Codehighlighter1_125_468_Open_Text.style.display='none'; Codehighlighter1_125_468_Closed_Image.style.display='inline'; Codehighlighter1_125_468_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_125_468_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_125_468_Closed_Text.style.display='none'; Codehighlighter1_125_468_Open_Image.style.display='inline'; Codehighlighter1_125_468_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">lock</span><span style="COLOR: #000000">&nbsp;(bank)&nbsp;</span><span id=Codehighlighter1_125_468_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_125_468_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rand&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Random();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;toAccount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;rand.Next(bank.size);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;amount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;rand.NextDouble()&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;maxAmount;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bank.transfer(fromAccount,&nbsp;toAccount,&nbsp;amount);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Threading.Thread.Sleep(rand.Next(DELY));<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_519_520_Open_Image onclick="this.style.display='none'; Codehighlighter1_519_520_Open_Text.style.display='none'; Codehighlighter1_519_520_Closed_Image.style.display='inline'; Codehighlighter1_519_520_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_519_520_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_519_520_Closed_Text.style.display='none'; Codehighlighter1_519_520_Open_Image.style.display='inline'; Codehighlighter1_519_520_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">catch</span><span id=Codehighlighter1_519_520_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_519_520_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
使用lock关键字锁住了bank对象的实例,lock 确保当一个线程位于代码的临界区时，另一个线程不进入临界区。如果其他线程试图进入锁定的代码，则它将一直等待（即被阻止），直到该对象被释放.<br>这里使用lock需要注意的是:<br>应避免锁定 public 类型，否则实例将超出代码的控制范围。常见的结构 <code><font face=NSimsun>lock (this)</font></code>、<code><font face=NSimsun>lock (typeof (MyType))</font></code> 和 <code><font face=NSimsun>lock ("myLock")</font></code> 违反此准则： <br>1.如果实例可以被公共访问，将出现 lock (this) 问题。<br>2.如果 MyType 可以被公共访问，将出现 lock (typeof (MyType)) 问题<br>3.由于进程中使用同一字符串的任何其他代码将共享同一个锁，所以出现 lock(&#8220;myLock&#8221;) 问题.<br><br>就我个人而言,我觉得多线程如果要访问共享数据必须同步 
<img src ="http://www.cnblogs.com/adamxx/aggbug/704549.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47950/" target="_blank">iPhone 3GS首发日创AT&T多项纪录</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>落户cnblogs</title><link>http://www.cnblogs.com/adamxx/archive/2007/04/07/704012.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Sat, 07 Apr 2007 08:58:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/04/07/704012.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/704012.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/04/07/704012.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/704012.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/704012.html</trackback:ping><description><![CDATA[累了一天了,终于把blog从csdn搬到这里了,有一部分是RSS导入过来的,可能暂时只有摘要,我会copy过来的.<br>希望广大cnblogs的朋友多多支持<img height=20 src="http://www.cnblogs.com/Emoticons/QQ/07.gif" width=20 border=0><br><br>我在CSDN的BLOG地址请点<a href="http://blog.csdn.net/adamxx">这里</a>&nbsp;---&gt;&gt;&gt;&nbsp; <a href="http://blog.csdn.net/adamxx">http://blog.csdn.net/adamxx</a>
<img src ="http://www.cnblogs.com/adamxx/aggbug/704012.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47949/" target="_blank">Silverlight开发大赛奖金高达10000美元</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[转]爱是双方的</title><link>http://www.cnblogs.com/adamxx/archive/2007/04/07/703946.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Sat, 07 Apr 2007 08:28:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/04/07/703946.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703946.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/04/07/703946.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703946.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703946.html</trackback:ping><description><![CDATA[摘要: 爱是双方的,感动ing...&nbsp;&nbsp;<a href='http://www.cnblogs.com/adamxx/archive/2007/04/07/703946.html'>阅读全文</a><img src ="http://www.cnblogs.com/adamxx/aggbug/703946.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47949/" target="_blank">Silverlight开发大赛奖金高达10000美元</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Adobe Apollo 初步研究</title><link>http://www.cnblogs.com/adamxx/archive/2007/04/07/703679.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Sat, 07 Apr 2007 03:48:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/04/07/703679.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703679.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/04/07/703679.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703679.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703679.html</trackback:ping><description><![CDATA[&nbsp;
<h1><span>Adobe Apollo </span><span>初步研究</span></h1>
<span>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">这几天在一家公司实习</span><span lang=EN-US><font face=Calibri>,</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">上班不安逸</span><span lang=EN-US><font face=Calibri>,</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">还是在学校好玩</span><span lang=EN-US><font face=Calibri>,</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">才去的时候老板叫我学一下</span><span lang=EN-US><font face=Calibri>Flex,</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">昨天又叫我去关注一下</span><span lang=EN-US><font face=Calibri>Apollo.</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">正在郁闷</span><span lang=EN-US><font face=Calibri>,</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">又学这个又学那个的</span><span lang=EN-US><font face=Calibri>.</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">当我了解到</span><span lang=EN-US><font face=Calibri>Apollo</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">技术的时候</span><span lang=EN-US><font face=Calibri>,</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">就被他深深的吸引了</span><span lang=EN-US><font face=Calibri>.</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">下面是网上对</span><span lang=EN-US><font face=Calibri>Apollo</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">的一些评论</span><span lang=EN-US><font face=Calibri>,</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">然后我会讲解一个使用</span><span lang=EN-US><font face=Calibri>apollo</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">做一个简单记事本的例子</span><span lang=EN-US><font face=Calibri>.</font></span></p>
</span>
<p>&nbsp;</p>
<p><span>时下，关于</span><span>Apollo</span><span>的消息被炒得沸沸扬扬。其实结合部分国内外</span><span>blogger</span><span>的探讨，我认为，</span><span>Apollo</span><span>的革命并非技术上的，而是商业上的。</span><span>Apollo</span><span>的技术封装让现有的技术得到了极大的保留，设计师和开发工程师们可以方便地将自己的代码平移到新的平台上，并且发布、部署的方式比之前的任何一款开发工具都方便得多。</span></p>
<p><span>Apollo</span><span>带来的革命，号称</span><span>&#8220;Desktop2.0&#8221;</span><span>。其内容从</span><span>Flash, HTML/CSS/JS, </span><span>到</span><span>PDF</span><span>，几乎涵盖了时下最</span><span>&#8220;</span><span>流行</span><span>&#8221;</span><span>的</span><span>Web</span><span>内容载体。此外，</span><span>&#8220;</span><span>可离线</span><span>&#8221;</span><span>应用模式能让用户更加安全、舒适的进行工作和娱乐。用户们不必再抱怨因网络故障而造成的信息损失了，而且也可以借助本地资源更好地节省带宽和其他</span><span>&#8220;</span><span>紧张而充满麻烦</span><span>&#8221;</span><span>的网络资源。</span></p>
<p><span>把</span><span>Web2.0</span><span>应用搬回家，估计会让</span><span>Apollo</span><span>的</span><span>Start-up</span><span>们又有不少</span><span>copy case</span><span>可以做了。从商业的角度来讲，</span><span>Apollo</span><span>创造的价值远胜于给用户带来用户体验上的提升。对于终端用户来说，他们想要获得一份</span><span>Web-Desktop</span><span>应用，都要经过下载、安装、建立连接的过程，他们不会关心你的程序是由什么开发的。站在产品的角度上，只要能进入桌面，文件系统的支持以及本地各种服务、应用的支持都不是问题，更有许多成熟的框架和接口能让</span><span>UI</span><span>层直接调用</span><span>GPU</span><span>指令来构建绚丽的应用。然而，</span><span>Apollo</span><span>应用却让以往只属于</span><span>.net/Java/C++</span><span>程序员和企业能达到的目标对于一名普通的</span><span>WebDeveloper</span><span>或者一家小型的网站来说也</span><span>&#8220;</span><span>易如反掌</span><span>&#8221;</span><span>！多年以来旁人对</span><span>WebDeveloper</span><span>比</span><span>.net/Java/C++</span><span>程序员差的舆论必然会得到缓解？抛开一些</span><span>&#8220;</span><span>浮躁</span><span>&#8221;</span><span>、</span><span>&#8220;</span><span>效率不济</span><span>&#8221;</span><span>等</span><span>Web</span><span>程序员和</span><span>Web</span><span>产品的</span><span>&#8220;</span><span>通病</span><span>&#8221;</span><span>不谈，</span><span>Web</span><span>应用的一大优势是：其产品往往是各类软件产品中面对用户群最多、最广，变动频率最高的产品。优秀的</span><span>Web</span><span>产品的用户体验必然是经得住考验的，尤其是此类产品往往都拥有较高的</span><span>&#8220;</span><span>用户体验开发效率</span><span>&#8221;</span><span>，即单位时间工作成本增量所带来的用户体验提升会更高。</span></p>
<p><span>Apollo</span><span>的价值在于，大大地提高了产品</span><span>Designer</span><span>和</span><span>Developer</span><span>的</span><span>&#8220;</span><span>开发体验</span><span>&#8221;</span><span>，从战略角度来讲，</span><span>Apollo</span><span>应用将会有更广大的开发者基础。</span></p>
<p><span>对于采用</span><span>Apollo</span><span>应用程序部署产品线的企业而言，桌面应用程序更是避免了</span><span>Marketing</span><span>中的</span><span>&#8220;Clutter&#8221;</span><span>问题：一部分通过习惯使用搜索引擎来寻找服务的用户不会再被搜索引擎</span><span>&#8220;</span><span>领到</span><span>&#8221;</span><span>一个</span><span>&#8220;</span><span>满是您竞争对手的结果列表页</span><span>&#8221;</span><span>了，这样您的用户发现您的同行业竞争对手的机会就会大大降低。</span></p>
<p><span>除了不如直接在页面中打开方便、下载后的安全隐患之外，</span><span>Apollo</span><span>也有很多其他的争议。其中最</span><span>&#8220;</span><span>有趣的</span><span>&#8221;</span><span>的无外乎，有人认为</span><span>Apollo</span><span>并非直接与微软为敌，而是与</span><span>Firefox3</span><span>竞争</span><span>&#8230;&#8230;</span></p>
<p>&nbsp;</p>
<p><span>以上信息来自于</span><span><a title="Adobe Apollo商业革命" href="http://www.awflasher.com/blog/archives/834" target=_blank><strong><span>Apollo</span></strong><strong><span><span>开发的商业前景及革命（上）</span></span></strong></a></span><span>：</span><span><a href="http://www.awflasher.com/blog/archives/834">http://www.awflasher.com/blog/archives/834</a></span></p>
<p><span>到底什么是</span><span>Apollo</span><span>呢</span><span>?</span></p>
<p><span>我迫不及待的</span><span>download</span><span>了关于</span><span>Apollo </span><span>开发的一系列资源</span><span>,</span><span>其中包括</span><span>:</span></p>
<p><span>apollo runtime, <strong><span>apollo_win_alpha1_031907.msi</span></strong></span></p>
<p><span>apollo sdk, <strong><span>apollo_sdk_alpha1_031907.zip</span></strong></span><strong></strong></p>
<p><span>flex extensions for apollo, <strong><span>fb_apollo_extensions_win_alpha1_031907.exe</span></strong></span></p>
<p><span>这</span><span>3</span><span>个是最重要的吧</span><span>,</span><span>其实</span><span>sdk</span><span>可以不用</span><span>,</span><span>但我做了一个记事本的例子用到了他</span><span>.</span></p>
<p><span>当然</span><span>Flex Builder 2</span><span>也是需要的</span><span>,</span><span>当然你也可以选择</span><span>eclipse,</span><span>但我觉得还要配置</span><span>,</span><span>麻烦死了</span><span>.</span></p>
<p><span>所有东西都可以从</span><span>adobe</span><span>官网上免费下载</span><span>,</span><span>现在版本是</span><span>alpha1.</span></p>
<p><span>当你安装了</span><strong><span>fb_apollo_extensions_win_alpha1_031907.exe</span></strong><span>后</span><span>,</span><span>就可以在</span><span>FB2</span><span>上开发</span><span>apollo</span><span>应用程序了</span><span>,</span><span>我做了一个简单的记事本程序</span><span>,</span><span>给大家瞧瞧</span><span>.</span></p>
<p><span>在</span><span>fb2</span><span>中新建一个</span><span>apollo project</span><span>就可以开始了</span><span>.</span><span>整个界面用</span><span>mxml</span><span>来搭建</span><span>,</span><span>是不是很爽</span><span>,</span><span>这用我们可以做出很漂亮很漂亮的界面来</span><span>.</span></p>
<p><span>记事本的编辑框我用的</span><span>&lt;mx:TextArea&gt;</span><span>这个东西直接支持右键菜单</span><span>(</span><span>复制粘贴剪切删除</span><span>),</span><span>而</span><span>apollo</span><span>到目前这个版本并没有给出</span><span>menu</span><span>和</span><span>toolbar</span><span>之类的组件</span><span>,</span><span>不过在</span><span>desktop2.0</span><span>可以不需要这些东西了吧</span><span>.</span></p>
<p><span>现在的关键问题是我们如何打开和保存一个文件</span><span>,</span><span>幸运的是在这个版本中</span><span>,adobe</span><span>已经给出了</span><span>file io api,</span><span>在</span><span>adobe</span><span>提供的</span><span>Apollo for Adobe Flex Developers</span><span>一书中第</span><span>4</span><span>章做了较详细的介绍</span><span>.</span><span>我也简单说一下</span><span>,</span><span>如果想做更多的了解请参见</span><span>:</span></p>
<p><span><a href="http://www.cnblogs.com/adamxx/archive/2007/04/07/703627.html">http://www.cnblogs.com/adamxx/archive/2007/04/07/703627.html</a></span></p>
<p>&nbsp;</p>
<p><span>我们需要声明一个</span><span>File</span><span>对象</span><span>,</span><span>他将引用一个文件</span><span>,</span><span>这和</span><span>java,c#</span><span>的方式很相似<br></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"><img id=Codehighlighter1_45_303_Open_Image onclick="this.style.display='none'; Codehighlighter1_45_303_Open_Text.style.display='none'; Codehighlighter1_45_303_Closed_Image.style.display='inline'; Codehighlighter1_45_303_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_45_303_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_45_303_Closed_Text.style.display='none'; Codehighlighter1_45_303_Open_Image.style.display='inline'; Codehighlighter1_45_303_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">private&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;readText(name:String):String</span><span id=Codehighlighter1_45_303_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_45_303_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;File.appResourceDirectory;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;file.resolve(name);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;stream:FileStream&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;FileStream();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream.open(file,FileMode.READ);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;txt:String&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;stream.readUTFBytes(stream.bytesAvailable);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream.close();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;txt;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<p>&nbsp; </p>
<p><span>这个函数的作用是从文本文件中读出文本</span><span>,</span><span>参数</span><span>name</span><span>是文本文件的路径</span><span>.file</span><span>的声明是</span></p>
<p><span>var file:File = File.appResourceDirectory;</span></p>
<p><span>File.appResourceDirectory</span><span>引用了一个默认的目录</span><span>,</span><span>这是在该工程的</span><span>bin</span><span>目录下</span><span>.</span><span>如果在</span><span>resolve</span><span>中只给出了文件名</span><span>,</span><span>那么他将在这个默认的目录下查找该文件</span><span>.</span><span>其中还包括了</span><span>:</span></p>
<p>&nbsp;</p>
<p><span>File.appResourceDirectory : application</span><span>被安装到的目录</span><span><br>File.currentDirectory : </span><span>顾名思义不翻译了</span> <span><br>File.desktopDirectory : </span><span>同上</span><span><br>File.documentsDirectory : </span><span>上边讲过，是文档文件夹</span><span><br>File.userDirectory : </span><span>这是用户的</span><span>home directory </span><span>例如在</span><span>Mac OS</span><span>上是</span><span> User/</span></p>
<p><span>然后</span><span>,</span><span>我们在初始化了一个</span><span>FileStream</span><span>对象</span><span>, FileStream</span><span>打开文件</span><span>.</span></p>
<p><span>stream.open(file,FileMode.READ);</span></p>
<p><span>第</span><span>2</span><span>个参数说明了打开方式</span><span>,</span><span>其中包括</span><span>:</span></p>
<p><span>FileMode.APPEND </span><span>只写模式，所有被写的数据都会附加到文件的最后</span><span> Upon opening, any nonexistent file is created.<br>FileMode.READ </span><span>只读模式，</span><span>file</span><span>必须存在</span> <span>（</span><span>missing files are not created).<br>FileMode.UPDATE </span><span>读写模式，数据可以写在文件的任何位置或者附加到尾部。</span><span>Upon opening, any nonexistent file is created.<br>FileMode.WRITE </span><span>只写模式，如果文件不存在，将会创建新的文件，如果存在将会被覆盖</span></p>
<p><span>于是调用</span><span>stream.readUTFBytes</span><span>可以按</span><span>UTF-8</span><span>编码读取文件</span><span>.</span></p>
<p><span>最后</span><span>stream.close();</span></p>
<p><span>这个没什么好说的</span><span>,</span><span>和</span><span>java,c#</span><span>都一个样子</span><span>.</span></p>
<p><span>同理还需要一个写文件的函数</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"><img id=Codehighlighter1_55_226_Open_Image onclick="this.style.display='none'; Codehighlighter1_55_226_Open_Text.style.display='none'; Codehighlighter1_55_226_Closed_Image.style.display='inline'; Codehighlighter1_55_226_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_55_226_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_55_226_Closed_Text.style.display='none'; Codehighlighter1_55_226_Open_Image.style.display='inline'; Codehighlighter1_55_226_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">private&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;writeText(name:String,txt:String):</span><span style="COLOR: #0000ff">void</span><span id=Codehighlighter1_55_226_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_55_226_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;file.resolve(name);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;stream:FileStream&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;FileStream();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream.open(file,FileMode.WRITE);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream.writeUTFBytes(txt);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream.close();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
&nbsp;
<p><span>现在我们来用这</span><span>2</span><span>个函数来做一个简单的记事本</span><span>.</span></p>
<p><span>这里有一个问题</span><span>,</span><span>我们需要一个对话框</span><span>,</span><span>用来保存和打开文件</span><span>.</span><span>在</span><span>apollo sdk</span><span>中提供了这样的组件</span><span>,</span><span>打开</span><span>apollo_sdk_alpha1_031907.zip\samples\Apollo Components,</span><span>其下包括</span></p>
<p><span>DirectorySelectionPanel.mxml</span></p>
<p><span>FileOpenPanel.mxml</span></p>
<p><span>FileSavePanel.mxml</span></p>
<p><span>把后面</span><span>2</span><span>个添加到我们工程中</span><span>(</span><span>当然也可以直接粘代码</span><span>),</span><span>或许你需要做一写修改</span><span>,</span><span>比如把一下英文名字该成中文的</span><span>,</span><span>不过在</span><span>apollo</span><span>中显示中文效果不大理想</span><span>.</span><span>另外</span><span>,</span><span>还需要一写更改</span></p>
<p><span>[Bindable]<br></span><span>public var extensionFilterInfo:Array =<br></span><span><span>&nbsp;</span>[<br>&nbsp;&nbsp;&nbsp;</span><span>{ label: "All files", data: null },<br>&nbsp;&nbsp;&nbsp;</span><span>{ label: "Flex files", data: [ ".mxml", ".as" ]}<br></span><span><span>&nbsp;</span>];</span></p>
<p><span>这段代码可以在</span><span>FileOpenPanel.mxml</span><span>中找到，作用是一个</span><span>Filter,</span><span>除了有所有文件的选择外</span><span>,</span><span>就只能打开</span><span>.mxml</span><span>和</span><span>.as,</span><span>下面是我修改后的</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp; [Bindable]<br></span><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span>public var extensionFilterInfo:Array =<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>[<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>{ label: "</span><span>所有文件</span><span>", data: null },<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>{ label: "</span><span>文本文件</span><span>", data: [".txt"]}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>];</span></p>
<p><span>好了</span><span>,</span><span>我们应该怎么使用这</span><span>2</span><span>个组件呢</span><span>.</span><span>他们都包裹一个静态的函数</span><span>show,</span><span>原形如下</span></p>
<p><span>public static function show(directory:File = null):FileOpenPanel<br></span><span>{<br>&nbsp;&nbsp;&nbsp;</span><span>var panel:FileOpenPanel =</span><span>FileOpenPanel(PopUpManager.createPopUp(<br>&nbsp;&nbsp;&nbsp;</span><span>DisplayObject(mx.core.Application.application),</span><span>FileOpenPanel, true));<br></span><span><span>&nbsp;&nbsp; </span></span><span>PopUpManager.centerPopUp(panel);<br>&nbsp;&nbsp;&nbsp;</span><span>panel.setup(directory);<br>&nbsp;&nbsp;&nbsp;</span><span>return panel;<br></span><span>}</span></p>
<p><span>看起来有点象</span><span>Alert.</span><span>但是我们需要他返回一个文件的地址</span><span>,</span><span>应该怎么做呢</span><span>?</span><span></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"><img id=Codehighlighter1_35_243_Open_Image onclick="this.style.display='none'; Codehighlighter1_35_243_Open_Text.style.display='none'; Codehighlighter1_35_243_Closed_Image.style.display='inline'; Codehighlighter1_35_243_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_35_243_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_35_243_Closed_Text.style.display='none'; Codehighlighter1_35_243_Open_Image.style.display='inline'; Codehighlighter1_35_243_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">private&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;OnClickOpen():</span><span style="COLOR: #0000ff">void</span><span id=Codehighlighter1_35_243_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_35_243_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&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;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;openDialog:FileOpenPanel&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;FileOpenPanel.show();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&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;openDialog.addEventListener(FileEvent.SELECT,&nbsp;fileOpenPanel_selectHandler);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<p><br>这是打开按钮的</span><span>OnClickOpen()</span><span>函数</span><span>,</span><span>我们使用</span><span>FileOpenPanel.show()</span><span>显示出对话框</span><span>,</span><span>并且获得了他的一个引用</span><span>,</span><span>使用</span><span>addEventListener</span><span>添加了一个事件监听器</span><span>,FileEvent</span><span>定义了事件的类型</span><span>,</span><span>其中包括</span><span>SELECT(</span><span>选择</span><span>),CLOSE(</span><span>关闭</span><span>),CLOSING,CANCEL.</span></p>
<p><span>当触发</span><span>select</span><span>事件后</span><span>(</span><span>就是选中文件点确定</span><span>),</span><span>将交给</span><span>fileOpenPanel_selectHandler</span><span>函数处理</span><span>,</span><span>这和</span><span>java</span><span>一模一样</span><span>.</span><span></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"><img id=Codehighlighter1_66_329_Open_Image onclick="this.style.display='none'; Codehighlighter1_66_329_Open_Text.style.display='none'; Codehighlighter1_66_329_Closed_Image.style.display='inline'; Codehighlighter1_66_329_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_66_329_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_66_329_Closed_Text.style.display='none'; Codehighlighter1_66_329_Open_Image.style.display='inline'; Codehighlighter1_66_329_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">private&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;fileOpenPanel_selectHandler(event:FileEvent):</span><span style="COLOR: #0000ff">void</span><span id=Codehighlighter1_66_329_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_66_329_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&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;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.path&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;event.file.nativePath;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&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;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.title&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;event.file.name;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&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;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.txtArea.text&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;readText(event.file.nativePath);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&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;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<p><br>我们可以从</span><span>event.file.nativePath</span><span>中获得我们选择的文件路径</span><span>. </span><span>剩下的事就是交给</span><span>readText</span><span>来处理了</span><span>.</span></p>
<p><span>整个程序的关键部分就这些了</span><span>,save</span><span>和</span><span>saveas</span><span>都和这个差不多</span><span>.<br></span></p>
<br><br>原代码下载: <a href="http://www.cnblogs.com/Files/adamxx/flex0704071150_First%20Apollo.zip">http://www.cnblogs.com/Files/adamxx/flex0704071150_First%20Apollo.zip</a><br></span></span>
<img src ="http://www.cnblogs.com/adamxx/aggbug/703679.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47949/" target="_blank">Silverlight开发大赛奖金高达10000美元</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[转]Apollo的file I/O API</title><link>http://www.cnblogs.com/adamxx/archive/2007/04/07/703627.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Sat, 07 Apr 2007 03:03:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/04/07/703627.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703627.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/04/07/703627.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703627.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703627.html</trackback:ping><description><![CDATA[<font color=#0000ff>
<h1 style="MARGIN: 17pt 0cm 16.5pt"><font color=#000000><span lang=EN-US><font face=Calibri>Apollo</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">的</span><span lang=EN-US><font face=Calibri>file I/O API</font></span></font></h1>
</font><br>这是翻译的<span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-size: 11.0pt; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Apollo for Adobe Flex Developer一书第4章Usingthe File System API</span><br>原文地址:http://www.nshen.net/blog/article.asp?id=480<br><br>简译自某本书的第4章样章，翻译不准确的请指正 ：<br><br><span style="COLOR: maroon"><strong>Apollo的file I/O API允许在用户的电脑上读写文件或文件夹。</strong></span><br><br>file I/O API 包含以下功能：<br><br>1 . 创建、删除文件或文件夹<br>2 . 复制、移动文件或文件夹<br>3 . 列出文件夹的内容<br>4 . 取得文件或文件夹的系统信息<br>5 . 读写二进制文件<br>6 . 读写文本文件<br>7 . Serialize and deseialize ActionScript objects<br><br><strong><span style="COLOR: maroon">安全模型</span></strong><br><br>Apollo 将提供一个完成的安全模型来管理本地资源，比如文件系统，但在Apollo alpha 1 build这个安全模型还没实现。<br>访问文件和目录<br><br>Apollo applications可以运行在若干平台上,包括Windows 和Mac OS . Apollo file API 使用统一平台的代码语法，所以你不需要为任何特殊的操作系统写代码。<br><br>例如，路径在Mac OS和Windows中表现是不同的，<br><br>典型的路径在Mac OS上是 /Users/joe/Documents/test.txt<br><br>在Windows上是 C:\Documents and Settings\joe\My Documents\test.txt<br><br>然而这些你都可以使用相同的Apollo组件，类，方法，属性来访问任意一个操作系统<br><br>一个ActionScript的File对象是一个文件或目录的指针<br><br>File类有一个静态属性指向用户的文档文件夹,由于不同的操作系统，所以具体的目录也不同<br><br><br>
<div class=code>trace(File.documentsDirectory.nativePath) <br><br>&nbsp;// On Windows: C:\Documents and Settings\joe\MyDocuments<br><br>// On Mac OS : /Users/joe/Documents</div>
<br>一但一个File object指向了一个目录，你就可以使用resolve()方法修改指向到一个子目录或者文件<br><br>例如下边的代码创建一个文件夹在用户文档目录：<br>
<div class=code>var newDir:File=File.documentsDirectory;<br><br>newDir=newDir.resolve("ApolloTest");<br><br>newDir.createDirectory();</div>
<br>File object 可以指向一个文件或一个目录，即使这个文件或目录并不存在，就像上边的例子一样，我们指向了一个并不存在，但想去创建的一个目录。<br><br><strong><span style="COLOR: maroon">常见目录的File Class静态属性</span></strong><br><br>File.appStorageDirectory ： 每个Apollo application 都被分配一个唯一的storage目录，这是一个绝好的地方存储一些这个app需要处理的，但用户不需要看到的文件，比如一些log文件，缓存文件，和一些引用的文件<br><br>File.appResourceDirectory : application被安装到的目录<br><br>File.currentDirectory : 顾名思义不翻译了 <br><br>File.desktopDirectory : 同上<br><br>File.documentsDirectory : 上边讲过，是文档文件夹<br><br>File.userDirectory : 这是用户的home directory 例如在Mac OS上是 User/ <br><br>在Windows上是 c:\\Document and Settings\username<br><br>url属性：平台无关的(platform-independent)字符串返回文件或文件夹的位置<br>例如：<br>
<div class=code>var directory:File = File.userDirectory;<br>trace(directory.url)<br>// on Windows: file:///C:/Documents%<br>// on Mac OS: file:///Users</div>
<br>相反，nativePath属性:返回的是Windows 或是 Mac OS 唯一平台的.<br><br>例如：下边代码指定Windows目录下的文件<br>
<div class=code>var file:File = new File( );<br>file.nativePath = "c:/ApolloTest/surprise.txt";</div>
<br>然而一般情况下更好的方式还是使用上边提到的静态属性（例如File.appStorageDirectory）指向操作系统上已知目录，<br>然后使用resolve()方法创建一个相对的目录或文件，例如下边的代码<br>
<div class=code>var logFile:File = File.appStorageDirectory;<br>logFile = logFile.resolve("log.txt");</div>
<br>使用storage目录来存储你的应用程序以后需要访问的文件，但是用户并不需要知道这些。<br><br><strong><span style="COLOR: maroon">URI scheme</span></strong><br><br>file:///c:/ApolloTest/test.txt<br>除了这种常见的URI scheme以外还 支持2种URI scheme<br><br>app-storage ：指出application的storage目录，就像下边这样<br>
<div class=code>var logFile:File = File.appStorageDirectory;<br>logFile = logFile.resolve("log.txt");<br>trace(logFile.url); // app-storage:/log.txt</div>
<br>app-resource ：指出application的安装目录，像下边这样<br>
<div class=code>var installDir:File = new File( );<br>installDir.url = "app-resource:/";<br>installDir = installDir.resolve("HelloWorld-app.xml");<br>trace(installDir.url); // app-resource:/HelloWorld-app.xml</div>
<br>不过最常见的还是<br><br>file ： File对象的url属性返回一个标准的file URI scheme<br>
<div class=code>var file:File = File.documentsDirectory;<br>file = file.resolve("ApolloTest/test.txt");<br>trace(file.url);<br>// On Windows:<br>// file:///C:/Documents%20and %20Settings/ ... /test.txt<br>// On Mac OS:<br>// file:///Users/userName/Documents/ ... /test.txt</div>
<br><strong><span style="COLOR: maroon">方法的同步异步版本：</span></strong><br><br>File类和FileStram类的一些方法,有同步和异步两个版本，比如File.copyFile 和File.copyFileAsync<br>同步的版本的方法不放弃操作直到file操作完成。异步版本的方法在后台运行，允许ActionScript过程同时发生。<br>直到异步文件操作完成，一个event被广播给listeners告诉他们操作完成了<br><br>这里有一个使用同步copyTo()方法来copy文件的例子<br>
<div class=code>var file1:File = File.documentsDirectory.<br>resolve("ApolloTest/test.txt");<br>var file2:File = File.documentsDirectory.<br>resolve("ApolloTest/copy of test.txt");<br>file1.copyTo(file2);<br>trace("Not output until the file is copied.");</div>
<br>这里还有一个使用异步copyToAsync()方法来copy文件的例子<br>
<div class=code>var file1:File = File.documentsDirectory.<br>resolve("ApolloTest/test.txt");<br>var file2:File = File.documentsDirectory.<br>resolve("ApolloTest/copy of test.txt");<br>file1.copyToAsync(file2);<br>file1.addEventListener(Event.COMPLETE, completeHandler);<br>trace("This line executes before the complete event.");<br>trace("So does this line.");<br>private function completeHandler(event:Event):void {<br>trace("Done.");<br>}</div>
<br>下边列出File类的异步方法(所有的异步方法都一个同步方法的副本)<br><br>方法 事件<br>copyToAsync( ) complete, ioError<br>deleteDirectoryAsync( ) complete, ioError<br>deleteFileAsync( ) complete, ioError<br>listDirectoryAsync( ) directoryListing, ioError<br>moveToAsync( ) complete, ioError<br>moveToTrashAsync( ) complete, ioError<br><br>当你打开一个文件，无论用FileStream对象的open()还是openAsync()方法，首先都是同步打开文件操作，然后异步打开操作。更多的信息请看这章后边的&#8220;The open( ) and openAsync( ) Methods&#8221;<br><br>当你需要在文件操作期间使用ActionScropt程序的时候（比如进度条动画）你可以使用异步版本的方法。<br><br>例如当你写一个小的文件（1兆或更小）你可以使用FileStream对象的open() （同步版本的方法）方法，但当你写的文件比较大<br><br>或不知道文件大小的时候你可以使用异步方法openAsync();<br><br>想了解更多异步方法，请看Programming ActionScript 3.0 的&#8220;Handling Events&#8221;那章<br><br>你可以在这里找到他： <a title=http://livedocs.macromedia.com/flex/2/docs/Part5_ProgAS.html href="http://livedocs.macromedia.com/flex/2/docs/Part5_ProgAS.html" target=_blank>http://livedocs.macromedia.com/flex/2/docs/Part5_ProgAS.html</a><br><br><strong><span style="COLOR: maroon">读目录的内容</span></strong><br><br>File.listDirectory()方法返回指定目录的文件或文件夹的File object数组<br><br>例如下边的代码列出桌面文件夹的内容：<br>
<div class=code>var directory:File = File.desktopDirectory;<br>var contents:Array = directory.listDirectory( );<br>for (var i:uint = 0; i &lt; contents.length; i++) {<br>if (contents[i].isDirectory) {<br>trace(contents[i].name);<br>} else {<br>trace(contents[i].name,<br>contents[i].size,<br>"bytes");<br>}<br>}</div>
<br>它只会列出指定文件夹根目录的文件和文件夹，不会递归查找子文件夹。你当然也可以写代码来遍历子文件夹<br>但如果你真这么做了，也许最好使用File.listDirectoryAsync()方法，这样在列表的同时可以做些显示进度条之类的事了<br><br>更多请看第5章的"Getting a Directory Listing"<br><br><br><strong><span style="COLOR: maroon">取得文件信息</span></strong><br><br>File类包含了许多关于文件或目录的属性<br><br>属性 描述<br><br>exists 状态，这个文件或文件夹是否存在，这是个非常用有用的检查，例如，在你试图读或写或移动删除某个文件之前检查一下 是否存在<br><br><br>isDirectory 状态，判断这个File object是否是一个文件夹（true）还是一个文件(false)。你将在试图使用文件夹专有操作之前(例 如listDirectory()方法)检查一下这个file object是不是一个文件夹<br><br>isHidden 状态，这个文件或文件夹是否隐藏<br><br>nativePath Notes，这个文件或文件夹操作系统特有的路径（system-specific path ）<br><br><br>parent Notes，这个File实例的父目录<br><br>url Notes，该文件或文件夹操作系统无关的路径（system-independent path）.<br><br><strong>File类还从FileReference类继承了一些有用的属性</strong><br><br>属性 描述<br><br>creationDate 文件或文件夹的创建日期<br><br>modificationDate 文件或文件夹最后修改的日期<br><br>name 文件或文件夹的名字<br><br>size 文件大小以 bytes为单位.<br><br><strong><span style="COLOR: maroon">复制、移动文件与文件夹</span></strong><br><br>File.copyTo()和File.moveTo()方法复制或移动一个文件或文件夹到指定的新位置。例如 下边的代码复制用户文档目录子目录<br><br>Apollo Test文件夹下的test.txt 到application storage目录下的UserData子目录：<br>
<div class=code>var file1:File = File.documentsDirectory.resolve("Apollo<br>Test/test.txt");<br>var destination:File = File.appStorageDirectory.<br>resolve("User Data");<br>destination.createDirectory( );<br>var file2:File = destination.resolve("test.txt");<br>file1.copyTo(file2);</div>
<br>注意，调用File.createDirectory()方法是为了确保目标文件夹存在。<br><br>如果复制或移动操作将要很长时间，你可能需要调用File.copyToAsync()和File.moveToAsync()方法<br><br>所有的这些方法都包含一个clobber参数，你可以把这个参数设置为true来允许overwrite现有的文件，这个参数默认是false的<br><br><strong><span style="COLOR: maroon">创建文件和文件夹</span></strong><br><br>File类的File.createTempFile()和File.createTempDirectory()静态方法允许你创建一个临时的文件或文件夹。Apollo确保这个临时文件或文件夹是新的唯一的。例如下边代码创建一个临时文件：<br>
<div class=code>var bufferStorage:File = File.createTempFile( );</div>
<br>当你关闭一个apollo application时候，临时文件和文件夹不会自动删除，所以你一般时候需要在关闭application之前删除临时文件夹。更多信息看下一节删除文件和文件夹<br><br>File.createDirectory()方法允许你在File object指定的位置上创建一个目录<br>
<div class=code>var directory = File.documentsDirectory;<br>directory = directory.resolve("ApolloTest");</div>
<br>当你打开一个可写的FileStream object时，目录自动被创建。更多内容下面<br><br><strong><span style="COLOR: maroon">删除文件和文件夹</span></strong><br><br>File.deleteFile()方法永久删除一个文件，File.deleteDirectory()方法永久删除一个文件夹。<br><br>File.moveToTransh()方法允许你移动文件或文件夹到系统的垃圾回收站<br><br>所有的这些方法也有一个异步的副本<br><br><strong><span style="COLOR: maroon">读写文件</span></strong><br><br>FileStream类提供方法来读写文件<br><br>这里是读写文件的一般过程：<br><br>1 . 建立一个File object指向这个你要读写的文件。 不会的到上边找<br><br>2 . 建立一个FileStream对象 例如<br><br>var stream:FileStream= new FileStream();<br><br>3. 调用FileStream.open()或FileStream.openAsync()方法，传递file object参数和一个fileMode参数，例如<br><br>stream.open(file,FileMode.READ)<br><br>FileMode的相关信息"文件打开模式"章节会讲到<br><br>4. 如果你调用FileStream.openAsync()方法，那么建立一个适当的监听函数。详细下边章节会讲到<br><br>5.对你的数据调用适当的读写方法。 详细下边的&#8220;读和写方法&#8221;会讲<br><br>6.关闭文件，使用FileStream.close()方法。例如: stream.close()<br><br>3，4，5步后边会详细讲，这里是一个同步读utf-8文本文件的例子<br>
<div class=code>var file:File = File.appStorageDirectory;<br>file = file.resolve("settings.xml");<br>var stream:FileStream = new FileStream( );<br>stream.open(file, FileMode.READ);<br>var data:String = stream.readUTFBytes(stream.<br>bytesAvailable);<br>stream.close( );</div>
<br>还有一个异步读同样数据的例子<br>
<div class=code>var file:File = File.appStorageDirectory;<br>file = file.resolve("settings.xml");<br>var stream:FileStream = new FileStream( );<br>stream.openAsync(file, FileMode.READ);<br>stream.addEventListener(Event.COMPLETE, readData);<br>var data:String;<br>private function readData(event:Event):void {<br>data = stream.readUTFBytes(stream.bytesAvailable);<br>stream.close( );<br>}</div>
<br><strong><span style="COLOR: maroon">open()和openAsync()方法</span></strong><br><br>在你读或写文件之前你需要先打开这个文件<br>当你用FileStream.openAsync()方法打开文件的时候，这个打开是异步的，你需要注册个事件监听者来监视这个过程。<br>FileStream.open()方法以同步的方式打开文件，如果你的application打开文件使用同步方法，所有后续的读写操作会同步进行<br>下边的例子中stream.open(),stream.writeUTFBytes(), 和 stream.close()将在下次调用之前全部完成。<br>
<div class=code>var newFile:File = File.documentsDirectory;<br>file = file.resolve("ApolloTest/test.txt");<br>68 | Chapter 4: Using the File System API<br>var stream:FileStream = new FileStream( )<br>stream.open(file, FileMode.WRITE);<br>stream.writeUTFBytes("This is some sample text.");<br>stream.close( );</div>
<br>这种同步操作好处在于只写较少的代码就能完成任务，坏处就是如果操作时间很长那么后续的As代码会被延时执行。所以，如果你<br>操作一个较大的文件，或者打开文件在较慢的网络上共享，你应该考虑使用FileStream.openAsync()方法<br><br>当你使用openAsync()方法时，下边的所有过程全部为异步的：<br><br><strong>文件关闭（Closing the file）</strong><br><br>当文件关闭时 FileStream object广播一个close事件<br><br><strong>读数据到缓存（Reading data into the read buffer）</strong><br><br>当数据被读时FileStream object广播 progress事件，然后当所有数据读完时候广播一个complete事件，一旦数据被读完后，调用一个读方法（例如 readBytes()）读数据就是同步过程了<br><br><strong>I/O 错误</strong><br><br>FileStream object在遇到错误时候广播一个 ioError 的事件。有很多原因会出现这种情况 例如<br>尝试去打开一个不存在的文件或尝试写一个已经locked的文件。然而一些错误比如尝试去读的文件还没有open，将会抛出异常（而不 会广播 ioError事件）因为Apollo runtime能立刻察觉到错。<br><br>在你调用FileStream.openAsync()方法之前，你的application需要建立一些事件监听函数来处理这些他们感兴趣的事件。<br><br>下边的例子使用异步读模式打开一个文件。当这个文件被打开后，complete事件将被广播出去（除非有错误的时候会广播ioError事件）<br>然后completeHandler()处理函数中调用FileStream.readBytes()方法，这将开始读取文件为一个bytesArray，在异步模式，当所有的bytes都被读完后，complete事件将被广播出去：<br>
<div class=code>var file:File = File.documentsDirectory.resolve("ApolloTest/test.txt");<br>var stream:FileStream = new FileStream( );<br>stream.addEventListener(ProgressEvent.PROGRESS,progressHandler);<br>stream.addEventListener(Event.COMPLETE, completeHandler);<br>stream.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);<br>stream.addEventListener(Event.CLOSE, closeHandler);<br>stream.openAsync(file, FileMode.READ);<br>var data:ByteArray = new ByteArray( );<br>private function progressHandler(event:ProgressEvent):void {<br>trace(stream.bytesAvailable, "bytes read.");<br>}<br>private function completeHandler(event: Event):void {<br>data = stream.readBytes(stream.bytesAvailable);<br>stream.close( );<br>}<br>private function ioErrorHandler(event:IOErrorEvent):void {<br>trace("An I/O error was encountered.");<br>}<br>private function closeHandler(event: Event):void {<br>trace("File closed.");<br>}</div>
<br><strong><span style="COLOR: maroon">文件打开模式</span></strong><br><br>FileStream.open( ) 方法和 FileStream.openAsync( )方法都需要两个参数：需要打开的文件，和fileMode参数，fileMode参数是一个定义FileStream object对象能力的字符串。fileMode参数可能的值都被定义在FileMode类的衡量中了<br><br>例如，下边的代码同步打开一个文件写操作，不能读<br>stream.open(file, FileMode.WRITE);<br><br>这里是FileMode类的衡量以及他们的意思<br><br>FileMode.APPEND 只写模式，所有被写的数据都会附加到文件的最后 Upon opening, any nonexistent file is created.<br><br>FileMode.READ 只读模式，file必须存在 （missing files are not created).<br><br>FileMode.UPDATE 读写模式，数据可以写在文件的任何位置或者附加到尾部。Upon opening, any nonexistent file is created.<br><br>FileMode.WRITE 只写模式，如果文件不存在，将会创建新的文件，如果存在将会被覆盖<br><br><strong><span style="COLOR: maroon">读和写方法</span></strong><br><br>FileStream类包含一堆读和写的方法，每个和数据被读写的格式对应。例如，你可以使用readUTFBytes()和WriteUTFBytes ()方法读写一个bytes Array,也可以readByte()和writeByte()方法一次读写一个byte,总而言之有25个读和写的方法。详细的信息要看Apollo Alpha 1发布的ActionScript 3.0 Language Reference。<br><br>读写文本数据也许看起来价值不高，你可以在文件中编码文本readUTFBytes()和writeUTFBytes()方法提供读写UTF-8格式的文本。<br>readMultiByte( ) 和writeMultiByte( )方法允许你为文件指定不同的字符编码。<br><br>Thereare other factors to consider as well. For example, a UTF file<br>may start with a UTF byte order mark (BOM) character,<br>which defines the UTF encoding and the byte order (or<br>&#8220;endianness&#8221;) of the data.<br><br>更多信息, 看 Apollo Developer&#8217;s Guide (<a title=http://www.adobe.com/go/apollodocs href="http://www.adobe.com/go/apollodocs" target=_blank>http://www.adobe.com/go/apollodocs</a>).的&#8220;Data formats, and choosing the read and write methods to use&#8221; 章节<br><br>More Information<br>For examples of reading and writing files, see the following<br>sections in Chapter 5:<br>&#8226; &#8220;Writing a Text File from a String&#8221;<br>&#8226; &#8220;Reading a Text File into a String&#8221;<br>&#8226; &#8220;Encoding Bitmap Data into PNG or JPEG Format and<br>Writing It to the File System&#8221;<br>&#8226; &#8220;Serializing and De-Serializing ActionScript Objects to<br>the File System&#8221;<br>
<img src ="http://www.cnblogs.com/adamxx/aggbug/703627.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47949/" target="_blank">Silverlight开发大赛奖金高达10000美元</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>多线程未同步可能导致的问题及其解决方案</title><link>http://www.cnblogs.com/adamxx/archive/2007/03/31/703264.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Sat, 31 Mar 2007 12:38:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/03/31/703264.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703264.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/03/31/703264.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703264.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703264.html</trackback:ping><description><![CDATA[<p>这是一个来自java的例子,我觉得很典型,就放上来谈谈.<br>下面的示例来自 "Java核心技术 第二卷 高级特性"<br><br>在下面的测试程序中,我们模拟一个拥有一定数量账户的银行.我们随机的产生把钱在不同账号之间转移的交易.每个账号都有一个线程,在每笔交易中,都会从线程所服务的账户中随机取出一定数额的金钱到另一个随机账户中.<br><br>我们有一个Bank类,它有一个transfer方法,这个方法将一定数额的钱从一个账户转移到另外一个账户.如果源账户没有足够的金额,该方法将直接返回.</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"><img id=Codehighlighter1_51_356_Open_Image onclick="this.style.display='none'; Codehighlighter1_51_356_Open_Text.style.display='none'; Codehighlighter1_51_356_Closed_Image.style.display='inline'; Codehighlighter1_51_356_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_51_356_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_51_356_Closed_Text.style.display='none'; Codehighlighter1_51_356_Open_Image.style.display='inline'; Codehighlighter1_51_356_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;transfer(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;from,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;to,</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;amount)</span><span id=Codehighlighter1_51_356_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_51_356_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(accounts[from]&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;amount)&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.</span><span style="COLOR: #0000ff">out</span><span style="COLOR: #000000">.print(Thread.currentThread());<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accounts[from]&nbsp;</span><span style="COLOR: #000000">-=</span><span style="COLOR: #000000">&nbsp;amount;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.</span><span style="COLOR: #0000ff">out</span><span style="COLOR: #000000">.printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%10.2f&nbsp;from&nbsp;%d&nbsp;to&nbsp;%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,amount,from,to);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accounts[to]&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;amount;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.</span><span style="COLOR: #0000ff">out</span><span style="COLOR: #000000">.printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Total&nbsp;Balance:&nbsp;%10.2f%n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;getTotalBalance());<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br>下面是TransferRunnable类的代码.他的run方法不断的从一个固定账户中取出钱.在每次迭代中,run方法随机挑选一个目标账户和一个随机账户,调用Bank对象的transder方法,然后thread.sleep();<br>
<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"><img id=Codehighlighter1_18_374_Open_Image onclick="this.style.display='none'; Codehighlighter1_18_374_Open_Text.style.display='none'; Codehighlighter1_18_374_Closed_Image.style.display='inline'; Codehighlighter1_18_374_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_18_374_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_18_374_Closed_Text.style.display='none'; Codehighlighter1_18_374_Open_Image.style.display='inline'; Codehighlighter1_18_374_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;run()</span><span id=Codehighlighter1_18_374_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_18_374_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_31_328_Open_Image onclick="this.style.display='none'; Codehighlighter1_31_328_Open_Text.style.display='none'; Codehighlighter1_31_328_Closed_Image.style.display='inline'; Codehighlighter1_31_328_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_31_328_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_31_328_Closed_Text.style.display='none'; Codehighlighter1_31_328_Open_Image.style.display='inline'; Codehighlighter1_31_328_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span id=Codehighlighter1_31_328_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_31_328_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_56_318_Open_Image onclick="this.style.display='none'; Codehighlighter1_56_318_Open_Text.style.display='none'; Codehighlighter1_56_318_Closed_Image.style.display='inline'; Codehighlighter1_56_318_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_56_318_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_56_318_Closed_Text.style.display='none'; Codehighlighter1_56_318_Open_Image.style.display='inline'; Codehighlighter1_56_318_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">)</span><span id=Codehighlighter1_56_318_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_56_318_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;toAccount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)(bank.size()&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;Math.random());<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;amount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;maxAmount&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;Math.random();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bank.transfer(fromAccount,toAccount,amount);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.sleep((</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)(DELAY&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;Math.random()));<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_367_368_Open_Image onclick="this.style.display='none'; Codehighlighter1_367_368_Open_Text.style.display='none'; Codehighlighter1_367_368_Closed_Image.style.display='inline'; Codehighlighter1_367_368_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_367_368_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_367_368_Closed_Text.style.display='none'; Codehighlighter1_367_368_Open_Image.style.display='inline'; Codehighlighter1_367_368_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(InterruptedException&nbsp;e)</span><span id=Codehighlighter1_367_368_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_367_368_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<p><br>在这个模拟程序运行时,我们不知道在某个时间某个银行账户里有多少钱.但我们知道所有账户中的金额总量保持不变,因为我们所做的只是把钱在账户之间转移.<br><br>下面是典型的输出:<br>...<br><em>Thread[Thread-29,5,main]&nbsp;&nbsp;&nbsp; 356.69 from 29 to 39Total Balance:&nbsp; 98847.71<br>Thread[Thread-12,5,main]&nbsp;&nbsp;&nbsp; 833.65 from 12 to 89Total Balance:&nbsp; 99690.69<br>Thread[Thread-0,5,main]&nbsp;&nbsp;&nbsp; 809.40 from 0 to 60Total Balance:&nbsp; 99774.88<br>Thread[Thread-80,5,main]&nbsp;&nbsp;&nbsp; 436.67 from 80 to 57Total Balance:&nbsp; 99206.67<br>...<br></em><br>就想你看到的那样,出现了错误.金额总量发生了细微的变化.<br><br>这个问题是在多个线程试图同时更新账户时出现的.假设两个线程同时执行这条指令:<br>accounts[to] += amount;<br>问题在于他不是原子操作.指令可能会以下面这种方式执行:<br>1)将account[to]载入寄存器.<br>2)增加amount.<br>3)将结果写回accounts[to].<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;现在,假设第一个线程执行到了第一步和第二步,然后被中断了.而此时第二个线程被唤醒并更新了account数组中的同一项.接着第一个线程被唤醒并完成了第三步.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这样,第二个线程所做的更新就被抹去了.结果导致总金额不再正确.<br><br>那么这个问题应该怎么解决?<br><br>从jdk 5.0开始,有两种机制来保护代码块不受并行访问的干扰.<br>1)使用ReentraltLock类,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用ReentraltLock保护代码块的基本结构如下<br>myLock.lock();<br>try{<br>&nbsp;&nbsp;&nbsp;<em>critical section<br></em>}<br>finally{<br>&nbsp;&nbsp;&nbsp;myLock.unlock();<br>}<br>这种结构保证在任何时刻只能有一个线程能够进入临界区.一旦一个线程锁住了锁对象,其他任何线程都无法通过lock语句.当其他线程调用lock时,他们会被被阻塞,直到第一个线程释放锁对象.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;让我们使用锁对象来保护Bank类的transfer方法.<br>修改Bank类</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"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;Lock&nbsp;bankLock&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;ReentrantLock();<br><img id=Codehighlighter1_101_532_Open_Image onclick="this.style.display='none'; Codehighlighter1_101_532_Open_Text.style.display='none'; Codehighlighter1_101_532_Closed_Image.style.display='inline'; Codehighlighter1_101_532_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_101_532_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_101_532_Closed_Text.style.display='none'; Codehighlighter1_101_532_Open_Image.style.display='inline'; Codehighlighter1_101_532_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;transfer(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;from,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;to,</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;amount)</span><span id=Codehighlighter1_101_532_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_101_532_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bankLock.</span><span style="COLOR: #0000ff">lock</span><span style="COLOR: #000000">();<br><img id=Codehighlighter1_139_468_Open_Image onclick="this.style.display='none'; Codehighlighter1_139_468_Open_Text.style.display='none'; Codehighlighter1_139_468_Closed_Image.style.display='inline'; Codehighlighter1_139_468_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_139_468_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_139_468_Closed_Text.style.display='none'; Codehighlighter1_139_468_Open_Image.style.display='inline'; Codehighlighter1_139_468_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span id=Codehighlighter1_139_468_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_139_468_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(accounts[from]&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;amount)&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.</span><span style="COLOR: #0000ff">out</span><span style="COLOR: #000000">.print(Thread.currentThread());<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accounts[from]&nbsp;</span><span style="COLOR: #000000">-=</span><span style="COLOR: #000000">&nbsp;amount;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.</span><span style="COLOR: #0000ff">out</span><span style="COLOR: #000000">.printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%10.2f&nbsp;from&nbsp;%d&nbsp;to&nbsp;%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,amount,from,to);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accounts[to]&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;amount;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.</span><span style="COLOR: #0000ff">out</span><span style="COLOR: #000000">.printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Total&nbsp;Balance:&nbsp;%10.2f%n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;getTotalBalance());<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_485_526_Open_Image onclick="this.style.display='none'; Codehighlighter1_485_526_Open_Text.style.display='none'; Codehighlighter1_485_526_Closed_Image.style.display='inline'; Codehighlighter1_485_526_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_485_526_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_485_526_Closed_Text.style.display='none'; Codehighlighter1_485_526_Open_Image.style.display='inline'; Codehighlighter1_485_526_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">finally</span><span id=Codehighlighter1_485_526_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_485_526_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bankLock.unlock();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<p>再次运行程序,现在可以不会出现问题了.<br>另外还需要注意的是:<br><strong>必须小心处理,以防临界区中的代码因为抛出了一个异常而掉出临界区.如果一个异常在临界区代码结束前抛出,那么finally子句就会释放锁,但这会使对象处在某种受损状态.<br><br></strong>2)使用Synchronized关键字<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从JDK 1.0开始java中每个对象都有一个隐式的锁.如果一个方法又synchronized关键字声明,那么对象的锁将保护整个方法,也就是说要调用这个方法,线程必须先获得对象的锁.<br>public synchronized void&nbsp; method(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>method body</em><br>}<br>这和刚才使用lock的情况等价.<br><br>如果还需要更多了解,请参见 Java核心技术-第二卷高级特性-多线程一章<br><br>关于.net上的解决方案请转到 <a id=_250ed33299e9_HomePageDays_DaysList_ctl00_DayItem_DayList_ctl00_TitleUrl href="http://www.cnblogs.com/adamxx/archive/2007/04/08/704549.html"><font color=#0000ff>.NET中多线程的同步资源访问</font></a><br></p>
<img src ="http://www.cnblogs.com/adamxx/aggbug/703264.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47947/" target="_blank">微软告攒机商第一案胜诉</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>1月4日</title><link>http://www.cnblogs.com/adamxx/archive/2007/01/05/703884.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Fri, 05 Jan 2007 00:15:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/01/05/703884.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703884.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/01/05/703884.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703884.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703884.html</trackback:ping><description><![CDATA[<p>&nbsp;昨天我梦见她了,她还是喜欢在睡觉的时候捂住嘴巴,还是喜欢半夜挠别人都头发,过了很久了,偶尔会想起她.</p>
<p>小周最近怪怪的,我也不过问她,她高三了.但我却爱想起她,为什么那么久了总会有那么些时候会回忆一些不该回忆的呢?我好郁闷哦</p>
<p>今天有人找到我,说做我的老婆,我说我有了，她说做我的情人,我没答应了,她说她愿意把她的第一次给我,我相信她有第一次,但我拒绝,我不喜欢她,我不愿意耽误她,不愿意去做不负责任的事.都那么大了,做错了会后悔一辈子的.有些人好傻哦.不要这样,大家都会不好过的.想想自己过去的时候,后悔死了,我今天郁闷死了.</p>
<p>每个人都有一段悲伤,想隐藏却欲盖弥彰.</p>
<img src ="http://www.cnblogs.com/adamxx/aggbug/703884.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47946/" target="_blank">Mono这只猴子招惹了谁？</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[转]黑猫之死</title><link>http://www.cnblogs.com/adamxx/archive/2007/01/04/703293.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Wed, 03 Jan 2007 16:33:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/01/04/703293.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703293.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/01/04/703293.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703293.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703293.html</trackback:ping><description><![CDATA[有一户人家，养了一只黑猫，用来捕鼠，同时还设置了一只捕鼠夹。黑猫看到这只捕鼠夹后，心里甭提多别扭了，一直在心里发牢骚：既然把捕鼠的任务交给我了，还要放一个捕鼠夹，这分明是对我捕鼠能力的不信任嘛。<br>&nbsp;&nbsp;&nbsp;&nbsp;有一天，黑猫终于忍不住了，对自己的主人说明了心里的不满。主人解释道：&#8220;这也是为了更好的配合你的工作呀。&#8221;<br>&nbsp;&nbsp;&nbsp;&nbsp;&#8220;绝对不是这样。&#8221;黑猫说：&#8220;你这么做是在挖苦我的能力，对我不信任，我不能在这样一个被人屈辱的环境中工作了。&#8221;于是，黑猫愤然离开了它的主人，跑出了家门。<br>&nbsp;&nbsp;&nbsp;&nbsp;不久，黑猫找到一个新主人。这个新主人对黑猫的到来非常欢迎，待如上宾。但是，黑猫一进家门就看到新主人家中已经有一只黄猫了，它的心里像被泼了一盆冷水一样，心想：新主人家中有黄猫可以捕鼠，自己完全是多余的，呆在这儿是不会被重用的，还是离开的好。想到这里，黑猫头也不回地离开新主人的家跑了。<br>&nbsp;&nbsp;&nbsp;&nbsp;黑猫在马路上独自遛达，没有目的，也没有任何打算，走着走着，走到了荒郊野外，心想：既然城市里没有我的容身之所，我不如就在这荒郊野外做一只野猫得了，还能充分发挥我的捕鼠技能。<br>&nbsp;&nbsp;&nbsp;&nbsp;最让黑猫没有想到的是，在荒郊野外里的猫头鹰和蛇全都是捕鼠能手，无论从速度上还是从力量上都要比自己强。<br>&nbsp;&nbsp;&nbsp;&nbsp;黑猫对天长叹一声：&#8220;唉，我黑猫一身的捕鼠本领却难以施展，在家里不被重用，在野外技不如人，我还活个什么劲呢？&#8221;说完，一头撞在石头上，含恨离开了人间。<br><br><strong>&nbsp;&nbsp;&nbsp;&nbsp;启示：</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;这个故事对我们都是一种启示，在现实生活中可能我们或多或少的都存在这样的心理，表现为心高气傲，心理上有强烈的反抗意识，从不服从权威，我行我素，不愿意同其他人分享成绩，没有团队精神，做事总是独来独往，由于一件事或几件事就会刺激他们的逆反心理，经常使事情达到局面难以收拾的地步。&nbsp;
<img src ="http://www.cnblogs.com/adamxx/aggbug/703293.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47945/" target="_blank">Firefox 3.5本月晚些时候即首次升级</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>2006-2007 辞旧迎新</title><link>http://www.cnblogs.com/adamxx/archive/2007/01/03/703294.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Wed, 03 Jan 2007 15:43:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/01/03/703294.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703294.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/01/03/703294.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703294.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703294.html</trackback:ping><description><![CDATA[<img height=1 src="http://blog.csdn.net/adamxx/aggbug/1472958.aspx" width=1>2006好像什么事都没做,晃晃忽忽过去了&nbsp;,2007年重新开始.
<p>2007要考软件设计师职称</p>
<p>2007要拿到MCSD或MCAD认证</p>
<p>2007要好好学习j2ee构架</p>
<p>2007要重新了解javascript,ajex</p>
<p>2007要找一个好的工作</p>
<p>2007要少打游戏多看书,多运动</p>
<p>2007要多提醒自己,人要靠自己</p>
<p>2007要学会谦虚,不要总是那么高调</p>
<p>2007要完成一个一直想做的事,在windows上模拟一套80386的体系结构.</p>
<p>2007年是猪年,我属猪的,我想我会过的更好!!!</p>
<img src ="http://www.cnblogs.com/adamxx/aggbug/703294.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47944/" target="_blank">Google App Engine出现故障宕机6小时</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>哇哈哈</title><link>http://www.cnblogs.com/adamxx/archive/2007/01/01/703286.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Sun, 31 Dec 2006 17:27:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2007/01/01/703286.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703286.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2007/01/01/703286.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703286.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703286.html</trackback:ping><description><![CDATA[<img src ="http://blog.csdn.net/adamxx/aggbug/1471398.aspx" width = "1" height = "1" /><img src ="http://www.cnblogs.com/adamxx/aggbug/703286.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47943/" target="_blank">消息称Facebook今年营收将达5.5亿美元</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[转]用System.Reflection.Emit 来自动生成调用存储过程的实现</title><link>http://www.cnblogs.com/adamxx/archive/2006/12/04/703265.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Sun, 03 Dec 2006 18:33:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2006/12/04/703265.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703265.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2006/12/04/703265.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703265.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703265.html</trackback:ping><description><![CDATA[摘要: 用System.Reflection.Emit 来自动生成调用存储过程的实现转贴,原文地址忘了//使用的例子namespaceLostinet.Sample...{usingSystem;usingSystem.Data;usingSystem.Data.SqlClient;usingSystem.Windows.Forms;//定义一个接口，用于定义存储过程interfaceINorthwind&nbsp;&nbsp;<a href='http://www.cnblogs.com/adamxx/archive/2006/12/04/703265.html'>阅读全文</a><img src ="http://www.cnblogs.com/adamxx/aggbug/703265.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47937/" target="_blank">微软8月25日开始通过WSUS推送IE8</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>关于Java的参数传递</title><link>http://www.cnblogs.com/adamxx/archive/2006/11/23/703280.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Thu, 23 Nov 2006 12:06:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2006/11/23/703280.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703280.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2006/11/23/703280.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703280.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703280.html</trackback:ping><description><![CDATA[<img height=1 src="http://blog.csdn.net/adamxx/aggbug/1408196.aspx" width=1>&nbsp;
<h1 style="MARGIN: 17pt 0cm 16.5pt"><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">关于</span><span lang=EN-US><font face=Calibri>Java</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">的参数传递<br><br></h1>
<p>我要崩溃了,Java的方法参数传递不管是值类型还是引用类型居然都是按值传递, 就是说他始终传递参数的副本.我们将不能通过我们常用的swap方式来交换2个变量的值,他没有C++中的,&amp;,*,更没有C#中的ref,对于值类型的参数,我尚可以理解,但让我觉得郁闷的是居然引用类型的传递方式也是按值,真觉得惊讶.</p>
<p>不过情况也不是很糟糕,引用类型的传递也始终传递参数的副本,但是这个副本也只是浅拷贝.</p>
</span>
<img src ="http://www.cnblogs.com/adamxx/aggbug/703280.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47935/" target="_blank">暴风称新旧版更换完毕 总计超4000万用户换装</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>抱歉你只是个妓女</title><link>http://www.cnblogs.com/adamxx/archive/2006/11/18/703287.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Sat, 18 Nov 2006 13:23:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2006/11/18/703287.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703287.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2006/11/18/703287.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703287.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703287.html</trackback:ping><description><![CDATA[摘要: 抱歉你只是个妓女...（转）  一、大板常指着夏鸥说：&#8220;你养的这婊子怎么年年看上去都像处女啊？&#8221; 我不喜欢他们喊夏鸥婊子，但是夏鸥确实是个卖身拿钱的妓女，我也确实说不上婊子和妓 女有什么区别。 但是就是不喜欢他们这样喊。原因没分析过。 夏鸥今年19了，夏鸥很漂亮。漂亮的少女夏鸥是个妓女，不爱笑不多话，脸上总是满满的 一页清纯。这就是好友大板老说夏鸥像处女的原因。 可以说夏鸥&nbsp;&nbsp;<a href='http://www.cnblogs.com/adamxx/archive/2006/11/18/703287.html'>阅读全文</a><img src ="http://www.cnblogs.com/adamxx/aggbug/703287.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47934/" target="_blank">3.5版既出 Firefox面临新挑战</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>泰勒级数</title><link>http://www.cnblogs.com/adamxx/archive/2006/11/16/703877.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Wed, 15 Nov 2006 23:49:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2006/11/16/703877.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703877.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2006/11/16/703877.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703877.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703877.html</trackback:ping><description><![CDATA[<h1 class=firstHeading>泰勒级数</h1>
<div id=bodyContent>
<h3 id=siteSub>维基百科，自由的百科全书</h3>
<div id=contentSub></div>
<div id=jump-to-nav>跳转到： <a href="http://zh.wikipedia.org/w/index.php?title=%E6%B3%B0%E5%8B%92%E7%BA%A7%E6%95%B0&amp;variant=zh-cn#column-one" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E6%B3%B0%E5%8B%92%E7%BA%A7%E6%95%B0&amp;variant=zh-cn#column-one"><font color=#002c99>导航</font></a>, <a href="http://zh.wikipedia.org/w/index.php?title=%E6%B3%B0%E5%8B%92%E7%BA%A7%E6%95%B0&amp;variant=zh-cn#searchInput" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E6%B3%B0%E5%8B%92%E7%BA%A7%E6%95%B0&amp;variant=zh-cn#searchInput"><font color=#002c99>搜索</font></a></div>
<!--{ps..0}-->
<p>泰勒级数是以于<a title=1715年 href="http://zh.wikipedia.org/w/index.php?title=1715%E5%B9%B4&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=1715%E5%B9%B4&amp;variant=zh-cn"><font color=#002c99>1715年</font></a>发表了<a title=泰勒公式 href="http://zh.wikipedia.org/w/index.php?title=%E6%B3%B0%E5%8B%92%E5%85%AC%E5%BC%8F&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E6%B3%B0%E5%8B%92%E5%85%AC%E5%BC%8F&amp;variant=zh-cn"><font color=#002c99>泰勒公式</font></a>的<a title=数学家 href="http://zh.wikipedia.org/w/index.php?title=%E6%95%B0%E5%AD%A6%E5%AE%B6&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E6%95%B0%E5%AD%A6%E5%AE%B6&amp;variant=zh-cn"><font color=#002c99>数学家</font></a><a class=new title="Brook Taylor" href="http://zh.wikipedia.org/w/index.php?title=Brook_Taylor&amp;action=edit" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=Brook_Taylor&amp;action=edit"><font color=#002c99>Brook Taylor</font></a>来命名的。</p>
<p><img class=FCK__Anchor height=1 src="http://writeblog.csdn.net/Editor/FCKeditor/editor/images/spacer.gif" width=1 _fckanchor="true" _fckrealelement="4" _fckfakelement="true"></p>
<h2><span class=mw-headline>简介</span></h2>
<p>在数学上, 一个定义在<a title=區間 href="http://zh.wikipedia.org/w/index.php?title=%E5%8D%80%E9%96%93&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%8D%80%E9%96%93&amp;variant=zh-cn"><font color=#002c99>开区间</font></a>(<em>a</em>-<em>r</em>, <em>a</em>+<em>r</em>)上的<a title=无穷 href="http://zh.wikipedia.org/w/index.php?title=%E6%97%A0%E7%A9%B7&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E6%97%A0%E7%A9%B7&amp;variant=zh-cn"><font color=#002c99>无穷</font></a><a title=导数 href="http://zh.wikipedia.org/w/index.php?title=%E5%AF%BC%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%AF%BC%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>可微的</font></a><a title=实数 href="http://zh.wikipedia.org/w/index.php?title=%E5%AE%9E%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%AE%9E%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>实变</font></a><a title=函数 href="http://zh.wikipedia.org/w/index.php?title=%E5%87%BD%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%87%BD%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>函数</font></a>或<a title="複數 (數學)" href="http://zh.wikipedia.org/w/index.php?title=%E8%A4%87%E6%95%B8_%28%E6%95%B8%E5%AD%B8%29&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E8%A4%87%E6%95%B8_%28%E6%95%B8%E5%AD%B8%29&amp;variant=zh-cn"><font color=#002c99>复变</font></a><a title=函数 href="http://zh.wikipedia.org/w/index.php?title=%E5%87%BD%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%87%BD%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>函数</font></a> <em>f</em> 的<strong>泰勒级数</strong>是如下的<a title=幂级数 href="http://zh.wikipedia.org/w/index.php?title=%E5%B9%82%E7%BA%A7%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%B9%82%E7%BA%A7%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>幂级数</font></a>：</p>
<dl>
<dd><img class=tex alt="\sum_{n=0}^{\infin} \frac{f^{(n)}(a)}{n!} (x-a)^{n}" src="http://upload.wikimedia.org/math/0/2/8/02837e50dddb76c237328172e2040135.png" _fcksavedurl="http://upload.wikimedia.org/math/0/2/8/02837e50dddb76c237328172e2040135.png"> </dd></dl>
<p>这里， <em>n</em>!表示<em>n</em>的<a title=阶乘 href="http://zh.wikipedia.org/w/index.php?title=%E9%98%B6%E4%B9%98&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E9%98%B6%E4%B9%98&amp;variant=zh-cn"><font color=#002c99>阶乘</font></a>而<em>f</em>&nbsp;<sup>(<em>n</em>)</sup>(<em>a</em>) 表示函数<em>f</em>在点<em>a</em>处的<em>n</em>阶<a title=导数 href="http://zh.wikipedia.org/w/index.php?title=%E5%AF%BC%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%AF%BC%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>导数</font></a>。如果泰勒级数对于区间(<em>a</em>-<em>r</em>, <em>a</em>+<em>r</em>)中的所有<em>x</em>都收敛并且级数的和等于 <em>f</em>(<em>x</em>)， 那么我们就称函数<em>f</em>(<em>x</em>)为<strong>解析的</strong>。当且仅当一个函数可以表示成为<a title=幂级数 href="http://zh.wikipedia.org/w/index.php?title=%E5%B9%82%E7%BA%A7%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%B9%82%E7%BA%A7%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>幂级数</font></a>的形式时，它才是解析的。为了检查级数是否收敛于<em>f</em>(<em>x</em>)，我们通常采用<strong>泰勒定理</strong>估计级数的<a class=new title=余项 href="http://zh.wikipedia.org/w/index.php?title=%E4%BD%99%E9%A1%B9&amp;action=edit" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E4%BD%99%E9%A1%B9&amp;action=edit"><font color=#002c99>余项</font></a>。上面给出的幂级数展开式中的系数正好是泰勒级数中的系数。</p>
<p><br>如果<em>a</em> = 0, 那么这个级数也可以被称为 <strong>麦克劳伦级数</strong>。</p>
<p><br>泰勒级数的重要性体现在以下三个方面：首先，<a title=幂级数 href="http://zh.wikipedia.org/w/index.php?title=%E5%B9%82%E7%BA%A7%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%B9%82%E7%BA%A7%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>幂级数</font></a>的求导和积分可以逐项进行，因此求<a class=new title=和函数 href="http://zh.wikipedia.org/w/index.php?title=%E5%92%8C%E5%87%BD%E6%95%B0&amp;action=edit" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%92%8C%E5%87%BD%E6%95%B0&amp;action=edit"><font color=#002c99>和函数</font></a>相对比较容易。第二，一个<a class=new title=解析函数 href="http://zh.wikipedia.org/w/index.php?title=%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0&amp;action=edit" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0&amp;action=edit"><font color=#002c99>解析函数</font></a>可被延伸为一个定义在<a title=复数 href="http://zh.wikipedia.org/w/index.php?title=%E5%A4%8D%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%A4%8D%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>复平面</font></a>上的一个开片上的<a title=全纯函数 href="http://zh.wikipedia.org/w/index.php?title=%E5%85%A8%E7%BA%AF%E5%87%BD%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%85%A8%E7%BA%AF%E5%87%BD%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>解析函数</font></a>，并使得<a title=复分析 href="http://zh.wikipedia.org/w/index.php?title=%E5%A4%8D%E5%88%86%E6%9E%90&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%A4%8D%E5%88%86%E6%9E%90&amp;variant=zh-cn"><font color=#002c99>复分析</font></a>这种手法可行。第三，泰勒级数可以用来<a class=new title=近似计算 href="http://zh.wikipedia.org/w/index.php?title=%E8%BF%91%E4%BC%BC%E8%AE%A1%E7%AE%97&amp;action=edit" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E8%BF%91%E4%BC%BC%E8%AE%A1%E7%AE%97&amp;action=edit"><font color=#002c99>近似计算</font></a>函数的值。</p>
<p><br>对于一些<a title=无穷 href="http://zh.wikipedia.org/w/index.php?title=%E6%97%A0%E7%A9%B7&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E6%97%A0%E7%A9%B7&amp;variant=zh-cn"><font color=#002c99>无穷</font></a><a title=导数 href="http://zh.wikipedia.org/w/index.php?title=%E5%AF%BC%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%AF%BC%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>可微</font></a><a title=函数 href="http://zh.wikipedia.org/w/index.php?title=%E5%87%BD%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%87%BD%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>函数</font></a><em>f</em>(<em>x</em>) 虽然它们的展开式收敛，但是并不等于<em>f</em>(<em>x</em>)。例如，<a class=new title=分段函数 href="http://zh.wikipedia.org/w/index.php?title=%E5%88%86%E6%AE%B5%E5%87%BD%E6%95%B0&amp;action=edit" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%88%86%E6%AE%B5%E5%87%BD%E6%95%B0&amp;action=edit"><font color=#002c99>分段函数</font></a><em>f</em>(<em>x</em>) = exp(&#8722;1/<em>x</em>&#178;) 当 <em>x</em> &#8800; 0 且 <em>f</em>(0) = 0 ，则当<em>x</em> = 0所有的导数都为零，所以这个<em>f</em>(<em>x</em>)的泰勒级数为零，且其<a title=收敛半径 href="http://zh.wikipedia.org/w/index.php?title=%E6%94%B6%E6%95%9B%E5%8D%8A%E5%BE%84&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E6%94%B6%E6%95%9B%E5%8D%8A%E5%BE%84&amp;variant=zh-cn"><font color=#002c99>收敛半径</font></a>为无穷大，虽然这个函数 <em>f</em> 仅在 <em>x</em> = 0 处为零。而这个问题在复变函数内并不成立，因为当 <em>z</em> 沿虚轴趋于零时 exp(&#8722;1/<em>z</em>&#178;) 并不趋于零。</p>
<p><br>一些函数无法被展开为泰勒级数因为那里存在一些<a title=奇点 href="http://zh.wikipedia.org/w/index.php?title=%E5%A5%87%E7%82%B9&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%A5%87%E7%82%B9&amp;variant=zh-cn"><font color=#002c99>奇点</font></a>。但是如果变量<em>x</em>是负指数幂的话，我们仍然可以将其展开为一个级数。例如，<em>f</em>(<em>x</em>) = exp(&#8722;1/<em>x</em>&#178;) 就可以被展开为一个<a class=new title=洛朗级数 href="http://zh.wikipedia.org/w/index.php?title=%E6%B4%9B%E6%9C%97%E7%BA%A7%E6%95%B0&amp;action=edit" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E6%B4%9B%E6%9C%97%E7%BA%A7%E6%95%B0&amp;action=edit"><font color=#002c99>洛朗级数</font></a>。</p>
<p><br><em><a class="external text" title=http://www.math.jmu.edu/~jim/picard.html href="http://www.math.jmu.edu/~jim/picard.html" rel=nofollow _fcksavedurl="http://www.math.jmu.edu/~jim/picard.html"><font color=#002c99>Parker-Sockacki theorem</font></a> 是最近发现的一种用泰勒级数来求解<a title=微分方程 href="http://zh.wikipedia.org/w/index.php?title=%E5%BE%AE%E5%88%86%E6%96%B9%E7%A8%8B&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%BE%AE%E5%88%86%E6%96%B9%E7%A8%8B&amp;variant=zh-cn"><font color=#002c99>微分方程</font></a>的定理。这个定理是对<a class=new title="Picard iteration" href="http://zh.wikipedia.org/w/index.php?title=Picard_iteration&amp;action=edit" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=Picard_iteration&amp;action=edit"><font color=#002c99>Picard iteration</font></a>一个推广。</em></p>
<p><img class=FCK__Anchor height=1 src="http://writeblog.csdn.net/Editor/FCKeditor/editor/images/spacer.gif" width=1 _fckanchor="true" _fckrealelement="3" _fckfakelement="true"></p>
<h2><span class=mw-headline>泰勒级数列表</span></h2>
<p>下面我们给出了几个重要的泰勒级数。 参数<em>x</em>为<a title=复数 href="http://zh.wikipedia.org/w/index.php?title=%E5%A4%8D%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%A4%8D%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>复数</font></a>时它们依然成立。</p>
<ul>
    <li><a title=指数函数 href="http://zh.wikipedia.org/w/index.php?title=%E6%8C%87%E6%95%B0%E5%87%BD%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E6%8C%87%E6%95%B0%E5%87%BD%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>指数函数</font></a>和<a title=自然對數 href="http://zh.wikipedia.org/w/index.php?title=%E8%87%AA%E7%84%B6%E5%B0%8D%E6%95%B8&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E8%87%AA%E7%84%B6%E5%B0%8D%E6%95%B8&amp;variant=zh-cn"><font color=#002c99>自然对数</font></a>: </li>
</ul>
<dl>
<dd><img class=tex alt="e^{x} = \sum^{\infin}_{n=0} \frac{x^n}{n!}\quad\mbox{ for all } x" src="http://upload.wikimedia.org/math/c/6/e/c6eca5173ab2cde63d2deec3e1eef839.png" _fcksavedurl="http://upload.wikimedia.org/math/c/6/e/c6eca5173ab2cde63d2deec3e1eef839.png"> </dd></dl>
<dl>
<dd><img class=tex alt="\ln(1+x) = \sum^{\infin}_{n=1} \frac{(-1)^{n+1}}n x^n\quad\mbox{ for } \left| x \right| <1" src="http://upload.wikimedia.org/math/3/3/d/33df4a28b5fb904d6266deec72ae60ee.png" _fcksavedurl="http://upload.wikimedia.org/math/3/3/d/33df4a28b5fb904d6266deec72ae60ee.png"> </dd></dl>
<ul>
    <li><a class=new title=几何级数 href="http://zh.wikipedia.org/w/index.php?title=%E5%87%A0%E4%BD%95%E7%BA%A7%E6%95%B0&amp;action=edit" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%87%A0%E4%BD%95%E7%BA%A7%E6%95%B0&amp;action=edit"><font color=#002c99>几何级数</font></a>: </li>
</ul>
<dl>
<dd><img class=tex alt="\frac{1}{1-x} = \sum^{\infin}_{n=0} x^n\quad\mbox{ for } \left| x \right| <1" src="http://upload.wikimedia.org/math/f/9/2/f92f0acc1d2f17123fba3362edb6f15f.png" _fcksavedurl="http://upload.wikimedia.org/math/f/9/2/f92f0acc1d2f17123fba3362edb6f15f.png"> </dd></dl>
<ul>
    <li><a title=二项式定理 href="http://zh.wikipedia.org/w/index.php?title=%E4%BA%8C%E9%A1%B9%E5%BC%8F%E5%AE%9A%E7%90%86&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E4%BA%8C%E9%A1%B9%E5%BC%8F%E5%AE%9A%E7%90%86&amp;variant=zh-cn"><font color=#002c99>二项式定理</font></a>: </li>
</ul>
<dl>
<dd><img class=tex alt="(1+x)^\alpha = \sum^{\infin}_{n=0} C(\alpha,n) x^n\quad\mbox{ for all } \left| x \right| <1\quad\mbox{ and all complex } \alpha" src="http://upload.wikimedia.org/math/9/f/5/9f5c8fa392fa375bd3588b08e0544117.png" _fcksavedurl="http://upload.wikimedia.org/math/9/f/5/9f5c8fa392fa375bd3588b08e0544117.png"> </dd></dl>
<ul>
    <li><a title=三角函数 href="http://zh.wikipedia.org/w/index.php?title=%E4%B8%89%E8%A7%92%E5%87%BD%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E4%B8%89%E8%A7%92%E5%87%BD%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>三角函数</font></a>: </li>
</ul>
<dl>
<dd><img class=tex alt="\sin x = \sum^{\infin}_{n=0} \frac{(-1)^n}{(2n+1)!} x^{2n+1}\quad\mbox{ for all } x" src="http://upload.wikimedia.org/math/6/c/d/6cd3737be7a2653367595e4365ba58f9.png" _fcksavedurl="http://upload.wikimedia.org/math/6/c/d/6cd3737be7a2653367595e4365ba58f9.png"> </dd></dl>
<dl>
<dd><img class=tex alt="\cos x = \sum^{\infin}_{n=0} \frac{(-1)^n}{(2n)!} x^{2n}\quad\mbox{ for all } x" src="http://upload.wikimedia.org/math/e/f/4/ef491e731c806ce36b37ddb84445ae22.png" _fcksavedurl="http://upload.wikimedia.org/math/e/f/4/ef491e731c806ce36b37ddb84445ae22.png"> </dd></dl>
<dl>
<dd><img class=tex alt="\tan x = \sum^{\infin}_{n=1} \frac{B_{2n} (-4)^n (1-4^n)}{(2n)!} x^{2n-1}\quad\mbox{ for } \left| x \right| <\frac{\pi}{2}" src="http://upload.wikimedia.org/math/1/b/c/1bc455cad3a5f18b8d42ada505ce0172.png" _fcksavedurl="http://upload.wikimedia.org/math/1/b/c/1bc455cad3a5f18b8d42ada505ce0172.png"> </dd></dl>
<dl>
<dd><img class=tex alt="\sec x = \sum^{\infin}_{n=0} \frac{(-1)^n E_{2n}}{(2n)!} x^{2n}\quad\mbox{ for } \left| x \right| <\frac{\pi}{2}" src="http://upload.wikimedia.org/math/5/5/e/55e98380715e307e58711eecb260b278.png" _fcksavedurl="http://upload.wikimedia.org/math/5/5/e/55e98380715e307e58711eecb260b278.png"> </dd></dl>
<dl>
<dd><img class=tex alt="\arcsin x = \sum^{\infin}_{n=0} \frac{(2n)!}{4^n (n!)^2 (2n+1)} x^{2n+1}\quad\mbox{ for } \left| x \right| <1" src="http://upload.wikimedia.org/math/1/c/3/1c339f2e1b9033004845f2b7849d96e8.png" _fcksavedurl="http://upload.wikimedia.org/math/1/c/3/1c339f2e1b9033004845f2b7849d96e8.png"> </dd></dl>
<dl>
<dd><img class=tex alt="\arctan x = \sum^{\infin}_{n=0} \frac{(-1)^n}{2n+1} x^{2n+1}\quad\mbox{ for } \left| x \right| <1" src="http://upload.wikimedia.org/math/2/b/f/2bf78b7372fb2e469b09f9707ecfc254.png" _fcksavedurl="http://upload.wikimedia.org/math/2/b/f/2bf78b7372fb2e469b09f9707ecfc254.png">
<dd><img class=tex alt="\arctan x = {{\pi {\mathop{\rm sgn}} x} \over 2} - {1 \over x} + \sum_{x = 1}^\infty  {{{\left( { - 1} \right)^k } \over {\left( {2k + 1} \right)x^{2k + 1} }}} \quad {\rm{for }}\left| x \right| > 1" src="http://upload.wikimedia.org/math/b/2/2/b2267d7cf7632dc79905a894cb578604.png" _fcksavedurl="http://upload.wikimedia.org/math/b/2/2/b2267d7cf7632dc79905a894cb578604.png"> </dd></dl>
<p><br></p>
<ul>
    <li><a title=双曲函数 href="http://zh.wikipedia.org/w/index.php?title=%E5%8F%8C%E6%9B%B2%E5%87%BD%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%8F%8C%E6%9B%B2%E5%87%BD%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>双曲函数</font></a>: </li>
</ul>
<dl>
<dd><img class=tex alt="\sinh x = \sum^{\infin}_{n=0} \frac{1}{(2n+1)!} x^{2n+1}\quad\mbox{ for all } x" src="http://upload.wikimedia.org/math/d/7/d/d7da90759b7429f08d4ae3012a21b2c1.png" _fcksavedurl="http://upload.wikimedia.org/math/d/7/d/d7da90759b7429f08d4ae3012a21b2c1.png"> </dd></dl>
<dl>
<dd><img class=tex alt="\cosh x = \sum^{\infin}_{n=0} \frac{1}{(2n)!} x^{2n}\quad\mbox{ for all } x" src="http://upload.wikimedia.org/math/c/b/2/cb28a3b9860b8c5416fb4106096c1580.png" _fcksavedurl="http://upload.wikimedia.org/math/c/b/2/cb28a3b9860b8c5416fb4106096c1580.png"> </dd></dl>
<dl>
<dd><img class=tex alt="\tanh x = \sum^{\infin}_{n=1} \frac{B_{2n} 4^n (4^n-1)}{(2n)!} x^{2n-1}\quad\mbox{ for } \left| x \right| <\frac{\pi}{2}" src="http://upload.wikimedia.org/math/0/0/e/00ef1d5ec2acafdc5007c0afe05599a1.png" _fcksavedurl="http://upload.wikimedia.org/math/0/0/e/00ef1d5ec2acafdc5007c0afe05599a1.png"> </dd></dl>
<dl>
<dd><img class=tex alt="\sinh^{-1} x = \sum^{\infin}_{n=0} \frac{(-1)^n (2n)!}{4^n (n!)^2 (2n+1)} x^{2n+1}\quad\mbox{ for } \left| x \right| <1" src="http://upload.wikimedia.org/math/9/e/1/9e1cde965c04d15f6c62d375bf28612d.png" _fcksavedurl="http://upload.wikimedia.org/math/9/e/1/9e1cde965c04d15f6c62d375bf28612d.png"> </dd></dl>
<dl>
<dd><img class=tex alt="\tanh^{-1} x = \sum^{\infin}_{n=0} \frac{1}{2n+1} x^{2n+1}\quad\mbox{ for } \left| x \right| <1" src="http://upload.wikimedia.org/math/1/c/a/1cade254eeb67e7d1c3a0eba55560ad9.png" _fcksavedurl="http://upload.wikimedia.org/math/1/c/a/1cade254eeb67e7d1c3a0eba55560ad9.png"> </dd></dl>
<ul>
    <li><a class=new title="Lambert's W function" href="http://zh.wikipedia.org/w/index.php?title=Lambert%27s_W_function&amp;action=edit" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=Lambert%27s_W_function&amp;action=edit"><font color=#002c99>Lambert's W function</font></a>: </li>
</ul>
<dl>
<dd><img class=tex alt="W_0(x) = \sum^{\infin}_{n=1} \frac{(-n)^{n-1}}{n!} x^n\quad\mbox{ for } \left| x \right| <\frac{1}{e}" src="http://upload.wikimedia.org/math/a/5/7/a573a8a7cb5a241fc173e59219b4582b.png" _fcksavedurl="http://upload.wikimedia.org/math/a/5/7/a573a8a7cb5a241fc173e59219b4582b.png"> </dd></dl>
<p>tan(<em>x</em>) 和 tanh(<em>x</em>) 展开式中的<em>B</em><sub><em>k</em></sub> 是 <a class=new title="Bernoulli numbers" href="http://zh.wikipedia.org/w/index.php?title=Bernoulli_numbers&amp;action=edit" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=Bernoulli_numbers&amp;action=edit"><font color=#002c99>Bernoulli numbers</font></a>。 二项式展开中的 C(&#945;,<em>n</em>) 是<a title=二项式系数 href="http://zh.wikipedia.org/w/index.php?title=%E4%BA%8C%E9%A1%B9%E5%BC%8F%E7%B3%BB%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E4%BA%8C%E9%A1%B9%E5%BC%8F%E7%B3%BB%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>二项式系数</font></a>。 sec(<em>x</em>) 展开式中的<em>E</em><sub><em>k</em></sub>是<a class=new title="Euler numbers" href="http://zh.wikipedia.org/w/index.php?title=Euler_numbers&amp;action=edit" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=Euler_numbers&amp;action=edit"><font color=#002c99>Euler numbers</font></a>。 <img class=FCK__Anchor height=1 src="http://writeblog.csdn.net/Editor/FCKeditor/editor/images/spacer.gif" width=1 _fckanchor="true" _fckrealelement="2" _fckfakelement="true"></p>
<h2><span class=mw-headline>多元函数的展开</span></h2>
<p>泰勒级数可以推广到有多个<a title=变量 href="http://zh.wikipedia.org/w/index.php?title=%E5%8F%98%E9%87%8F&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%8F%98%E9%87%8F&amp;variant=zh-cn"><font color=#002c99>变量</font></a>的<a title=函数 href="http://zh.wikipedia.org/w/index.php?title=%E5%87%BD%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E5%87%BD%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>函数</font></a>： <img class=tex alt="\sum_{n_1=0}^{\infin} \cdots \sum_{n_d=0}^{\infin} \frac{\partial^{n_1}}{\partial x^{n_1}} \cdots \frac{\partial^{n_d}}{\partial x^{n_d}} \frac{f(a_1,\cdots,a_d)}{n_1!\cdots n_d!} (x_1-a_1)^{n_1}\cdots (x_d-a_d)^{n_d}" src="http://upload.wikimedia.org/math/8/c/1/8c1e5441406a5b60ea7a12e0f79de3bf.png" _fcksavedurl="http://upload.wikimedia.org/math/8/c/1/8c1e5441406a5b60ea7a12e0f79de3bf.png"></p>
<!--{ps..1}-->
<div class=printfooter>取自"<a href="http://zh.wikipedia.org/w/index.php?title=%E6%B3%B0%E5%8B%92%E7%BA%A7%E6%95%B0&amp;variant=zh-cn" _fcksavedurl="http://zh.wikipedia.org/w/index.php?title=%E6%B3%B0%E5%8B%92%E7%BA%A7%E6%95%B0&amp;variant=zh-cn"><font color=#002c99>http://zh.wikipedia.org/w/index.php?title=%E6%B3%B0%E5%8B%92%E7%BA%A7%E6%95%B0&amp;variant=zh-cn</font></a>"</div>
&nbsp;</div>
<img src ="http://www.cnblogs.com/adamxx/aggbug/703877.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47930/" target="_blank">Bing首页将显示各国美景 顺推Silverlight</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>严重影响DataGridView性能的2个属性</title><link>http://www.cnblogs.com/adamxx/archive/2006/11/15/703266.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Tue, 14 Nov 2006 22:57:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2006/11/15/703266.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703266.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2006/11/15/703266.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703266.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703266.html</trackback:ping><description><![CDATA[<p>前段时间写一段一个数据处理的东西,需要绑定一张DataTable到网格控件(我从DataGridView&nbsp;继承),运行后发现,速度超级慢,&nbsp;我最开始是因为继承的原因,后面发现不是,最后终于在*.Designer.cs找到了,原来我无意中在设计面板中改动了<span class=identifier>RowHeadersWidthSizeMode</span> 属性<span class=identifier></span>&nbsp;.</p>
<p>经过测试发现,<span class=identifier>RowHeadersWidthSizeMode属性和</span><span class=identifier>ColumnHeadersHeightSizeMode属性,非常影响,DataGridView的显示性能,DataGridView的数据绑定应该是迭代的,如果你把DataGridViewRowHeadersWidthSizeMode设置了AuToSize类型的属性,那么每设置一行就要进行一次对HeaderWidth的调整,那么对于N行的表就将进行N!次操作,再加上列的情况,这种性能损失将是巨大的.</span></p>
<p><span class=identifier>如果一定需要控件自动调整宽度,可以先把<span class=identifier>DataGridViewColumnHeadersHeightSizeMode或DataGridViewRowHeadersWidthSizeMode设置为DisableResizing或EnableResizing,设置了DataSouce属性后在将他改为AutoSize.</span></span> </p>
<p><span class=identifier>DataGridViewColumnHeadersHeightSizeMode</span></p>
<p>
<table class=" FCK__ShowTableBorders" cellSpacing=2 cellPadding=5 width="100%">
    <tbody>
        <tr>
            <th>&nbsp;</th>
            <th align=left>成员名称</th>
            <th align=left>说明</th>
        </tr>
        <tr vAlign=top>
            <td>&nbsp;</td>
            <td>AutoSize</td>
            <td>列标题的高度根据所有列标题单元格的内容进行调整。 &nbsp;</td>
        </tr>
        <tr vAlign=top>
            <td>&nbsp;</td>
            <td>DisableResizing</td>
            <td>用户不能使用鼠标调整列标题的高度。&nbsp;</td>
        </tr>
        <tr vAlign=top>
            <td>&nbsp;</td>
            <td>EnableResizing</td>
            <td>用户可以使用鼠标调整列标题的高度。&nbsp;</td>
        </tr>
    </tbody>
</table>
</p>
<p>DataGridViewRowHeadersWidthSizeMode:</p>
<p>
<table class=" FCK__ShowTableBorders" cellSpacing=2 cellPadding=5 width="100%">
    <tbody>
        <tr>
            <th>&nbsp;</th>
            <th align=left>成员名称</th>
            <th align=left>说明</th>
        </tr>
        <tr vAlign=top>
            <td>&nbsp;</td>
            <td>AutoSizeToAllHeaders</td>
            <td>为适应所有行标头单元格的内容大小而进行的行标头宽度调整。 &nbsp;</td>
        </tr>
        <tr vAlign=top>
            <td>&nbsp;</td>
            <td>AutoSizeToDisplayedHeaders</td>
            <td>为适应当前显示的行中所有行标头的内容大小而进行的行标头宽度调整。 &nbsp;</td>
        </tr>
        <tr vAlign=top>
            <td>&nbsp;</td>
            <td>AutoSizeToFirstHeader</td>
            <td>为适应第一个行标头的内容大小而进行的行标头宽度调整。&nbsp;</td>
        </tr>
        <tr vAlign=top>
            <td>&nbsp;</td>
            <td>DisableResizing</td>
            <td>用户不能使用鼠标调整列标头的宽度。&nbsp;</td>
        </tr>
        <tr vAlign=top>
            <td>&nbsp;</td>
            <td>EnableResizing</td>
            <td>用户可以使用鼠标调整列标头的宽度。&nbsp;</td>
        </tr>
    </tbody>
</table>
</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<img src ="http://www.cnblogs.com/adamxx/aggbug/703266.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47929/" target="_blank">Gmail 的标签马上就会支持拖拽操作了</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>新的开始</title><link>http://www.cnblogs.com/adamxx/archive/2006/11/13/703281.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Mon, 13 Nov 2006 11:56:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2006/11/13/703281.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703281.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2006/11/13/703281.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703281.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703281.html</trackback:ping><description><![CDATA[<p>学习Java?并不是我不喜欢他,我只是不愿意花太多的时间在Java的身上.</p>
<p>前几天接到一个电话,是一家培训机构打来的,他叫我第二天去参加一次笔试.我想也好,顺便去捞点面试经验.</p>
<p>其实我并不知道他是怎么找到我的,可能是我在csdn上留的简历吧.其实我并不愿意马上工作,我总想等到vista的正式发布.</p>
<p>我问他他们公司的一些情况,他并没有多说什么,只告诉我了公司地址.我很郁闷,这会让我没什么准备,google搜了搜这个地址,很容易的找到了他们的主页,一个Java培训机构,感觉还做得挺好,唯一不明白的是他叫我去做什么?到是网页上写着几个猎头职位,点进去一看待遇都不低.</p>
<p>第二天,我准时到了那一家培训机构,他给了我一套试题,很简单,分3类(英语测试,计算机基础测试,逻辑测试),英语测试错得多一点,那是在我的意料之中,到是计算机基础测试让我很纳闷,居然扣分了,太多的名词解释,例如SQL?我顺手写上数据库查询语言,缺忘了结构2字.</p>
<p>第一套试题算是通过了,那里的接待人员拿出第二套试题,我一看 Java Test,全英文的试题,我狂汗,我大概看了看这套题,时间120分钟,前半部分都是选择题,一些基础,继承,接口什么的,最后是程序试题和一些问答,什么JDBC,XML之类的,如果在.net里面,我想这些难不到我,至于JDBC,我真不知道怎么用,用Java写入读出XML之类的,更觉得茫然,我对JDK的唯一了解就是java.lang.*其他的一概不知道.我真的不知道他为什么找我来做这套题,我的所有简历中并没有提到java的任何一项技术,他告诉我这套题考75分就算过关,我想了一下告诉他:我不会java.他笑了笑,拿了一套C++的试题,C++试题看上去到不难,我做了,程序题几乎满分,到是一些基础真的答不上,什么内联,什么连接函数,什么友员,忘了,都记不得是什么了,我想我做WIN32程序的时候好象都没用过这些,可能是太小的项目吧.</p>
<p>最后他对我说叫我参加Java的培训,说现在大学生太傲,出来才知道,工作不好找,我说我是主要搞.net开发的,他又对我大说特说java的好处,java人才的需求,我真的很想扁他,TMD你找我来干什么的.</p>
<p>终了,我知道Java现在很火,我也知道Java人才需求量很大(160000,这是最近一期,&lt;程序员&gt;公布的调查结果),我想我的确应该去了解一下Java.</p>
<p>太多的事情我们不能左右,我们只能选择.</p>
<img src ="http://www.cnblogs.com/adamxx/aggbug/703281.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47928/" target="_blank">Windows 7 触摸功能是摆设 无厂商支持价值不大</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>浅谈中缀表达式的求值(带符号,等于,不等于,大于,小于,与,或,非,等等)</title><link>http://www.cnblogs.com/adamxx/archive/2006/08/30/703267.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Wed, 30 Aug 2006 13:30:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2006/08/30/703267.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703267.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2006/08/30/703267.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703267.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703267.html</trackback:ping><description><![CDATA[摘要: 浅谈中缀表达式的求值我们知道中缀表达式的求值,通常都是先转换为后缀表达式,在通过堆栈求出后缀表达式的值，对于这点,如果有不太清楚的请参见：http://202.113.89.254/DataStructure/DS/web/zhanhuoduilie/zhanhuoduilie3.3.1.htm（原理）http://tech.ccw.com.cn/article/252014.htm（实现）对于C&nbsp;&nbsp;<a href='http://www.cnblogs.com/adamxx/archive/2006/08/30/703267.html'>阅读全文</a><img src ="http://www.cnblogs.com/adamxx/aggbug/703267.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47927/" target="_blank">虚拟货币上了"紧箍咒" 新规将限制Q币发行</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>项目顺利竣工表彰大会</title><link>http://www.cnblogs.com/adamxx/archive/2006/08/11/703295.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Thu, 10 Aug 2006 21:23:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2006/08/11/703295.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703295.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2006/08/11/703295.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703295.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703295.html</trackback:ping><description><![CDATA[<p><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8月10日,我为成都市青羊区统计局开发的&#8220;统计数据管理分析系统&#8221;顺利完成,经过几个月的艰辛,我终于知道资本家的残酷剥削。</font></p>
<p><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;今天我宣布,&nbsp;&#8220;统计数据管理分析系统&#8221;顺利竣工。灭哈哈 </font></p>
<p><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这是一个运行在 .NET 2.0 + SqlServer 2000下的C/S项目,全部代码由C#编写。今天完成了,我觉得还挺不错的.技术含量也比较高,灭哈哈,今天高兴,就让我多吹几句哈。里面涉及到很多好的算法,都是我自己想的,灭哈哈。其中有类似Excel的单元格函数处理（类似&#8220;=SUM(A1,A2)&#8221;),并且可以判断死循环，自己感觉挺不错；还有带IF，ELSE，THEN，NOT，AND，OR，与一些四则运算的表达式求值,可以处理负号的,不是一般的后缀表达式可以实现的哟；反正还有好多好多,全部原代码100M,哈哈，不要笑我,我今天高兴,就让我骄傲一下。</font></p>
<p><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;暑假都过了一半了，本来打算这个暑假读一下LINUX原代码的,现在只有1个月的时间了，5555，都怪资本家,太残忍了。我太造孽了，555555555</font></p>
<p><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 很久没有更新BLOG了,最近时间比较多了,我会写一些最近遇到的问题和解决方案,虽然没人关注,自我安慰了&nbsp; T.T</font></p>
<p><font size=2>&nbsp;&nbsp; 下面这个图是服务端的主界面：很简单</font></p>
<p><font size=2>&nbsp;&nbsp;&nbsp; <img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/adamxx/SA_Server.jpg" _fcksavedurl="http://p.blog.csdn.net/images/p_blog_csdn_net/adamxx/SA_Server.jpg"><br>下面这个是客户段的主界面：<br></font></p>
<p><font size=2>&nbsp;&nbsp;&nbsp; <img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/adamxx/SA_Client.jpg" _fcksavedurl="http://p.blog.csdn.net/images/p_blog_csdn_net/adamxx/SA_Client.jpg"></font></p>
<img src ="http://www.cnblogs.com/adamxx/aggbug/703295.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47926/" target="_blank">魔兽世界审批期限有新说 - 80天才是正解</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>爱情与婚姻的哲理</title><link>http://www.cnblogs.com/adamxx/archive/2006/07/24/703296.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Mon, 24 Jul 2006 13:50:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2006/07/24/703296.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703296.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2006/07/24/703296.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703296.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703296.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有一天，柏拉图问老师苏格拉底什么是爱情？老师就让他先到到麦田里去，摘一棵全麦田里最大最金黄的麦穗来，期间只能摘一次，并且只可向前走，不能回头。</p>
<p>　　柏拉图于是按照老师说的去做了。结果他两手空空的走出了田地。老师问他为什么摘不到？</p>
<p>　　他说：因为只能摘一次，又不能走回头路，期间即使见到最大最金黄的，因为不知前面是否有更好的，所以没有摘；走到前面时，又发决总不及之前见到的好，原来最大最金黄的麦穗早已错过了；于是我什么也没摘。</p>
<p>　　老师说：这就是&#8220;爱情&#8221;。</p>
<p>　　之后又有一天，柏拉图问他的老师什么是婚姻，他的老师就叫他先到树林里，砍下一棵全树林最大最茂盛、最适合放在家作圣诞树的树。其间同样只能砍一次，以及同样只可以向前走，不能回头。</p>
<p>　　柏拉图于是照着老师的说话做。今次，他带了一棵普普通通，不是很茂盛，亦不算太差的树回来。老师问他，怎么带这棵普普通通的树回来，他说：&#8220;有了上一次经验，当我走到大半路程还两手空空时，看到这棵树也不太差，便砍下来，免得错过了后，最后又什么也带不出来。&#8221;</p>
<p>　　老师说：&#8220;这就是婚姻！&#8221;</p>
<img src ="http://www.cnblogs.com/adamxx/aggbug/703296.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47925/" target="_blank">“必应”出生满月 抢夺谷歌蛋糕</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[转]倒在马路上的爱情</title><link>http://www.cnblogs.com/adamxx/archive/2006/07/05/703297.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Tue, 04 Jul 2006 19:04:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2006/07/05/703297.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703297.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2006/07/05/703297.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703297.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703297.html</trackback:ping><description><![CDATA[<div id=blogContent>&nbsp;&nbsp;&nbsp; 和蓝分开了 <br>&nbsp;&nbsp;&nbsp; 蓝是个很好的女孩 <br>&nbsp;&nbsp;&nbsp; 很漂亮也很温柔 <br>&nbsp;&nbsp;&nbsp; 虽然很多朋友说我离开她很傻 <br>&nbsp;&nbsp;&nbsp; 可我还是放手了 <br>&nbsp;&nbsp;&nbsp; 虽然我很舍不的 <br><br>&nbsp;&nbsp;&nbsp; 第一天 <br>&nbsp;&nbsp;&nbsp; 她没有起床 <br>&nbsp;&nbsp;&nbsp; 把自己用被子捂的严严实实的 <br>&nbsp;&nbsp;&nbsp; 她宿舍的人都不敢去安慰她 <br>&nbsp;&nbsp;&nbsp; 她一天都没有吃饭 <br>&nbsp;&nbsp;&nbsp; 连刷牙洗脸都没有 <br>&nbsp;&nbsp;&nbsp; 晚上睡觉的时候我听到她在被子里抽泣 <br><br>&nbsp;&nbsp;&nbsp; 第二天 <br>&nbsp;&nbsp;&nbsp; 今天她吃饭了 <br>&nbsp;&nbsp;&nbsp; 是她的宿舍同学强制性的让她吃的 <br>&nbsp;&nbsp;&nbsp; 她的眼眶红红的 <br>&nbsp;&nbsp;&nbsp; 我总说她是个爱哭鬼 <br>&nbsp;&nbsp;&nbsp; 她每次都噘着小嘴说她不是 <br><br>&nbsp;&nbsp;&nbsp; 第三天 <br>&nbsp;&nbsp;&nbsp; 今天她穿的很妖艳 <br>&nbsp;&nbsp;&nbsp; 走进一家酒吧 <br>&nbsp;&nbsp;&nbsp; 喝了好多酒 <br>&nbsp;&nbsp;&nbsp; 用一种很诱惑的眼光环视全场 <br>&nbsp;&nbsp;&nbsp; 好多人上来搭腔&#8220;小姐 你好漂亮啊" <br>&nbsp;&nbsp;&nbsp; 她喝了很多 <br>&nbsp;&nbsp;&nbsp; 当一个年纪可以做她爸爸的男人对她说 <br>&nbsp;&nbsp; &#8220;小姐，我送你回家吧&#8221;的时候 <br>&nbsp;&nbsp;&nbsp; 她把手中的酒全泼在他的脸上 <br>&nbsp;&nbsp;&nbsp; 那个该死的老头扬起他的手掌 <br>&nbsp;&nbsp;&nbsp; 就要打下去的时候 <br>&nbsp;&nbsp;&nbsp; 小睦他们来了 <br>&nbsp;&nbsp;&nbsp; 救了蓝 <br>&nbsp;&nbsp;&nbsp; 这一切我都知道 <br>&nbsp;&nbsp;&nbsp; 我就在酒吧的一个角落里看着 <br><br>&nbsp;&nbsp;&nbsp; 第四天 <br>&nbsp;&nbsp;&nbsp; 今天她早早就起床了 <br>&nbsp;&nbsp;&nbsp; 忙忙碌碌一上午 <br>&nbsp;&nbsp;&nbsp; 然后把自己关在浴室里好久 <br>&nbsp;&nbsp;&nbsp; 当舍友们踹门进去的时候都惊呼到 <br>&nbsp;&nbsp;&nbsp; 好干净啊 <br><br>&nbsp;&nbsp;&nbsp; 第五天 <br>&nbsp;&nbsp;&nbsp; 她开始学习了 <br>&nbsp;&nbsp;&nbsp; 其实她原来学习很好 <br>&nbsp;&nbsp;&nbsp; 我们开始后受我影响她的成绩也退步了 <br>&nbsp;&nbsp;&nbsp; 这也好，转移一下注意力 <br>&nbsp;&nbsp;&nbsp; 恢复的也快 <br><br>&nbsp;&nbsp;&nbsp; 三个月后。。。。 <br>&nbsp;&nbsp;&nbsp; 她做了学生会主席 <br>&nbsp;&nbsp;&nbsp; 她越来越能干 <br>&nbsp;&nbsp;&nbsp; 也开朗了不少 <br>&nbsp;&nbsp;&nbsp; 马上她就要考研了 <br>&nbsp;&nbsp;&nbsp; 一年后。。。。。 <br>&nbsp;&nbsp;&nbsp; 在她身边的男人很多 <br>&nbsp;&nbsp;&nbsp; 比我优秀的也很多 <br>&nbsp;&nbsp;&nbsp; 可她根本没在意过 <br>&nbsp;&nbsp;&nbsp; 不过她和凌很好 <br>&nbsp;&nbsp;&nbsp; 校园里传他们的关系很暧昧 <br>&nbsp;&nbsp;&nbsp; 她只是把他当哥哥 <br>&nbsp;&nbsp;&nbsp; 可是流言是挡不住的 <br><br>&nbsp;&nbsp;&nbsp; 三年后。。。。 <br>&nbsp;&nbsp;&nbsp; 她要结婚了 <br>&nbsp;&nbsp;&nbsp; 新郎是凌 <br>&nbsp;&nbsp;&nbsp; 她在写结婚请贴，一张，两张，三张...... <br>&nbsp;&nbsp;&nbsp; 写到第十二张的时候她哭了 <br>&nbsp;&nbsp;&nbsp; 趴在桌上眼泪完全抑制不住 <br>&nbsp;&nbsp;&nbsp; 我上前一看 <br>&nbsp;&nbsp;&nbsp; 所有的喜贴新郎写的都是我的名字 <br>&nbsp;&nbsp;&nbsp; 我也很想哭 <br>&nbsp;&nbsp;&nbsp; 可是鬼魂是不能哭的 <br>&nbsp;&nbsp;&nbsp; 我没有眼泪 <br><br>&nbsp;&nbsp;&nbsp; 三年前 <br>&nbsp;&nbsp;&nbsp; 我横穿马路 <br>&nbsp;&nbsp;&nbsp; 遇上车祸 <br>&nbsp;&nbsp;&nbsp; 手里提着要给她庆祝生日的蛋糕&nbsp;</div>
<img src ="http://www.cnblogs.com/adamxx/aggbug/703297.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47924/" target="_blank">Firefox 3.5正式版全球下载量突破500万次</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>淡忘</title><link>http://www.cnblogs.com/adamxx/archive/2006/06/11/703288.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Sat, 10 Jun 2006 18:23:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2006/06/11/703288.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703288.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2006/06/11/703288.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703288.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703288.html</trackback:ping><description><![CDATA[<p dir=ltr style="MARGIN-RIGHT: 0px"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 炎炎的烈日炙烤着即将枯萎的土地。他多么渴望一场暴风雨，他并不是那么的畏惧烈日，但他觉得很累很累。他开始讨厌她的性格，他觉得她虚伪，他憎恨虚伪！</font></p>
<p dir=ltr style="MARGIN-RIGHT: 0px"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;她总是骗他，开始的时候虽然会生气但他都会原谅她。终于到了那么一天，他突然觉得自己很无助，他不会在生气也不会再原谅她，当然他也不会怪她，他开始对她说慌。</font></p>
<p dir=ltr style="MARGIN-RIGHT: 0px"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当她犯了错误，总是用那么一种温柔希望换会他的原谅，他也欣然接受。她总是解释很多，但是她也总是在解释，更过分的是她的解释往往都欲盖弥章，他开始讨厌解释，他认为解释只是为了掩饰虚伪，仿佛虚伪伸出双手请求你原谅它的虚伪或者一张黑纸非常诚恳的告诉你它是白纸。有时候他也会觉得恶心，他不愿意在为她付出些什么，因为他认为换回来的依然是一张虚伪的笑脸和枕边的温柔，他甚至不愿意在她身上花更多的钱。</font></p>
<p dir=ltr style="MARGIN-RIGHT: 0px"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;偶尔她也会知道那么一点真相，她会问他为什么，他也不愿意去解释，因为他认为解释只是为了掩饰，他甚至不愿意去掩饰。有一天她告诉他：你变了。她渴望他像以前一样。他摇了摇头，或许她并不明白为什么，但他心里很清楚。或许她也会很伤心，这种伤心也被他所无视掉了。她依然在骗他...</font></p>
<p dir=ltr style="MARGIN-RIGHT: 0px"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 她总对他有很多要求，他觉得很烦，他很自私，他认为她总是在索取他的付出，却不愿意为他想想，他很愤怒。他开始觉得这只是利益关系而已。他越来越明白...</font></p>
<p dir=ltr style="MARGIN-RIGHT: 0px"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有时候她和他会吵架，吵的很厉害，会提到分手，开始他会觉得伤心，而后虽然也觉得伤心，不过伤心的或许也只有枕边的童话。到了最后，他依然会伤心，不过伤心中却感到解脱。</font></p>
<p dir=ltr style="MARGIN-RIGHT: 0px"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 他讨厌现在的她，为什么那么虚伪？她认为她很了解他。或许他误会了她，或许他也会想她，想她每周末一个人默默离去的背影，想她在睡前的那丝丝温柔。</font></p>
<p dir=ltr style="MARGIN-RIGHT: 0px"><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 他明白分手就在不远的地方，在那里会有一场很大很大的雨...........</font></p>
<font size=2>
<hr>
</font>
<p><font size=2></font></p>
<font size=2>或许你永远不会看到这篇文章，因为你从来没有在乎过我的东西。或许你根本不知道这blog的地址，你也并不关心这个，我觉得很可悲...</font>
<p>&nbsp;</p>
<img src ="http://www.cnblogs.com/adamxx/aggbug/703288.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47923/" target="_blank">网易今日凌晨开放战网及魔兽官网</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[转]女孩！当你说没有好男人的时候去看看～</title><link>http://www.cnblogs.com/adamxx/archive/2006/05/23/703289.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Mon, 22 May 2006 19:28:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2006/05/23/703289.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703289.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2006/05/23/703289.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703289.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703289.html</trackback:ping><description><![CDATA[<div id=blogContent>十岁以前，就不说了，无非是淘气和不懂事。&nbsp; <br><br>十三、四岁的时候，开始对女孩有好感，但是那时候他离女孩远远的，并且以讨厌女孩自居，生怕被同伴嘲笑。&nbsp; <br><br>十五岁的时候，听到大人们说某某男人好花，把女朋友甩了，女孩自杀了。他觉得这人真狠毒，自己将来一定要做个痴情的男人，一定要一生只爱一个人。&nbsp; <br><br>十六岁的时候，他喜欢上了一个女孩，但是他不敢和她说。仍然和往常一样，脏兮兮的在灰土飞扬的操场上踢球。只在女孩走出校门的时候，躲在二层的窗户上看她的背影,他觉得她一定是个天使。&nbsp; <br><br>十七岁的时候，有个女孩喜欢上了他，但是他离她很远，他心里面只有自己那个女孩， 他觉得看别的女孩都是对她的不忠。&nbsp; <br><br>十八岁的时候，看了一个MTV，感动得想哭，他想，如果自己的女孩失去了双眼，他一定 男主角会毫不犹豫的把自己的眼睛给她，让她能看到光明。&nbsp; <br><br>十九岁的时候，高考了。终于和自己暗恋的女孩分别，坐火车去学校的时候，感觉自己离她越来越远，心像被掏空了一样。还在想自己一定不会忘记她，等到自己成功以后一定要去找她。&nbsp; <br><br>二十岁的时候，听到有人讲黄色笑话，觉得这人真可耻。&nbsp; <br><br>二十一岁的时候，她的回信中告诉他，自己有了男朋友。偷偷的哭了一个晚上。&nbsp; <br><br>二十二岁的时候，他向一个女孩表白，女孩说&#8220;你是个好人，可是我还小。&#8221;他想，我的确是个好人，他说&#8220;没关系，我可以等你。&#8221;心想，我不会像那些花心的人一样，三年五年我也能等。&nbsp; <br><br>二十三岁的时候，说自己还小的女孩和一个帅哥恋爱了。他很纳闷，长大原来可以这快。&nbsp; <br><br>二十四岁的时候，他又向一个女孩表白，女孩说&#8220;你是个好人，可是我并不适合你。&#8221; 他纳闷很久，我是好人你怎么还不适合我呢？&nbsp; <br><br>二十五岁的时候，他又追求一个女孩，女孩接受了他。他开始很幸福的为未来拼搏，他 想，一时的开心只是暂时的，只有努力拼搏，他和她才能有快乐的未来，但是，半年以 后，女孩和他分手了。只是因为另外一个男孩会说让她开心的话。女孩说&#8220;你是个好人 ，是我对不起你。&#8221;他似乎明白了问题所在，他是个好人。&nbsp; <br><br>二十六岁的时候，他开始堕落，交网友。打扮得时尚而酷，而且渐渐的学习着讨好女孩 的话。不久，他有了个女朋友，虽然他对她也很好，可是，他心里知道，自己并不爱她 。&nbsp; <br><br>二十七岁的时候，他和女孩分手了。他对女孩说&#8220;你是个好女孩，是我对不起你。&#8221;&nbsp; <br><br>二十八岁的时候，他尝试了一夜情，发现别人能做的，自己也一样。&nbsp; <br><br>二十九岁的时候，他学会了讲黄色笑话，并且以看旁边的女孩子脸红为乐趣。&nbsp; <br><br>三十岁的时候，他忽然发现自己变得很有能力追求到女孩，但是却没有了爱的能力。于 是&nbsp; <br><br>他在自己QQ上写下了如下的话 ************************************************&nbsp; <br><br><br>其实每个男孩，本来都是想做一个感情专一的好男人的。&nbsp; <br>其实每个男孩，本来看女孩子都是看脸而不是胸部的。&nbsp; <br>其实每个男孩，本来都是不会讲黄色笑话的。&nbsp; <br>其实每个男孩，本来都是渴望爱一个人直到永远的。&nbsp; <br>只是，没有任何女孩爱这样的男孩，她们觉得这样的男孩太幼稚，太古板，没有情趣。&nbsp; <br>于是男孩开始改变，变成女孩喜欢的那种 嘴角挂着坏坏的笑,玩世不恭或者幽默&nbsp; <br>开始学会说甜言蜜语而不是心里想说的话 开始学会假装关心，学会给女孩送小饰物讨好她 学会如何追求，如何把握爱情。 或者看破红尘，游戏情场，成为女人恨恨的那种男人。&nbsp; <br>他们可以很容易俘获女孩子的心 但是他们也会在黑的夜里叼着烟流泪 心里有爱的时候，没有女孩.有了女孩，却永远没有了爱的感觉 在听到女人抱怨世上没有一个好男人时候 他们不会再去努力做个好男人，只是微笑着擦肩而过。</div>
<img src ="http://www.cnblogs.com/adamxx/aggbug/703289.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47919/" target="_blank">微软公布部分Windows 7中文版本零售价</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>失去前要懂得珍惜</title><link>http://www.cnblogs.com/adamxx/archive/2006/04/14/703290.html</link><dc:creator>adamxx</dc:creator><author>adamxx</author><pubDate>Fri, 14 Apr 2006 12:12:00 GMT</pubDate><guid>http://www.cnblogs.com/adamxx/archive/2006/04/14/703290.html</guid><wfw:comment>http://www.cnblogs.com/adamxx/comments/703290.html</wfw:comment><comments>http://www.cnblogs.com/adamxx/archive/2006/04/14/703290.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/adamxx/comments/commentRss/703290.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/adamxx/services/trackbacks/703290.html</trackback:ping><description><![CDATA[<p><img src="http://www.cnblogs.com/images/cnblogs_com/adamxx/89846/o_AboutGoodBye.gif" border=0><a href="http://www.cnblogs.com/images/cnblogs_com/adamxx/89846/t_AboutGoodBye.gif"></a></p>
<img src ="http://www.cnblogs.com/adamxx/aggbug/703290.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47918/" target="_blank">Firefox 3.5：很快 但还是不够</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item></channel></rss>