When it comes to programmers, we first think of a high salary. More and more people want to understand the systematic learning route of Learning Java. Today, I will tell you what I need to learn to learn Java.
The first step is to learn Java basics:
Java based
Java is an object-oriented programming language, so after know basic grammar, but also understand the object-oriented programming ideas, such as involved in the encapsulation, inheritance, polymorphism, class, object and interface, etc.), in addition to the generic, reflection, such as knowledge also need to learn, because the reflection has been employed in many frameworks.
In addition to the above, I/O, set, exceptions, etc., also need to understand, not only will be asked about in the interview, but also used in the work.
If you have the energy, check out the new Java 8 features, such as Lambda expressions, Stream operations, and the new Date API.
[
] (Link.zhihu.com/?target=htt…)
After understanding the basic knowledge of Java, you can learn the knowledge related to concurrency:
concurrent
Concurrency may be difficult to understand relative to the Java foundation. You can learn from books such as “Java Concurrent Programming In Action” and “The Beauty of Java Concurrent Programming”, mainly including the following contents:
- Fundamentals of concurrency theory: thread safety, locks, threads, etc
- Concurrency tools: Lock, Condition, Semaphore, ReadWriteLock, CountDownLatch, etc
- Concurrent design patterns: Future, Master/Salve, copy-on-write, Balking, etc
After you learn about concurrency, you’ll probably find that it has a lot to do with the JVM, so take a look at the JVM:
JVM
After learning the JVM, you can have a deeper understanding of how Java programs are executed and optimized, and it is also a must in the interview. The JVM content mainly includes: JMM, GC and tuning.
Data structures and algorithms
Algorithm ability can not be rapidly improved in a short time, so you can start learning after learning the Java foundation. Many large factories have high requirements for algorithms. It is recommended that you can point to Offer at the beginning and then brush LeetCode.
At the same time must be familiar with the basic data structure (linked list, array, stack, queue, hash table, tree, etc.), there are also common algorithms to understand, can tear code, such as: binary search, divide and conquer, quick sorting, dynamic programming, backtracking, double-pointer, etc.
The operating system
Operating system books recommended reading “computer composition principle”, “operating system”, “how to run the program”, after understanding the underlying operation mechanism, for the future learning is very helpful, the main content includes: process, thread, memory related principles.
Computer network
For data on computer networking, I recommend the Top-down Approach to Computer Networking. The examples in the book are graphic and good for getting started, and how Networks Are Connected and Illustrated HTTP are also good for beginners.
The database
First of all, we will briefly learn the basic syntax of MySQL. It is better to understand the principle of indexing and optimization methods. In terms of books, “High Performance MySQL” is a bit thick, but the knowledge is very comprehensive, “MySQL Technology Insider-InnoDB Storage Engine” this book is relatively deep, if you want to go deeper, you can read it.
Redis books recommend Redis design and implementation, feel very good, from the source point of view of Redis architecture design analysis.
[
] (Link.zhihu.com/?target=htt…)
Design patterns
Design pattern books recommend the zen of design patterns, dahua design patterns “, “HeadFirst design patterns”, these three books are quite suitable for introduction, there are 23 design patterns, does not need to be familiar to every one, just need to have the common several commonly used: the singleton pattern, factory pattern, strategy pattern, the proxy pattern, etc.
The framework
To understand the basic use of Spring, SpringMVC, Mybatis and other frameworks, you can use a practical project to understand, so as to know what each framework is doing, and then to understand the relevant principles, such as the principle of Spring and SpringMVC in the interview or more often test, For example, the principle of IOC and AOP, the implementation process of SpringMVC and so on.
In fact, I recommend you to read the official documents for learning framework. The examples in them are all comprehensive and classic. If your English is not good, you can read related books, such as “Spring Practice”.
In addition, the SpringBoot framework can also go to understand, through the actual combat demo can quickly master how to use.
Micro services are now used by companies are also more, in the premise of time and energy, you can learn SpringCloud through actual combat projects.
After finishing the project, we should summarize more and expand and improve our own project.
The middleware
This part is the more the better, the more you master, such as message queue, RPC communication framework, after mastering its use, in the premise of energy to understand the principle of implementation.
tool
In order to do a good job, you must first sharpen your tools. You may want to know the following tools in your development:
- Development tools: I recommend IDEA here, but Eclipse is also available, just a development tool, don’t worry too much
- Project management: There are both Maven and Gradle programs. Generally, there are more Maven programs. Choose one of them
- Version control: mainly Git and SVN, but SVN is less used now, you can learn Git and use it proficiently
The source code
After being able to skillfully use a thing, have the power to study the source code, you can read JDK source code, the commonly used collection class, JUC and under the package, thread related to see, when you can combine video or blog to read, easy to understand.
After understanding the source code of commonly used JDK classes, you can read the source code of Spring and other frameworks to learn the programming ideas of excellent developers.