面对问题我应该如何去思考?

还是得找出问题的原因
  1. 不可能不理解问题,然后解决问题。所以,无论是自己对知识陌生还是熟悉,都需要去捋顺逻辑过程,补充相应的基础知识。之所以未能够解决问题,是因为对它不了解,如果了解,一般来说都会解决问题的。
  2. 解决问题,不是凭空想出解决方案的,一定是根据报错信息按图索骥的。定位问题具体发生在哪儿了。
  3. 定位到问题,然后理解问题发生的原因。
如何找出问题的原因
  1. 在这个过程中要去思考,我得有很多的假设和逻辑推断。比如一个应用使用不同数据库。
  2. 我怎么判定,应用已经连上数据库了,判断依据是什么?每一次的判定必须是逻辑推理的。根据什么信息进行逻辑推理的。我否定干扰因素,我的否定依据是什么;我推测可能是其他原因,我推测的依据是什么,这些东西都不是随意判断,随意推测的,都是逻辑推测。
  3. 假如使用MySQL连上数据,没有任何报错信息,但是使用Oracle报错了,并且根据报错信息,判断它连接上了,又执行了SQL语句,而原来是支持MySQL的,现在Oracle也执行了同样的SQL语句,但是Oracle报错了,说明存在SQL在MySQL数据库和Oracle数据库是不兼容的。
  4. 我应该怎样找出这个不兼容的SQL语句?可以使用数据库监控工具看执行了哪些SQL语句。可以读源代码看应用启动的时候,执行了哪些SQL语句。
  5. 所以,现在需要知道这条SQL长样子,判断是不是SQL在数据库之间的不兼容性。如果发现确实是SQL不兼容的话,就需要找到程序在哪儿调用了此SQL,把此SQL修改成Oracle兼容的。
大牛是怎么快速完成排错的
  1. 面对一个问题,因为一开始他也不知道具体情况是什么。所以,一开始他就尽可能询问一些关键性问题,做到对问题有一个通盘了解。比如,他问能不能单步调试,因为有些问题是需要对底层代码进行一些修改。
  2. 然后,他会一步一步地引导你如何去思考问题,如何根据已知信息排除干扰因素,得到其他信息。然后根据一些信息进行逻辑推断。
  3. 比如,连接不上数据库,程序报驱动类找不到。这个时候就需要想办法把驱动类编译到代码中。
  4. 连接上数据库了,怎么就连接上了,判断依据是什么?没有连接数据库,判断依据是什么?他是如何证明,已经连接上数据库了的,先使用正确的用户名和密码,然后我把用户名或者密码写错,都试试,看看具体报了什么错。根据错误的信息,去有逻辑的推断程序应该走到了哪儿。
  5. 如果没有连接上,则需要连接上。如果连接上了,还继续报错,则证明它执行了SQL语句导致报错的。或者SQL语句跟表结构不一致导致的。这个推断是很合理的。
  6. 问题的原因就是:有一条SQL在MySQL和Oracle中是不兼容的。
小结
  1. 解决问题是建立在我对这个问题的理解程度。不可能不花时间去了解这个问题,我就可以理解。该单步调试就单步调试。想解决问题,有时候花费很多时间是无法避免的。
  2. 即使是厉害的人,他也需要通盘了解当前的具体情况是什么。
  3. 厉害的人是有自己套路的。优秀的人在面对问题的时候,他首先问的是这个问题的意义
  4. 厉害的人他在解决问题的时候,各种逻辑推测。逻辑推测的意思就是:根据已知信息进行逻辑判断推理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值