参考 https://www.cnblogs.com/lpfuture/p/5796398.html https://www.cnblogs.com/gnuhpc/archive/2012/01/13/2321476.html