[Strongly recommended] it might be best for you to learn Java routes and methods

In case the link does not open, it is recommended to use this link to read https://github.com/Snailclimb/JavaGuide/blob/master/docs/questions/java-learning-path-and-methods.md.

So far, I think whether it is in the public No. backstage, still know almost micro letter above I was asked to do more of is: "big brother, there is no Java learning routes and methods" (big brother is a kind of modern popular call, I Gangster non ha). So, this part of the individual's own point of view on their own learning experience is.

Foreword

Freshman year, I just come into contact with the C language, mastery of the C language can only be completed after-school exercise teacher assigned. At that time my main focus was to participate in various extracurricular activities, followed by a very nice community I tried a lot of things that have never tried before: camping, outdoor barbecue, buses speech, ring run the ancient city walls, on foot travel, places to live, Christmas selling apples and so on.

As a sophomore I did not come into contact with HTML, CSS, JS, Java, Linux, PHP these terms. When Java came into contact with the direction I need to choose Android because of work, I learned that he is in knowledge about the direction of Andrews after three months to Java back-end direction. The very beginning of their learning, a few detours, but overall route is still relatively no problem. The first book I read of Java Web direction is "Java Web Integrated Development Return of the King", the book I now do not recommend others read, one is content too jumbled, and second's lead to a lot of things in the more distant now no longer applies.

A lot of people after the completion of Java-based, do not know how the next step back to learn, or do not know how to learn. How to learn Java system has been plagued by many novice or advanced look forward to a problem in Java direction of the small partners. I also know to answer several questions on almost similar, I feel that since a lot of people need guidance in this area, I'll write an opinion of their own learning Java backend for how the system. Just the number of public concern many of my friends are learning Java are not too long, I hope this article on learning Java friends can have a little inspiration.

Due to my limited personal capacity, the following learning routes and methods recommended that there are definitely wanting. Welcome idea in the comments area friends talk about their own views. This article is suitable for just getting started or want to play Java-based friend, basis for comparison.

Learning routes and methods recommended

The following learning routes and the main method is based on the pen after personal learning experience improved results summary, I believe that this shining learning path to your learning efficiency is very high.

The process of learning in a knowledge if you do not know to see what books you can check out this article: the Java learning essential books recommended Redux! .

In addition, a very important point: recommended Intellij IDEA encoded alone can take some time to learn to use the Intellij IDEA.

Some video mentioned below, the public number backstage reply key "1" you can get!

step 1: Java foundation

"Java core technology Volume 1/2" and "Head First Java" two books in my opinion is a very good introductory Java books ( "Java core technology Volume 1/2" knowledge points more comprehensive, I recommend this book), I'd think "Java programming ideas" a little discouraging newcomers belong to the meaning of the book, careful look, then look at the foundation recommended bit. You can also learn while watching a video while reading (dark horse, still in Silicon Valley, Mu class video networks are okay). For Java8 things new features, I suggest that you can look after the basis for learning, temporarily do not quite understand it does not matter, take the time to go back and look back.

After reading it, you can use what they learn to achieve a simple Java program, you can also try to solve some of the Java programming issues, in order to be themselves learned into practice.

Remember to sum up! Lay the foundation! The important things are their own record. API documentation on where they can see, in order to prepare yourself will read them. In order to make themselves better to write the code, "as Effective the Java" , "reconstruction" these books can also look all right.

You can look at the following articles after learning finished, check your learning:

Your own mastery, are detected in these 34 questions Java knowledge more important point, the most important is the rate of appearance in the Java back-end interview is very high.

step 2: simple to use multi-threaded

Multithreading This section may be more difficult to understand and use, pre-can first simply look at the foundation, have the energy and ability to come back after a closer look later. Recommend "Concurrent Java programming Beauty" or "high combat Java concurrent programming" these two books. I also currently remodeling a multithreaded study guide before I wrote back will update the public on the inside numbers.

After reading multiple threads can detect whether their grasp by following these issues.

Java multithreading knowledge base:

  1. What are the threads and processes?
  2. Please briefly describe the relationship between threads and processes, the difference and the advantages and disadvantages?
  3. Talk about the difference between concurrent and parallel?
  4. Why use multiple threads do?
  5. What is the use of multi-threading problems may bring?
  6. Talk about the life cycle and the state of the thread?
  7. What is a context switch?
  8. What is the thread deadlock? How to avoid deadlocks?
  9. Talk about sleep () method and the wait () method differences and similarities?
  10. Why do we call the start () performs the run () method when the method, why can not we call the run () method directly?

Advanced multi-threaded Java knowledge:

  1. synchronized keyword: ① talk about their own understanding of the synchronized keyword; ② talk about how he is using the synchronized keyword, use yet in the project; ③ talk about the underlying principles of the synchronized keyword; ④ talk JDK1.6 synchronized keyword bottom of what had been done after optimization, can you explain in detail these optimizations; ⑤ talk about the difference of synchronized and ReentrantLock.
  2. The volatile keyword: ① talk about Java memory model; ② talk about the difference between the synchronized keyword and volatile keywords.
  3. ThreadLocal: ① Introduction; ② principle; ③ memory leaks.
  4. Thread Pool: ① Why use a thread pool? ; ② difference Runnable interface and implement Callable interface; ③ execute execute () method What is the difference and submit () method is it? ; ④ how to create a thread pool.
  5. Atomic Atomic categories: ① introduce Atomic atom type; atoms class ② JUC package in which four categories; ③ talk about the use of AtomicInteger; ④ Can you give me a brief introduction to the principles AtomicInteger class?.
  6. AQS: ① Introduction; ② principle; ③ AQS common components.

In addition, it is recommended to look at the following articles:

step 3 (optional): with a computer network operating system,

Operating system this regard, I think the basic knowledge of the Linux operating system and commonly used command line and some important concepts on the line.

On the operating system, then I have no operating system can recommend books, because I did not carefully read several. Because of the operating system more boring, I suggest look at the video to see this part of the study might be a little better. I recommend an open source on Github HIT "Operating System" course for everyone it! Address: https: //github.com/hoverwinter/HIT-OSLab.

In addition, we have to master the basic Linux use some common commands you need to be very familiar example: Change directory command, directory operations command, the operation command file compression or decompression command file, and so on. Learning Linux open source on Github recommend a document: "the eyes of the Java programmer Linux"

Networks of computer learning, I feel a grasp of basic knowledge on the line, not too get to the bottom, usually interview in this area requirements are not high, after all, not specialize in network. Recommend "what network connections" , "graphic HTTP" two books of view, these books are all the more interesting to understand the type of people also no basis for the view.

step 4 (optional): Data Structures and Algorithms

If you want to enter manufacturers, I recommend that you learn after the completion of the foundation or multi-threaded Java, began to take a moment each day to learning algorithms and data structures. In order to improve their programming skills, you can also stick brush Leetcode . On the current domestic and foreign manufacturers of the interview, the brush can be said to have become Leetcode have to follow the path.

Getting Started with friends who want to algorithms and data structures, it is recommended to see the two books "graphic algorithm" and "lying data structure" , two books, while not classic books, but more interesting, and the algorithms for just getting started friends data structures are very friendly. "Introduction to Algorithms" very classic, but for just getting started is not so friendly.

In addition, there is a very commendable algorithms recommend to you a book, the book's name is called "algorithm" , the code in the book are written in the Java language. This book too many advantages such as its fully explain the basis for the reader more friendly and so on. I think this book is the only drawback is too thick (whispered BB, and may explain some of the knowledge about the time a little long-winded). In addition to this book, "prove safety the offer" , "Programming Pearls" , "Programming the United States" These three books are recommended by many big brother too, and for algorithms interview very helpful. "Algorithm Beauty" This book is also very good, very suitable for leisure time watching.

step 5: front-end knowledge

This step is mainly to learn basic front-end (HTML, CSS, JavaScript), of course BootStrap, Layui relatively simple front end framework and so you can find out. There are many online resources in this area, I can only recommend a beginner most of this knowledge will see the website: http: //www.w3school.com.cn/, this site is used to review the knowledge is also very good. Recommended first HTML, the basics of CSS, JS over again, and then to consolidate the front by an actual project.

Are now separated the front and rear ends, for now, most of the projects are preferred React, Angular, Vue these powerful framework to develop. If you want to go, then the whole stack direction (the direction of the current pen Lord, I worked with the company React two small projects), it is recommended to first lay the foundation JS, and then select React, Angular, Vue them to a serious learn about. Vue domestic use a bit more, foreign general to use the React and Angular.

step 5:MySQL

MySQL learn the basic use, basic CRUD, SQL command, indexes, stored procedures which all learn about it! Recommended Books "SQL foundation tutorial (2nd edition)" (entry-level), "High Performance MySQL: Third Edition" (Advanced), "MySQL will know will be" .

The following MySQL related articles strongly recommend that you look at:

step 6: Common Tools

  1. Maven : suggestions can spend half a day learning about the advance of learning common framework Maven used. (Find that Jar package, download Jar package is really in trouble trouble, use Maven can save a lot of things for you).
  2. Git : Git basic skills are also essential, in the process of trying to learn their own code hosted on Github. ( Git entry )
  3. Docker : learn to install with Docker learning need to use software such as MySQL, so a lot of convenience, you can save a lot of time for you. ( Docker entry )

step 7: common frame

Learning Struts2 (can not learn), Spring , SpringMVC , Hibernate , Mybatis , shiro and other frameworks to use, (optional) familiar with Spring Principle (manufacturers interview necessary), then it is necessary to learn about SpringBoot , learn SpringBoot really important . Many companies are direct to final year students started SpringBoot , but if time permits, I recommend you take the Spring , SpringMVC in advance to learn about.

About SpringBoot, I recommend a look at the pen main open source Spring Boot tutorial (SpringBoot core knowledge points summary. Based on Spring Boot 2.19+).

Spring is really important! AOP and IOC must get to know these two concepts. Spring in the scope of the bean life cycle, SpringMVC works etc. Detailed knowledge points are very important, we must get to know.

Recommended way to see the document + video combination, with the middle of combat to learn, you can see more JavaGuide for the study period are summarized common framework .

In addition, all 2019, and again we do not really learn a JSP?

step 8: High Performance Site Architecture

Learning Dubbo, Zookeeper , the common message queue (such as ActiveMQ, RabbitMQ ), Redis , elasticsearch use.

I learn these things by Dark Horse video was distributed last item to learn, my people this way is a lot of widely used and acceptable manner. I think it should be better grasp the knowledge points one way, the other, recommend watching the video side do it yourself, you do not understand the knowledge to timely access to online blog and books, so that better learning.

You must learn to expand knowledge, develop a sense of self-learning. Dark Horse project description of these points are relatively superficial knowledge.

step 9: Other

We may come back to look at knowledge multithreading, you can also make use of spare time to learn about NIO and Netty , on such a resume can also be more something. If you want to go to manufacturers, the JVM some knowledge is also necessary to learn ( Java memory area, the virtual machine garbage algorithms, virtual garbage collector, JVM memory management ) recommended "in-depth understanding of the Java Virtual Machine: JVM advanced features and best practices (latest second Edition "and" real Java virtual machine ", if reading too much trouble, you can also see the document my finishing.

In addition, micro-services special fire now, many companies also made it clear in an interview to the knowledge needs of micro-services. If you have the energy, then you can go to learn about what services are SpringCloud micro-ecosystem.

to sum up

I summarize the above, the main contents of each step to learn, have a suggestion for learning plan. After know what to learn, how to learn it? I feel that learning each knowledge point can be considered to start with:

  1. Official website (English is a high probability, not recommended for beginner) .
  2. Books (more knowledge system is fully recommended) .
  3. Video (easier to understand, it is recommended, especially when the beginner. Mu class network and beep beep miles miles above video you can see there is a lot to learn, just directly above keyword search on it) .
  4. Online blog (time to solve the problem of a knowledge point can look) .

Here to give you a suggestion, the process of watching the video along with the best practice together, take notes! ! !

The best you can while watching video while looking for a book to see, watching videos did not understand the point of knowledge must be resolved as soon as possible, how to solve?

First, Baidu / Google, the search engine can not be resolved by then to find her friends or know of some people. In addition, the project must be real! Many people ask this time will not allow me to do the actual project how to do? I think we can by following this in several ways:

  1. The Internet to find a job in line with their abilities and needs to find a real video project or blog are taught to do together. The process of doing, you need to have their own thinking, do not kick the tires, for a lot of knowledge, others may just explain to meet the project enough, you want to multi-knowledge, then, for the important points we must learn to go their own deep learning.
  2. Github code or have a lot of clouds above the actual item category, you can select one study, in order to give them greater understanding of the project, in understanding the basis of the existing code on, you can improve or add functionality to existing projects.
  3. Yourself to do a thing they want to complete, will not encounter things on the interim to learn, to sell off now (more difficult this way, this way is not recommended for beginners, because you do not mind the basic concept, written code usually difficult or simply do not do this a decent thing).
  4. ......

Not only do the project done, but also to improve and improve. In addition, if your teacher has a background related Java project, you can also take the initiative to apply to participate.

You must learn to allocate their own time, to learn a lot, really a lot of things to figure out what is the key, which only understand things enough. Be sure not to put energy spent on learning a variety of frameworks, algorithms and data structures is really important!

In addition, the learning process can have a reference document is very important, very helpful in their own learning . I had to get JavaGuide: https://github.com/Snailclimb/JavaGuide large part because of this purpose. Objectively speaking, compared to the blog, JavaGuide inside the content as more people become involved in more accurate and complete.

Open source projects recommended

On the recommendation of other open source projects:

  1. Guide-springboot : suitable for beginners as well as experienced developers access to the Spring Boot tutorial (spare time maintenance, maintenance welcome together).
  2. Advancement-Programmer : I think the technical staff should have some good habits!
  3. -Security-jwt-the Spring Guide : Getting started from zero! Spring Security With JWT (including verification authority) a rear end part of the code.

No public

My public number

Guess you like

Origin juejin.im/post/5dbba96bf265da4d47042070