当前位置:网站首页>Programmer orientation problem solving methodology
Programmer orientation problem solving methodology
2022-07-06 17:05:00 【Smart popcorn】
How to solve the problem faster ?
We're meeting bug When If you search every time you encounter a problem Break point debugging What progress have we made ?
If you encounter those that cannot be searched The problem of not being able to debug at breakpoints ? Be a man , Think long term .
So we might as well cultivate a kind of thinking now , Discard breakpoint debugging , By guessing , List the problems first , Evaluate how long it takes to eliminate this problem , Then focus on doing .
We often fall into a kind of direct hands-on , Spend a lot of time solving problems , This certainly solves the problem , Also impressed , But the real harvest is not much , The key is that a lot of time is wasted .
Scene simulation

For example , Let's see such a scene .
I use redis Cached the data of the article , But why every time sql Query ratio redis Get faster ,redis Is there anything wrong ?
1. First of all, keep yourself low , Why did you encounter this problem yourself , Others cannot meet ?redis Something went wrong. ? Can't others repair it ? It happened that you, a stranger, found it ? Where do you put those big guys ?
Then you can ask questions
1.redis There is a problem ? probability 0.01%, I just found out the problem by this vegetable chicken , I'm going to mention bug On github.
2.redis The configuration is not written correctly ? probability 10%, It used well before .
3.redis The data is full ? probability 5%, Then why did I have problems in this investigation ?
4. The data I inserted is too large ? probability 50%, I wrote so much .
5. Is there a problem with the method I call ?50++% , But you can have a little look , It's been a long time , Maybe the method is wrong .
A cursory list of these .
Then let's take a specific look , Slow check , The data is too big , But I print it out , Just a little data , How could there be a problem , But when I look at the visual interface , He said there was too much data , also \x00\x00\x00 The mess of ?
It's very contradictory , One is the large amount of data , One is to print it out well ? Mixed \x00\x00\x00 What is it? ?
Let's go back to the call of that method .
As shown below 
Oh , Sure enough, there is something wrong with the call , The third parameter is the expiration time , The result is an offset , As a result, many empty offsets appear in the data .
Now let's talk about different solutions for programmers who encounter similar problems .
The first level

A cavity of blood , Do it as soon as you think of any problems , Silly breakpoint debugging , It belongs to the first level , Is the level of junior programmers , The boss will never use this trick , Hurry to do it , It's a lot of people , Common diseases of people including me , Maybe this will impress you , But it will waste a lot of time , It doesn't have to be solved bug.
The second level

What is the phenomenon of the problem , What is the most likely probability , List these probabilities , And then arrange them in order of the highest probability , Check again , If not, eliminate , This is the second floor , Like those listed above, maybe , Evaluate according to your own feelings , When you rule out all possibilities , The rest is no longer true , That's the truth , Of course, you have to make sure that the problems that arise must be among the possibilities you raise , Extreme cases can be ignored .
The third level

Put the probability of each problem , The time to exclude is also listed , As shown below
1.redis There is a problem . probability 0.01% I just found out the problem by this vegetable chicken I'm going to mention bug Turn to source code ? Exclude estimated time , Unknown !!!! A few hours You may not be able to find out the reason .
2.redis The configuration is not written correctly ? probability 10% It used well before , Exclude estimated time :10 minute .
redis The data is full ? probability 5% Then why did I have problems in this investigation ? Exclude estimated time :1 minute .
The data I inserted is too large ? probability 50% I wrote so much Exclude estimated time :5 minute .
Is there a problem with the method I call ? probability 50++% But you can have a little look It's been a long time Exclude estimated time :1 minute .
Sum up , There's a high probability , Low time priority , First check the method call , Let's look at the reason for inserting data , Go up and eliminate , It takes much less time than interrupting , Because sometimes you may not know why you interrupt , Instead, a lot of time is wasted .
The fourth level

Someone asked , There is no fourth floor ?
Then I want to , It's the third level method + Breakpoint debugging ( Split debugging )+ Irregular reminders .
When we eliminate some problems , Breakpoint debugging may be used , There may be something wrong with some method , But a method contains a lot of code , Thousands of lines , Don't you watch it one by one ?
We identify a problem , Set a code scope for this problem , If you can't decide , Then you can try half of the interruption point , Two more points to narrow the scope , This also applies only to specific situations , Sometimes two points are not easy to use .
Let's fix a time for the error of estimation , such as 2 It'll be done in an hour , So it can be 15 minute , Half an hour , An hour , Set a reminder respectively , Is there a dead end ? Have you been stuck on a problem for too long ? Go for a walk , Clear your mind , Come back and solve .
For the time being, I only think of these layers , If there is a better way , Welcome to leave a message , I will add the fifth level later .
People who are pure good or pure evil do not exist , Like a smooth piece of paper . People have many facets , Like a folded piece of paper , To stand up steadily .
边栏推荐
- 吴军三部曲见识(七) 商业的本质
- 8086 segmentation technology
- Fdog series (VI): use QT to communicate between the client and the client through the server (less information, recommended Collection)
- In the command mode in the VI editor, delete the character usage at the current cursor__ Command.
- @RequestMapping、@GetMapping
- Shell_ 01_ data processing
- Introduction to microservices
- Yum install XXX reports an error
- js垃圾回收机制和内存泄漏
- 汇编语言寻址方式
猜你喜欢

汇编语言寻址方式

Shell_ 00_ First meeting shell

MySQL日期函数

The QT program compiled on CentOS lacks a MySQL driven solution

搭建flutter环境入坑集合

谢邀,人在工区,刚交代码,在下字节跳动实习生

TCP的三次握手和四次挥手

汇编课后作业

Train 100 pictures for 1 hour, and the style of the photos changes at will. There is a demo at the end of the article | siggraph 2021

Koa Middleware
随机推荐
吴军三部曲见识(七) 商业的本质
逻辑运算指令
字节跳动开源GAN模型压缩框架,算力最高节省97.8%丨ICCV 2021
Activiti目录(五)驳回、重新发起、取消流程
Basic knowledge of assembly language
Description of project structure configuration of idea
The QT program compiled on CentOS lacks a MySQL driven solution
Alibaba cloud server builds SVN version Library
~84 form supplement
Activiti directory (I) highlights
~77 linear gradient
Shell_ 04_ Shell script
8086 segmentation technology
After the subscript is used to assign a value to the string type, the cout output variable is empty.
~79 Movie card exercise
一个数10年工作经验的微服务架构老师的简历
这116名学生,用3天时间复刻了字节跳动内部真实技术项目
Thank you for your invitation. I'm in the work area. I just handed in the code. I'm an intern in the next ByteDance
Alibaba cloud server docker installation mysql5.5
汇编语言寻址方式