08 2013 档案

摘要:所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.xml。它们之间通过继承和聚合(也称作多模块,multi-module)相互关联。那么,为什么要这么做呢?我们明明在开发一个项目,划分模块后,导入Eclipse变成了N个项目,这会带来复杂度,给开发带来不便。为了解释原因,假设有这样一个项目,很常见的Java Web应用。在这个应用中,我们分了几层:Dao层负责数据库交互,封装了Hibernate交互的类。Service层处理业务逻辑,放一些Service接口和实现相关的Bean。Web层负责与客户端交互,主要有一些Structs的Action类。对应的,在一个项目中 阅读全文
posted @ 2013-08-19 22:01 金广国 阅读(127) 评论(0) 推荐(0)
摘要:如何处理代码的异常,怎样的异常处理机制是最有效的,而且最能帮助我们发现和查找问题。本文对JAVA的异常机制进行了介绍,同时介绍了如何使用异常的指导原则。异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。 传统的处理异常的办法是,函数返回一个特殊的结果来表示出现异常(通常这个特殊结果是大家约定俗称的),调用该函数的程序负责检查并分析函数返回的结果。这样做有如下的弊端:例如函数返回-1代表出现异常,但是如果函数确实要返回-1这个正确的值时就会出现混淆;可读性降低,将程序代码与处理异常的代码混叠 阅读全文
posted @ 2013-08-06 16:37 金广国 阅读(187) 评论(0) 推荐(0)
摘要:当我们需要把对象持久化,比如存入缓存或者网络传输时需要将对象进行序列化,序列化有很多种方式,本文主要介绍JAVA的序列化机制。简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。当实现java.io.Serializable接口的实体(类)没有显式地定义一个名为serialVersionUID,类型为long的变量时,Java序 阅读全文
posted @ 2013-08-06 16:11 金广国 阅读(158) 评论(0) 推荐(0)
摘要:堆与栈都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的 阅读全文
posted @ 2013-08-06 15:24 金广国 阅读(100) 评论(0) 推荐(0)
摘要:背景一个高效的软件开发过程对软件开发人员来说是至关重要的,决定着开发是痛苦的挣扎,还是不断进步的喜悦。国人对软件蓝领的不屑,对繁琐冗长的传统开发过程的不耐,使大多数开发人员无所适从。最近兴起的一些软件开发过程相关的技术,提供一些比较高效、实用的软件过程开发方法。其中比较基础、关键的一个技术就是测试驱动开发(Test-Driven Development)。虽然TDD光大于极限编程,但测试驱动开发完全可以单独应用。下面就从开发人员使用的角度进行介绍,使开发人员用最少的代价尽快理解、掌握、应用这种技术。下面分优势,原理,过程,原则,测试技术,Tips等方面进行讨论。1. 优势TDD的基本思路就是通 阅读全文
posted @ 2013-08-06 13:51 金广国 阅读(229) 评论(0) 推荐(0)