﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-温少的日志</title><link>http://www.cnblogs.com/jobs/</link><description>我希望我所作的事情对别人有所帮助！</description><language>zh-cn</language><lastBuildDate>Sun, 07 Sep 2008 21:37:17 GMT</lastBuildDate><pubDate>Sun, 07 Sep 2008 21:37:17 GMT</pubDate><ttl>60</ttl><item><title>FileIterator</title><link>http://www.cnblogs.com/jobs/archive/2008/06/05/1214029.html</link><dc:creator>温少</dc:creator><author>温少</author><pubDate>Wed, 04 Jun 2008 23:56:00 GMT</pubDate><guid>http://www.cnblogs.com/jobs/archive/2008/06/05/1214029.html</guid><wfw:comment>http://www.cnblogs.com/jobs/comments/1214029.html</wfw:comment><comments>http://www.cnblogs.com/jobs/archive/2008/06/05/1214029.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/jobs/comments/commentRss/1214029.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jobs/services/trackbacks/1214029.html</trackback:ping><description><![CDATA[摘要: 我们在开发中，经常需要遍历一个目录下的所有文件，常用的办法就是使用一个函数递归遍历是常用的办法。但是递归函数的缺点就是扩展不方便，当然你对这个函数加入一个参数FileHandler，这样扩展性稍好一些，但是仍然不够好，比如说，不能根据遍历的需要中途停止遍历，加入Filter等等。我实现了一个FileIterator，使得遍历一个目录下的文件如何遍历一个集合中的元素一般操作。&nbsp;&nbsp;<a href='http://www.cnblogs.com/jobs/archive/2008/06/05/1214029.html'>阅读全文</a><img src ="http://www.cnblogs.com/jobs/aggbug/1214029.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42134/" target="_blank">[新闻]JavaScript将成Silverlight的最大对手?</a>]]></description></item><item><title>使用JSON替代XML</title><link>http://www.cnblogs.com/jobs/archive/2008/03/08/1096471.html</link><dc:creator>温少</dc:creator><author>温少</author><pubDate>Sat, 08 Mar 2008 06:22:00 GMT</pubDate><guid>http://www.cnblogs.com/jobs/archive/2008/03/08/1096471.html</guid><wfw:comment>http://www.cnblogs.com/jobs/comments/1096471.html</wfw:comment><comments>http://www.cnblogs.com/jobs/archive/2008/03/08/1096471.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/jobs/comments/commentRss/1096471.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jobs/services/trackbacks/1096471.html</trackback:ping><description><![CDATA[在新项目中，除了一些框架所依赖的配置文件使用XML外，基本没有使用XML。JSON基本替代了原来XML在程序内的位置。在以前，我们不愿意使用一种私有的格式，于是选择了XML。选择XML的理由，可能是大家都用它，所以我们也用它。<br><br>XML是一种很好的技术，但是目前的情况来看，XML被滥用了，SOAP是XML被滥用的一种典型，程序内部的表示使用XML也是滥用的一种典型。看到的一种情况，一个对象toString使用XML格式输出，导致日志文件十分罗嗦，调试时，在watch窗口中看到一大堆&lt;tag&gt;。<br><br>在新项目中，认真考虑这种情况，找到了另外一种选择，那就是JSON。选择JSON的理由很充分：<br>1、JSON的解释性能要比XML要好，要简洁紧凑。<br>2、可读性要比XML好。JSON本身就是JavaScript的语法，和程序员的思维，而非文档编写的思维。<br>3、JavaScript原生支持，客户端浏览器不需要为此使用额外的解释器，在web环境中使用特别合适。<br><br>在java中使用json，目前需要注意一些情况：<br>1、目前开源的JSON-LIB代码质量不好，最好是在此基础之上修改一个版本，或者自己重新开发一个版本。<br>2、使用new Date的方式替代JSON-LIB中的{year:2007, month:12, ....}之类的方式<br>3、JSON-LIB中，object的propertyName在输出的时候，都带上""，例如{"name": "温少"}, 其中name是的双引号是不必要的，在输出时应该判断，不需要的就是就不加上""，减少网络流量。<br>4、JSON的解释器中，应该支持简单的表达式，例如new Date()、new Date(2939234723)之类的，这使得JSON的表达能力会更强一些。<br>5、JSON应该分两种，一种只支持简单格式，类似开源的JSON-LIB，一种是通过JavaScript解释器来实现的。后者在程序中传输数据时，能够得到更强大的表达能力，但是也会导致安全问题，需要慎重使用。<br><br><img src ="http://www.cnblogs.com/jobs/aggbug/1096471.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42133/" target="_blank">[新闻]没有谷歌就活不下去的四个网站</a>]]></description></item><item><title>回想过去几年软件业的荒唐事</title><link>http://www.cnblogs.com/jobs/archive/2008/02/09/1066297.html</link><dc:creator>温少</dc:creator><author>温少</author><pubDate>Sat, 09 Feb 2008 07:37:00 GMT</pubDate><guid>http://www.cnblogs.com/jobs/archive/2008/02/09/1066297.html</guid><wfw:comment>http://www.cnblogs.com/jobs/comments/1066297.html</wfw:comment><comments>http://www.cnblogs.com/jobs/archive/2008/02/09/1066297.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/jobs/comments/commentRss/1066297.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jobs/services/trackbacks/1066297.html</trackback:ping><description><![CDATA[<br>1、XP中的结对编程。XP编程中，有一些思想总结的很好，例如测试驱动，但又有极度的荒唐的就是结对编程。结对编程是我看到过的最荒唐最可笑的软件工程方法，两倍的投入，一半的产出，可谓事倍功半。以前看结对编程只是觉得荒唐可笑，后来看了李安的电影《断背山》，觉得以“断背”来形容结对编程最适合了，结对编程简直就是专门为“男同志”们度身定做的软件工程方法，你想一对“男同志”，每天手牵手背靠背进行“结对编程”，是多么“浪漫有趣”的事情。不过这只对“男同志”们的浪漫有趣，对工作本身一点也不有趣！<br>--------------<br><br>2、JDO投票闹剧（2004-2005）。一个通过黑客式静态AOP方式旁门左道实现的持久化技术JDO，竟然会被一些人追捧，这本身就是一个很荒唐的事情了。在JCP的投票中，JDO被否决了，这一点也不奇怪，奇怪的是投票结果出来之后的闹剧。一些人以“政治阴谋论”来说事，说JDO不被通过，是因为政治原因，而非技术原因，这个荒唐的理由竟然被社区的很多人相信了，一片声讨，JCP迫于压力，重新投票，通过了JDO相关的JSR。但是JDO并没有因此有一点点起色，一直沉沦至今。JDO通过静态AOP（enhance）的方式使得代码无法调试，就单这一点，就足以使JDO永远无法流行。<br><br>这件事情很明确表明两点：1)、不要相信一些技术作家的判断力；2)、普通的大众没有判断能力，会人云亦云。<br><br>当年荒唐的文章选录：<br>《程序员》2005年第2期 http://blog.csdn.net/gigix/archive/2005/01/21/262163.aspx <br>---------------<br><br><img src ="http://www.cnblogs.com/jobs/aggbug/1066297.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42132/" target="_blank">[新闻]Google 10周岁生日</a>]]></description></item><item><title>JPA这个烂东西</title><link>http://www.cnblogs.com/jobs/archive/2008/02/02/1062031.html</link><dc:creator>温少</dc:creator><author>温少</author><pubDate>Fri, 01 Feb 2008 18:52:00 GMT</pubDate><guid>http://www.cnblogs.com/jobs/archive/2008/02/02/1062031.html</guid><wfw:comment>http://www.cnblogs.com/jobs/comments/1062031.html</wfw:comment><comments>http://www.cnblogs.com/jobs/archive/2008/02/02/1062031.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/jobs/comments/commentRss/1062031.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jobs/services/trackbacks/1062031.html</trackback:ping><description><![CDATA[<br>竟然64个annotation，没有分类，放在同一个package下，同一个package（javax.persistance）还有其他java文件，共有88个java文件。不看内容本身，单从表面，都觉得这是混乱不堪的事情。这是那个猪头的杰作？glassfish上下载的源码中，这些java文件似乎都没有author，估计也不好意思把名字放出来见人吧！<br><br>------<br><br>觉得对象关系存储方面一直没有突破，也没有好的产品出来，其中一个原因，就是从没有过优秀的工程师投身过这个领域。关系数据库为什么能够一直坚守领地，成为绝大多数商业应用的基石，其中一个原因就是有过大量的精英投身于此，包括两个图灵奖获得者。<br><br>关系数据库，为了描述关系，创造一门SQL语言，将关系一些操作，例如投影（select）、选择（where）、分组(group by)等等，抽象得形象易懂，功能强大。对于数据的操作，SQL语言是最强大，也是最方便的，也是最易于使用的。一些非程序员的IT从业人员，非计算机专业的人员都能够熟练掌握SQL。<br><br>OO和Relational都是伟大的技术，从计算机最高荣誉奖可以看出这两个技术的伟大。OO的图灵奖获得者是三个，Relational的图灵奖获得者是两个。<br><br>面向对象技术自1967年simula引进依赖，所想披靡，93年-98年从C++开始流行，然后到Java，成为主流编程技术。Relational没有OO那么辉煌，但是在数据存储方面的地位固如磐石，长期占据绝对的地位。<br><br>曾经OO技术涉足于数据存储领域，但终究没有成功。面向对象数据库的变现总是差强人意，面向对象的方式操作数据，总是不如使用关系那么方便，那么灵活，那么易于使用，那么好的性能。于是人们在数据存储和处理方面，不在青睐面向对象技术，而是仍然使用关系方式，使用SQL语言，使用关系运算操作数据。面向对象数据库成了昙花一现的东西，并且可能永远都不会再流行了。<br><br>OO成了主流编程技术，Relational占据了绝对的数据存储地位，这两大技术需要交互，需要桥接，这需要OR-Mapping。Relational虽然好，但我们也要与时俱进，所以也需要OR-Mapping。<br><br>但是，做OR-Mapping时，不积极吸取relational方式对数据处理的灵活性、方便性、简单性，而只强调Relational和对象之间的的Mapping，试图以面向对象的方式操作数据，这是错误的方向。以前的EJB、现在Hibernate、JPA都犯了同样的错误，试图以更面向对象的方式操作数据，从而导致复杂混乱的模型，这也是JPA的现状吧。例如user.getGroup()，目前的ORM试图以纯OO的方式操作数据，所引起的LazyLoad、n+1等问题，使得事情变得复杂而且混乱不堪。<br><br>一些开发人员，去学习Hibernate，不学习SQL，有人提倡，只需要了解面向对象编程技术，不需要了解关系技术，亦属于本末倒置。需求人员都会用的SQL语言，对数据操作最方便最简单最强大的SQL语言，竟然成了令人生畏的纸老虎，可笑啊。<br><br>-------------<br><br>以下是过去的一些业界浮躁不理智：<br><br>1、面向对象数据库。曾被热衷而吹捧，面向对象数据库的变现总是差强人意，面向对象的方式操作数据，总是不如使用关系那么方便，那么灵活，那么易于使用，那么好的性能。于是人们在数据存储和处
理方面，不在青睐面向对象技术，而是仍然使用关系方式，使用SQL语言，使用关系运算操作数据。面向对象数据库成了昙花一现的东西，并且可能永远都不会再
流行了。<br><br>2、JDO投票闹剧。2004-2005年，JDO的JSR在JCP投票被否决的，无聊者在Java社区以及媒体发起闹事，阴谋论其为政治谋杀，几大公司是的迫于形象，重新投票使得JDO被通过，但JDO这种静态AOP叫雕虫小计式技术，不单开发过程不方便，而且会使得"enhance"之后的代码不可调试。这完全是对开发者不友好的技术，没有前途的技术，竟然会有人为它在JCP投票不通过鸣不平。这件事情使得我更坚信一点，不要相信那些技术编辑的判断力。<br><br>3、AOP。也是最近这几年流行的一个名词了。起了一个和OOP相似的名字，但是和伟大的OOP相比，它完全不算是什么。AOP只是一种很小很小的技巧而已，静态的AOP是黑客式的插入代码，会导致代码不可调试，动态的AOP能力有限，AOP最常被引用例子“日志AOP”是不合适，有用的日志通常是精心设计的，AOP方式的日志在生产环境中基本上是不可用。OO这么多年，这么为伟大，人们总是希望自己能做点什么和伟大的OO相比，于是命名为AOP，这是一个可笑的名字，前些年还有人谈论面向对象的未来是面向事实，也是同样的可笑。AOP有价值，但它是一种小技巧，和名字不般配。<br><br>--------------<br><br>目前在流行，但是可能是不理智的技术：<br><br>1、hibernate之类的ORM，试图以面向对象方式操作数据，和面向对象数据库一样，重蹈覆辙。<br>2、Ruby，一个小脚本语言，只是因为动态类型、mixin之类的功能，还没有被证明有生产力，有效益可用的脚本语言，就被媒体吹到天上去。Ruby有价值，但是最终结果会离大家的期待相差甚远。<br><br><br><img src ="http://www.cnblogs.com/jobs/aggbug/1062031.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42131/" target="_blank">[新闻]祝Google 10周岁生日快乐</a>]]></description></item><item><title>展望2008</title><link>http://www.cnblogs.com/jobs/archive/2008/01/27/1054748.html</link><dc:creator>温少</dc:creator><author>温少</author><pubDate>Sat, 26 Jan 2008 17:58:00 GMT</pubDate><guid>http://www.cnblogs.com/jobs/archive/2008/01/27/1054748.html</guid><wfw:comment>http://www.cnblogs.com/jobs/comments/1054748.html</wfw:comment><comments>http://www.cnblogs.com/jobs/archive/2008/01/27/1054748.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/jobs/comments/commentRss/1054748.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jobs/services/trackbacks/1054748.html</trackback:ping><description><![CDATA[又是新年，我有了宏大的计划，有了宏大的目标。<br><br>我要创造一个伟大产品，开创一个新的技术时代！<br><br>我已经开始在做了，我一定会成功！<br><img src ="http://www.cnblogs.com/jobs/aggbug/1054748.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42130/" target="_blank">[新闻]Google十年市值达1500亿美元 创造奇迹</a>]]></description></item><item><title>欢迎访问金蝶“友商网”（www.youshang.com）</title><link>http://www.cnblogs.com/jobs/archive/2007/11/27/974566.html</link><dc:creator>温少</dc:creator><author>温少</author><pubDate>Tue, 27 Nov 2007 11:17:00 GMT</pubDate><guid>http://www.cnblogs.com/jobs/archive/2007/11/27/974566.html</guid><wfw:comment>http://www.cnblogs.com/jobs/comments/974566.html</wfw:comment><comments>http://www.cnblogs.com/jobs/archive/2007/11/27/974566.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cnblogs.com/jobs/comments/commentRss/974566.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jobs/services/trackbacks/974566.html</trackback:ping><description><![CDATA[<font color="black"><span style="color: black;"><br>全球领先的在线记账及商务管理平台—金蝶“友商网”（</span></font><font color="black" face="Times New Roman"><span style="color: black; font-family: 'Times New Roman';" lang="EN-US"><a onclick="onClickUnsafeLink(event);" href="http://www.youshang.com/" target="_blank">www.youshang.com</a></span></font><font color="black"><span style="color: black;">）正式上线！请立刻体验！</span></font><span lang="EN-US"></span><img src ="http://www.cnblogs.com/jobs/aggbug/974566.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42129/" target="_blank">[新闻]GMail:回过头来支持IE6</a>]]></description></item><item><title>小议ID生成算法</title><link>http://www.cnblogs.com/jobs/archive/2007/11/16/961116.html</link><dc:creator>温少</dc:creator><author>温少</author><pubDate>Thu, 15 Nov 2007 23:06:00 GMT</pubDate><guid>http://www.cnblogs.com/jobs/archive/2007/11/16/961116.html</guid><wfw:comment>http://www.cnblogs.com/jobs/comments/961116.html</wfw:comment><comments>http://www.cnblogs.com/jobs/archive/2007/11/16/961116.html#Feedback</comments><slash:comments>46</slash:comments><wfw:commentRss>http://www.cnblogs.com/jobs/comments/commentRss/961116.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jobs/services/trackbacks/961116.html</trackback:ping><description><![CDATA[摘要: 本文描述一种ID生成算法&nbsp;&nbsp;<a href='http://www.cnblogs.com/jobs/archive/2007/11/16/961116.html'>阅读全文</a><img src ="http://www.cnblogs.com/jobs/aggbug/961116.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42128/" target="_blank">[新闻]Google十年大变样</a>]]></description></item><item><title>关于java、C#泛型的看法</title><link>http://www.cnblogs.com/jobs/archive/2007/11/15/959802.html</link><dc:creator>温少</dc:creator><author>温少</author><pubDate>Wed, 14 Nov 2007 22:47:00 GMT</pubDate><guid>http://www.cnblogs.com/jobs/archive/2007/11/15/959802.html</guid><wfw:comment>http://www.cnblogs.com/jobs/comments/959802.html</wfw:comment><comments>http://www.cnblogs.com/jobs/archive/2007/11/15/959802.html#Feedback</comments><slash:comments>41</slash:comments><wfw:commentRss>http://www.cnblogs.com/jobs/comments/commentRss/959802.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jobs/services/trackbacks/959802.html</trackback:ping><description><![CDATA[摘要: 比较java、C#的泛型语法和各自优缺点&nbsp;&nbsp;<a href='http://www.cnblogs.com/jobs/archive/2007/11/15/959802.html'>阅读全文</a><img src ="http://www.cnblogs.com/jobs/aggbug/959802.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42127/" target="_blank">[新闻]谷歌十年创新路</a>]]></description></item><item><title>Java util.concurrent中LockSupport类在C#中的实现</title><link>http://www.cnblogs.com/jobs/archive/2007/11/15/959800.html</link><dc:creator>温少</dc:creator><author>温少</author><pubDate>Wed, 14 Nov 2007 22:09:00 GMT</pubDate><guid>http://www.cnblogs.com/jobs/archive/2007/11/15/959800.html</guid><wfw:comment>http://www.cnblogs.com/jobs/comments/959800.html</wfw:comment><comments>http://www.cnblogs.com/jobs/archive/2007/11/15/959800.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.cnblogs.com/jobs/comments/commentRss/959800.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jobs/services/trackbacks/959800.html</trackback:ping><description><![CDATA[摘要: java 5之后提供优秀的并发库util.concurrent，.net中缺乏类似的功能。由于硬件体系发生了变化，多核时代来临，.NET中缺乏并发类库显然不合时宜。其中一个办法就是在往C#中移植java的util.concurrent。本文讲述移植的关键点之一，LockSupport.park实现的代码移植。&nbsp;&nbsp;<a href='http://www.cnblogs.com/jobs/archive/2007/11/15/959800.html'>阅读全文</a><img src ="http://www.cnblogs.com/jobs/aggbug/959800.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42127/" target="_blank">[新闻]谷歌十年创新路</a>]]></description></item><item><title>Java util.concurrent包AtomicXXX系列对象在C#中的实现</title><link>http://www.cnblogs.com/jobs/archive/2007/11/15/959798.html</link><dc:creator>温少</dc:creator><author>温少</author><pubDate>Wed, 14 Nov 2007 21:52:00 GMT</pubDate><guid>http://www.cnblogs.com/jobs/archive/2007/11/15/959798.html</guid><wfw:comment>http://www.cnblogs.com/jobs/comments/959798.html</wfw:comment><comments>http://www.cnblogs.com/jobs/archive/2007/11/15/959798.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnblogs.com/jobs/comments/commentRss/959798.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/jobs/services/trackbacks/959798.html</trackback:ping><description><![CDATA[摘要: 从JDK 1.5开始，util.concurrent包提供了Atomic类型，包括AtomicInteger、AtomicLong、 AtomicBoolean、AtomicReference、AtomicFieldUpdate等，这些类在并发编程中大有作用。在.NET中也提供了同样能力的System.Threading.InterLocked，但是不如java中的Atomic系列对象直观好用。本文分析了JDK的底层实现，而且提供了在C#中实现AtomicInteger的源码。&nbsp;&nbsp;<a href='http://www.cnblogs.com/jobs/archive/2007/11/15/959798.html'>阅读全文</a><img src ="http://www.cnblogs.com/jobs/aggbug/959798.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42127/" target="_blank">[新闻]谷歌十年创新路</a>]]></description></item></channel></rss>