比较完整的解决方法