“使用面向对象的编程语言(例如java)进行程序开发,就是以面向对象的思想进行编程”。这是我听到的最傻的话。
Java是面向对象的语言,但它写出的程序并非都是面向对象的。我就见过将业务实现细节一股脑地扔到Swing的Component中的程序。也见过为了所谓的“代码复用”,提出了几个不伦不类的共通class的项目。更有甚者,数据库操作的代码随处可见。这样的程序,只怕就连面向过程的编程语言也不会暴露的如此坦白吧。
那都是前几年的程序了。现在的程序结构大都讲究分层。几乎每个程序结构都会整出几个层来。表现层、控制层、业务逻辑层、数据持久层等。有了这些层,使得程序的结构更加清晰,每层的任务更加明确,实现细节也都封装到了class中。然而这样就面向对象了吗?这些层中的对象是真正的对象吗?
Continue Reading »
Tags:
程序设计
万众瞩目的 Firefox 3 从昨天开始可以下载了,用“铺天盖地”四个字来形容她的宣传一点都不为过。大多数的广告还是她的fans自发进行的。没办法,走到哪儿都是人家的广告,真是想不下都不行呀!下载还整了个证书啥地。

英文版 Firefox 3
中文版 Firefox 3
Tags:
Firefox3
很多开源框架中都实现了拦截器功能,比如Spring、WebWork、Struts2等。利用拦截器,可以在对类方法进行调用的前后加入共通的操作,比如在调用方法的前后打印log等,使业务代码更加单纯。
拦截器是利用java的动态代理技术来实现的。接下来我们就看一个例子,这个例子利用java动态代理,对所有insert、update、delete为前缀的方法进行事务处理。
Continue Reading »
Tags:
Interceptor
之前一直在用RSSLib4J解析rss,不过RSSLib4J似乎不能解析rss v0.92,在初期化时就会报错。这可不是什么好消息,因为WordPress的rss就是v0.92的。
rome是为RSS聚合而开发的开源包,它可以支持0.91、0.92、0.93、0.94、1.0、2.0,可以说rss的版本基本上都支持了。它的使用也非常简单,看下面的例子:
Continue Reading »
Tags:
rome,
rss
最近的工作中发现了一个奇怪的问题,情况如下:
A.jsp页面中有一个frameset,frame的src指向了B.jsp。B.jsp中用window.open弹出一个窗口,关闭该窗口后,按下提交按钮,将整个页面(包含A.jsp)提交到C.jsp。C.jsp中利用history.back返回前页面时,B.jsp的缓存丢失。
说起来似乎挺复杂,请看下图。
Continue Reading »
Tags:
javascript
2008对中国和中国人民来说注定是不平凡的一年。雪灾、拉萨打砸抢烧事件、CNN辱华事件、巴黎圣火事件、还有这次令人无比震惊和感动的四川特大地震。
5月12日2点30分左右,我同往常一样在办公室里工作,突然感觉到脚下晃动,接着感觉到头有点晕,于是抬起头来一看,办公室里所有人都象我一样,东张西望,大家并不知道发生了什么。接着听到门外一阵急速的脚步声,大家才意识到,地震了,于是很多人也开始向门外跑去。
我工作在距离四川将近2000公里的杭州,在一座21层大厦的20楼。虽然距离如此之远,但仍然感觉到大楼有明显的晃动,可想而知,这次的地震相当严重。
Continue Reading »
Tags:
china