当前位置:网站首页>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 .
边栏推荐
- 谢邀,人在工区,刚交代码,在下字节跳动实习生
- Solr new core
- Basic knowledge of assembly language
- 搭建flutter环境入坑集合
- Activiti目录(三)部署流程、发起流程
- Control transfer instruction
- ~77 linear gradient
- 8086 分段技术
- Ce n'est qu'en apprenant que c est à la hauteur des attentes Top5 s1e8 | s1e9: caractères et chaînes & opérateurs arithmétiques
- Description of project structure configuration of idea
猜你喜欢
随机推荐
Log4j2 major vulnerabilities and Solutions
Alibaba cloud server builds SVN version Library
数据传送指令
After the subscript is used to assign a value to the string type, the cout output variable is empty.
8086 memory
「博士毕业一年,我拿下 ACL Best Paper」
Solr new core
Use of mongodb in node
Idea resolving jar package conflicts
8086 内存
唯有学C不负众望 TOP2 p1变量
一个数10年工作经验的微服务架构老师的简历
字节跳动多篇论文入选 CVPR 2021,精选干货都在这里了
Alibaba cloud server docker installation mysql5.5
The QT program compiled on CentOS lacks a MySQL driven solution
字节跳动技术面试官现身说法:我最想pick什么样的候选人
姚班智班齐上阵,竞赛高手聚一堂,这是什么神仙编程大赛?
Activiti目录(三)部署流程、发起流程
字节跳动海外技术团队再夺冠:高清视频编码已获17项第一
Logical operation instruction