解决开发中的疑难问题,是最能体现程序员水平的。开发中的问题,大多数只能呈现表面现象,如何通过表象,使用各种手段,各种工具,各种推测找到问题的根源所在,并提出解决方案。这需要程序员不仅对项目业务很熟悉,对项目代码很熟悉,对各种技术底层原理很熟悉,还需要能够熟练使用各种工具,还要具备推理能力,要大胆猜测,小心验证等心理素质。
开发中常见问题大致可以分为以下几类:
- 前端展示问题。前端展示问题容易判断,大多是界面展示异常。
- 后端异常。主要是后端抛出的异常。可以通过前端弹窗来展现,或者查看日志。
- 数据库问题。数据不能操作。
- 网络异常。访问不到。
- 服务器异常。服务器资源不足,包括硬盘空间不足、内存不足等。
解决问题的思路大致分为以下几步:
- 判断问题归类。根据问题现象,判断问题是属于哪一类。
- 问题原因推测。根据现象推测问题出现原因。这个更多的是依靠历史解决问题的经验。
- 查看问题相关线索。首先应该查看日志,大多数问题日志都会记录,既是没有记录,也能在日志上下文中找到蛛丝马迹。重点关注日志中的报错、入参、出参、sql语句等。前端按F12看前端输出也是一个重要线索。
- 分析线索,得到问题结论。根据前面的推测和线索,应该可以基本得出问题结论。
- 使用工具,查明问题。如果前面线索不足以得出问题结论,需要使用其他工具。常见的工具有:Fiddler(http查看工具)、WireShark(网络工具)、Sql Profile(数据库监视工具)、Windbug(Windows下调试工具)、JConsole(JVM监视工具)
- 不得已调试代码。到最后,所有的手段都使用了还是不能得出问题结论,只有调试代码了。对于已经上线的问题,调试代码很困难,最好能在本地重现问题,再进行调试。调试需要细心,需要密切关注每一步的执行结果。需要掌握常用的调试技巧。
- 证明推测。
疑难问题的解决,对技术的深入了解是基础,对各种工具的运用是重要的辅助。
开发中的疑难问题解决暂时总结到这里,后续再补充。