http://yuleihome.javaeye.com/blog/181832
http://www.cnblogs.com/yg_zhang/archive/2007/10/25/937565.html