A few weeks ago, I saw a question on Zhihu, which said: How should one learn Java without experience, zero foundation and weak mathematical foundation? I have also answered similar questions, and the feedback is quite good, so I answered them again referring to the previous ideas, but unfortunately I did not share them with you in the public account, and then I will sort out a good share.

The question was posed by a high school student who befriended me for advice. Yue elder brother recently floated, all give a person guidance, also do not know is right is wrong, but I still analyze the problem from their own point of view, after all, I also work for many years, give beginners some confidence is what I should do; It is within my power to give some guidance to beginners; It’s also my job to give beginners a little bit of advice, because a lot of people may end up finding themselves not cut out for programming.

During this old brother and I talked a lot, I gave the solution piecemeal. Until a few days ago, he threw me a lot of confusion, all in the beginning of the meeting, so I took the time to do a detailed answer, mainly related to Java from the entry to the advanced experience, how to learn Java entry, there is a pile of troubles before practice, how to do?


This article will be in the way of questions and answers, to give some simple insights, because Java content is quite a lot, there may be omissions, I have asked the group of friends to do a screening, readers friends see, can also give me more supplementary oh.

Bosom friend: elder brother, I also thought of some programming problems to ask you for advice two days ago, I hope to get your help

The first one is what is the Learning route of Java, what are the knowledge points that need to be learned at each stage of Java, and the course outline, just like in the textbook, contains all the knowledge points of Java, from basic to entry and then to master how to learn? What do you learn first? What knowledge system is included in Java? Could you please tell me about it in detail

A:

At present, Java is mainly used as a backend in applications, especially in the field of micro services. Many well-known big factories at home and abroad use Java as a backend. Some big V even thinks that Java is unmatched in the field of micro services.

Therefore, our goal in learning Java is to cultivate ourselves as micro-service talents. Although, Android development, part of the front end is Java, but considering your actual situation, I still recommend to go to the micro services area, that is, the Java back end.

Java is a pure object-oriented programming language, so in addition to the basic syntax, you must understand its OOP features: encapsulation, inheritance, polymorphism.

About basic knowledge learning

Learn the basic knowledge, is to make you have a preliminary knowledge of the Java language, in fact, the basic knowledge of any language are all the same, contains the basic data types, and basic knowledge of object-oriented, object-oriented is a top priority, only with object-oriented knowledge, will be better in the subsequent development of growth.

Basic knowledge includes (mainly refer to Java Core Technology Volume) :

  1. Basic program structure: basic variable types, operators, strings, flow controls, arrays
  2. Classes and objects: definition and use of classes, static properties and methods, inheritance, package management, enumeration, reflection
  3. Interface and Abstract class: definition and implementation of interface, definition and implementation of abstract class
  4. Generics: Generic classes, generic methods
  5. Collections: Collections interface, list, Map, tree, sort, and find
  6. Exceptions and debugging: built-in exceptions, declared exceptions, custom exceptions, catch exceptions, logging
  7. Multithreading: the concept of multithreading, using threads, synchronization
Learn about Spring and so on

Now that you have some basic knowledge, let’s get straight to the point. In this area, Spring is a great tool to learn. Here are some things you need to know about writing Spring

  1. Maven: Maven and package management, POM files, life cycle, etc
  2. Spring Core: Dependency Injection and Inversion of Control, Spring Overview, Spring Container and lifecycle, Autowiring, Annotation Assembly, Aspect Programming (AOP)
  3. The HTTP protocol
  4. JSON knowledge
  5. The Servlet concept
  6. Spring MVC concepts: Configuring Spring MVC, parameter passing, implementing REST, permission control, etc
  7. RPC framework
  8. RESTFul

As for the learning materials of Spring, I recommend “Spring Actual Combat”. Before, someone in the group won the prize and I gave a copy as a gift

Learning about application middleware

This part, is the common “middleware” in Java development, these middleware covers various fields, including persistence, cache, queue, reverse proxy, etc., these are the most important to improve a program, the front belongs to the basic framework, this is to give the framework to fill the necessary things, let the program robust and stable.

Mainly including but not limited to

  1. MySQL: Relational database concept, database CRUD operations
  2. MyBatis: OR mapping concept, configuration, mapping, basic Java libraries, and Spring integration
  3. Redis cache: The concept of cache, the use of Redis
  4. NoSQL: NoSQL concepts, use of Mongodb
  5. Queue: Queue concepts, RabbitMQ, Kafka
  6. Reverse proxy: The concept of reverse proxy, Nginx configuration and use
  7. Linux: common Linux command used to remotely connect to Linux
Other supplementary

Other additions are mainly non-technical, but will definitely be needed in future projects.

  1. Development tools: IDEA, Eclipse
  2. Version control tools: Git and SVN
  3. Docker container: Environment deployment

It is generally divided into the above three parts, but each part has a lot of small parts, basic knowledge is the easiest, but also the most important, because all the following code writing, without basic knowledge, some can not be implemented.

After asking so much and writing so much, we still can’t stay in theory. The best way is practice.


Bosom friend: The second is that I have not found the learning method, and I don’t know how to learn. What method is easy to learn, but I will not forget it, and I don’t want to learn it. Now I am really confused

My concern now is don’t know how to go to knock flexible code, and how can I do to write code very accurate speed brought about now mind has not a pedant want to write code is no suitable, don’t know how to knock, knock code in the mind is feel very difficult, can’t laid hands on him to knock, let alone how to practice

Then there is the question of how to write code according to the given instructions or product development instructions? When I just learned C in school, I made a mistake in knocking according to the source code of the textbook, not to mention the layout of knocking according to the meaning. I couldn’t do it directly. When I thought of this, I was really afraid, so I asked myself whether I was suitable for it

Answer: These several answer together.

Java development, C language, or other language learning, is the need to practice; This you regard yourself as a skilled worker, mason is also through the hammer to build a house, packers are also experienced thousands of times of packaging to do. Language organization is the same, composition is accumulated word by word.

After all, programming is a technical job, not a simple physical activity, so there is no other, only practice makes perfect, to achieve the level of writing code. But writing code is a low bar. It’s not enough.

I often tell my friends that programming at the end of the day is not about writing code. Writing code is the easiest thing. Before you write the code, there are requirements analysis, technology selection (database, middleware, etc.), architecture design, process design, algorithm selection, these are all done, then you translate these into code is a natural thing.

Here is just a final goal, for beginners, at the beginning can not be ambitious, also can not be intimidated by difficulties. I gave you the learning route up there. Do you understand? So, you now know, have not been scared, if not, then please carefully read “Java Core technology volume 1”, the above basic knowledge are first master, appear in the code practice on the compiler, line by line to write, understand him. If you have been hit, there is no matter behind, choose a better way out.

Wait until you learn the basics, then go to a small Demo, such as building a calculator, to test your work. Writing code is a step by step process. If you learn the basics first, you will gradually have a sense of accomplishment. Then the difficulties behind will be easily solved.


Acquaintances: Say an outside development, according to the previous I also found the faults should will have trouble in programming, I do not consider the consequences severity, the lack of independent thinking, reaction speed is slow thinking is slow, so I don’t know what to do, he will not go to think independently, only waiting for the others eyes that to do what you dare not, also won’t store memories, Attention is not focused, think small problems do not think to figure out, want to change how should change? The elder brother

I really haven’t written much code before, so I followed the textbook to write it, and I was worried that I couldn’t write it. Even if I learned it, I was afraid that I didn’t know how to type the code, but I felt it was very difficult to type the code from my heart

A:

Writing programs in addition to technical ability, state of mind is also a major focus. Below, select some excerpts from my previous article on “Hearing the Wind in the Left Ear” to answer your questions.

Here first talk about the way of learning, people’s learning is divided into “passive learning” and “active learning” two levels.

  • Passive learning: such as listening, reading, audio-visual, presentation, the average retention rate of learning content is 5%, 10%, 20%, and 30%.
  • Active learning: by discussing, practicing, and teaching others, the retention rate of passive learning increases from 5% to 50%, 75%, and 90%.

As we can see, you don’t really learn by listening to someone else, or reading a book yourself, or having someone show you, because you’re being told, you’re being told.

Only when you start to think on your own, start to summarize and conclude on your own, start to talk to people, start to practice, and start to export, can you master real learning ability.

Learning is not only to know, but also to think and understand. In the process of learning, we do not want to know what something is on the surface, but to explore its inner nature and principle through the appearance. Real learning is never easy, but the more you know, the more questions you have, the more questions you have, the more you think, the more you think, the less you know, and the more you want to know. So the cycle is this kind of spiraling up and down.

In the process of learning, we have to constantly ask ourselves, what is the original intention of this technology? What kind of problem is it to solve? Why is that problem solved in this way? Why can’t we do it another way? Why can’t it be simpler? …

These questions will drive you like a detective to explore the facts and truths behind them, and to understand the inner nature, logic and principle of the whole thing bit by bit in constant thinking. Once you understand and master these essential things, you will find that the whole complex and changing world becomes simpler and simpler. It’s like you’ve got the final answer to all your questions.

Learning is about changing the way you think, the way you think, the rubbish and inefficient algorithms you were born with. In short, learning allows us to change ourselves, act and practice, reflect and improve, and thus grow.

conclusion

How do you feel after reading these questions? So let me summarize this very briefly.

First, the question of both concerns, I chose Java, so what can I do in the future. In fact, Java can do a lot, but at the present stage, we can also see through the ranking of programming languages, Java is firmly in the top three, which means that it has a huge user group, so it represents a huge amount of Java learning materials on the network, a good community environment, excellent solutions, as well as a lot of framework learning. You don’t have to worry that you won’t find a solution to your problem or a way to learn.

Author: Programmer Xiao Yue

I’ve listed the path to the Java back end because it’s the back end where Java plays a major role right now. Backend Java is dominant, almost large Internet and large factories, banks, financial system backend are Java.

Second is how to learn, I listed the Java learning route is also based on the back-end learning route, in fact, there are quite a lot of not involved, but to start, is enough.

Third, is the learning method, how to learn. Honestly, coding has always been a matter of learning and self-discipline. Many people work hard in school and can get a good offer when they enroll in school. Some fail to stick to it in school and may give up this road after graduation. Some are very interested in the beginning, but later found that they are not suitable for, or choose to change major in school, or out of the product, to implement, etc., is also a change of industry. So, there are two outcomes, Win or Go Home in playoff basketball terms.

To judge whether you have the willpower to learn down, you can refer to my suggestions above. Of course, if you have better suggestions, you can leave a message to me in the message area, so that we can communicate together.

And the problem with this guy is that he hasn’t done anything, but he’s always worried that he can’t write code. But, if you don’t start practicing, how do you know if you’re right for it, if you like it, if you’re going to go this way, right? In fact, when I was a freshman, I thought about giving up when I got into C language, especially when it came to Pointers and linked lists. However, I finally gave up the idea. If I don’t write code, I will not take the college entrance exam for nothing. Let’s be realistic. The only ones who can switch majors are the girls in the class, and they’re all gone. So what are you gonna do? Just go ahead.

In this way, until graduation, I looked at the book in the laboratory, knocking on the code, we have two months of summer vacation, my summer vacation will only give yourself a month, another month is spent in the school, is to let oneself can live up to their parents pay.

Brother Yue is a little chatty today, but he means everything. Next, jump brother to learn those excellent number Lord, a series of a series of output, took out the original programming learning appearance, and we run together.