<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_是非之地</title><subtitle type="text">博客园首席处男所在的小窝</subtitle><id>http://feed.cnblogs.com/blog/u/41183/rss</id><updated>2012-05-14T07:14:58Z</updated><author><name>undefined</name><uri>http://www.cnblogs.com/ArthasCui/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ArthasCui/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/41183/rss"/><entry><id>http://www.cnblogs.com/ArthasCui/archive/2011/06/03/2071212.html</id><title type="text">javascript的哲学</title><summary type="text">嗷嗷说：思想和哲学才是一门语言中最重要的。忽然就想， 天啊， 那javascript的哲学是虾米捏？大概总结有下面这几条(写几条算几条， 所以不提前说到底有几条)： 1 想插就插， 想拔就拔。呃， javascript没有楞次定律存在， 或者说楞次定律已经不能阻止你插入：一个对象了。除了一些安全性的内置对象。 或者现在那些蛋疼的get和set（个人很不喜欢也不建议使用。。。） 封装不等于一堆的get和set。 2 为达目的不择手段javascript可以说是跨平台最好的语言， 木有之一=。=我一个同学说的。说只要你装了浏览器， 就随便跨。但是跨浏览器不比跨平台容易啊， 有木有啊有木有！！！！.</summary><published>2011-06-03T04:01:00Z</published><updated>2011-06-03T04:01:00Z</updated><author><name>undefined</name><uri>http://www.cnblogs.com/ArthasCui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ArthasCui/archive/2011/06/03/2071212.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ArthasCui/archive/2011/06/03/2071212.html"/><content type="html">&lt;p&gt; 嗷嗷说：思想和哲学才是一门语言中最重要的。&lt;/p&gt;&lt;p&gt;忽然就想， 天啊， 那javascript的哲学是虾米捏？&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;大概总结有下面这几条(写几条算几条， 所以不提前说到底有几条)： &lt;br /&gt;&lt;/p&gt;&lt;p&gt;1 想插就插， 想拔就拔。&lt;/p&gt;&lt;p&gt;&amp;nbsp;呃， javascript没有楞次定律存在， 或者说楞次定律已经不能阻止你插入：一个对象了。&lt;/p&gt;&lt;p&gt;除了一些安全性的内置对象。 或者现在那些蛋疼的get和set（个人很不喜欢也不建议使用。。。） &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;封装不等于一堆的get和set。&amp;nbsp; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;2&amp;nbsp; 为达目的不择手段&lt;br /&gt;&lt;/p&gt;&lt;p&gt;javascript可以说是跨平台最好的语言， 木有之一&lt;/p&gt;&lt;p&gt;=。=&lt;/p&gt;&lt;p&gt;我一个同学说的。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;说只要你装了浏览器， 就随便跨。&lt;/p&gt;&lt;p&gt;但是跨浏览器不比跨平台容易啊， 有木有啊有木有！！！！！！！！&lt;/p&gt;&lt;p&gt;这javascript得见人说人话， 见鬼说鬼话，&lt;/p&gt;&lt;p&gt;有时候是先判断对方是人是鬼（判浏览器）， 有时候是 试着说一句，不行再改口（TryThese）&lt;br /&gt;&lt;/p&gt;&lt;p&gt;真的是太纠结啦！！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;3 游侠风格， 无视世俗眼光。&lt;/p&gt;&lt;p&gt;呃， ECMA丫的定了那么多标准， 谁去读完过？&lt;/p&gt;&lt;p&gt;没用的。&lt;/p&gt;&lt;p&gt;最简单一个例子：&lt;/p&gt;&lt;p&gt;for in可以遍历一个对象的所有属性， 这个顺序， ECMA是不保证的。&lt;/p&gt;&lt;p&gt;后来， 似乎谁说又定了个顺序（我不保证这个是真的啊， 我从来不去看ECMA文档的） &lt;br /&gt;&lt;/p&gt;&lt;p&gt;然后说xx方式的顺序就是标准了。 xx浏览器你是不对滴！！！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;不对你妹。&amp;nbsp;&lt;/p&gt;&lt;p&gt;我就关心大家实现的怎么样。&lt;/p&gt;&lt;p&gt;实际上你定的标准， 只对以后的浏览器， &amp;#8220;可能&amp;#8221; 起作用， 还仅仅是可能！！！&lt;br /&gt;&lt;/p&gt;&lt;p&gt;丫的浏览器比你先出来的你凭什么说你是标准啊？&lt;/p&gt;&lt;p&gt;能跑才是王道。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;4&amp;nbsp; 安全第一&lt;br /&gt;&lt;/p&gt;&lt;p&gt;随着《少年英雄方世玉》 的第二部的放映， 变得流行了起来。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;javascript的任何特性首先考虑的就是安全性。&amp;nbsp;&lt;/p&gt;&lt;p&gt;实际上对于任何跨平台能力强大的东东， 安全性都是第一位的。&lt;/p&gt;&lt;p&gt;呃， 就算不跨平台安全性也不是不重要， 只是能跨的得对自己要求更严格。&lt;/p&gt;&lt;p&gt;=。=&lt;/p&gt;&lt;p&gt;怎么这么拗口。&lt;/p&gt;&lt;p&gt;比如跨域。 比如本地文件。 比如cookie， 比如， 等等。&lt;/p&gt;&lt;p&gt;尤其是共用的东西， 不弄点防护措施隔离下， 日子还有法过吗？&lt;/p&gt;&lt;p&gt;=。=&lt;/p&gt;&lt;p&gt;怎么感觉这么邪恶。 &lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/ArthasCui/aggbug/2071212.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ArthasCui/archive/2011/06/03/2071212.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ArthasCui/archive/2011/05/09/2041116.html</id><title type="text">为什么软件就可以随时推倒重来</title><summary type="text">大家普遍知道的一个故事就是：软件经常推倒重来， 但是盖楼房不行。从来没有哪个楼房盖到一半的时候推倒重改的。然后大家以此为感慨， 开始拼命的研究各种技术， 让软件重来的更容易一些。其实大家的方向错了。以前我们一直以为软件行业与其他行业存在差异， 导致了我们经常重来。实际上没什么差异。最近买了一本教你如何卖自己的照片的书， 大概介绍谈判技巧与报价签合同等等方面知识的。我惊讶的发现， 里面的谈判其实和软件的谈判是一样的。他提到， 卖照片， 如果这个照片是不存在的， 是要试着去拍摄的，那么， 首先是要收费的！然后如果拍摄到一半客户觉得不好， 要重新拍，那么已经拍了的这部分是要收费的！！！后面的我还没.</summary><published>2011-05-09T06:25:00Z</published><updated>2011-05-09T06:25:00Z</updated><author><name>undefined</name><uri>http://www.cnblogs.com/ArthasCui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ArthasCui/archive/2011/05/09/2041116.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ArthasCui/archive/2011/05/09/2041116.html"/><content type="html">&lt;p&gt; 大家普遍知道的一个故事就是：&lt;/p&gt;&lt;p&gt;软件经常推倒重来， 但是盖楼房不行。&lt;/p&gt;&lt;p&gt;从来没有哪个楼房盖到一半的时候推倒重改的。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;然后大家以此为感慨， 开始拼命的研究各种技术， 让软件重来的更容易一些。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;其实大家的方向错了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;以前我们一直以为软件行业与其他行业存在差异， 导致了我们经常重来。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;实际上没什么差异。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;最近买了一本教你如何卖自己的照片的书， 大概介绍谈判技巧与报价签合同等等方面知识的。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;我惊讶的发现， 里面的谈判其实和软件的谈判是一样的。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;他提到， 卖照片， 如果这个照片是不存在的， 是要试着去拍摄的，&amp;nbsp;&lt;/p&gt;&lt;p&gt;那么， 首先是要收费的！&lt;/p&gt;&lt;p&gt;然后如果拍摄到一半客户觉得不好， 要重新拍，&amp;nbsp;&lt;/p&gt;&lt;p&gt;那么已经拍了的这部分是要收费的！！！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;后面的我还没彻底看完， 总之就是这个也要收费的， 那个也要收费的， 客户你爱怎么折腾怎么折腾， 我绝不会降低报价给你拍的！&lt;br /&gt;&lt;/p&gt;&lt;p&gt;因为我们这是&amp;#8220;艺术&amp;#8221; ！&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;搜噶， 我们做软件的则没这魄力了。&lt;/p&gt;&lt;p&gt;甚至恰恰相反。 具体我们怎么做的我就不多说了。 你们都懂的。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;反过来， 楼房没有盖到一般推倒重盖的是吗？&lt;/p&gt;&lt;p&gt;但是， 有没有盖到一半客户觉得不合适的！！&lt;/p&gt;&lt;p&gt;有没有！！！！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;客户觉得不合适， 大家互相谈不拢， 最后烂尾的， 有没有！！！！&lt;/p&gt;&lt;p&gt;楼房只是烂尾了不管了而已。 软件只是因为&amp;#8220;重构的太容易了&amp;#8221; ， 注意是太容易了， &lt;br /&gt;&lt;/p&gt;&lt;p&gt;所以才不断的答应客户， 改！&lt;/p&gt;&lt;p&gt;反正只是代码而已！！！！！！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;这就是为什么重构的方法越来越easy， 影响越来越小， 结果软件危机依然没法解决的原因。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;楼房烂尾的时候， 一堆人的钱砸在那呢。 你看着办。 推到了重盖完全可以解决问题， 但是所有投资商血本无归了， 你们看着办吧。&lt;/p&gt;&lt;p&gt;所以才选择了硬盖！甚至欺上瞒下的混过去。 只要不出事， 一切好说！&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;因此我觉得以后我们还是不要用盖楼和写软件做对比了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;人家是暴利野蛮行业， 我们怎么比得了。 &lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/ArthasCui/aggbug/2041116.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ArthasCui/archive/2011/05/09/2041116.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ArthasCui/archive/2011/04/26/2029642.html</id><title type="text">你要的BI</title><summary type="text">A公司给B公司做了一套很强大的BI系统。B公司很开心。这个系统很强大， A公司从中收取了大量的收益。然而有一天， B公司忽然提出系统分值有些许差异。因为B公司对A来说很重要， 所以A公司干脆直接派出了自己公司的架构师去解决问题。架构师很快分析出了系统瓶颈， 找到了问题所在。因为系统存在低级的SQL注入， 也就是说可能会有人入侵系统修改数据。但是让他不解的是， 为什么这么明显的错误一直在使用却没有被发现。于是他带着几个高级工程师很快解决了问题。但是客户似乎并不满意。架构师用尽了全身的力气， 去优化， 去调整。最终客户却越来越不满意。最终架构师愤然辞职， 项目无人接手， 被迫取消。————————</summary><published>2011-04-26T10:36:00Z</published><updated>2011-04-26T10:36:00Z</updated><author><name>undefined</name><uri>http://www.cnblogs.com/ArthasCui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ArthasCui/archive/2011/04/26/2029642.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ArthasCui/archive/2011/04/26/2029642.html"/><content type="html">&lt;div&gt;A公司给B公司做了一套很强大的BI系统。&lt;br /&gt;B公司很开心。&lt;br /&gt;&lt;br /&gt;这个系统很强大， A公司从中收取了大量的收益。&lt;br /&gt;&lt;br /&gt;然而有一天， B公司忽然提出系统分值有些许差异。&lt;br /&gt;&lt;br /&gt;因为B公司对A来说很重要， 所以A公司干脆直接派出了自己公司的架构师去解决问题。&lt;br /&gt;&lt;br /&gt;架构师很快分析出了系统瓶颈， 找到了问题所在。因为系统存在低级的SQL注入， 也就是说可能会有人入侵系统修改数据。&lt;br /&gt;&lt;br /&gt;但是让他不解的是， 为什么这么明显的错误一直在使用却没有被发现。&lt;br /&gt;&lt;br /&gt;于是他带着几个高级工程师很快解决了问题。&lt;br /&gt;&lt;br /&gt;但是客户似乎并不满意。&lt;br /&gt;&lt;br /&gt;架构师用尽了全身的力气， 去优化， 去调整。&lt;br /&gt;&lt;br /&gt;最终客户却越来越不满意。&lt;br /&gt;&lt;br /&gt;最终架构师愤然辞职， 项目无人接手， 被迫取消。&lt;br /&gt;&lt;br /&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&lt;br /&gt;A公司给B公司做了一套很强大的BI系统。&lt;br /&gt;B公司很开心。&lt;br /&gt;&lt;br /&gt;这个系统很强大， 公司慢慢的开始依靠这个系统了。&lt;br /&gt;&lt;br /&gt;不过B公司的老板一直有一个事情很郁闷。&lt;br /&gt;因为他们公司的考评分数也是系统直接给出了。&lt;br /&gt;而和他出生入死的那几个兄弟， 有一个人，分值低的要命。&lt;br /&gt;人事部实在不知道如何处理才好。&lt;br /&gt;&lt;br /&gt;于是老板找到了A公司， 试图解决这个问题。&lt;br /&gt;A公司派来一个很聪明的技术人员。&lt;br /&gt;老板对这个技术人员提的要求是：&lt;br /&gt;&amp;#8220;似乎人事评分这里给的分值有些与实际不符。 请修正这个问题&amp;#8221;&lt;br /&gt;&lt;br /&gt;技术人员通过调研， 分析， 调试， 最终确定了&amp;#945;模块有一点点的瑕疵。&lt;br /&gt;于是他带着大家修复了这个问题。&lt;br /&gt;&lt;br /&gt;真的， 他手下的人也是相当的厉害。&lt;br /&gt;&lt;br /&gt;然而老板的那几个兄弟分值全都变低了。&lt;br /&gt;&lt;br /&gt;是啊， 他们每天上班就是偷偷菜， 分值能高才怪呢。&lt;br /&gt;&lt;br /&gt;不仅如此， 连老板本人的分数也是在直线下降。&lt;br /&gt;&lt;br /&gt;于是老板向A公司抱怨。说他们的技术人员太烂了。 怎么越做分数错的越大呢？&lt;br /&gt;&lt;br /&gt;A公司被迫将项目延期， 不计成本的投入人力来修复这个问题。&lt;br /&gt;&lt;br /&gt;直到最后也没有搞定。&lt;br /&gt;&lt;br /&gt;最后项目被终止， 合同取消， 系统停用。。&lt;br /&gt;&lt;br /&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A公司给B公司做了一套很强大的BI系统。&lt;br /&gt;B公司很开心。&lt;br /&gt;&lt;br /&gt;设计系统的人是一个只会陪客户喝酒的人。&lt;br /&gt;&lt;br /&gt;他叫了几个外包人员拼拼凑凑的用网上down的代码把系统给完成了。&lt;br /&gt;&lt;br /&gt;然而出乎意料的是客户居然对这个系统非常满意&lt;br /&gt;&lt;br /&gt;并很即时的付了全部的款， &lt;br /&gt;&lt;br /&gt;设计人员以及骨干人员都得到了大量的分成。&lt;br /&gt;&lt;br /&gt;然后设计人员因为成绩优异被猎头发现而高新跳槽走人。&lt;br /&gt;&lt;br /&gt;外包人员各回各家。&lt;br /&gt;&lt;br /&gt;直到有一天他们听说系统因为升级失败而被迫取消不再使用。&lt;br /&gt;他们都很惊讶。 &lt;br /&gt;&lt;br /&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&lt;br /&gt;&lt;br /&gt;C参与了A公司给B公司做的系统的开发工作。&lt;br /&gt;他只是一个完全没有编码经验的人。&lt;br /&gt;公司派他去加入外包团队完全是因为没有人愿意要他。&lt;br /&gt;&lt;br /&gt;有一天测试人员报出一个SQL注入漏洞的时候， 他震惊了。&lt;br /&gt;没想到过原来程序还可以这样用。&lt;br /&gt;因为这个， 他被扣了好多money。&lt;br /&gt;&lt;br /&gt;但是慢慢的他却开始对这个产生了兴趣。&lt;br /&gt;&lt;br /&gt;最后他做了一个大胆的计划：&lt;br /&gt;判角色。 &lt;br /&gt;如果登陆人的ID是总经理，并且时间是指定时间。那么他会单独提供一个做SQL注入的页面。&lt;br /&gt;这个页面是偷偷加的， 没有送测。&lt;br /&gt;最终瞒过了测试， 代码被送到了正式环境中。&lt;br /&gt;&lt;br /&gt;他知道， 如果不出意外， 漏洞被发现的时候， 他早就不知道被哪个公司叫走了。&lt;br /&gt;&lt;br /&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&lt;br /&gt;&lt;br /&gt;D是B公司的经理。&lt;br /&gt;他非常反对系统的上线。 但是又不知道如何反驳IT提出的建议， 就允诺暂时试用看看。&lt;br /&gt;系统上线后他发现自己居然可以按照一个小页面的提示来随意修改员工的评分。&lt;br /&gt;于是他很开心， 批准了IT的全款， 并告诉IT， 这个系统非常完美， 不需要再修改了。&lt;br /&gt;&lt;br /&gt;直到他发现了自己修改自己亲信的分数的时候， 有一个和自己出生入死的哥们的分值居然不能被修改。&lt;br /&gt;于是他叫来了A公司的工程师， 指出了几个人的分值过高， 并指出了这个是正常的。&lt;br /&gt;然后告诉了A公司的工程师：你懂的。&lt;br /&gt;&lt;br /&gt;然而让他匪夷所思的是A公司的工程师居然如此死脑筋， 越改越错。&lt;br /&gt;&lt;br /&gt;最终他借口质量不合格， 终止了项目。&lt;br /&gt;&lt;br /&gt;----------------------------------------------------&lt;br /&gt;&lt;br /&gt;E是B公司的服务器。&lt;br /&gt;它在运行系统的时候忠实的执行了C写的代码。&lt;br /&gt;&lt;br /&gt;然而C的代码里面，&lt;br /&gt;因为一个匪夷所思的异常， 导致了流程的混乱， &lt;br /&gt;最终导致了那个偷偷加入的页面永远会被显示。&lt;br /&gt;&lt;br /&gt;E忠实的执行了这个代码。&lt;br /&gt;&lt;br /&gt;然后它得到了最好的照顾， 最好的优待。&lt;br /&gt;&lt;br /&gt;一个月后， 代码发生了变化。&lt;br /&gt;E依然忠实的执行了代码。&lt;br /&gt;又一个月后， 它被抛弃在了机房里再也没有处理过什么有用的数据。&lt;br /&gt;&lt;br /&gt;现在它每天最大的事情就是在思考， 当代码到来的时候， 到底要不要忠实的执行？&lt;/div&gt;&lt;img src="http://www.cnblogs.com/ArthasCui/aggbug/2029642.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ArthasCui/archive/2011/04/26/2029642.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ArthasCui/archive/2011/04/21/2023486.html</id><title type="text">非主流javascript教学（七）</title><summary type="text">每一个没有在javascript里面写过正则表达式的前端工程师， 上辈子都是折翼的天使，你伤不起啊~~用javascript ， 就很难不用正则。我们说：寻找节点的时候， 我们不是有 DOM吗， 不是有jQuery吗， 正则？多此一举了吧？不过请记住：1 你还能找到什么技术写起来比正则更装13吗？不能！2 没有2了。 不能再2下去了。我们用正则， 有很多地方：1 ajax之后，分析。 当然， 有的人说，你太土了。 还正则， 我ajax拿到的从来都是JSON 呃， 这个问题， 我想说。。。 我经常在本地用Ajax来抓网页或者刷论坛的。 因为本地文件没有跨域的问题吗。比如这样：$.ajax({t.</summary><published>2011-04-21T05:55:00Z</published><updated>2011-04-21T05:55:00Z</updated><author><name>undefined</name><uri>http://www.cnblogs.com/ArthasCui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ArthasCui/archive/2011/04/21/2023486.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ArthasCui/archive/2011/04/21/2023486.html"/><content type="html">&lt;p&gt; 每一个没有在javascript里面写过正则表达式的前端工程师， 上辈子都是折翼的天使，&lt;/p&gt;&lt;p&gt;你伤不起啊~~&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;用javascript ， 就很难不用正则。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;我们说：寻找节点的时候， 我们不是有 DOM吗， 不是有jQuery吗， 正则？多此一举了吧？&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;不过请记住：&lt;/p&gt;&lt;p&gt;1 你还能找到什么技术写起来比正则更装13吗？不能！&lt;/p&gt;&lt;p&gt;2 没有2了。 不能再2下去了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;我们用正则， 有很多地方：&lt;/p&gt;&lt;p&gt;1 ajax之后，分析。 &lt;/p&gt;&lt;p&gt;&amp;nbsp; 当然， 有的人说，你太土了。 还正则， 我ajax拿到的从来都是JSON&lt;/p&gt;&lt;p&gt;&amp;nbsp; 呃， 这个问题， 我想说。。。 我经常在本地用Ajax来抓网页或者刷论坛的。 因为本地文件没有跨域的问题吗。&lt;/p&gt;&lt;p&gt;比如这样：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$.ajax({&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;GET&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;url:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;http://www.baidu.com/&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;success:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;(msg){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(msg);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;注意要用IE， IE！！！&lt;br /&gt;&lt;/p&gt;&lt;p&gt;因为火狐相对规范一些， 做坏事难一些。你懂的。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;so， 这个时候， 当然， 可以用$(msg)来处理。 但是我打赌你拿到这个东西之后会很想分析， 而不仅仅是查找节点。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;2 验证。&lt;/p&gt;&lt;p&gt;大家都懂的， javascript最初就是为了验证而诞生的。 因此， 没有正则， 它混个屁啊！！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;啊， 不对。 应该说：javascript这么高贵的语言怎么可能连正则都没有呢！！！！！！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;然后问题来了：&lt;/p&gt;&lt;p&gt;1 既然javascript是一门面向对象的语言， 那它有正则表达式类吗？&lt;/p&gt;&lt;p&gt;肯定有！！！！ 怎么会没有！！！你这是在鄙视高贵的javascript吗？&lt;/p&gt;&lt;p&gt;2 既然有， 那么我们可以去new喽？&lt;/p&gt;&lt;p&gt;当然可以！！怎么会不可以！！！你这是在鄙视高贵的javascript吗？&lt;/p&gt;&lt;p&gt;3 那， 你一定经常new喽？&lt;/p&gt;&lt;p&gt;当然。。。。不！！！ 你这是在鄙视undefined吗？&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;=。=&lt;/p&gt;&lt;p&gt;我们知道， 正则的构造， 一般都比较慢。&lt;/p&gt;&lt;p&gt;比如，C#， 一般大家都会编译正则吗。 最不济也要做个正则的池， 在里面取。&lt;/p&gt;&lt;p&gt;此是题外话， 不多说了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;但是， 我们高贵的javascript， 怎么会做这么傻的事情呢？&lt;/p&gt;&lt;p&gt;我们天生就有池。 你只要使用字面量即可：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;r_int&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;^[0-9]+$&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;当你第二次用相同的字面量声明同一个正则的时候， 他们会自动指向同一个对象！&lt;/p&gt;&lt;p&gt;嗯， 很像C#的字符串驻留机制是吗？&lt;/p&gt;&lt;p&gt;有点吧。 C#肯定是照javascript抄的。 以微软的秉性， 没的跑。肯定的。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;然后， 有了正则， 怎么办？match？&lt;br /&gt;&lt;/p&gt;&lt;p&gt;javascript里的方法叫exec。 要知道正则简直可以说是一门强大的语言。 用exec做名字一点不过分。&lt;/p&gt;&lt;p&gt;再说你能compile， 不能exec， 怎么说得过去呀！&lt;/p&gt;&lt;p&gt;不过我们验证一般只看对不对， 而不关心分组， 是不是？&lt;/p&gt;&lt;p&gt;所以一般用test方法就够了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;推荐直接test的理由有两个：&lt;/p&gt;&lt;p&gt;1 test快。&lt;/p&gt;&lt;p&gt;2 exec慢。 而且test能搞定的用exec太大动干戈了。&lt;/p&gt;&lt;p&gt;3 undefined同学是做测试出身的。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;=。= &lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/ArthasCui/aggbug/2023486.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ArthasCui/archive/2011/04/21/2023486.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ArthasCui/archive/2011/04/20/2022329.html</id><title type="text">写个批处理继续使用Reflector</title><summary type="text">去客户那出差几天， 消息闭塞啊回来发现我可爱的Reflector不能用了。我这个丧心啊。然后他们说博客园首页有个破解版的啊可是是不是因为我回来的太晚了啊？我已经搜不到那篇文章了。然后他们说，其实你改个时间可以继续用的。只是得自己改回来。好麻烦啊。 我这个人懒的很。干脆写个批处理替我改时间吧。代码如下：@echooffdate/t&gt;tmp.txtdate2011/03/01startd:\reflector\reflector.exerem这个ping只是为了延时。Reflector启动太慢了ping127.0.0.1-n5&gt;nuldate&lt;tmp.txtdeletetmp.t</summary><published>2011-04-20T07:07:00Z</published><updated>2011-04-20T07:07:00Z</updated><author><name>undefined</name><uri>http://www.cnblogs.com/ArthasCui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ArthasCui/archive/2011/04/20/2022329.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ArthasCui/archive/2011/04/20/2022329.html"/><content type="html">&lt;p&gt; 去客户那出差几天， 消息闭塞啊&lt;/p&gt;&lt;p&gt;回来发现我可爱的Reflector不能用了。&lt;/p&gt;&lt;p&gt;我这个丧心啊。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;然后他们说博客园首页有个破解版的啊&lt;/p&gt;&lt;p&gt;可是是不是因为我回来的太晚了啊？我已经搜不到那篇文章了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;然后他们说，其实你改个时间可以继续用的。&lt;/p&gt;&lt;p&gt;只是得自己改回来。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;好麻烦啊。 我这个人懒的很。&lt;/p&gt;&lt;p&gt;干脆写个批处理替我改时间吧。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;代码如下：&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;@echo&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;off&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;date&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;t&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;tmp&lt;/span&gt;&lt;span style="color: #000000;"&gt;.&lt;/span&gt;&lt;span style="color: #000000;"&gt;txt&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;date&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;2011&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;03&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;01&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;start&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;d:&lt;/span&gt;&lt;span style="color: #000000;"&gt;\&lt;/span&gt;&lt;span style="color: #000000;"&gt;reflector&lt;/span&gt;&lt;span style="color: #000000;"&gt;\&lt;/span&gt;&lt;span style="color: #000000;"&gt;reflector&lt;/span&gt;&lt;span style="color: #000000;"&gt;.&lt;/span&gt;&lt;span style="color: #000000;"&gt;exe&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;rem&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;这个ping只是为了延时。&amp;nbsp;Reflector启动太慢了&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;ping&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;127.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;.&lt;/span&gt;&lt;span style="color: #000000;"&gt;0.1&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;-n&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;date&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;tmp&lt;/span&gt;&lt;span style="color: #000000;"&gt;.&lt;/span&gt;&lt;span style="color: #000000;"&gt;txt&lt;br /&gt;delete&amp;nbsp;tmp&lt;/span&gt;&lt;span style="color: #000000;"&gt;.&lt;/span&gt;&lt;span style="color: #000000;"&gt;txt&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;邪恶的undefined再一次无耻成功。。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/ArthasCui/aggbug/2022329.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ArthasCui/archive/2011/04/20/2022329.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ArthasCui/archive/2011/04/19/2021133.html</id><title type="text">非主流javascript教学（六）</title><summary type="text">呃， 这次我们提下jQuery我们知道jQuery是javascript里面一个很优秀的家伙。很多人甚至是为了jQuery而开始学习javascript的。比如undefined同学。=。=然后某同事在用jQuery的时候出问题了。呃， 出什么问题？jQuery能出问题无非就这么几种：1 jQuery有bug。2 Ajax的问题（基本上可以认为jQuery有bug） 3 $符号的冲突问题。大家都知道$符号冲突了， 调用noConflict就OK了呗。其实不是这样的。其实问题比这严重的多。比如我同事碰到这个， 他们在项目中使用了$， 大概就是这么定义的：function $(id){retur.</summary><published>2011-04-19T08:25:00Z</published><updated>2011-04-19T08:25:00Z</updated><author><name>undefined</name><uri>http://www.cnblogs.com/ArthasCui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ArthasCui/archive/2011/04/19/2021133.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ArthasCui/archive/2011/04/19/2021133.html"/><content type="html">&lt;p&gt; 呃， 这次我们提下jQuery&lt;/p&gt;&lt;p&gt;我们知道jQuery是javascript里面一个很优秀的家伙。&lt;/p&gt;&lt;p&gt;很多人甚至是为了jQuery而开始学习javascript的。&lt;/p&gt;&lt;p&gt;比如undefined同学。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;=。=&lt;/p&gt;&lt;p&gt;然后某同事在用jQuery的时候出问题了。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;呃， 出什么问题？&lt;/p&gt;&lt;p&gt;jQuery能出问题无非就这么几种：&lt;/p&gt;&lt;p&gt;1 jQuery有bug。&lt;/p&gt;&lt;p&gt;2 Ajax的问题（基本上可以认为jQuery有bug） &lt;br /&gt;&lt;/p&gt;&lt;p&gt;3 $符号的冲突问题。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;大家都知道$符号冲突了， 调用noConflict就OK了呗。&lt;/p&gt;&lt;p&gt;其实不是这样的。&lt;/p&gt;&lt;p&gt;其实问题比这严重的多。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;比如我同事碰到这个， 他们在项目中使用了$， 大概就是这么定义的：&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt; $(id){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;document.getElementById(id);&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;读过前面文章的人都知道， 这种写法是最糟糕的。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;理由：&lt;/p&gt;&lt;p&gt;1 你丫的使用全局变量！&lt;/p&gt;&lt;p&gt;2 用全局变量我们也就认了，你丫的没有用匿名函数! 你应该var $ = function(){。。。。} 这样才对吗！！！&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3 你丫的居然用这么不装13的写法， 你怎么好意思说自己会javascript啊！！！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;当然了， 代码已经写好了， 也就没有去改的必要了。&amp;nbsp;&lt;/p&gt;&lt;p&gt;但是问题来了：&lt;/p&gt;&lt;p&gt;同事在项目二期的时候计划引入jQuery， 然后呢？ 大家可以猜到， 一定会用noConflict了吧？一定可以完美解决了吧？错！&lt;br /&gt;&lt;/p&gt;&lt;p&gt;首先是， 两个js谁放前面？&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;大家说， 那还用问， 当然是jQuery放前面， 类库放前面吗， 自己的代码放后面吗， 国际惯例。&lt;/p&gt;&lt;p&gt;so， 问题来了：&lt;/p&gt;&lt;p&gt;那么jQuery岂不是被我们的$给覆盖了吗？&lt;/p&gt;&lt;p&gt;错！没有覆盖。 这个问题就蛋疼了。 说起来也挺麻烦恶心的。 反正， 如果他的定义是这样的：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;window.$&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;(id){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;document.getElementById(id);&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;就是我们提倡的装13的写法， 这样就不会出问题~&lt;br /&gt;&lt;/p&gt;&lt;p&gt;这个不管了。 现在， 反正$冲突了， 总该让noConflict出场了吧？&lt;/p&gt;&lt;p&gt;又错了。。。&lt;/p&gt;&lt;p&gt;我们用noConflict的时候一定要知道为什么noConflict可以解决冲突。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;jQuery在加载的时候， 备份了一次$， 然后如果你调用noConflict， 那么jQuery会将备份的值给还原回去。&lt;/p&gt;&lt;p&gt;好， 问题来了。&lt;/p&gt;&lt;p&gt;我们看下：&lt;/p&gt;&lt;p&gt;1 最初， $没有定义。 那么$===undefined&lt;/p&gt;&lt;p&gt;2 jQuery加载。 他备份了$， 然后定义$ 所以备份的是undefined，&amp;nbsp;&lt;/p&gt;&lt;p&gt;3 加载同事的代码。&amp;nbsp; 由于一个诡异的问题， $冲突了。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;4 这个时候试图用noConflict来解决冲突(当然这个思路是完全错误的。 暂时不去责备他)。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;5 undefined被还原。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;怎么怎么， 怎么回事？undefined你咋这么喜欢凑热闹， 到处都有你啊？&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;=。=&lt;/p&gt;&lt;p&gt;不好意思， 事情已经发生。 请寻找解决方案， 而不是一味的去责备谁。&lt;/p&gt;&lt;p&gt;那么， 解决方案是什么呢？&lt;/p&gt;&lt;p&gt;其实根本不需要noConflict这么麻烦， 我们的代码在jQuery之后加载， 我们覆盖它不就行了吗？&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;代码：就用刚刚我们说的装13写法。&lt;/p&gt;&lt;p&gt;$变量轻松的被覆盖掉了。&amp;nbsp;&lt;/p&gt;&lt;p&gt;而使用jQuery的办法则是大家熟知的：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;($,&amp;nbsp;undefined){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;自己的代码在这里&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;})(jQuery);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;搞定。 装13写法再次战胜其他语言中的常规写法。。。。&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/ArthasCui/aggbug/2021133.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ArthasCui/archive/2011/04/19/2021133.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ArthasCui/archive/2011/03/24/1994004.html</id><title type="text">MissingMethodException</title><summary type="text">一个很恶心的问题啊。纠结了我很久。我这里做一个插件类型的东西。比如， 一个窗体叫MainForm，然后一个接口叫IPlugIn。然后IPlugIn在载入的时候调用IPlugIn.OnLoad方法。我写了一个IPlugIn， 他在OnLoad的时候， 会自动在MainForm里面添加一个菜单。于是我就在MainForm类上加了一个AddMenuItem的方法。然后呢， MainForm我可以通过一些办法拿到， 但是拿到的时候是Form类型， 而不是MainForm类型。所以要as一下， 然后调用MainForm上的方法。大概就是这么个结构。好， 问题来了：visual studio不知道抽什么疯</summary><published>2011-03-24T07:50:00Z</published><updated>2011-03-24T07:50:00Z</updated><author><name>undefined</name><uri>http://www.cnblogs.com/ArthasCui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ArthasCui/archive/2011/03/24/1994004.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ArthasCui/archive/2011/03/24/1994004.html"/><content type="html">&lt;div&gt;一个很恶心的问题啊。&lt;br /&gt;纠结了我很久。&lt;br /&gt;&lt;br /&gt;我这里做一个插件类型的东西。&lt;br /&gt;&lt;br /&gt;比如， 一个窗体叫MainForm，&lt;br /&gt;然后一个接口叫IPlugIn。&lt;br /&gt;&lt;br /&gt;然后IPlugIn在载入的时候调用IPlugIn.OnLoad方法。&lt;br /&gt;&lt;br /&gt;我写了一个IPlugIn， 他在OnLoad的时候， 会自动在MainForm里面添加一个菜单。&lt;br /&gt;&lt;br /&gt;于是我就在MainForm类上加了一个AddMenuItem的方法。&lt;br /&gt;&lt;br /&gt;然后呢， MainForm我可以通过一些办法拿到， 但是拿到的时候是Form类型， 而不是MainForm类型。&lt;br /&gt;&lt;br /&gt;所以要as一下， 然后调用MainForm上的方法。&lt;br /&gt;&lt;br /&gt;大概就是这么个结构。&lt;br /&gt;&lt;br /&gt;好， 问题来了：&lt;br /&gt;&lt;br /&gt;visual studio不知道抽什么疯， 每次调用的时候， 都提示我：&lt;br /&gt;MissingMethodException， 在MainForm里面没有找到AddMenuItem这么个方法。&lt;br /&gt;&lt;br /&gt;我靠~&lt;br /&gt;&lt;br /&gt;当然了， 如果把exe和dll都拿出来直接跑， 是没问题的。&lt;br /&gt;只有visual studio调试的时候会出问题。&lt;br /&gt;&lt;br /&gt;但是没有调试功能， 下面的东东我怎么写啊？&lt;br /&gt;&lt;br /&gt;=。=&lt;br /&gt;&lt;br /&gt;最后各种绕法都试过了。&lt;br /&gt;如果删除整个代码文件夹， 重新从vss获取， 然后重新编译， 就OK了。&lt;br /&gt;但是一旦Form有点更改， 就又完蛋了。。。。。&lt;br /&gt;&lt;br /&gt;so， 最后想了这么个办法：&lt;br /&gt;&lt;br /&gt;定义了一个IMainForm接口， 将方法加在这个接口上。&lt;br /&gt;&lt;br /&gt;然后让MainForm实现这个接口。&lt;br /&gt;然后我调用的时候， 直接调用接口方法。&lt;br /&gt;&lt;br /&gt;大家知道， 这个更改和没改是一样的。 因为还是在调用这个方法， 只不过是用接口过去的而已。&lt;br /&gt;&lt;br /&gt;可是！&lt;br /&gt;&lt;br /&gt;丫的visual studio这次就不报错了！！！&lt;br /&gt;&lt;br /&gt;为什么捏？&lt;br /&gt;&lt;br /&gt;因为我用的是借口， 而不是as， 它实在是&amp;#8220;不好意思&amp;#8221;告诉我说它找不到！！！&lt;br /&gt;&lt;br /&gt;囧rz visual studio你怎么可以这么可爱。。。&lt;/div&gt;&lt;p&gt;我恨死你了！ &lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/ArthasCui/aggbug/1994004.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ArthasCui/archive/2011/03/24/1994004.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ArthasCui/archive/2011/03/22/1991476.html</id><title type="text">侃侃jQuery</title><summary type="text">jQuery这玩意的优异性是毋庸置疑的。连YUI的作者都说他好， 那他就是真的好了。至于诋毁jQuery的人， 这也很容易理解， 他们经常搬出来的理由就是：性能。摆脱， 不是什么语言都没事就讲讲性能的。尤其是客户端脚本这东西。 你还能拿来做大规模计算啊？如果不这样做， 那么， O(3), O(30),O(300)有什么区别啊还不都是O(1)啊？再说jQuery查询出来的东西可以不断使用， Query这东西也Query不了太多次。你非要每次使用都去Query一遍， 然后跑来说：看， jQuery多慢！！这不是找抽么。个人觉得jQuery的优点是：1 学习成本低。 没听过哪个会写CSS的人不能迅速</summary><published>2011-03-22T07:24:00Z</published><updated>2011-03-22T07:24:00Z</updated><author><name>undefined</name><uri>http://www.cnblogs.com/ArthasCui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ArthasCui/archive/2011/03/22/1991476.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ArthasCui/archive/2011/03/22/1991476.html"/><content type="html">&lt;div&gt;jQuery这玩意的优异性是毋庸置疑的。&lt;br /&gt;&lt;br /&gt;连YUI的作者都说他好， 那他就是真的好了。&lt;br /&gt;&lt;br /&gt;至于诋毁jQuery的人， 这也很容易理解， 他们经常搬出来的理由就是：&lt;br /&gt;性能。&lt;br /&gt;&lt;br /&gt;摆脱， 不是什么语言都没事就讲讲性能的。&lt;br /&gt;&lt;br /&gt;尤其是客户端脚本这东西。 你还能拿来做大规模计算啊？&lt;br /&gt;&lt;br /&gt;如果不这样做， 那么， &lt;br /&gt;O(3), O(30),O(300)有什么区别啊&lt;br /&gt;还不都是O(1)啊？&lt;br /&gt;再说jQuery查询出来的东西可以不断使用， Query这东西也Query不了太多次。&lt;br /&gt;你非要每次使用都去Query一遍， 然后跑来说：看， jQuery多慢！！&lt;br /&gt;这不是找抽么。&lt;br /&gt;&lt;br /&gt;个人觉得jQuery的优点是：&lt;br /&gt;1 学习成本低。 &lt;br /&gt;没听过哪个会写CSS的人不能迅速学会jQuery的。 &lt;br /&gt;反过来， 也没听过哪个对CSS一窍不通的人非要跑来写javascript的。&lt;br /&gt;&lt;br /&gt;2 封装狠&lt;br /&gt;把DOM变成jQuery对象之后使用统一的方法， 确实省了不少的记忆力。&lt;br /&gt;连ajax都顺便给封装好了（虽然可能大家不怎么用）&lt;br /&gt;3 跨浏览器&lt;br /&gt;这个不用说了。 现在谁要是写个不跨浏览器的框架都不好意思发布给大家用了。&lt;br /&gt;4 没了。&lt;br /&gt;&lt;br /&gt;对的。 没了。 这已经足够用了。&lt;br /&gt;客户端脚本要做的事情， 也就这么些。 这已经足够了呀。&lt;/div&gt;&lt;img src="http://www.cnblogs.com/ArthasCui/aggbug/1991476.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ArthasCui/archive/2011/03/22/1991476.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ArthasCui/archive/2011/03/04/1970730.html</id><title type="text">非主流javascript教学（五）</title><summary type="text">题记：18岁以下禁止阅读本文。 javascript既然是一门完全面向对象的语言， 那么他的属性就也都是对象。更牛叉的是， javascript的对象是变形金刚， 他可以随心所欲的变化啊。可以拔点东西下来， 插点东西上去。插啊插。。。=。=比如有个对象， 叫MM1。 想插这个MM， 怎么办？少年， 亮兵器吧。。。你想插什么上去， 就可以插什么上去。好吧， undefined先来！me上场， 执行以下代码：MM1.JJ={};=.=得， 后面的同学没的玩了。真的吗？不是这样的。你可以继续插啊， 加个尾巴加个什么的， 都没问题的。然后有人说：undefined你太无耻了， 你这样让我们几个怎么办啊</summary><published>2011-03-04T03:26:00Z</published><updated>2011-03-04T03:26:00Z</updated><author><name>undefined</name><uri>http://www.cnblogs.com/ArthasCui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ArthasCui/archive/2011/03/04/1970730.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ArthasCui/archive/2011/03/04/1970730.html"/><content type="html">&lt;p&gt;题记：18岁以下禁止阅读本文。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt; javascript既然是一门完全面向对象的语言， 那么他的属性就也都是对象。&lt;/p&gt;&lt;p&gt;更牛叉的是， javascript的对象是变形金刚， 他可以随心所欲的变化啊。&lt;/p&gt;&lt;p&gt;可以拔点东西下来， 插点东西上去。插啊插。。。&lt;/p&gt;&lt;p&gt;=。=&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;比如有个对象， 叫MM1。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;想插这个MM， 怎么办？&lt;/p&gt;&lt;p&gt;少年， 亮兵器吧。。。&lt;/p&gt;&lt;p&gt;你想插什么上去， 就可以插什么上去。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;好吧， undefined先来！&lt;/p&gt;&lt;p&gt;me上场， 执行以下代码：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;MM1.JJ&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;{};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;=.=&lt;/p&gt;&lt;p&gt;得， 后面的同学没的玩了。&lt;/p&gt;&lt;p&gt;真的吗？&lt;/p&gt;&lt;p&gt;不是这样的。你可以继续插啊， 加个尾巴加个什么的， 都没问题的。&lt;/p&gt;&lt;p&gt;然后有人说：undefined你太无耻了， 你这样让我们几个怎么办啊？&lt;/p&gt;&lt;p&gt;于是有人试图删除JJ这个属性。&lt;/p&gt;&lt;p&gt;有人出主意了：&lt;/p&gt;&lt;p&gt;&amp;#8220;取一个不存在的属性的时候， 不是会得到undefined么？&amp;#8221; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;好， 那么我们这样干：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;MM1.JJ&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;undefined;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;=.=&lt;/p&gt;&lt;p&gt;冤枉啊， 你们这样除了坑了undefined没有任何作用啊！&lt;/p&gt;&lt;p&gt;好吧， 那me做个好人， 为了让你们不这样坑我。&lt;/p&gt;&lt;p&gt;解决问题很容易啊， 只要这样就可以了：&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;delete&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;MM1.JJ;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;这样取出来MM.JJ依然是undefined， 但是相信我， 这次是真的没有属性了。&lt;/p&gt;&lt;p&gt;上次依然有属性的， 只是值为undefined。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/ArthasCui/aggbug/1970730.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ArthasCui/archive/2011/03/04/1970730.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ArthasCui/archive/2011/03/03/1969978.html</id><title type="text">一名曾经的测试人员， 看大家贡献的关于2的n次方的检测的代码</title><summary type="text">合格 刚刚首页多了一篇文章， 关于判断一个数字是否是2的n次方。大家贡献了一大堆各种想法。整理了下， 有以下这么多。me以前是做测试的， 现在乱七八糟什么活都做，一直没好好学算法， 没法写出很好的算法来娱乐大家。 me算法很弱的。但是me挑刺的习惯倒是没有改正。 所以很high的开始分析别人的代码。 让我们分析一下大家回复的几种典型代码（运行正确的咱们就不分析了）：1 宏定义。 #define I...</summary><published>2011-03-03T07:34:00Z</published><updated>2011-03-03T07:34:00Z</updated><author><name>undefined</name><uri>http://www.cnblogs.com/ArthasCui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ArthasCui/archive/2011/03/03/1969978.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ArthasCui/archive/2011/03/03/1969978.html"/><content type="html">合格&lt;p&gt; 刚刚首页多了一篇文章， &lt;a href="http://www.cnblogs.com/mybear/archive/2011/03/03/1969851.html"&gt;关于判断一个数字是否是2的n次方&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;大家贡献了一大堆各种想法。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;整理了下， 有以下这么多。&lt;/p&gt;&lt;p&gt;me以前是做测试的， 现在乱七八糟什么活都做，一直没好好学算法， 没法写出很好的算法来娱乐大家。 &lt;/p&gt;&lt;p&gt;me算法很弱的。&lt;/p&gt;&lt;p&gt;但是me挑刺的习惯倒是没有改正。&amp;nbsp; 所以很high的开始分析别人的代码。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;让我们分析一下大家回复的几种典型代码（运行正确的咱们就不分析了）：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;1 宏定义。&amp;nbsp; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;#define ISPOW2(x) (x) &amp;amp; (x-1) ? false : true&lt;/div&gt;这个我刚写了一篇文章来证明他存在一点小的瑕疵。 那就是当x为0的时候，&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;我们知道0不是2的n次方， 简单的说就是LOG(2,0) 是没有值的。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;而对于这个判断， 0和-1进行按位与， 必然是0. 居然可以让判断通过。&lt;/p&gt;&lt;p&gt;一个反例否定一种算法， 这不算过分。&lt;/p&gt;&lt;p&gt;当然， 修饰一下， 这个算法还是挺不错的。 至少我自己看的时候觉得挺震惊。 毕竟是第一次见到。&lt;/p&gt;&lt;p&gt;=。=&lt;/p&gt;&lt;p&gt;不要嘲笑我见识少。。。我真的是第一次。&lt;/p&gt;&lt;p&gt;2&amp;nbsp;&amp;nbsp; 7楼的修正版&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;floor_7(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;num)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(num&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;false&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;((num&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(num&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;))&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;?&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;false&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;7楼似乎自己就意识到了这个问题， 就进行了判断。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;遗憾的是， 他多判断了一个1. 我们知道， 1是2的0次方。 1应该是符合要求的。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;3&amp;nbsp; 8楼的修正版&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;floor_8(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;n)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(n&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;throw&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;InvalidOperationException();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(n&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;false&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;n&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(n&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;8楼还意识到了负数的问题。 可惜他和7楼存在相同的问题。不过这只是小错误。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;4 22楼的对数算法&lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;floor_22(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;x)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;float&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ret&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;log(x)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;log(&lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;abs((&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;)ret&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;ret)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0.00001&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;22楼的对数算法比较有趣， 可惜， 浮点误差毕竟不是个容易避开的问题。&lt;/p&gt;&lt;p&gt;因为浮点数不能直接比较， 所以用了一个0.00001来做尺度。&lt;/p&gt;&lt;p&gt;这就存在了一个问题：当x很大的时候呢？&lt;/p&gt;&lt;p&gt;我找了一个变态的数字来测试：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;0x10000001&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;结果是true。因为结果的小数部分实在是太小了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;=。=&lt;/p&gt;&lt;p&gt;（我是不是有点心理变态啊。。 )&lt;br /&gt;&lt;/p&gt;&lt;p&gt;又是一个反例推翻一个算法的思路。&lt;/p&gt;&lt;p&gt;5 37楼的算法。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;floor_37(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;num)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;double&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;result&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;Math.Log(num,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(result.ToString().IndexOf(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;.&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;false&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;相同的问题。 只要使用了LOG， 就无法避免掉浮点数丢精度的问题。 这是没办法的事情。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;所以总结了下， (x)&amp;amp;(x-1)的算法还没有被证明， 不知道除了0还有没有别的反例。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;因为毕竟这个算式没有严密的证明过程， 参见我的另一篇文章：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;a href="http://www.cnblogs.com/ArthasCui/archive/2011/03/03/1969935.html"&gt;http://www.cnblogs.com/ArthasCui/archive/2011/03/03/1969935.html&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;因此我觉得， 最保险的还是位运算， 看多少个1， 来的最实在。&lt;/p&gt;&lt;p&gt;当然这里存在一个负数的问题。第一位是1， 剩下全是0的问题。 不过有一位聪明的回复者提供了一个很强大的方法来避开负数的用例：&lt;/p&gt;&lt;p&gt;他给参数定的类型是uint！&lt;/p&gt;&lt;p&gt;好吧你赢了。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;刚看到一个最牛的：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;is_(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;num)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;switch&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(num)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0x0002&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0x0004&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0x0008&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0x0010&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0x0020&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0x0040&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0x0080&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0x0100&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0x0200&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0x0400&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0x0800&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0x1000&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0x2000&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0x4000&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0x8000&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;default&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;false&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;如果再加个0x0001， 我觉得就完美了。。。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;当然还要继续写下去， 确实这个满累人的。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/ArthasCui/aggbug/1969978.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ArthasCui/archive/2011/03/03/1969978.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
