Hello, gold Nuggets, this is King Silence two. Recently, I am catching up on the basic knowledge of computer, and I feel a little addicted! The knowledge that felt very boring before, now unexpectedly have a bit sweet! I don’t know why.

My major in university is computer network. But to be honest, in the actual development, many courses in university are either not “useful” or can be studied in a different way to be more efficient.

The reason for this is, on the one hand, that practical development is more concerned with the “practical” of knowledge, and on the other hand, that university teaching is indeed somewhat disconnected from industry. So I started from the practical application point of view, to comb through the basic knowledge of computer.

01. Data structure

There is no doubt that data structures are very important to a programmer, and the statement program = data structure + algorithm is true all the time.

Most data structure courses focus on how to mathematically implement a data structure, but in practice, most major languages, such as Java, already have common data structures built in. That said, it is difficult for most programmers to implement a data structure from scratch in practical development. So we just need to do the following.

1. Familiar with the concepts of common data structures, such as arrays, stacks, linked lists, hash tables, etc.

2. Learn the differences between commonly used data structures, such as ArrayList and LinkedList, which I’ve explained in detail in previous posts, and check out the links below.

3. Focus on algorithms around common data structures, such as how to find lists and maps.

4. Focus on error-prone areas of data structure use, such as thread safety.

.

B station in Zhejiang University of a data structure class is good, very systematic very classic, suitable for small white entry.

The video address is as follows.

www.bilibili.com/video/BV1JW…

02, algorithm

Most ordinary business systems in my area don’t involve very complex algorithms, so I didn’t spend much time on them.

But if you in some special field, if the algorithm can’t keep up with, can be said to be “difficult”, such as graphics processing field, as the changes in the image and strengthen, without exception are used matrix transformation, thus inevitably involves the content of linear algebra, deep to learn more, will inevitably involve more knowledge.

So the learning algorithm depends on the situation, if you want to go algorithm post, then “algorithm 4th edition”, “algorithm introduction”, “the beauty of mathematics”, “programming gems”, “sword point offer” these books have to endure a bite. The ebook can be found at the GitHub repository below.

Github.com/itwanger/Ja…

By the way, I would like to recommend a copy of ali’s algorithmic brushing notes, which is already 13.3k star on GitHub. Each question inside is written to understand the idea of the question, which is realized by GO language, and each question is 100% runtime Beats.

The online reading address is as follows:

books.halfrost.com/leetcode/

03. Design patterns

I believe that design patterns are the path from a beginner to an intermediate programmer to a senior programmer. There are a lot of programmers, the early momentum is full, but the subsequent weakness, is to eat the loss of the design model.

For the first few years, most programmers are at the “technical” stage of getting familiar with the programming language, and then they move on to the “technical” stage. In programming, the epitome of art is design patterns.

One book I recommend is the Zen of Design Patterns. The code is implemented in Java, which is easier to read and more in line with the reading habits of domestic programmers.

In addition, I recommended the Refactoring Guru website last time, the attached pictures are very beautiful, reading up the visual effect will be rich.

The online reading address is as follows:

refactoring.guru

The offline version can be downloaded via this link (no routine, no unzip password required) :

Design patterns, awesome!

04. Software engineering

The process of implementing a software system involves not only coding, but also a series of non-technical factors such as project arrangement and team coordination. If you want to move from a programmer to a management position, become a team leader or a development manager, you must keep up with the knowledge of software engineering.

Here I recommend a few good classic books, including one by Mr. Zou Xin, who just became the vice president of CSDN. I hope CSDN will become better after his arrival. The title of his book is the Method of Construction, which I have read, and it is very good.

In addition, there are two must-read books, that is, “The Myth of the man month” and “the man Piece”, although there are traces of time, but still worth deep reading. Of course, the best way to learn about software engineering is to observe how your team approaches engineering problems, and then think about it and develop your own approach view.

The ebook can be found at the GitHub repository below.

Github.com/itwanger/Ja…

05. Architecture & Design

To write a good and beautiful program, there are three stages.

The first stage is to have a solid basic skills. Simply put, it is to be proficient in grammar and framework, and to become a “code farmer” who can complete the development tasks.

The second stage, from “coder” to “engineer”, is not only to be able to implement the function locally, but also to focus on the dimensions outside the function, such as robustness, low coupling, scalability and other indicators.

In the third stage, from “engineer” to “architect”, they not only pursue the quality of a module locally, but also control it from the whole system level, rationally arrange the priority of resources, and ensure that the whole system will not corrupt.

Becoming a good architect requires hard work and a bit of luck, but it may not be enough to rely on reading books, but these classic books should be read and can be of great help in daily work.

  • Complete Code
  • Refactoring: Improving the design of existing Code
  • The Design
  • Core Principles and Case Studies of Large Website Technical Architecture

The ebook can be found at the GitHub repository below.

Github.com/itwanger/Ja…

The last

The technology road is not easy, not only to learn a lot of new technologies and new frameworks, but also to timely complement the necessary computer basic knowledge, hard base but also learn to embrace change.

The learning process is like climbing a mountain, and about 80 percent of people fall behind in the process. Then please believe me, as long as the goal is clear, hard work and persistence, and a little bit of good luck, you can reach the top!

Well, I’m King Silence ii, hope this article helps you! See you next time.