http://blog.csdn.net/mrzhangpan/article/details/4866217 http://blog.csdn.net/liuzhen917/article/details/8597800