《人月神话》这是一本几乎被业界神话了的书。或许它真的太好了,以至于人们对它的评价出奇的统一,你几乎听不到关于它的负面评论。本书自第一版以来,畅销20余年不衰,是软件领域绝无仅有的必读经典。本文作者为人们管理复杂项目提供了颇具洞察力的见解,既有很多发人深省的观点,也有大量的软件工程实践。让我们来看看业界同仁是怎么说吧。
1、阅读这些文字给我带来的收获是:面对《人月神话》,除了表示五体投地的诚服,你既不能做正面言论(那是多余),也不能做负面言论(那是找事)。这是一本可怕的书。我大概花了三周的时间来细读这本书——也许很多人会说我应该花更多的时候或者读更多遍——不过,这不是重点。我在书中印证和找寻思想,并为这本书写下了数百个注释。最终我很遗憾我读了电子版本,因而注释被写在了文档中而不是书页上。如果不是这样,我将没有任何方法扼制自己购买这本书的冲动。
Continue Reading »
通过Java动态代理一文,我们了解了动态代理的好处,也知道了Struts2的拦截器也是利用Java动态代理实现的。那么什么是拦截器呢?
拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前进行拦截,然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。在Webwork的中文文档的解释为——拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方式。拦截器(Interceptor)是Struts 2的核心组成部分。很多功能(Feature)都是构建在拦截器基础之上的,例如文件的上传和下载、国际化、转换器和数据校验等,Struts 2利用内建的拦截器,完成了框架内的大部分操作。
Continue Reading »
从JDK1.3开始,Java就引入了动态代理的概念。动态代理(Dynamic Proxy)可以帮助你减少代码行数,真正提高代码的可复用度。例如,你不必为所有的类的方法里面都写上相同的Log代码行,取而代之的是实用类的动态代理类。当然,这种便利是有条件的。
在JDK1.3以前,代理模式就已流行,所以得代理模式是生成一个和类相同接口的代理类,用户通过使用代理类来封装某个实现类。其目的是加强实现类的某个方法的功能,而不必改变原有的源代码。代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
Continue Reading »
Hibernate是非常流行的对象-关系映射工具。是连接Java对象模型和关系数据模型的桥梁。记得我刚开始学习Hibernate时,基本上是去Javaeye。当时那里还只是一个关于Hibernate的论坛,如今已经成为国内知名且火热的软件技术网站了。看过第一本关于Hibernate的书就是今天要给大家共享的《精通Hibernate》。
书中内容注重理论与实践相结合,列举了大量具有典型性和实用价值的Hibernate应用实例,并提供了详细的开发和部署步骤。通过本书,读者不仅能 掌握用Hibernate工具对这两种模型进行映射的技术,还能获得设计与开发Java对象模型和关系数据模型的先进经验。
Continue Reading »
之前我也写过几篇关于java反射的文章,读完这几篇文章后,对java的反射机制应该有了基本的了解,当然也可以使用java反射进行开发。不过比起今天要介绍的这本书来说,这几篇文章就显的微不足道了。
今天要给大家介绍的这本书是来自候捷老师的《Java反射机制》。看上去将其叫为文档更为合适,因为本书仅有短短15页,不过已经很好地阐述了java的反射机制。
本书从Class开始讲起,利用简单的例子,分析说明了Java Classes的组成及对应的 Reflection APIs使用。
如果你对java的反射有兴趣,不仿下载一本。在线阅读
我记得前两天还有位网友问我要这本书,不过考虑到此书可以很容易在网上下载到,就没有提供。既然打算本周共享C++相关书籍,那么要是没有这本经典书就太可惜了,于是打算今天将其共享出来。当然本书在C++爱好者当中几乎已经是人手一本了。
还是要介绍一下,本书分为四大篇。第一篇提出学习MFC程序设计之前的必要基础,包括Widnows程序的基本观念以及C++的高 阶议题。第二篇介绍Visual C++整合环境开发工具。本篇只不过是提纲挈领而已,并不企图取代 Visual C++使用手册。然而对于软件使用的老手,此篇或已足以让您掌握Visual C++整合环境。工具的使用虽然谈不上学问,但在视觉化软件开发过程中扮演极重角色,切莫小觑它。
Continue Reading »
自TIOBE编程语言排行榜发布后,我们得知C和C++语言表现强劲,大有越过Java再次站上编程语言之巅之势。所以我决定本周为大家提供一些我收藏多年的C++好书。
相信决大多数学习过C或C++语言的人都听过《C++编程思想》这本书吧!本书的第一版由机械工业出版社引入到了国内计算机界,获得一片好评,被誉为"神奇的C++书籍"。
本书作者是美国著名技术作家Bruce Eckel,曾在美国做了多年的C++语言培训讲师。与之齐名的还有他的另一部著作:《Thinking in Java》(中文版名《Java编程思想》)。Bruce Eckel写作的特点可谓是精益求精:他把整部书稿的电子版全部放在自己的个人站点上,让全世界的读者浏览、阅读、评判,这样每一部付梓的作品都经过了许多次修订。
Continue Reading »
2008年12月TIOBE编程语言排行榜发布,在前十名的榜单中,PHP上升一位,排名第四。C#上升一位,与上月排名第六的Python交换位置。Javascript上升一位,排名第九。Delphi下降两位,排名第十。本期榜单中,前三甲依然被Java、C、C++牢牢占据。
这是2008年TIOBE编程语言排行榜的最后一期,C和C++由于连续多月的强劲表现,可能成为2008的年度语言候选。
Continue Reading »
当网站进行调整、页面进行修改时,由于有些网页被删除、改名或移动位置,这时使用原来的地址则无法访问,或者由于拼写错误导致一个无效的链接,常见的是通过搜索引擎来的失效链接,都将使服务器返回404状态码,系统将自动转向到默认的404错误页面。但是,Web服务器默认的404错误页面,十分简陋、无法给予用户寻找相应信息的更多线索,用户看到这类页面往往最直接的反应并是关闭浏览器窗口离开,这在很大程度上给网站造成损失。最近google开放了Google AJAX 搜索 API 服务,只要在404页面中加入google提供的代码就可以实现包含对网站的相应介绍、用户可能感兴趣的内容链接或者网站内容导航链接、内容搜索功能等,能够有效地帮助访问者找到其欲寻找的内容或相似的内容,提高用户在网站内浏览更多信息的机会。
Continue Reading »
如今的Java Web开发对于需求来说已经变得过于复杂。当今众多Java领域的Web开发框架不仅使用复杂,而且并没有很好的遵循Don’t Repeat Yourself(DRY)原则。
像 Rails,Django和TurboGears这样的动态框架在Web开发领域开辟了一条新的道路,Grails基于这些概念之上,采用动态方法减小了 Java平台上进行Web开发的复杂度,不过与那些框架不同的是,Grails是构建在Spring和Hibernate等Java已有的技术之上的。
Continue Reading »