http://blog.csdn.net/tropica/article/details/3203892 http://www.blogjava.net/siliconchip/archive/2007/01/22/95270.html