借鉴前辈们的代码，这个只是封装了下而已