It took me two weeks to write this article carefully. It is not a simple data aggregation. I have written down my years of work and learning experience.

Recently, many people around me are asking: How to learn Java? Is there a learning route?

I’m sure all of these people have some basic Java knowledge, but it’s easy to get lost after a while because you can’t see the whole picture. Therefore, I am thinking whether I can write a map or route of learning, so that readers can know what to learn next and how far I am from the offer from the big factory.

A person’s most afraid is not the distance, but can not see the dawn of victory. I hope the following article can bring a ray of light to your learning road, you might as well try to read it, if there is a harvest to give me a thumbs up yo.

Warm reminder: this article is written on the ten thousand words, everyone help point a like, don’t white whao oh.

The main content of this article is (full of dry goods) :

  • What are the employment directions for Learning Java?
  • Data structures and algorithms
  • Design patterns
  • Computer Fundamentals
  • Introduction to Java
  • Advanced Java master
  • Basic Framework (SSM)
  • Microservices framework
  • Common middleware
  • The database
  • Distributed architecture
  • Must master the tool software
  • List of learning resource websites
  • Frequently Asked Questions (FAQs)

Buy a bottle of Coke, make a cup of coffee, lets go to study

What are the employment directions for Learning Java?

Before I tell you how to learn Java, LET me tell you what you can do after learning Java, because learning with goals is the most efficient.

Many beginner Java learners have a very vague concept of the position or direction. If they learn Android today and big data the day after tomorrow, they will inevitably be less skilled. This is what interviewers usually say: this candidate has a poor foundation.

To learn technology, first of all, you should focus on a direction. After certain accumulation, you can expand your knowledge. After finding the direction you are interested in, you can sink down to learn.

The Java language has spawned a number of positions or technical directions in the company according to the division of labor.

I have searched for positions in big factories such as BAT on Boss Zhipin, and the following three types of positions are very popular at present:

(1) Android development

Skills:

  • Familiar with Android UI development, have an understanding of UI architecture, and understand basic UI interaction knowledge;
  • Familiar with Android debugging tools and methods, can deal with a variety of Complex Android problems;
  • Familiar with Android Framework layer, have experience in locating problems by reading Android source code;

(2) Java back-end development

Skills:

  • Solid Java foundation, solid understanding of JVM principles; Familiar with Spring, MyBatis, Dubbo and other open source frameworks, and able to understand their principles and mechanisms, with large distributed system design and development experience;
  • Familiar with the design and development of relational database based on Mysql, rich experience in database performance optimization;
  • Familiar with underlying middleware, distributed technologies (such as RPC framework, cache, messaging system, etc.);

(3) Big data/data warehouse

Skills:

  • Familiar with Hadoop/Spark/sqoop/hive/impala azkaban/big data related components such as kylin;
  • Proficient in SQL and performance tuning, proficient in Java, Python, Scala and other programming languages;
  • 2. Master data warehouse (DW)/OLAP/BUSINESS Intelligence (BI)/data statistics theory and flexible application, with large data warehouse design experience;

Here are just three popular technical jobs and I want you to think about the direction in the light of your own experience.

Knock on the blackboard: identify yourself, find the right direction, the earlier the direction is easier to succeed!

Data structures and algorithms

Learn what?

Some of you may be asking: Do I need to learn algorithms if I’m learning Java? The answer is: no choice!

Domestic Internet interview process is gradually close to foreign, such as bytedance, BAT and other big factories, tearing algorithm has become a required action.

Indeed, Compared with C and C++, Java has rich class libraries and tripartite framework. After working, most people are writing business code, commonly known as API Boy or Crud Boy. The algorithm seems not so important, but the exam algorithm is really a low-cost way for companies to interview and screen people. If you write the algorithm and it passes, you’re either smart or you’re diligent.

So no matter what language you’re learning: C, C++, Python, Java, GO, you have to get past algorithms. Data structure and algorithm of the interview core knowledge points I have listed, you can refer to study, one by one to break.

  • Stacks and queues: first in first out, last in first out
  • Linear list
  • Search: sequential search, binary search
  • Sort: exchange class, insert class, select class
  • Tree, binary tree, Graph: Depth first (DFS), Breadth first (BFS)
  • recursive
  • Divide and conquer
  • Sliding window
  • Three great algorithms: Backtracking, Greedy, dynamic Programming (DP)

How to learn?

The best or most stupid method is to brush the question, strongly recommend force buckle: leetcode-cn.com recommends brushing more than 300 questions, to cover simple, medium, difficult questions. Before the interview to train feel, not rusty, can choose to maintain daily or a few days.

Before you start, I suggest you read some books: Comic Algorithm: Gray’s Algorithm Journey.

If you have no previous knowledge of algorithms, this book is for you to supplement the basic knowledge of data structures and algorithms, such as what is time complexity, space complexity, finding, sorting, etc. If you have a certain basis, I suggest you skip to the last part of the actual algorithm.

“Sword Of Offer”

A very classic book, learn the algorithm of the people will brush. Note, however, that the titles in this book are written in C++, which may affect you a little if you are a Java developer. But keep in mind that the most important thing about learning an algorithm is how to solve the problem and how to do it, and what language to implement it in is secondary. If you have more time, I suggest you implement it again in Java.

Labuladong’s Algorithmic Cheat Sheet

Highly recommended! This is a very new book. Before writing the book, the author opened a project on Github, which mainly explains the LeetCode problem solving routines. The total number of Start is in the top 40. At the beginning of the book, the basic thinking and routines of the learning algorithm are explained. It is suggested to read the book here and brush the questions with Leetcode at the same time. The curative effect is very good!

Introduction to Algorithms

If I don’t recommend this book is not a little low, this is a undergraduate students must read must learn classic tome. Foreign big guy wrote, domestic translation of the classic, although it is a classic but do not suggest beginners to the algorithm of students to see, because read the book you may have to give up the algorithm, more difficult to understand. Suggestions have a certain basis to start with this book.

If you find reading boring, you can recommend some geek Time columns, but for a fee, but the quality is very high. The Beauty of Data Structures and Algorithms

This column is text + voice, written by Wang Zheng, a former Google engineer. He used the most suitable for the engineer’s study way, is not limited to a particular programming language, starting from the actual development scenarios, distinguished teachs you the method of learning data structure and algorithm, to help you understand the basic concept and the theory of the core essence of deep understanding of algorithms, help you to improve the data structure and algorithm thinking ability to solve problems.

Interview with Algorithms

This column is a video written by Qin Chao, a former Facebook engineer. The author will use the whiteboard to take you step by step to solve the problem, layer by layer in-depth link link, each problem will also use a variety of methods to solve the problem. I almost finished it. I got a lot out of it.

Leetcode, books, and geek columns can work in parallel, so don’t just read them.

Design patterns

Learn what?

There are too many excellent martial arts in Jin Yong’s novel, the most comprehensive or Jiuyang true classics, jiuyin true Classics are divided into two volumes, the first volume is the basis of internal kung fu, the second volume is martial arts moves, these are extremely famous martial arts secret books.

Then think about what is the secret of martial arts? In fact, open to open is some fixed moves, remember these moves and good use is the top master.

Back to programming, in addition to writing clean code, you need to use a variety of design patterns to make your code readable, extensible, and loosely coupled.

So whether you learn martial arts or code, there are certain fixed moves, which are design patterns.

When it comes to design patterns, many students may jump out: I know this, is the singleton pattern, factory pattern……

Blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah, blah. The reason is that you don’t have enough code experience.

Think about where design patterns come from. In the last century four men formed a group called GoF and published a book of 23 design patterns that have come to be known. These four people have come up with a methodology from a lot of code practices, but we, as students in school or new people at work, probably write less code, how can we learn so many design patterns easily and quickly.

So it’s normal to learn design patterns, but not apply them to everyday code practice, because code experience is not enough.

Do you still want to learn? Of course, because the interview may be asked. We still need to lay a good foundation for the theoretical knowledge of design patterns. We need to master these knowledge points:

  • Six principles of design pattern: single responsibility, Richter substitution, dependency inversion, interface isolation, Demeter’s law, open closed principle
  • UML Basics
  • Design patterns fall into three categories: creation, structure, and behavior
  • Common design pattern fundamentals

There are 23 classic design patterns (now there are more than 23, and there are some variations), and all of them are too hard to master. We just need to master some of the common ones, and I’ve flagged the ones that need to be mastered with red flags.

How to learn?

There are a lot of learning materials about design patterns on the Internet, and the quality is uneven, so you should keep your eyes open when you look for them.

I recommend that you familiarize yourself with the theory of UML before reading, because you can’t read any design patterns book without understanding UML, which is the premise of design patterns.

UML Learning Site:

www.w3cschool.cn/uml_tutoria…

Don’t spend too much time learning UML, just get started.

Assuming you are already familiar with UML, here are some books you might want to consider:

Head First Design Mode

Head First is a classic series, and some people like it very much. This book explains the boring design concept lively and interesting, as a start book is worth recommending.

The Design Pattern of Big Talk

Dahua series is a very classic series of books in China, there are many fans. The vaunted design pattern was a first for its time, explaining knowledge in the form of dialogue. Some of the examples are far-fetched, but still a good introduction.

Graphic Design Patterns

The graphic series was written by an author in Japan. One of the classic graphic HTTP is the graphic design pattern in a similar style. Some of the examples in the book may sound strange because they are translated, and it seems that all translated technical books have this problem.

Design Patterns – Fundamentals of Reusable Object-oriented Software

Another big black book, written by GoF, which everyone says is a classic. However, if you want to start learning design patterns, this book is not recommended. Why do you say it? If the classic book does not mention, you will say my food. (harm)

Do you want to read all of them? Of course not. If you’re preparing for an interview, my personal advice is to read just one of them. As for which book to read, you can find the corresponding e-book, pick a chapter to read, and choose the one that suits your appetite and move on.

If you have a few years of coding experience and want to write good code, I suggest you read the basics and absorb the essence of each book.

Computer Fundamentals

The students of the class background to “computer network” and “operating system” these two courses should not be unfamiliar, as to how much to master, you know, are in the exam before one or two weeks of surprise study, haha.

Now large companies are more and more demanding for fresh graduates, the network and operating system these two courses are required. Those who get SSSP Offer have a solid computer foundation.

(1) Computer network

Learn what?

There are so many protocols in the computing network that most of you will be confused, or even know a little bit about HTTP, but there is a lot to master:

  • OSI 7-layer model and TCP/IP 5-layer model
  • Common network protocols: HTTP, TCP/IP, and UDP
  • Network security: asymmetric encryption, digital signature, and digital certificate
  • Network attacks: DDOS, XSS, and CSRF cross-domain attacks

How to learn?

Here’s a classic interview question for a computer network interview: Tell me about the process you took to get from the URL you typed to the final page you presented. From DNS resolution to HTTP, TCP/IP, physical layer protocols, to rendering pages in browsers, you can talk as much as you want. I hope you’ll try to answer that question when you’re done.

A few well-reviewed books: How the Web Is Connected

This book was written by a Japanese author. The article started around the browser to input the url, all the way to the display of the page content until the whole process, graphic and interesting, very recommended!

Illustrated HTTP

It was written by a Japanese writer. This book is a comprehensive and systematic introduction to the HTTP protocol, listing many common communication scenarios and practical cases, I believe that reading will have a sense of enlightenment. The book is very thin, can read in a few days, highly recommended!

TCP/IP Detail Volume 1: Protocols

The classic textbook of computer network, big books, it is difficult to chew. It is suggested to pick the key points.

Finally, amway is a tool to learn the network must-have packet capture magic: Wireshark, if you learn the network did not capture the packet, it is basically equal to learn in vain (a little serious).

(2) Operating system

Learn what?

As a Javaer, you probably don’t work directly with the operating system in your day job, because the JVM helps shield you from many of the differences. But to learn the JVM well, knowing a little about the operating system will help you understand how the JVM works.

The requirements for Java learners can be lowered a bit, but if you’re in C++, this is your focus.

  • The difference between processes and threads
  • Communication between processes: shared memory, pipes, messages
  • Memory management, virtual memory
  • Deadlock detection and avoidance

How to learn?

It’s hard to become proficient in an operating system, but in an interview you need to be able to explain some specific operating system knowledge and your interviewer will be impressed.

Some video learning materials are recommended:

B station:

Massachusetts institute of technology (MIT (without subtitles) 6.828: www.bilibili.com/video/BV1px…

Operating system (Harbin institute Li Zhijun teacher) 32 speak (full) super clear: www.bilibili.com/video/BV1d4…

Recommended book materials: Understanding Computer Systems CSAPP

Computer Systems: A Programmer’s Perspective Student’s Bible, ha ha, black big book, difficult to chew.

Modern Operating Systems (3rd edition)

The classic work in the field of operating system, because it is translated, the more obscure first to skip, read several times to digest.

Introduction to Java

Learn what?

The Java language has been around for more than 20 years, and judging by the Tiobe rankings, it’s been on the list for a long time, so don’t be afraid to go out of fashion after learning Java, at least for a few years now.

If you have the foundation of other languages, such as C, C++, it should be very easy to learn Java, and easy to get started. If you don’t have a language foundation and don’t want to know too much, Java is good. As for Python, at the language level, Python is very simple, you can learn it in a week and write good code, but Java is different, you can only learn the syntax in a week, and it is almost impossible to write good code. In addition, Go language momentum is very strong, you can also pay attention to.

In general, you need to master the following knowledge points to get started with Java:

  • Procedural vs. object-oriented
  • Basic characteristics of object – oriented: encapsulation, inheritance, polymorphism
  • Access control characters: private, default, protected, and public
  • Data types: basic types, reference types
  • Control flow: for, while, switch, etc
  • serialization
  • Exception handling (a bit difficult)
  • Generics (a little harder)

How to learn?

If you are zero basis, I suggest you can find some Java entry video to see, online video mixed, everyone pay attention to screening. Recommend a better platform: B station (www.bilibili.com/) is not to let you see two yuan, there are a lot of learning resources. (hey)

Knock on the blackboard: don’t take on too many videos, because no one is a great person to see the video. The best thing about watching videos is that they give you a quick start. If you want to learn more, what you need is self-learning, self-learning with thought.

Reading is an efficient way of self-learning. I recommend good books:

Java Core Technology Volume I

This book is recommended as the first book on the Java journey, and it covers a wide range of topics and is more pragmatic than, say, 30 days to Learn Java. There are chapters in the book that you don’t need to read, such as Swing GUIs, because writing desktop applications in Java is obsolete.

Alibaba Java Development Manual

Alibaba, this is actually a Java coding specification, coding habits from the beginning to keep good.

“Thinking In Java”

This is a very, very classic book, you want to ask Java people if not heard of this book that is a white learn, haha. In fact, TO be honest, I tried to read this book several times, but I never finished it. One reason is that it is too thick, and the other reason is that I think it is too wordy. So NOW I use it to cushion the table. Therefore, it is recommended that new people do not start to read this book, or you will doubt that life has not yet started to give up, take it as a programming bible, wait for you to have experience in the back to pick up and then read it.

Knock on the blackboard: learning programming to be patient, do not rush, to lay a good foundation. Maybe you are still running some simple examples for a month or two months, which is normal. Learn more and think more.

Advanced Java master

Learn what?

Congratulations you finally Java entry, the difference between bull and rookie is that the rookie always stop at the entry level, and bull has found a new continent, over these several mountains you are not far away from the master.

Java master advance needs to master things very, very much, here is a list of some core knowledge points, must master all of them. This is the high frequency test point of Java interview, is also a part of the legendary Java eight-part essay, the face is good to enter the next side, the face is bad to go home and other news.

  • Java collection class source code
  • The thread pool
  • Java proxy
  • IO model
  • JVM
  • Java Concurrent Programming (JUC)

How to learn?

Java has been a beginner, you want to advance, suggest you do not look for a video to see, while reading a book while thinking.

“Effective Java”

This book is full of programming advice, but it’s really about how to write good code. You need to go from being able to write code (getting started) to being able to write code. This book is worth reading. If you don’t have much coding experience, you may want to postpone this book a little bit, because you may not feel the same way.

Java8 In Action

Why learn Java8 when Java15 is out? Because a lot of companies are still stuck with Java8, Java8 is a big change after Java5, it’s a good study. After Java8, the release is very weak, and changing the JDK version is time-consuming, laborious, and the benefit is not obvious, the company will not want to move. This book explains all the new features of Java8 in detail and is highly recommended.

Understanding the Java Virtual Machine Version 3

It’s written by zhou Zhiming. It’s very, very classic. It’s been updated to the third edition. Java virtual machine is also the JVM, JVM is the Java interview required knowledge, do not understand this direct home and so on the message. This book I read many times, each time after reading there are new harvest, wall crack suggest you read.

The Art of Concurrent Programming in Java

This is a book devoted to Java concurrency, covering various locks, common security collection classes, and basically covering all the content in JUC (short for java.util.Concurrent package). You must have learned something after reading it. Highly recommended!

Some of the books recommended above may not be easy to read and are recommended to read several times. The book does not understand the place can be searched on the Internet, more to find some high-quality blog or public number to see, such as wechat search: love laughing architect, with the graphical way to explain a variety of Java core technology.

So far the Java language features have been basically learned, even if you can’t reach the level of a master, you are on the right track.

Basic Framework (SSM)

Learn what?

Learning Java language features can be tedious, but then you can learn the basic framework and start working on some projects, such as the Spring framework, which is very popular in the Java field, and is customized for the Java back end, very easy to use.

Before Spring was popular, there were frameworks like Struts, which for a variety of reasons were defeated by Spring.

You can often see the SSM abbreviation on the Internet, in fact, is Spring+SpringMVC+MyBatis abbreviation.

Here’s what you need to know:

  • Spring family bucket (Spring, Spring MVC, Spring Boot) use
  • ORM framework (MyBatis, Hibernate)
  • Principle of the Spring
  • ORM framework principles

How to learn?

The best way to learn the SSM framework is to complete a simple project. It is recommended to follow the video and type out the code, so that you can get familiar with the development process of the project and bring a sense of achievement to yourself.

Knock on the blackboard: periodic sense of achievement is very important, without this it is easy to give up learning, so do not set a small goal for yourself, add chicken leg what.

There are a lot of novice in the project is very tangled interface, as a Java backend programmer, you are not full stack development, tangled this why, my advice: either do not interface only write interface, or write their own HTML, do not need to be beautiful, to achieve the function.

What do I need to do after I finish the project? The answer: a deep understanding of the framework principles. Will use the framework does not mean that you understand the framework, as a programmer with pursuit, understand the principle is always a required course, who let this line is too roll, you have the best people without you.

Recommended books: Inside Spring Basics

First of all, this is a book about Spring source code, not about projects. If you need a deeper understanding of Spring’s technical principles, this is a highly recommended book. It’s a little bit difficult. Read it a few times.

Inside MyBatis Technology

MyBatis is a kind of ORM framework, used more in China, it is said that in foreign countries like to use Hibernate. This book on the use of MyBatis and the basic principles are introduced more clearly.

Knock on the blackboard: technology updates iteration quickly, grasp the essence of technology to advance with The Times.

As for the basic framework part, the great gods’ learning method is: use the framework -> understand the framework -> build wheels.

Microservices framework

Learn what?

Microservice architecture has become very popular in recent years because traditional single-unit architecture and service-oriented architecture are gradually unable to meet the needs of the rapid iteration of the Internet. Microservices can make it easier to provide continuous inheritance and continuous deployment capabilities, allowing products to be delivered to market more quickly.

In fact, service-oriented architecture has been proposed five or six years ago. After a period of low ebb, some useful frameworks gradually emerged after the bubble was removed. SpringCloud is the representative of foreign countries, and Dubbo is the representative of domestic countries.

SpringCloud is different from Dubbo but a lot of the basic principles are similar, and you need to learn the essence of the technology. Here are some key points:

  • Dubbo framework
  • SpringCloud framework
  • Service registration and discovery
  • Distributed service link tracing
  • Services are isolated, fused, or degraded
  • The service gateway

How to learn?

Both springCloud and Dubbo are well documented on their website:

  • You can switch to the Chinese version of Dubbo website dubbo.apache.org/
  • SpringCloud website spring. IO/projects/sp…

You may be confused by the technical documentation on the website, but these are the most authoritative materials, and they are first-hand.

SpringCloud and Dubbo are technologies that have just become popular in recent years. At present, there are still few books related to SpringCloud and some classic books are missing. I will list a few books for you to obtain on demand.

Understanding Apache Dubbo in Action

Dubbo was originally open source by Alibaba and later donated to Apache. I suggest you read this with the source code to see together.

Spring Cloud Microservices In Action

You’d better learn About Spring and Spring Boot before you read this book, otherwise you’ll be confused. The other thing is that this book was published in 2017, so it looks a little bit older, so be careful to distinguish between old and new.

If technology sites and books are not enough for you, I suggest you search for some videos to learn, which are not recommended here in case they are advertisements. Recommended search platforms: B, MOOCs, netease Cloud Classroom.

Knock on the blackboard: The micro service framework covers a lot of content, but it is also a difficult technology, everyone stay calm and patient.

Common middleware

Learn what?

End users do not use middleware directly, in other words middleware is not a mass consumer software product. But in large companies middleware is indispensable, it is the basic components and services that support large website architectures, so it is very, very necessary to learn.

Middleware is usually used to manage and interact data between different components/services in a large distributed system.

There are many excellent open source middleware in the industry, usually according to the needs of the business to introduce a number of systems, the following list of some common, are required to learn, not optional ha.

  • Cache: Redis, Memcached (Redis recommended)
  • Message queues: Kafka, RocketMQ, RabbitMQ, ActiveMQ, ZeroMQ (Kafka recommended)
  • Database middleware: ShardingSpere, Mycat

How to learn?

Each middleware covers so much that it takes a lot of time to master it.

Redis Official Website:

www.redis.cn/

Learn common redis commands as a dictionary

Kafka’s official website:

kafka.apache.org/

ShardingSpere website:

Shardingsphere.apache.org/index_zh.ht…

Mycat Authoritative Guide online PDF version:

www.mycat.org.cn/document/my…

Recommended books: Redis Design and Implementation

This is one of the best books in Redis, which explains in detail how Redis is implemented. If you just want to learn how to use it, you can skip some chapters.

Understanding Kafka: Core Principles of Design and Practice

This book is suitable for beginners literacy is also suitable for advanced masters, want to know how to use the first four chapters can be, want to in-depth learning can start from the fifth chapter to see, write very good, recommend learning!

Distributed Database Architecture and Enterprise Practice — Based on Mycat Middleware

There are very few books on Mycat. This book was written in 16 years, so it’s a little old. If you’re interested in Mycat, you can read it, but it’s not recommended.

If you want to further study after reading this book, I suggest you pay attention to the two courses of geek Time: Hu Xi: Kafka Core Technology and Actual Practice. The teacher is Apache Kafka Committer, very professional. Jiang Dejun: Redis Core Technology and Actual Combat

But the course is paid for, so be careful if you’re on a budget. Free resources are also available online, depending on your search ~

Learning middleware is a long process that requires a lot of theoretical knowledge as well as practical experience.

For example, when you learn Redis, you have to think about the use of the five basic data types, what is the principle of bloom filter, and how to implement distributed locking with Redis. Learning with problems is very efficient.

For example, you learn Kafka message queue, to compare the advantages and disadvantages of common message queue, Kafka why high throughput, Kafka will not lose messages and how to solve.

For example, if you learn database middleware, you want to think about why the database should be divided into sub-table, sub-table ID processing and so on.

The database

Learn what?

Database is very important, the interview is also required, can take an examination of the point is very much, can take an examination of very shallow: ask about the use of SQL, can also take an examination of very deep: ask index and lock implementation principle. Here are some common ones.

  • Basic database theory: paradigm, indexing principle, database engine
  • SQL Basic Syntax
  • SQL tuning, explain execution plan
  • Database Transactions (ACID)
  • Database lock: optimistic lock, pessimistic lock, table lock, row lock and so on

How to learn?

It is suggested that the students of database zero foundation should first learn the basic theory of database, because I see a lot of people are the first to learn SQL, and eventually only can use it, to the later SQL tuning time is very confused. This section can also be skipped if you just want to use the database.

There is a very classic textbook about the principle part “database system concept” for learning, classic books are generally more difficult to chew pit is also relatively thick, suggest that you look at the catalog first, pick the key to see. Those of you who studied this book in college can skip it.

Have some theory after you can start to learn SQL syntax, here recommended a MySQL must know must be “, while reading a book while tapping at the computer.

Of course, the interview factory will certainly ask more difficult things, you need to understand the principle of index, transaction ACID, lock, ask database these things must test oh!

MySQL Learning Book list: “Database System Concepts”

Classical database textbooks, to understand some of the basic principles, can be slightly read.

MySQL must Know, Must Know

SQL syntax introduction book, recommended!

Inside MySQL technology: InnoDB Storage Engine

Understand the storage engine and the principles of transactions, locks, and indexes.

Distributed architecture

Learn what?

Distributed this part is the additional points of the interview, answer the interviewer will feel that you have deep technical skills, answer is not good, as long as you are good in front of the foundation can also pass. Therefore, as a pursuing technical person, do not miss the opportunity to add points.

There are a lot of distributed related content, here are a few common knowledge points encountered in the project or interview:

  • Distributed transactions: Two-phase commit (2PC), Compensated Transaction (TCC)
  • Distributed lock: based on relational database (MySQL), Redis, Zookeeper
  • Distributed ID: Snowflake, Meituan Leaf

How to learn?

This part of the content is very difficult to learn, in a lot of books are gently brought, not in-depth explanation of the principle, so it is not recommended.

So how do you learn? You can search for quality blogs on the Internet for each knowledge point, and I will gradually explain these knowledge points more, please look forward to, welcome to urge more yo.

Must master the tool software

He that would do a good job must sharpen his tools. As a Java developer, you need to learn the software that is commonly used in the industry. The more familiar you are with the software tools, the more efficient your code will be, and the sooner you are likely to leave work (it is too difficult to work).

  • Java’s smartest IDE: IntelliJ IDEA (Please give up Eclipse, I have a bunch of reasons to sleep on you)
  • Best version management tool on the planet: Git
  • Perennial dependency management tool: Maven
  • Docker

If you can’t use these software well, it just means… You can learn more.

List of learning resource websites

(1) Video websites

  • B site (recommended) : www.bilibili.com/
  • E-cloud classroom: study.163.com/
  • Geek Academy: www.jikexueyuan.com/
  • Moocs: www.imooc.com/

(2) Columns

  • Geek Time (recommended) : time.geekbang.org/
  • Gitchat gitbook.cn/

(3) the lot

  • Java Knowledge Map (recommended) : github.com/smileArchit…

(4) Technology Blog:

  • Gold Mining Community (recommended) : juejin.cn/
  • CSDN blog: blog.csdn.net/
  • Blog Garden: www.cnblogs.com/
  • InfoQ: xie. InfoQ. Cn /
  • Think no: segmentfault.com/
  • Open Source China: www.oschina.net/blog

(5) Search engine:

  • Baidu: www.baidu.com/
  • Google: www.google.com/

(6) Knowledge questions and answers:

  • Zhihu (recommended) : www.zhihu.com/
  • Stackoverflow (recommended) : StackOverflow.com/

(7) Brush questions:

  • Force button (recommended) : leetcode-cn.com/
  • Cow: www.nowcoder.com/

(8) Cloud Notes:

  • Graphite: shimo. Im /
  • Language finch: www.yuque.com/
  • Youdao Cloud note: Note.netease
  • Evernote: www.yinxiang.com/

Look at personal habits to choose, not recommended.

(9) Online drawing:

  • processOn:www.processon.com/
  • drawio:app.diagrams.net/

Each has its own characteristics, all recommended.

Frequently Asked Questions (FAQs)

(1) How to learn easy to forget?

So this is the number one problem that you’re going to have, how do you solve it? Repeat.

For example, if you’re learning About Spring annotations, and you suddenly find an annotation @aspect, you don’t know what to do with it. You might look at the source code or read it on a blog, and you get it in half an hour. The next time you see @aspect, you’re a little frustrated. You quickly open the web page and learn it in five minutes.

From the comparison between half an hour and five minutes, we can find that learning more once is one step closer to truly mastering the knowledge.

Human nature is easy to forget, only by deepening the impression, repeat learning to truly master, so MANY books I recommend you to read several times. There are no so many geniuses, he just read the book several times more than you.

(2) Do you recommend reading all these books?

Of course not! Some books are of the same type. The authors write books with different focuses. We should learn to pick the key points to read.

Get a book, first of all, to look at the table of contents again, generally speaking, the first few chapters of the book are the introduction of the content, if you have the basis, you can directly skip to the principles of the analysis or combat part.

(3) How long do you need to study to become a technical expert?

There is no end to learning!

The industry says that with continuous hard work, one to two years can be achieved at the primary level, three to four years at the intermediate level and five years at the advanced level.

In fact, everyone’s learning ability and energy are not the same, time reference is not significant.

As long as you have your own achievements in a direction or field, you can be called Daniel; If you are the technical backbone, technical expert, architect in the company, it can also be called a bull.

Knock on the blackboard: technical learning should not be impetuous, a bit more humility to learn a bit, there will be days.

(4) Python and Go are very popular nowadays. Should WE learn them directly?

Don’t worry about language. Language is just a tool. Today Go is hot, tomorrow there will be other languages.

After graduation, one of my classmates went to alibaba to write Java, then he moved to shenzhen Tencent to write C++, and now he jumps to bytedance to write Go. In front of the big boss, these languages just have different syntax. So suggest everyone to lay a good foundation, promise me to lay a good foundation.

— END —

In order to maintain the quality of this article has been written for two weeks, I hope you can find the direction when learning, don’t be confused, come on.

If it helps you, you can click “like” to let me see that someone is supporting you. Thank you!

Who am I: ☕ read a few years: Huazhong university of science and technology master graduate; 😂 wave over several big factories: Huawei, netease, Baidu…… 😘 has always believed that technology can change life, willing to maintain the original aspiration, refueling technology people!

Wechat search public number [love laughing architect], with a graphical way to tell you a variety of core technologies.

Finally recommend a treasure open source project, github.com/smileArchit… Here’s a complete map of the Java technology stack, so if you’re confused, take a look at the next steps. It is recommended by anyone who has seen it!!