解决技术问题的方法
[toc]
解决技术问题的方法
概述
主要总结平时写代码,做开发遇到问题时,解决的思路和方法。
1. 明确问题
问题类型
概述
如果大脑有个问题类型列表,每次问题来了就可以对照一遍,快速明确问题类型,这样问题范围更窄,更容易解决。下面列举了常见的问题类型。
代码问题
大多数问题都是自己代码有问题,这种问题最常见,debug 调试定位问题,修改代码解决即可。
产品问题
有时候不是代码问题,而是你和产品的理解不一致,又或者产品设计存在逻辑错误。要想避免沟通问题,在前期就多和产品沟通, 自己理解需求后,再次和对方确认。
测试问题
有时候可能是,测试同学造数据错误,自己带来的问题。
前端问题
有时候可能是,前段同学传参错误。
沟通问题
这个也很常见,通过深度沟通,反复确认来避免沟通理解的不一致。
环境问题
有时候代码对了,部署方式也对了,可能就是环境问题。
常见明确(定位)问题方法
概述
很多时候我们第一眼看到的是问题的表象,需要进一步定位找到问题根源,才谈得上怎么去解决他,下面列举了一些定位问题的方法。
日志法
大多组件都有日志,大多业务代码也落了日志,一切从日志信息出发。
由近及远法
先考虑是自己的问题,再延伸到组件,环境等等
排除法
先大胆假设,挑出最可能的点,并进行试错,然后排除这个点,进过不断的排除 ,最后将问题范围逐步缩小,定位到问题。
注释法
注释一部分代码,看问题是否解决,将代码范围逐步缩小(此方法为笨方法,但能解决问题)
源码分析法
很多问题在网上或者官方文档是搜索不到的,你可能是业界第一个遇到的,这个时候打断点看源码,能将问题范围一步步缩小,直到定位到问题根源
做实验法
这个最常见了,做些实验验证自己的猜想。然后逐步排除可疑点。
2. 拆解问题
花式拆解问题,直达问题根源,不要老盯着大问题看, 要把大问题拆解成小问题才好解决,比如下面这些方法:
- 公式化拆解。比如 SQL执行报错= sql编写错误+ 表结构错误 + 数据错误 等等
- 做假设,从最可能的地方出发。 再把问题拆成问题树。
- 用mece穷尽的方式, 把问题拆解到底。
- 横纵拆解问题, 比如纵向把问题越挖越深, 横向拆出同级别的问题。
3. 借鉴前人
很多问题别人早已解决过,可以去借鉴下,常见的借鉴途径有如下:
- Google搜索,百度搜索
- 官方文档
- 书籍,极客时间等付费资料
- 问答社区
- 问人
总结
一定要先定位清楚问题,再去解决问题,问题不清楚,就去解决,效率极低,方向走偏了,整半天也解决不到。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
wechat-app-mall 8.1.0 发布,微信小程序商城
微信小程序商城 wechat-app-mall 已经升级至 version 8.1.0,具体详情请查看码云项目主页更新 本次更新功能如下: fixed: 修复商品列表页面购物车图标无法使用的bug; improve: 用户收货地址,增加自动获取读取微信预设地址; apifm-wxapi 组件升级至 3.4.0; 购物车界面,删除的用户体验优化,很多用户不知道左滑可以删除购物车中的商品; new: 增加订单核销二维码,支持订单的扫码核销功能; 申请发票,支持一键读取微信的发票抬头;
- 下一篇
那些年,面试官问你的消息队列
MQ理论介绍 一、为什么需要消息队列(MQ) 主要原因是由于在高并发环境下,同步请求来不及处理,请求往往会发生阻塞。大量的请求到达访问数据库,导致行锁表锁,最后请求线程会堆积过多,从而触发 too many connection错误,引发雪崩效应。我们使用消息队列,通过异步处理请求,从而缓解系统的压力。核心:异步处理、流量削峰、应用解耦 二、应用场景 异步处理,流量削峰,应用解耦,消息通讯四个场景 2.1、异步处理 场景1:用户注册后,需要发送注册邮件和注册短信。 串行方式:将注册信息写入 数据库 成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端 并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间 假设三个业务节点每个使用50毫秒钟,不考虑网络等其他开销,则串行方式的时间是150毫秒,并行的时间可能是100毫秒。 因为CPU在单位时间内处理的请求数是一定的,假设CPU在1秒内吞吐量是100次。则串行方式1秒内CPU可处理的请求量是7次(1000/150)。 并行...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- CentOS关闭SELinux安全模块
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度