http://www.oschina.net/code/snippet_725072_37198

http://www.oschina.net/code/snippet_725072_37198