preface

Hello, everyone. I am a little boy picking up snails. A lot of readers have been talking to me lately asking for a back-end learning route. Learning direction and route is very important, clear learning route, can let you get twice the result with half the effort on the road to success. So take advantage of this weekend to put together a complete back end learning roadmap (Java oriented). I believe that after reading, whether it is still in school students or already working partners, will be helpful.

  • Public number: a boy picking up snails

1. Data structure and algorithm

1.1 Why are data structures important?

I remember when I was a freshman, we had a required course: C++ data structure and algorithm. There is no doubt that data structures are fundamental and important to programmers. There is a saying in the program world, program = data structure + algorithm. See the importance of data structures.

In everyday business development, there is almost no need to implement a data structure from zero to one. At most, it’s a recursive algorithm to parse the file and sort the data. But there’s more to it than that. If we go back to the programming language, for example Java, the underlying framework often sees data structures.

The common collections ArrayList and LinkedList, for example, are the underlying data structures of arrays and linked lists. Another example is the HashMap, which we used very frequently. Before JDK8, it was an array + linked list. After JDK8, the underlying data structure is array + linked list + red-black tree. Only familiar with the data structure, in order to better grasp the underlying source knowledge.

Other programming languages are similar, so learning data structures is really important.

1.2 Data structure and algorithm-related data recommendation

How do you learn data structures and algorithms? There is a road to the mountain, ha ha. So you can read more books! Which book do you want to read?

Data Structure and Algorithm Analysis -C Language Description

Data Structure and Algorithm Analysis -Java Language Description

If you’re a very energetic fellow, you can chew on this book: Introduction to Algorithms.

The ebook is ready for you and can be found in the GitHub repository below.

Making the address

1.3 Video Recommendation

B station, zhejiang University of a data structure class is quite good. Very classic also quite complete, very suitable for small white entry.

Video link: www.bilibili.com/video/BV1JW…

2. Computer networks

2.1 Why are computer networks important?

Computer network is a required course for computer majors. In my school, we will learn such a course in sophomore year, and the textbook is “Computer Networks: The Top-down Approach”.

Why are computer networks important? Let me give you two simple examples

  • An HTTP request returned a 403 status code, and some guys didn’t know it was permissions.
  • For example, if you call a third-party interface and it returns a timeout, you need topingThe ortelnetLet’s make sure the network works, etc.

2.2 Computer network related books recommended

Computer Networking: The Top-down Approach

This classic textbook on computer networking uses the author’s original top-down approach to the principles and protocols of computer networking. Since its first edition, it has been selected as a textbook by hundreds of universities and colleges and translated into 14 languages.

Illustrated HTTP

This book is a comprehensive and systematic introduction to the HTTP protocol, the foundation of the Internet. The development history of HTTP protocol is described in detail. The structure of HTTP protocol is carefully analyzed, and many common communication scenarios and practical cases are listed. Finally, it extends to Web security, the latest technology trends and other aspects.

How the Web Is Connected

The book takes the form of a journey of discovery, starting with a web address typed into a browser and tracing the entire process to the page’s content, with illustrations and captions explaining the full picture of the web and focusing on how actual web devices and software work.

2.3 Computer network video recommendation

B station computer network micro classroom, feel quite good, to everyone recommend

Video address: www.bilibili.com/video/BV1c4…

3. The database

3.1 Why are databases important?

The back-end is to manipulate and store data, so as back-end development, the database is the main learning module. Database is also a required course for computer majors. Our school, is the third year will learn this course, textbook textbook is this “introduction to database system”.

If you can’t write basic SQL, you’re not a backend developer. Of course, learning database skills and being able to write SQL statements are just basic literacy. Want to become a senior background development engineer, but also need to learn SQL tuning, sub-database sub-table and so on.

3.2 Recommended database-related books

SQL Must Know must Know

The book is a classic SQL bestseller popular by readers around the world, the content is rich, concise and clear, for Oracle, SQL Server, MySQL, DB2, PostgreSQL, SQLite and other mainstream databases provide a large number of concise examples.

High Performance Mysql

High Performance mysql(Version 3) is not only for database administrators (DBAs), but also for developers. No matter database novice or expert, I believe all can gain from this book.

MySQL Tech Insider: InnoDB Storage Engine

MySQL Tech Insider :InnoDB Storage Engine (Version 2) provides an in-depth analysis of InnoDB’s architecture, implementation principles, and working mechanism from the perspective of source code. It also provides a lot of best practices to help you master InnoDB systematically and deeply. More importantly, It provides excellent guidance for designing and managing high-performance, highly available database systems.

3.3 Database related articles are recommended

I have written a lot of MySQL database related articles before, each one is very good quality, I recommend to you, I believe you will have a harvest after reading.

  • See a time to understand: MVCC principle in detail

  • Order by in detail

  • MySQL index base: B+ tree

  • Ali gave some SQL and asked how many tree searches should be performed?

  • 21 Good Habits for writing SQL in MySQL (modified version)

  • MySQL > select * from ‘MySQL’;

  • This article thoroughly reads the four isolation levels of MySQL transactions

  • Mysql deadlocks

  • Actual combat! How to solve deep pagination problem in MySQL

  • Back-end Programmers must have: 30 tips for writing high quality SQL

  • Essential for backend programmers: Ten miscellaneous diseases of index failure

  • Production problem analysis! Delete in subquery does not move index? !

3.4 Course Recommendation

  • Geek Time’s MySQL 45 Lecture

MySQL 45 lectures, really good, the course explained in simple, lively and interesting, not only suitable for development, but also for operation and maintenance.

3.5 Video Recommendation

Recommend a suitable for junior and intermediate engineers to watch SQl video, the lecturer is a foreigner, the content is very good.

Video address: www.bilibili.com/video/BV1UE…

4. Operating system

4.1 Why learn the operating system?

To quote a reply from Zhihu:

For example, if you want to develop a network proxy software, but takes a packet from a socket and forwards it to another socket, it seems that the operating system has nothing to do with it.

During implementation, if you only use one thread to process network IO, as long as the CPU can hold up, the latency will be within milliseconds. However, if you use multiple threads to process incoming/outgoing packets separately, the network is under a little more pressure, and the added delay can be tens of milliseconds.

To understand why, you need to have a deep understanding of operating system scheduling principles, time slices, and other concepts.

Application layer development really only needs to touch the visible part of the iceberg above the sea; But that’s just enough to make crappy software; Nine-tenths of the iceberg is buried under the sea, and the visible part of the iceberg is, after all, one: the software floating on the surface also affects the invisible part of the iceberg, and is affected by the invisible part of the iceberg. Without a basic understanding, you will never be able to debug crappy software when the invisible part of the iceberg hits you through the visible part.

4.2 Recommended Operating System Books

Modern Operating Systems

This book is a classic in the field of operating systems. Book focused on the basic principle of operating system, including processes, threads, memory management, file systems, input/output, a deadlock, etc., but also contains the computer security, multimedia operating system, handheld computer operating system, microkernel, multi-core processor virtual machine and operating system design, etc.

How the Program Works

Book to start from the internal structure of the computer, in the form of a caption in detail the binary, memory, data compression, the source and executable files, the relationship between operating system and application, assembly language, hardware control methods such as content, the goal is to make readers understand from user double-click on the program icon to start running between what happened. “If it were you, how would you introduce it?” Column, elementary school students, grandma for the object to explain the operation principle of the program, very interesting. Illustrated and easy to understand, this book is very suitable for computer enthusiasts and related practitioners reading.

4.3 Operating System Video Recommendation

Tsinghua University open class: operating system, speak very well, recommend a wave

Video address: open.163.com/newview/mov…

5. Computer composition principle

5.1 Why do I need to learn the principles of computer composition

Whether front-end or back-end development, we program the program, are running on the computer. In daily development, there may be little access to the underlying computer. But did you know that the high-level languages we use, such as Java, Python, and Go, eventually become computer instructions and then operate computer hardware? Of course, these computer foundation knowledge point, it is ok to go to school in school professional class.

If you are not a computer science major, halfway home. I recommend this book and a good video

5.2 Computer Composition principle book recommended

This book mainly talks about computer system architecture, computer bit operation, instruction set architecture, processor control.

5.3 Video Recommendation

Harbin Institute of Technology computer Composition principle:

Video address: www.bilibili.com/video/BV1WW…

6. The cache

6.1 Why do I need to learn caching

If you need to query the database frequently, using caching can reduce the strain on the database and improve interface performance. The most common caches are Redis,memcache, and JVM native caches.

6.2 Cache Related Books Are recommended

Redis Design and Implementation

It systematically and comprehensively describes the internal operation mechanism of Redis. Rich graphics, clear description, and give a lot of reference information, NoSQL database developers desk essential. Includes most Redis single-machine features, as well as all multi-machine features.

Book comprehensive interpretation of the basic function and application of Redis in consideration of actual development and operational monitoring online and use cases, analyzes and sums up the actual development operations in the “trap”, as well as the reasons behind, contains large cluster development and management of the scene, application cases and development skills, for the efficient development operations provides a number of practical experience and Suggestions.

6.3 Recommended Redis related articles

  • Why is Redis so fast?

  • How to ensure the consistency between Redis and MySQL?

  • 21 tips you must Know to use Redis

  • 2 w words! Answer 20 Classic Redis interview questions! (Collector’s Edition)

6.4 Video Recommendation

Redis entry, recommend B station this video: “Is still silicon Valley – Redis6 entry to master”

Video address: www.bilibili.com/video/BV1Rv…

7. Backend mainstream development languages

The current mainstream backend development languages are as follows:

7.1 Java

I am currently a Java development engineer. Java is generally used for applications. It has been active as a popular server-side language for many years. Many companies are looking for Java programmers. So, choose to learn Java, maybe not the best, but certainly not too bad. The current banking and financial institutions, almost all backend Java language.

These two books are recommended for learning Java and reading

Ideas for Java Programming

The god book of Java! The book has won wide acclaim from programmers around the world, explaining even the most obscure concepts with small, straightforward programming examples. From the basics of Java syntax to the most advanced features (in-depth object-oriented concepts, multithreading, automated project building, unit testing, debugging, etc.), this book will guide you step-by-step.

In-depth Understanding of the Java Virtual Machine

This book is an in-depth look at the JVM from two dimensions of working principle and engineering practice, and is recognized as a classic in the computer field.

Of course, there are many, many good books on Java:

A Java programmer’s book list, please note check

As for the video, if you are zero basic entry, recommended to watch Han Shunping’s video: Zero basic 30 days to learn Java

C + + 7.2

If you are still in college and you want to join Tencent, there is a great opportunity to learn C++ well. Because Tencent or find a lot of C++ background. C++ Primer, Effective C++, C++ standard library

Introductory video, you can see this: dark horse programmers originality work | c + + tutorial from 0 to 1 introduction to programming, learning to program is no longer difficult

Video address: www.bilibili.com/video/BV1et…

7.3 the Python

Python can be used for data analysis, machine learning, backend development, Web development, front end, artificial intelligence, big data, and more. It is very powerful, and relatively simple, so it is very popular with developers. For starters in Python, read this book

Python Programming: Getting Started to Practice

This is a good book for beginners. It is really taught hand in hand.

Smooth Python

Great book, understanding Python from the bottom up. For intermediate and advanced Python programmers who want to expand their knowledge.

7.4 the Go

At present, many big companies, such as Tencent, Universe bar, shrimps and so on, all use Go language. So learning Go is also a good choice. There are several good books on Go.

Go Expert Programming

“Go Expert Programming” in-depth explanation of the Go language common features of the internal mechanism and implementation of the way, most of the content from the Go language source code analysis, and extract the implementation principle. By reading this book, readers can quickly and easily understand the inner workings of the Go language.

The Go Programming Language

This book code example is quite good, basically a lot of concepts, words do not understand, read the code several times, it is easy to understand

8. Message queues

Message queues include ActiveMQ, RabbitMQ, ZeroMQ, Kafka, MetaMQ, RocketMQ. Message queue is essentially a process in which the producer sends the message to the queue for storage and then the message consumer. It mainly solves application coupling, asynchronous message, traffic cutting and other problems.

Message queues are a must learn for back-end programmers! You can read these books

The Definitive Guide to Kafka

The book details how to deploy Kafka clusters, develop reliable event-driven microservices, and build scalable streaming applications based on the Kafka platform. Through detailed examples, you’ll learn about Kafka’s design principles, reliability guarantees, key apis, and architectural details such as replication protocols, controllers, and storage tiers.

RabbitMQ Field Guide

Starting from the concept of messaging middleware and the history of RabbitMQ, RabbitMQ Combat Guide mainly describes RabbitMQ installation, use, configuration, management, operation and maintenance, principle, and extension.

Kafka message queue Kafka quick start

Video address: www.bilibili.com/video/BV1a4…

9. Java Web

If you learn Java Web well, you will be able to develop your own website. The Java Web includes front-end basics (HTML, CSS, JS, and so on), servlets, JSPS, filters, sessions, cookies, SpringMVC, and so on.

Recommend this video: silicon Valley latest version of JavaWeb complete tutorial, JavaWeb zero basic introduction to the complete version

Video address: www.bilibili.com/video/BV1Y7…

10. Design patterns

How can you have fun writing code if you’re pipelining code every day? The best way to do this is to use design patterns to optimize your business code.

Design patterns represent best practices and are generally adopted by experienced object-oriented software developers. Design pattern is a solution to the common problems faced by software developers during software development. These solutions have been developed by numerous software developers over a long period of trial and error.

Here are six principles to learn about design patterns:

  • Open closed principle: Open for extensions, closed for modifications. When the program needs to be extended, you cannot modify the original code to achieve a hot plug effect.
  • Richter’s substitution rule: Wherever a base class can appear, a subclass must appear. Use abstract class inheritance instead of concrete class inheritance.
  • Dependency inversion principle: Programming for interfaces that rely on abstractions rather than concrete ones.
  • Interface isolation principle: It is better to use multiple isolated interfaces than a single interface. It emphasizes reducing dependency, reducing coupling.
  • Demeter’s Law: a software entity should interact with as few other entities as possible, establishing connections through intermediate classes.
  • Rule of composite reuse: use composition/aggregation rather than inheritance whenever possible.

I recommend these books for learning design patterns

Head First Design Patterns

This book covers 23 design patterns and is fun to read with easy to understand examples. It’s a great introduction to design patterns

Design Patterns

This book summarizes the most valuable lessons learned in object-oriented design by selecting 23 design patterns from object-oriented design examples and presenting them in a concise and reusable form. It is suitable for university computer students, graduate students and related personnel reference.

Graphic Design Patterns

194 charts + Java sample code = Easy to understand GoF’s 23 design patterns

Learning video words, recommend B station this: Silicon Valley Java design pattern (diagram + framework source code analysis)

Video address: www.bilibili.com/video/BV1G4…

11. Code optimization

It doesn’t make sense to be a senior development engineer or even a senior technologist without a general knowledge of code optimization. Even if we add, delete, change and check in our daily development, there are many areas worth optimizing the code.

Recommended books on optimizing code:

Refactoring: Improving the Design of Existing Code

The authors present a set of proven practices for clean code, which are embodied in the book as rules, supported by positive and negative examples from real-world projects. By following these rules, you can write clean code and improve the quality of your code.

The Code Clean Way

The authors present a set of proven practices for clean code, which are embodied in the book as rules, supported by positive and negative examples from real-world projects. By following these rules, you can write clean code and improve the quality of your code.

“Effective Java”

The book contains 90 entries, each discussing a rule in Java programming. These rules reflect some useful practices that the most experienced good programmers use in practice.

12. The distributed

The current system architecture is distributed deployment. There are some key points to learn about distribution:

12.1 Distributed Lock

As distributed locks, there are database locks, Redis distributed locks, and ZooKeeper distributed locks.

I wrote an article about redis distributed locking:

Seven options! Discuss the correct use posture of Redis distributed lock

12.2 Distributed Consistency Algorithm

Distributed consistency algorithms include PAXOS, Raft and Zab.

Here’s a book to recommend:

Principles and Practices of Distributed Consistency from Paxos to Zookeeper

Paxos to Zookeeper: Principles and Practices of Distributed Consistency From the theory of distributed consistency, to briefly introduce several typical distributed consistency protocols and solutions to distributed consistency problems, especially Paxos and ZAB protocols.

12.3 Distributed Transactions

Big companies like to ask about distributed transactions during interviews. About distributed transactions, you need to know data consistency, CAP theory, BASE theory, distributed transaction solutions (such as TCC, 2PC, local messaging, etc.).

I’d like to recommend an article I wrote earlier.

Essential for backend programmers: Distributed Transaction Basics

12.4 Consistent Hash Algorithm

All you have to do is learn consistent hashing with these 18 graphs

12.5 the service

Dubbo, Spring Cloud, Zookeeper, RPC, Eureka, Gateway, Sentinel?

For starters, Dubbo is a good place to start. After a basic understanding of RPC and distributed concepts, I started to work on the Spring Cloud bucket.

Recommend B station, still Silicon Valley Dubbo tutorial

Video address: www.bilibili.com/video/BV1ns…

There are also video tutorials from SpringCloud in silicon valley

Video address: www.bilibili.com/video/BV18E…

By the way, I recommend this book: Design Patterns for Microservices Architecture.

This book will teach you how to develop and deploy production-level microservices architecture applications. This valuable set of architectural design patterns builds on decades of experience in distributed systems, and Chris adds new patterns to development services and combines them into systems that can reliably scale and execute under real-world conditions. More than just a catalog of patterns, this book provides experience-driven advice to help you design, implement, test, and deploy microservices-based applications.

13. Spring, SpringMVC, MyBatis, SpringBoot, SpringSecurity, Netty

Java development, daily need to use the framework. Recommend B station related learning video:

  • The latest version of the tutorial is still silicon valley – Spring 5 framework (idea) : www.bilibili.com/video/BV1Vf…
  • Is still silicon valley – for SpringMVC 2021 latest tutorial: www.bilibili.com/video/BV1Ry…
  • Is still silicon valley – MyBatis combat tutorial full full version: www.bilibili.com/video/BV1mW…
  • LeiFengYang 2021 SpringBoot2 zero introductory: www.bilibili.com/video/BV19K…
  • Is still silicon valley – SpringSecurity framework tutorial: www.bilibili.com/video/BV15a…
  • It is silicon valley Netty tutorial: www.bilibili.com/video/BV1DJ…

14. Development specifications

It is important to follow specifications when writing code, because non-standard code is expensive to maintain and prone to bugs.

Recommend a book:

Alibaba Java Development Manual

It combines the author’s development experience and architecture process to extract the collective programming experience and software design wisdom of Alibaba Group’s technical team, and condenses them into three-dimensional programming specifications and best practices.

Video words, recommend this: Huashan edition “Java development manual” exclusive explanation

Video address: developer.aliyun.com/live/1201

15. Version-in-pipe tools

The version management system includes SVn and Git, and Git is generally used.

Familiarity with and use of Git is a must for every developer. You need to know how to submit code, push code to a remote, pull code from a remote, roll back code, merge code to resolve code conflicts.

Recommended learning Git video: 【 Still Silicon Valley 】5h get through a full set of Git tutorial IDEA version

Rookie tutorial: www.runoob.com/git/git-tut…

I have written an article about Git for a year before, which is quite good: programmer’s essential foundation: Git command all-round learning

16. Safety

The security part, it’s important. As a background development engineer, I need to master the encryption and decryption process, signature verification, Web security faQs, server security vulnerabilities, and basic authorization and authentication.

I wrote an article about security vulnerabilities before, you can look at it if you are interested.

Programmer essential foundation: 10 common security vulnerabilities analysis

17. Search engines

The search function is usually implemented based on Elasticsearch when there is a large amount of data.

  • Lucene, a subproject of the Apache Software Foundation Jakarta project, is an open source full text search engine toolkit, but it is not a full text search engine, but a full text search engine architecture, providing a complete query engine and indexing engine
  • Elasticsearch is a Lucene-based search server. It provides a distributed multi – user – capable full – text search engine based on RESTful Web interface.
  • Solr is an independent enterprise search application server that provides an API interface similar to Web Service. Users can submit XML files in a certain format to search engine servers through HTTP requests to generate indexes. You can also make a lookup request through an Http Get operation and Get the result back in XML format.

If you want to get started on Elasticsearch, check out Elasticsearch in Action

Of course, it’s best to read the official documentation.

18. linux

Most companies, their projects are not running on Linux servers. Therefore, it is necessary to learn the basic Linux commands and the writing of shell scripts.

If possible, I suggest you buy a cloud server and set up a Linux virtual machine environment locally.

Recommend this book: Birdman’s Linux Recipes: Basics

If you want to get started, this is the place to go. Very, very detailed.

Learning video: [Xiaobai introduction easy to understand] 2021 Han Shunping a week to learn Linux

Video address: www.bilibili.com/video/BV1Sv…

19.Java Practice Project

Here are a few Java projects to get started with:

  • Silicon valley is still raising net Java project practical development tutorials (contain SSM framework, micro service architecture, seal jie speaker) : www.bilibili.com/video/BV1bE…
  • Dark horse programmer Java project hospitality rent, Java enterprise solutions (Spring buckets of authorized + + distributed solution + WeChat crawler solution, etc.) : www.bilibili.com/video/BV1sZ…
  • Mall-learning:github.com/macrozheng/…
  • SpringBoot e-commerce mall system Mall4j: github.com/gz-yami/mal…
  • Dark horse programmer Java project SaaS mobile office complete edition of iHRM human resources management system “, cross-industry SaaS office integration solution: www.bilibili.com/video/BV18A…

20. leetcode

In the current Internet environment, if you want to enter the big factory, you must brush Leetcode. Because every big factory will arrange 1~2 leetcode algorithm problems. If you are planning to change jobs, it is advisable to scan the Leetcode topic in advance. The leetcode questions which medium difficulty and easy questions, brush through almost.

If you read, recommend “Sword Finger Offer” and “Labuladong Algorithm cheat sheet”

Address :leetcode-cn.com/

If you watch the video, I recommend this: This is probably the best data structure algorithm that IS taught by LEetcode.

Video address: www.bilibili.com/video/BV1a5…