Programmer's work method study summary notes

Article Directory
Foreword
Busy Reasons
Objective Facts
Solution
10x Principles of Working Method
Start with the end: when you encounter things, think backwards
Task decomposition
The work secrets of master programmers
The value of DoD: Before doing anything, define
how the standard of completion is changed Is it good to use DoD?
Before doing any requirements or tasks, set the acceptance criteria first.
Submit the code for integration as soon as possible.
Before you figure it out, do not do
the requirements. What do
you need to do when you receive the requirements? Why do you say that you must perform deductions before doing things
? Many technical problems have been solved. Why are they still in the "pit"?
How to get into work quickly when joining a new company?
How to manage your superiors?
Deliberate practice,
diligent book list
Summary
Foreword
This article summarizes what efficient working methods, thinking methods, and practical methods and practical operations are available as a programmer, please choose to use.

Two important concepts are mentioned in the famous book "The Myth of Man-Month" in the software industry: Essential Complexity and Accident Complexity. To put it simply, essential complexity is what you have to do anyway when solving a problem, while accidental complexity is what you have to do because of improper methods of doing things.

Therefore, you need to pay attention to the method of doing things. Every industry has different methods of doing things. This article summarizes the principles of doing things for 10x programmers.

The notes in this article are summary notes based on the learning part of the "10x Programmer's Work Method" by senior architect Zheng Ye on the geek time column, and other related materials plus personal thoughts.

Busy Reason
Essential Complexity (Essential Complexity)

The problem itself is complicated

Accident Complexity

Improper selection of methods leads to increased complexity

Objective facts
Most of the problems that programmers are busy solving are not program problems, but problems caused by accidental complexity.

Solution
Reduce the problems caused by accidental complexity, and make software development work in an orderly and efficient manner; the development efficiency of excellent programmers is 10 times that of ordinary programmers.

Following the following principles will help reduce accidental complexity

From beginning to end,
task decomposition,
communication and feedback,
automated
10x working principles,
how to make efforts not in vain?

Start with the end: When you encounter something, think backwards. There
is a post circulating on the Internet. Amazon CTO introduces how Amazon develops a product. In simple terms, they adopt a backward working method. The sequence of developing a product is:

Write a press release;

Write FAQ (Frequently Asked Questions);

Write user documentation;

write the code.

Everything has to go through two creations: one is the creation in the mind, that is, the mental or first creation (Mental/First Creation), and then it is put into practice, that is, the actual or second creation. (Physical/Second Creation). We should work harder on the first creation, unify the collective imagination, and make the goal clearer.

The "start from the end" thinking can help us better plan our tasks at hand, and it can also help us discover problems in the process.

"Start with the end" is also an important habit mentioned in "Seven Habits of Highly Effective People". This article is worth reading.

Stephen Covey said that you should never focus on any one-sided things, but should focus on principles. "A principle-centered person is confident about his choice, no matter what the result is, he can focus on it, and he has a sense of reason, and he has no fetters. A person who takes principles as the center of life always has extraordinary opinions, and his thoughts and behaviors are also unique. One pattern, and a solid and stable inner core gives them a high degree of security, life direction, wisdom and strength. It will allow them to live a positive and fulfilling life.”
So find the principles of your life, set a goal, and end it. beginning.

Task decomposition
Task decomposition: a prerequisite for a step-by-step process

Task decomposition of software development:

It is difficult for us to give an answer to a big question, but to answer small questions is
the granularity of task decomposition that we are good at : executable. The difference between different executable definitions is whether you can clearly know how to solve this problem.
The secrets of the work of master programmers

Break down tasks into smaller ones, the smaller the better. Break
down big problems into small ones that can be solved.
Testing is also part of the programmer.

For every programmer, only when the code and tests are written well in the development phase, can he be qualified to say that he has delivered high-quality code

Test Driven Development (TDD), a design challenge

Summary: In the face of seemingly unsolvable problems, you need to learn to decompose the problem, otherwise you will not be able to start.

The work secrets of a
master programmer Whenever a master programmer encounters something to do, he breaks it down into several small tasks and records them on a list, and then writes tests, writes code, and refactors by hand. A small loop. When one cycle is completed, he will cross out the tasks that have already been done and start the next one. Once he encounters a new problem in the task in the process of solving the problem, he will record the problem to be solved on the list to ensure that the problem will not be lost, and then continue to return to the task he is dealing with. When he completes the tasks one by one, the problem is solved. When each task is completed, the code can be submitted. It seems simple, but many programmers can't do it.

Only by decomposing the task into small ones, can it be submitted in small steps. Breaking down the task to very small actually proves that you have already thought it clearly. The reason why most programmers are inefficient in development is that they often start without thinking clearly.

Task decomposition is a good habit, but to master it, a lot of practice is necessary.

The author can keep submitting the code on github for 1000 days, which is quite awesome. The basis of this continuous submission is that I myself constantly try to break down one thing when I practice task decomposition. In this way, I can at least be able to Make sure to complete a small step. Of course, if I have time, I will write more.

After this kind of practice, task decomposition became my instinct, and I was no longer limited to writing programs. When I encounter any problem that needs to be solved, the first reaction in my mind must be how it can be completed step by step. After the decomposition is determined, the problem is solved step by step.

The value of DoD: Before doing anything, define the completed standard
DoD (Definition Of Done). The concept itself is not complicated. It tells us how to calculate the completion, and minimize the differences caused by understanding deviation. Kind of waste.

For example, once the development is completed, it means:

The developer writes the functional code,
writes the unit test code, and
writes the integration test code. The
test can pass. The
code has passed the code style check and test coverage check.
Once the DoD is determined, it is clear who should do what and to what extent.

How to use DoD better?
DoD is a checklist composed of check items to check the completion of work.

DoD check items should be actually checkable. For example, once the code is written, the code can be displayed, and once the unit test code is written, on-site testing can be carried out.

DoD is a mechanism for team members to report to each other. With DoD, there are only two states of doing things, namely "done" and "not finished".

Before doing any requirements or tasks, set the acceptance criteria first.
We all know that requirements are an important part of software development, but you may not have thought about it carefully. Different ways of describing requirements may affect programmers' understanding of requirements.

The software development model of many companies is based on a list of functions. This list "prescribes" the functions that programmers need to do. In this way, a complete requirement is broken down into pieces. Until the last moment, most people do not have a complete concept, and this will also encounter many unexpected problems at the last moment, and the result will inevitably be in a hurry.

Then, at this time, the acceptance criteria become extremely important. The acceptance criteria not only describe the normal process, but also pay attention to the handling of abnormal processes. It gives the most basic test cases for this requirement, and ensures the most basic quality of the developer's completion of the requirement. Once the acceptance criteria are defined, a lot of wrangling work disappears.

Commit code as early as possible to integrate
Continuous integration refers to frequently integrating code into the backbone.

It has two main benefits.

Find errors quickly. Every time a little update is completed, it is integrated into the backbone, and errors can be found quickly and it is easier to locate errors.
Prevent branches from deviating significantly from the main trunk. If it is not integrated frequently, and the backbone is constantly updated, it will become more difficult to integrate in the future, or even difficult to integrate.
The purpose of continuous integration is to allow products to iterate quickly while maintaining high quality

Martin Fowler said, "Continuous integration does not eliminate bugs, but makes them very easy to find and correct."

Before I figure it out, the demand is not to do
Lean Startup: This name is not a methodology to guide people to start a business to make a lot of money. What it wants to solve is to create new things in the face of uncertainty.

The word "lean" in lean entrepreneurship makes people begin to understand the relationship between value creation and waste. Creating value is something everyone can understand, but reducing waste is something that many people ignore. Therefore, Lean Startup is to create new things in the face of uncertainty under the premise of as little waste as possible.

Since we are creating new things in the face of uncertainty, the only thing we can do is "try." In other words, when you have a new idea, you develop the idea into a product and put it on the market. Then, get feedback from the mobile phone data to see if the previous idea is reliable. Good ideas continue to strengthen, and unreliable ideas are thrown away.

Since it is a trial and I am not sure about the validity of the idea, the best way is to try it at the lowest cost. Many software teams will fall into a very typical misunderstanding. They want to make a look no matter what their needs are. As everyone knows, making the software completely is the biggest waste.

What Lean Startup provides us is a thinking framework for making products. When a product manager wants to make a new product or a new feature of the product, we can use the concept of lean entrepreneurship to test whether the product manager has a clear idea. For example, if you want to make a product feature, what do you want to verify? Does the target to be verified have data that can be measured? Is the problem to be solved the most important thing at the moment? After stabilizing these, we can better determine that the requirements put forward by the product manager are indeed rigorously thought out.

What do you
need to do first when you receive the demand? Splitting the demand: user story

problem

Basically, the description of requirements that break into your mind is the theme (epic). In agile development, some people call it the master story.
Most of the problems are caused by the granularity of the decomposition.
User stories where the granularity is too small and cause problems , it will be the basic unit for our discussion of demand management here.

Needs to be broken down
User story principles:

1, Independent, independent
2, Negotiable, negotiable
3, Valuable, valuable
4, Estimateable, estimable
5, Small, small
6, Testable, testable

Estimate of demand:

The result of the estimation is relative, not absolutely accurate. We don't need to give a relative estimation just like doing scientific research. Generally speaking, the estimation process is also a process for everyone to deepen their understanding of needs.

Priority management: do the most important thing

After the requirements are decomposed, the most important thing is to prioritize the requirements. There are many ways to arrange priorities. We can learn from the method of time management, divide things into important and urgent dimensions, and get four quadrants. We should focus our energy on important things as much as possible, instead of treating urgent things as a way of prioritizing.

To determine the importance of things, one way is to retrieve the lost context. If you can’t judge a good way, then introduce a larger external context

Summary: Requirements need to be aligned from product, development, and testing to ensure consistent understanding. Iterative development process according to a certain agile development process is also one of the efficient working rules.

Why do we need to perform deduction before doing things?
Sand table deduction, a university learned from the military command room asked
even if we have determined our work goals, we still have to deduct the implementation steps and complete it in our minds before proceeding. The creation of is the first creation or intellectual creation. This kind of thinking is called sand table deduction in the military, and it is widely used in many fields.
The path to the result is more important.
Before you do something, do it first.
Many technical problems have been solved, why are they still in the "pit"?
Technology is a sharp edge. Programmers believe that technology can change the world, but not all problems must be solved with technology. Taking great efforts to solve a problem that may not be a problem is often a blind spot for many programmers.

Looking for the "end" in a wider range

Programmers always like to use technology to solve all problems, but many troublesome problems are not problems at all. The reason why you can't find a simpler solution is often because the programmer is limited by his own thinking.

The real difference in the work of different roles lies in the difference in context. Problems that are difficult to solve in a local context can even be left unsolved in another context. Therefore, no matter how hard a single point is, it is only a partial optimization, and it is difficult to achieve optimal results.

Differences in roles:

The real difference in the work of different roles is the difference in context.
Although the code written is the same, what you see is the tree, and what people see is the forest. He can think from the overall situation.
I did not solve the problem by technical ability, but It is because of the understanding of the requirements that I bypassed this question
. I can think of asking such questions. The premise is to think outside the role of programmers and expand the context of your work.
After you have an understanding of the entire life cycle of software development, you What you see is no longer a point, but a line
. The context of work is different, and the dimensions you see are very different.

Single-dimensional thinking is almost full of loopholes in the eyes of multi-dimensional thinkers.
Expand the context of your work and don't limit yourself to the role of a "programmer".
Summary: When encountering problems, communicate more, ask more, learn to change perspectives, change thinking, and achieve a reduction in the problem to solve the problem.

How to get into work quickly when joining a new company?
step:

Understand the business

technology

Technology stack

Business architecture

Internal and external dependence

Team operation

Demand, product, whom to report to

Internal activity

Stand-up meetings, retrospective meetings, weekly meetings, code reviews, internal sharing, etc.

Use "jargon". In the process of communication, learn a little "jargon".

This will make people feel that you know how to do it, so that you can quickly gain trust and integrate into the team as soon as possible

Find the key point and start quickly

From big to small, from the inside out

How to manage your superiors?
What should I do if I cannot refute what the leader requires?
We must dare to manage superiors.

First, manage the expectations of superiors. This process is equivalent to exposing the problems I see to my superiors and letting him choose.
Second, help the superiors to enrich their knowledge.
Third, speak your thoughts. This is actually the simplest truth we are familiar with: a crying child has milk to eat.

The product manager always talks to the boss, what should I do?
In fact, the boss is asking for direction, not product features. The big boss will not arrange such fine details. Therefore, what a product manager should do is to turn the direction given by the boss into achievable product features, and he has to analyze the reasonableness and unreasonability of them.

The unreasonable part should be communicated with the boss, not by the development team.

What others can do, we must also be
first, and we must also have products that our competitors have.

"Copying" is not a problem, the problem is copying without thinking.

So, if your product manager just wants to copy without a brain, he is essentially lazy and not doing his job well.

Second: If people can do it, it shows that it is technically feasible.

What to do is demand, and how to do it is technology. To confirm with the product manager is whether this demand is reasonable and whether it should be done. Whether it can be achieved technically is something that the development team has to consider, not a reason for the product manager to say something.

Deliberately practice the
best coding routines:

Steve Yegge mentioned in "Practicing Programming":

Contrary to what you believe, simply immersing yourself in work every day is not a real exercise-attending meetings does not exercise your interpersonal skills; replying to emails does not improve your typing skills. You must set aside time regularly and focus on exercise so that you can do better things.

I drive to work every day, but my driving level is far inferior to that of a professional driver; in a similar situation, daily programming may not be enough to make you a professional programmer. So, what can turn an ordinary person into a professional driver or professional programmer? What do you need to exercise?

The answer is in an article titled "The Expert Mind" in Scientific American:

Ericsson pointed out that the important thing is not the experience itself, but the "hard study", that is, to constantly challenge things beyond one's own ability. Some enthusiasts spend a lot of time playing chess, golf, or playing musical instruments, but they may always stay at an amateur level, while a well-trained student can surpass them in a relatively short time. The reason is here. It is worth noting that in terms of improving the level, the large amount of time spent in chess (even participating in various competitions) seems to be more effective than specialized training. The main value of training is to find weaknesses and improve them in a targeted manner.

"Study hard" means to always deal with problems that are just at the limit of your ability, that is, things that are likely to fail for you. If you don't experience some failures, you may not grow. You must constantly challenge yourself and exceed your limits.

Such challenges are sometimes encountered at work, but not necessarily. Separating exercise from professional work is often called "Code Kata" in the field of programming.

The concept of Code Kata was proposed by David Thomas, one of the authors of "Programmer Practice: From Little Worker to Expert". This concept mainly refers to:

Carry out repetitive exercises for a particular technique or skill to master it proficiently. ——Translator's Note

There are still some practical experiences that are not listed here. Finally, the author summarizes the most refined programming routines:

First: Write a blog

Second: Actively participate in well-known open source projects

Summary: Output is forced to input, which is one of the best ways to learn; "Talk is cheap, show me the code". Practice deliberately.

Intensive book list
"Programmer's Practice: From Little Worker to Expert"

"Seven Habits of Highly Effective People"

"study well"

"Think Well"

"Deliberate Practice"

……

Summary
Learn to learn, learn to think, learn to use good tools, learn to review , learn to iterate yourself, learn to improve, and learn to master the low-level thinking tools.

reference:

How to become a technologist

The most awesome B coding routine

http://gotokeep.com/entries/603b77dadfd62f61eb21ddc9
http://www.gotokeep.com/entries/603b77dadfd62f61eb21ddc9
http://show.gotokeep.com/entries/603b77dadfd62f61eb21ddc9
http://gotokeep.com/entries/603b77d8e6978c1ccfc3617e
http://www.gotokeep.com/entries/603b77d8e6978c1ccfc3617e
http://show.gotokeep.com/entries/603b77d8e6978c1ccfc3617e
http://gotokeep.com/entries/603b77d740325125c2b42e42
http://www.gotokeep.com/entries/603b77d740325125c2b42e42
http://show.gotokeep.com/entries/603b77d740325125c2b42e42
http://gotokeep.com/entries/603b77d60da2f27fd3ffdea6
http://www.gotokeep.com/entries/603b77d60da2f27fd3ffdea6
http://show.gotokeep.com/entries/603b77d60da2f27fd3ffdea6
http://gotokeep.com/entries/603b77d51709297ff3f424fa
http://www.gotokeep.com/entries/603b77d51709297ff3f424fa
http://show.gotokeep.com/entries/603b77d51709297ff3f424fa
http://gotokeep.com/entries/603b77d4b3d86c5231ac5b7b
http://www.gotokeep.com/entries/603b77d4b3d86c5231ac5b7b
http://show.gotokeep.com/entries/603b77d4b3d86c5231ac5b7b
http://gotokeep.com/entries/603b77d34729865c85e49e01
http://www.gotokeep.com/entries/603b77d34729865c85e49e01
http://show.gotokeep.com/entries/603b77d34729865c85e49e01
http://gotokeep.com/entries/603b77d2311ccd2698718b15
http://www.gotokeep.com/entries/603b77d2311ccd2698718b15
http://show.gotokeep.com/entries/603b77d2311ccd2698718b15
http://gotokeep.com/entries/603b77d1dfd62f61eb21dc1d
http://www.gotokeep.com/entries/603b77d1dfd62f61eb21dc1d
http://show.gotokeep.com/entries/603b77d1dfd62f61eb21dc1d
http://gotokeep.com/entries/603b77cfdfd62f61eb21dbcf
http://www.gotokeep.com/entries/603b77cfdfd62f61eb21dbcf
http://show.gotokeep.com/entries/603b77cfdfd62f61eb21dbcf
http://gotokeep.com/entries/603b77ceb7045e7e0bf6a7a5
http://www.gotokeep.com/entries/603b77ceb7045e7e0bf6a7a5
http://show.gotokeep.com/entries/603b77ceb7045e7e0bf6a7a5
http://gotokeep.com/entries/603b77cde6978c1ccfc35fdb
http://www.gotokeep.com/entries/603b77cde6978c1ccfc35fdb
http://show.gotokeep.com/entries/603b77cde6978c1ccfc35fdb
http://gotokeep.com/entries/603b77cce6978c1ccfc35fa2
http://www.gotokeep.com/entries/603b77cce6978c1ccfc35fa2
http://show.gotokeep.com/entries/603b77cce6978c1ccfc35fa2
http://gotokeep.com/entries/603b77cbb3d86c5231ac5a00
http://www.gotokeep.com/entries/603b77cbb3d86c5231ac5a00
http://show.gotokeep.com/entries/603b77cbb3d86c5231ac5a00
http://gotokeep.com/entries/603b77ca311ccd2698718982
http://www.gotokeep.com/entries/603b77ca311ccd2698718982
http://show.gotokeep.com/entries/603b77ca311ccd2698718982
http://gotokeep.com/entries/603b77c9b7045e7e0bf6a6b9
http://www.gotokeep.com/entries/603b77c9b7045e7e0bf6a6b9
http://show.gotokeep.com/entries/603b77c9b7045e7e0bf6a6b9
http://gotokeep.com/entries/603b77c84729865c85e49c0f
http://www.gotokeep.com/entries/603b77c84729865c85e49c0f
http://show.gotokeep.com/entries/603b77c84729865c85e49c0f
http://gotokeep.com/entries/603b77c74729865c85e49bd6
http://www.gotokeep.com/entries/603b77c74729865c85e49bd6
http://show.gotokeep.com/entries/603b77c74729865c85e49bd6
http://gotokeep.com/entries/603b77c5c140fd51f790730f
http://www.gotokeep.com/entries/603b77c5c140fd51f790730f
http://show.gotokeep.com/entries/603b77c5c140fd51f790730f
http://gotokeep.com/entries/603b77c4b3d86c5231ac5902
http://www.gotokeep.com/entries/603b77c4b3d86c5231ac5902
http://show.gotokeep.com/entries/603b77c4b3d86c5231ac5902
http://gotokeep.com/entries/603b77c3c140fd51f79072c4
http://www.gotokeep.com/entries/603b77c3c140fd51f79072c4
http://show.gotokeep.com/entries/603b77c3c140fd51f79072c4
http://gotokeep.com/entries/603b77c2e6978c1ccfc35e23
http://www.gotokeep.com/entries/603b77c2e6978c1ccfc35e23
http://show.gotokeep.com/entries/603b77c2e6978c1ccfc35e23
http://gotokeep.com/entries/603b77c1c140fd51f790723d
http://www.gotokeep.com/entries/603b77c1c140fd51f790723d
http://show.gotokeep.com/entries/603b77c1c140fd51f790723d
http://gotokeep.com/entries/603b77c0b7045e7e0bf6a541
http://www.gotokeep.com/entries/603b77c0b7045e7e0bf6a541
http://show.gotokeep.com/entries/603b77c0b7045e7e0bf6a541
http://gotokeep.com/entries/603b77bfc140fd51f79071fb
http://www.gotokeep.com/entries/603b77bfc140fd51f79071fb
http://show.gotokeep.com/entries/603b77bfc140fd51f79071fb
http://gotokeep.com/entries/603b77beb7045e7e0bf6a4ec
http://www.gotokeep.com/entries/603b77beb7045e7e0bf6a4ec
http://show.gotokeep.com/entries/603b77beb7045e7e0bf6a4ec
http://gotokeep.com/entries/603b77bcb3d86c5231ac579e
http://www.gotokeep.com/entries/603b77bcb3d86c5231ac579e
http://show.gotokeep.com/entries/603b77bcb3d86c5231ac579e
http://gotokeep.com/entries/603b77bb311ccd2698718753
http://www.gotokeep.com/entries/603b77bb311ccd2698718753
http://show.gotokeep.com/entries/603b77bb311ccd2698718753
http://gotokeep.com/entries/603b77bab3d86c5231ac5742
http://www.gotokeep.com/entries/603b77bab3d86c5231ac5742
http://show.gotokeep.com/entries/603b77bab3d86c5231ac5742
http://gotokeep.com/entries/603b77b953e294695bc9fbfd
http://www.gotokeep.com/entries/603b77b953e294695bc9fbfd
http://show.gotokeep.com/entries/603b77b953e294695bc9fbfd
http://gotokeep.com/entries/603b77b81709297ff3f420ad
http://www.gotokeep.com/entries/603b77b81709297ff3f420ad
http://show.gotokeep.com/entries/603b77b81709297ff3f420ad
http://gotokeep.com/entries/603b77b7b3d86c5231ac56d2
http://www.gotokeep.com/entries/603b77b7b3d86c5231ac56d2
http://show.gotokeep.com/entries/603b77b7b3d86c5231ac56d2
http://gotokeep.com/entries/603b77b61709297ff3f42040
http://www.gotokeep.com/entries/603b77b61709297ff3f42040
http://show.gotokeep.com/entries/603b77b61709297ff3f42040
http://gotokeep.com/entries/603b77b50da2f27fd3ffd96f
http://www.gotokeep.com/entries/603b77b50da2f27fd3ffd96f
http://show.gotokeep.com/entries/603b77b50da2f27fd3ffd96f
http://gotokeep.com/entries/603b77b340325125c2b428b0
http://www.gotokeep.com/entries/603b77b340325125c2b428b0
http://show.gotokeep.com/entries/603b77b340325125c2b428b0
http://gotokeep.com/entries/603b77b2b3d86c5231ac5659
http://www.gotokeep.com/entries/603b77b2b3d86c5231ac5659
http://show.gotokeep.com/entries/603b77b2b3d86c5231ac5659
http://gotokeep.com/entries/603b77b1b3d86c5231ac5630
http://www.gotokeep.com/entries/603b77b1b3d86c5231ac5630
http://show.gotokeep.com/entries/603b77b1b3d86c5231ac5630
http://gotokeep.com/entries/603b77b0dfd62f61eb21d6c3
http://www.gotokeep.com/entries/603b77b0dfd62f61eb21d6c3
http://show.gotokeep.com/entries/603b77b0dfd62f61eb21d6c3
http://gotokeep.com/entries/603b77af1709297ff3f41f59
http://www.gotokeep.com/entries/603b77af1709297ff3f41f59
http://show.gotokeep.com/entries/603b77af1709297ff3f41f59
http://gotokeep.com/entries/603b77aedfd62f61eb21d672
http://www.gotokeep.com/entries/603b77aedfd62f61eb21d672
http://show.gotokeep.com/entries/603b77aedfd62f61eb21d672
http://gotokeep.com/entries/603b77adb3d86c5231ac5585
http://www.gotokeep.com/entries/603b77adb3d86c5231ac5585
http://show.gotokeep.com/entries/603b77adb3d86c5231ac5585
http://gotokeep.com/entries/603b77ac0da2f27fd3ffd819
http://www.gotokeep.com/entries/603b77ac0da2f27fd3ffd819
http://show.gotokeep.com/entries/603b77ac0da2f27fd3ffd819
http://gotokeep.com/entries/603b77abb3d86c5231ac552b
http://www.gotokeep.com/entries/603b77abb3d86c5231ac552b
http://show.gotokeep.com/entries/603b77abb3d86c5231ac552b
http://gotokeep.com/entries/603b77a940325125c2b426fe
http://www.gotokeep.com/entries/603b77a940325125c2b426fe
http://show.gotokeep.com/entries/603b77a940325125c2b426fe
http://gotokeep.com/entries/603b77a8b3d86c5231ac54b7
http://www.gotokeep.com/entries/603b77a8b3d86c5231ac54b7
http://show.gotokeep.com/entries/603b77a8b3d86c5231ac54b7
http://gotokeep.com/entries/603b77a7c140fd51f7906e54
http://www.gotokeep.com/entries/603b77a7c140fd51f7906e54
http://show.gotokeep.com/entries/603b77a7c140fd51f7906e54
http://gotokeep.com/entries/603b77a640325125c2b42691
http://www.gotokeep.com/entries/603b77a640325125c2b42691
http://show.gotokeep.com/entries/603b77a640325125c2b42691
http://gotokeep.com/entries/603b77a51709297ff3f41dbc
http://www.gotokeep.com/entries/603b77a51709297ff3f41dbc
http://show.gotokeep.com/entries/603b77a51709297ff3f41dbc
http://gotokeep.com/entries/603b77a4dfd62f61eb21d4e6
http://www.gotokeep.com/entries/603b77a4dfd62f61eb21d4e6
http://show.gotokeep.com/entries/603b77a4dfd62f61eb21d4e6
http://gotokeep.com/entries/603b77a353e294695bc9f87a
http://www.gotokeep.com/entries/603b77a353e294695bc9f87a
http://show.gotokeep.com/entries/603b77a353e294695bc9f87a
http://gotokeep.com/entries/603b77a15c9090549ec5e406
http://www.gotokeep.com/entries/603b77a15c9090549ec5e406
http://show.gotokeep.com/entries/603b77a15c9090549ec5e406
http://gotokeep.com/entries/603b77a0b7045e7e0bf6a02e
http://www.gotokeep.com/entries/603b77a0b7045e7e0bf6a02e
http://show.gotokeep.com/entries/603b77a0b7045e7e0bf6a02e
http://gotokeep.com/entries/603b779fb3d86c5231ac5330
http://www.gotokeep.com/entries/603b779fb3d86c5231ac5330
http://show.gotokeep.com/entries/603b779fb3d86c5231ac5330
http://gotokeep.com/entries/603b779ec140fd51f7906ccc
http://www.gotokeep.com/entries/603b779ec140fd51f7906ccc
http://show.gotokeep.com/entries/603b779ec140fd51f7906ccc
http://gotokeep.com/entries/603b779d0da2f27fd3ffd5e9
http://www.gotokeep.com/entries/603b779d0da2f27fd3ffd5e9
http://show.gotokeep.com/entries/603b779d0da2f27fd3ffd5e9
http://gotokeep.com/entries/603b779ce6978c1ccfc35842
http://www.gotokeep.com/entries/603b779ce6978c1ccfc35842
http://show.gotokeep.com/entries/603b779ce6978c1ccfc35842
http://gotokeep.com/entries/603b779b311ccd26987181ba
http://www.gotokeep.com/entries/603b779b311ccd26987181ba
http://show.gotokeep.com/entries/603b779b311ccd26987181ba
http://gotokeep.com/entries/603b779a0da2f27fd3ffd54e
http://www.gotokeep.com/entries/603b779a0da2f27fd3ffd54e
http://show.gotokeep.com/entries/603b779a0da2f27fd3ffd54e
http://gotokeep.com/entries/603b77984729865c85e494a8
http://www.gotokeep.com/entries/603b77984729865c85e494a8
http://show.gotokeep.com/entries/603b77984729865c85e494a8
http://gotokeep.com/entries/603b779740325125c2b42417
http://www.gotokeep.com/entries/603b779740325125c2b42417
http://show.gotokeep.com/entries/603b779740325125c2b42417
http://gotokeep.com/entries/603b77965c9090549ec5e259
http://www.gotokeep.com/entries/603b77965c9090549ec5e259
http://show.gotokeep.com/entries/603b77965c9090549ec5e259
http://gotokeep.com/entries/603b7795311ccd26987180f2
http://www.gotokeep.com/entries/603b7795311ccd26987180f2
http://show.gotokeep.com/entries/603b7795311ccd26987180f2
http://gotokeep.com/entries/603b77940da2f27fd3ffd492
http://www.gotokeep.com/entries/603b77940da2f27fd3ffd492
http://show.gotokeep.com/entries/603b77940da2f27fd3ffd492
http://gotokeep.com/entries/603b7793311ccd2698718090
http://www.gotokeep.com/entries/603b7793311ccd2698718090
http://show.gotokeep.com/entries/603b7793311ccd2698718090
http://gotokeep.com/entries/603b77924729865c85e4935d
http://www.gotokeep.com/entries/603b77924729865c85e4935d
http://show.gotokeep.com/entries/603b77924729865c85e4935d
http://gotokeep.com/entries/603b7791dfd62f61eb21d175
http://www.gotokeep.com/entries/603b7791dfd62f61eb21d175
http://show.gotokeep.com/entries/603b7791dfd62f61eb21d175
http://gotokeep.com/entries/603b776b311ccd2698717a69
http://www.gotokeep.com/entries/603b776b311ccd2698717a69
http://show.gotokeep.com/entries/603b776b311ccd2698717a69
http://gotokeep.com/entries/603b776a40325125c2b41c45
http://www.gotokeep.com/entries/603b776a40325125c2b41c45
http://show.gotokeep.com/entries/603b776a40325125c2b41c45
http://gotokeep.com/entries/603b7769b3d86c5231ac4ac3
http://www.gotokeep.com/entries/603b7769b3d86c5231ac4ac3
http://show.gotokeep.com/entries/603b7769b3d86c5231ac4ac3
http://gotokeep.com/entries/603b77685c9090549ec5daa0
http://www.gotokeep.com/entries/603b77685c9090549ec5daa0
http://show.gotokeep.com/entries/603b77685c9090549ec5daa0
http://gotokeep.com/entries/603b7767b3d86c5231ac4a7d
http://www.gotokeep.com/entries/603b7767b3d86c5231ac4a7d
http://show.gotokeep.com/entries/603b7767b3d86c5231ac4a7d
http://gotokeep.com/entries/603b7766e6978c1ccfc35024
http://www.gotokeep.com/entries/603b7766e6978c1ccfc35024
http://show.gotokeep.com/entries/603b7766e6978c1ccfc35024
http://gotokeep.com/entries/603b7765b3d86c5231ac4a38
http://www.gotokeep.com/entries/603b7765b3d86c5231ac4a38
http://show.gotokeep.com/entries/603b7765b3d86c5231ac4a38
http://gotokeep.com/entries/603b7764e6978c1ccfc34fc0
http://www.gotokeep.com/entries/603b7764e6978c1ccfc34fc0
http://show.gotokeep.com/entries/603b7764e6978c1ccfc34fc0
http://gotokeep.com/entries/603b7762dfd62f61eb21c9eb
http://www.gotokeep.com/entries/603b7762dfd62f61eb21c9eb
http://show.gotokeep.com/entries/603b7762dfd62f61eb21c9eb
http://gotokeep.com/entries/603b77610da2f27fd3ffcbec
http://www.gotokeep.com/entries/603b77610da2f27fd3ffcbec
http://show.gotokeep.com/entries/603b77610da2f27fd3ffcbec
http://gotokeep.com/entries/603b7760c140fd51f79062f9
http://www.gotokeep.com/entries/603b7760c140fd51f79062f9
http://show.gotokeep.com/entries/603b7760c140fd51f79062f9
http://gotokeep.com/entries/603b775f311ccd269871784b
http://www.gotokeep.com/entries/603b775f311ccd269871784b
http://show.gotokeep.com/entries/603b775f311ccd269871784b
http://gotokeep.com/entries/603b775e53e294695bc9ee0a
http://www.gotokeep.com/entries/603b775e53e294695bc9ee0a
http://show.gotokeep.com/entries/603b775e53e294695bc9ee0a
http://gotokeep.com/entries/603b775db7045e7e0bf695cb
http://www.gotokeep.com/entries/603b775db7045e7e0bf695cb
http://show.gotokeep.com/entries/603b775db7045e7e0bf695cb
http://gotokeep.com/entries/603b775cc140fd51f7906224
http://www.gotokeep.com/entries/603b775cc140fd51f7906224
http://show.gotokeep.com/entries/603b775cc140fd51f7906224
http://gotokeep.com/entries/603b775bc140fd51f7906204
http://www.gotokeep.com/entries/603b775bc140fd51f7906204
http://show.gotokeep.com/entries/603b775bc140fd51f7906204
http://gotokeep.com/entries/603b77591709297ff3f41199
http://www.gotokeep.com/entries/603b77591709297ff3f41199
http://show.gotokeep.com/entries/603b77591709297ff3f41199
http://gotokeep.com/entries/603b775853e294695bc9ed12
http://www.gotokeep.com/entries/603b775853e294695bc9ed12
http://show.gotokeep.com/entries/603b775853e294695bc9ed12
http://gotokeep.com/entries/603b775753e294695bc9ecf2
http://www.gotokeep.com/entries/603b775753e294695bc9ecf2
http://show.gotokeep.com/entries/603b775753e294695bc9ecf2
http://gotokeep.com/entries/603b7756b3d86c5231ac47e0
http://www.gotokeep.com/entries/603b7756b3d86c5231ac47e0
http://show.gotokeep.com/entries/603b7756b3d86c5231ac47e0
http://gotokeep.com/entries/603b775553e294695bc9ec8a
http://www.gotokeep.com/entries/603b775553e294695bc9ec8a
http://show.gotokeep.com/entries/603b775553e294695bc9ec8a
http://gotokeep.com/entries/603b775453e294695bc9ec5a
http://www.gotokeep.com/entries/603b775453e294695bc9ec5a
http://show.gotokeep.com/entries/603b775453e294695bc9ec5a

————————————————
Copyright statement: This article is the original article of CSDN blogger "Xiaoyangzi Shuo". It follows the CC 4.0 BY-SA copyright agreement. Please attach the original source link and this statement for reprinting.
Original link: https://blog.csdn.net/jun5753/article/details/114198674

Guess you like

Origin blog.csdn.net/m0_54643010/article/details/114236903