This may be the most comprehensive Java learning route

Hello everyone, I'm Dabin~

My undergraduate degree is not computer science. I started to learn Java by myself in my senior year, and got offers from several big companies in the Internet . I am quite experienced in learning Java. Let me share the Java self-study route I organized .

Here I also remind the younger students to determine their future direction as soon as possible, whether it is graduate school or work, and if they are looking for a job, they should also determine the job position as soon as possible. Those who want to change careers need to spend more time preparing. Many students only think about what they want to do in the future when they are about to graduate in their senior year. It is already a bit late at this time. If you miss the school recruitment and go to the social recruitment channel to find a job, the difficulty will increase by one level, and it will be too late to regret it!

Let me talk about my own experience (with self-study route).

contact programming

I basically never touched a computer before college, and I didn’t have a computer at home, and I never went to an Internet cafe. In computer courses in high school, I had to complete a self-introduction PPT for the final homework, and I didn’t know how to do it. In the end, I just copied the homework at the same table (I couldn’t copy and paste. I had to teach at the same table, covering my face).

One month after the college entrance examination, I bought a computer and started using it.

In the first semester of freshman year, the department opened a C language course, which was also my first contact with programming. The teaching materials are in English, and it is quite difficult to learn at the beginning. Every time I do a coursework, the students around me are copying and pasting, and so am I.

I remember that when I was talking about the chapter on pointers, I was confused. I was distracted for a while, and when I looked back, I no longer knew what I was talking about.

Later, there was an interest group in the department, because I was usually free and wanted to tinker with something, so I joined it. At the beginning, I didn’t understand anything. The teacher recommended me to learn about 51 single-chip microcomputer. I took a thick book about 51 single-chip microcomputer, followed the demo in the book, and discovered a new world! It turns out that programming is so interesting!

I remember when I ran out of the running water lamp for the first time, I was so excited and full of sense of accomplishment! Some motors, infrared remote control and other demos are also written later. Since then, my interest in learning programming has been sparked.

In the sophomore year, the counselor released the information of the National Electronic Design Competition in the group. The competition questions were related to the quadcopter. At that time, I was more interested in the quadcopter, so I invited two friends to participate together. There is only one month before the competition. During that month, I left early and returned late every day. While eating, I was still thinking about which piece of code had a bug. Although I failed to win the award in the end, I learned a lot of knowledge and improved my programming ability in the process.

decide to transcode

In a blink of an eye, the junior year started, and I began to struggle with whether to take the postgraduate entrance examination or work. After thinking about it for a week, I also entered the laboratory of the department to experience the life of a graduate student. In the end, I followed my inner thoughts and decided to find a job directly.

I consulted the employment situation of the brothers and sisters in this major in the past years, and most of them still found jobs in the Internet direction. A brother in a traditional industry also advised me to apply for a job in an Internet company, because there are a lot of overtime in traditional industries, but the wages are extremely low. . In the end, I decided to switch careers as a programmer and find a job related to the backend.

So which language to learn? There were three options at the time: c++, Java, python.

At that time, python was relatively popular, but after some careful consideration, I chose Java. Why choose Java?

Very simple, the market demand is large, and the learning difficulty is moderate. Compared with the classmates in the class, I lack the basic computer knowledge of the system, and I am less than a year away from the autumn recruitment, so I still choose Java, which is less difficult to learn.

self-study

After determining the direction, start to develop the learning route. I have to say that there are really many things to learn in Java. .

During the self-study period, I encountered a lot of problems, such as some environmental configuration problems, and sometimes I worked on it for several days, which greatly discouraged my enthusiasm. In the middle, I also doubted my level many times, whether it is not suitable for programming, and almost gave up. Fortunately, I persisted in the end.

For more than half a year, except for the usual classes, the rest of the time was in the library. On weekends or holidays, I wake up at 7 o'clock every day, go to the library to start studying at 8 o'clock in the evening, and return to the dormitory when the library closes at 10 o'clock in the evening. Every day, I am the last group to leave the library. Go back to the dormitory, take a shower, and continue to live until after twelve o'clock (the volume king!).

img

Many people are asking, is it too late for me to start learning Java by myself in my junior year? I think it depends on the individual's dedication and learning ability. Some people are better at self-learning, and can devote 10 hours or more to studying every day, and that's totally fine.

The self-study process is still very hard. To endure loneliness, the most important thing is to persevere!

Based on my self-study experience, I have sorted out some experience summed up by stepping on pits in the learning process. I hope that self-study friends can avoid detours:

  • Pay attention to practice , don't just bury your head in reading, you must write more codes.
  • When you first start self-study, you don't need to delve into the details too much, otherwise you may doubt your learning ability. When you have a certain foundation later, and you look back and review it, you may suddenly realize that it is not as difficult as you thought at the beginning.
  • You can add some communication groups appropriately, and communicate with other people when you encounter knowledge points that you don’t understand.

Well, let me share with you my self-study experience.

self-study route

First look at the Java learning roadmap:

[External link picture transfer failed, the source site may have an anti-theft link mechanism, it is recommended to save the picture and upload it directly (img-p10iwXFS-1684976576805) (http://img.topjavaer.cn/image/Java learning route-gitmind-clear .png)]

Here I also share with you a carefully compiled PDF of the high-frequency interview questions of Dachang . The small partner got the Ali offer by relying on this manual, and the small partner who needs it can download it by himself:

http://mp.weixin.qq.com/s?__biz=Mzg2OTY1NzY0MQ==&mid=2247485445&idx=1&sn=1c6e224b9bb3da457f5ee03894493dbc&chksm=ce98f543f9ef7c55325e3bf336607a370935a6c78dbb68cf86e59f5d68f4c51d175365a189f8#rd

Java

Recommended books:

  • 《head first java》
  • "JAVA Core Technology Volume"

The explanations of the head first series of books are more interesting and easier to understand. The difficulty of "JAVA Core Technology Volume" is relatively moderate, and the content is relatively comprehensive. Some chapters (such as Swing) can be skipped.

The video recommends the video tutorial of Lao Du, the power node, with 10 million views! The overall quality of the video is very good, and the explanation is very detailed, suitable for novices. Follow Lao Du's video to learn, you can learn a lot of knowledge!

Emphasis again: type more code! Type more code! Type more code!

Learning programming is reading books plus practice. You need to do more, otherwise you will soon forget the knowledge points you have read, and you will encounter many pitfalls and enrich your experience if you practice more. You can find some projects on github to practice your hands, and consolidate your knowledge by doing projects, and after each function is implemented, you will have a full sense of accomplishment and will motivate you to keep learning.

The basic knowledge of Java mainly includes:

  • object-oriented features

  • Java language basics, loops, arrays; understand classes and objects

    • Master mandatory data type conversion and automatic type promotion rules;
    • How to declare and assign constants;
    • Syntax and functions of loops;
    • Array declaration and definition;
    • Grasp the concept of a class and what an object is.
  • Abstract classes and interfaces

  • Data types, rewriting and overloading, encapsulation inheritance polymorphism

  • Container class Map/List/Set, etc.

  • exception handling

  • reflection mechanism

  • generic

  • Commonly used classes: String, time class

  • functional programming

  • Stream API

  • Lambda expressions

  • IO stream operation, multithreading and Socket

    • Master the classes related to IO read and write streams, understand byte streams, character streams and character stream buffers;
    • Master the concept of thread, the creation and start-up method of multi-thread, the concept and application of lock and synchronization;
    • Master the concept of Socket communication, how to declare the client server and how to complete the double-ended data communication.

Java Web

Java Web is a combination of a series of technologies, and it is also the technical direction of most Java developers. It is necessary to learn. You can watch the video tutorial for this part.

The video recommends the full set of JavaWeb tutorials in Silicon Valley, HTML/CSS/JavaScript and other front-end related topics can be watched at double speed.

Dark Horse Programmer's Java web tutorial is also generally good.

The following lists the knowledge points that Java web needs to master.

HTML:

  • Master the basic composition of web pages;
  • Master the basic syntax of HTML;
  • The role of the table and the merged rows and merged columns;
  • The use of form tags, the difference between get/post submission methods;
  • Use of frame layouts

CSS:

  • Master the syntax and function of CSS, and the declaration method in HTML;
  • Master the function usage of CSS layout;
  • Master the introduction of CSS external styles.

JavaScript:

  • Master the syntax and functions of JS, and the declaration method in HTML;
  • Master the operation mode of JS;
  • Master variable declaration, function declaration, parameter passing, etc. in JS;
  • Master the use of label events in HTML;
  • Mastering DOM Prototypes in JS

jQuery:

  • To learn how to use jQuery, download the latest or older version of jQuery.js
  • Master the syntax and usage of selectors, document processing, attributes, events, etc.;
  • Be able to flexibly use selectors to find the elements you want to find and manipulate their attributes;
  • Dynamically declare events;
  • Create elements dynamically.

Servlet

  • Master the Web project directory structure in Java;
  • Master Tomcat, an important middleware for Java Web projects;
  • Master the Request and Response in Servlet;
  • Master the basic operation process of Servlet.
  • Master the life cycle of Servlet

Ajax

  • Master the basic concepts of Ajax;
  • Master Ajax requests in jQuery;
  • Mastering JSON

Filter、Listener:

  • Master Filter and Listener
  • Mastering Session Filters and Encoding Filters

JSP data interaction

  • How to write Java code in JSP, how to use classes in Java;
  • Parameter passing in JSP.

State Management Session and Cookie

  • Master the role and scope of Session and Cookie;
  • Master the difference between Session and Cookie, storage location, statement cycle, etc.;
  • Master the use of Session and Cookie in JSP and Cookie respectively

frame

The mainstream frameworks mainly include:

  • spring: aspect-oriented, dependency injection.
  • springboot: habit is better than configuration, automatic configuration. At present, many companies use Spring Boot internally.
  • springmvc: A lightweight web framework based on the MVC architectural pattern
  • Mybatis: orm framework.
  • springcloud

Spring

Most companies will use the Spring framework, must learn! . Mainly understand Spring's aspect-oriented and dependency injection features, and learn to use Spring to build applications. The recommended book "Spring in Action" will take you step by step to build a Spring application through a demo

The video recommends the latest version of the Spring5 framework tutorial by Teacher Wang Ze from Shang Silicon Valley. The video has just been released, and the content is also advancing with the times. It is worth learning!

SpringMVC

SpringMVC is a lightweight web framework based on the MVC architecture pattern . For beginners, it is necessary to master the process of web request from sending to corresponding, what SpringMVC does, and the idea of ​​MVC pattern.

The video recommends the latest SpringMVC tutorial for Java from Crazy God.

[Crazy God Talks Java] The latest SpringMVC tutorial IDEA version is easy to understand.

My shoe

MyBatis is an excellent persistence layer framework. MyBatis helps us do many things: establish connections, operate Statment, ResultSet, handle JDBC-related exceptions, etc., which simplifies the development process. Recommended book "Mybatis in simple terms".

The video recommends the latest and complete Mybatis tutorial of Kuangshenshuo, which has the most views on station b and has won unanimous praise from many friends.

SpringBoot

After learning SSM, you have to learn SpringBoot further. I believe that many people will have a headache when faced with various configurations after learning Spring. The emergence of SpringBoot solves this problem. SpringBoot removes a large number of XML configuration files and simplifies complex dependency management. The book recommends "Spring Boot in Action".

The video recommends the latest SpringBoot2 authoritative tutorial of the 2021 version of Raytheon of Silicon Valley.

SpringCloud

Now interviews will basically ask about microservice-related content, it is best to understand the knowledge related to microservices. Service registration and discovery, load balancing, service degradation, API gateway, etc. Recommended book "spring cloud microservice combat"

For the video tutorial, you can take a look at the SpringCloud tutorial by Mr. Zhou Yang from Shang Silicon Valley~

concurrency

[External link image transfer failed, the source site may have an anti-leeching mechanism, it is recommended to save the image and upload it directly (img-BE3lALPG-1684976576805) (http://img.topjavaer.cn/image/summary of concurrency and multithreading knowledge points .jpg)]

What is concurrent programming, in simple terms, is to make full use of the cpu, execute multiple tasks at the same time, and complete tasks quickly.

For related content of concurrent programming, you can read the book "JAVA Concurrent Programming in Practice".

Video recommendation Crazy God speaks Java, very good video.

The main knowledge points are:

  • The concept and case of thread
  • Principle of thread pool
  • Inter-thread communication method
  • 锁(synchronized、ReentrantLock)
  • Concurrency tools (CountDownLatch/CyclicBarrier/Semaphore)
  • atomic class
  • AQS
  • Thread life cycle state
  • Java memory model

Redis

[External link picture transfer failed, the source site may have an anti-leeching mechanism, it is recommended to save the picture and upload it directly (img-j1Reh2cA-1684976576806)(http://img.topjavaer.cn/image/Redis knowledge points.jpg)]

It is used to cache hot data to speed up reading and writing, thereby improving performance. Now Java backend interviews basically ask Redis.

Books recommend "redis combat" and "redis design and implementation".

Video recommendation Kuangshen said that the latest ultra-detailed tutorial of Java's Redis not only teaches you to learn Redis, but also teaches you how to learn.

message queue

Message queue is a data structure in the basic data structure FIFO. It is used to solve problems such as application decoupling, asynchronous messages, and traffic cutting. It can achieve high performance, high availability, scalability, and eventual consistency.

The video recommends Dark Horse's RocketMQ tutorial and Baizhi Education's RabbitMQ tutorial, just choose one of the two to learn!

JVM

[External link picture transfer failed, the source site may have an anti-theft link mechanism, it is recommended to save the picture and upload it directly (img-S2cTXZjt-1684976576806)(http://img.topjavaer.cn/image/JVM Knowledge Point Summary.jpg) ]

JVM is also what is often asked in interviews. Java developers don’t need to do memory management and garbage collection by themselves, the JVM does it for us, but it is still necessary to understand the working principle of the JVM, so that when problems such as oom occur, they have ideas to troubleshoot and solve problems. The book recommends Mr. Zhou's "In-depth Understanding of Java Virtual Machine".

The video recommends Song Hongkang's full set of courses in Silicon Valley. The full set of courses is divided into three chapters: "Memory and Garbage Collection", "Bytecode and Class Loading" and "Performance Monitoring and Tuning".

Basic knowledge of JVM:

  • jvm memory structure (program counter, virtual machine stack, local method stack, heap, method area, runtime constant pool, direct memory)
  • class loading process
  • parent delegation
  • garbage collection algorithm
  • garbage collector
  • Tuning tools (jsp/jstack/jstat/jmap, just understand)

Computer Basics

To learn programming, you must lay a solid computer foundation!

For non-major students, the biggest gap between them and the students of major classes lies in basic theoretical knowledge . If you are a non-major self-taught programmer and want to enter a large factory, then the basic computer knowledge must not be left behind.

Every qualified programmer should know the structure of the computer system, what the internal logic is, and have his own thinking.

In short, basic skills are very important!

operating system

No matter what programming language you learn, you need to deal with the operating system. If you are not familiar with the operating system, you will encounter many obstacles in your future learning, such as thread process scheduling, memory allocation, Java virtual machine and other knowledge, and you will be at a loss. Therefore, only by understanding the operating system can we better learn other computer knowledge.

book recommendation

Entry-level books: "Modern Operating Systems", "Introduction to Operating Systems" , Advanced: "In-depth Understanding of Computer Systems"

Strongly recommend the book "In-depth Understanding of Computer Systems".

CSAPP is a very good book, which combines the basic knowledge of computer composition principles, operating systems, network programming, parallel programming principles and other courses. For those who are new to programming, or those who are not from majors like Dabin, this is a guiding book. It will tell you, if you want to become an excellent programmer, you should focus on understanding the underlying principles of computers, Tell you which courses you should focus on in the future self-study process, such as operating system and architecture.

Recommended video tutorials

Udacity's Advanced OS open class: https://www.classcentral.com/course/udacity-advanced-operating-systems-1016

There is also a good operating system course in China, Tsinghua University's open course: https://www.xuetangx.com/course/THU08091000267/5883104?channel=search_result

Lectured by Xiang Yong and Chen Yu, two teachers from Tsinghua University, and equipped with a complete set of experiments. The content of the experiment is to build a small but complete operating system from scratch. Taking the mainstream operating system as an example and using the teaching operation The system ucore is an experimental environment, teaching the concept, basic principle and implementation technology of the operating system, laying a solid foundation for students to engage in operating system software research and development, and to make full use of the operating system functions for application software research and development.

Also, recommend another MIT operating system course: MIT6.268

Course address: https://pdos.csail.mit.edu/6.828/2018/schedule.html

MIT6.828 is a very worthwhile course, widely acclaimed, and a classic combining theory and practice .

As long as you follow the project step by step and complete 6 experiments, you can implement a simple operating system kernel.

Each experiment has corresponding knowledge points. After learning the theoretical knowledge, there will be corresponding exercises. The learning experience is great!

It is recommended to be familiar with C and assembly before starting to study this course, and have a certain understanding of computer composition.

Main knowledge points of the operating system :

  • Basic features of an operating system
  • The essential difference between process and thread, and their respective usage scenarios
  • Several states of the process
  • The characteristics and usage scenarios of the process communication method
  • The characteristics and usage scenarios of the process task scheduling algorithm
  • Deadlock causes, necessary conditions, and deadlock handling. Handwritten deadlock code, how Java solves deadlock.
  • The way the thread is implemented
  • The role of coroutines
  • The way memory is managed
  • The role of virtual memory, paging system realizes the principle of virtual memory
  • The principle of page replacement algorithm
  • Static linking and dynamic linking

Data Structures and Algorithms

[External link picture transfer failed, the source site may have an anti-leeching mechanism, it is recommended to save the picture and upload it directly (img-TOXKB84W-1684976576807)(http://img.topjavaer.cn/image/data structure and algorithm.jpg) ]

Why study Data Structures and Algorithms? For students majoring in computer science, this course is compulsory, and the postgraduate entrance examination is basically a compulsory subject. For programmers, data structures and algorithms are also very important points of investigation necessary for interviews and written tests.

Data structures and algorithms are one of the important criteria for programmers to embody internal skills, and data structures are also used in various aspects. The data structure also contains some object-oriented ideas, so learning to master the data structure will greatly improve the abstraction ability of logical thinking.

book recommendation

"Big Talk Data Structure" and "Algorithm Diagram"

The biggest feature of this book "Big Talk Data Structure" is that the whole article is described in an interesting way, and a variety of life knowledge is quoted for analogy, and the graphic language is fully used to reflect the abstract content. Some classic algorithms involved can be analyzed line by line and compared with multiple algorithms. This book is especially suitable for beginners.

"Illustrated Algorithm" is a very good introductory algorithm book, with rich examples, rich pictures and texts, and explains the algorithm in an easy-to-understand way, aiming to help programmers better utilize the energy of the algorithm in daily projects.

Many students who learn Java may ask if there is a Java version of data structure and algorithm books?

Of course there are, you can read the book **"Data Structure and Algorithm Analysis Java Language Description"**, and describe various data structures and algorithms in Java language, which is easier for Java developers to understand.

video recommendation

UCSanDiego's data structure and algorithm special course : https://www.coursera.org/specializations/algorithms

The data structure course of Grandma Chen Yue of Zhejiang University .

Grandma Chen Yue and Professor He Qinming of Zhejiang University jointly taught a very classic course. Grandma my idol!

Data structures and algorithms mainly study the following contents:

  • Basic data structures (arrays, linked lists, stacks, queues, etc.)
  • Tree (binary tree, avl tree, b-tree, red-black tree, etc.)
  • heap structure
  • Sorting algorithms (bubble sort, selection sort, insertion sort, quick sort, merge sort, heap sort, etc. and time and space complexity)
  • Dynamic programming, backtracking, greedy algorithm (swipe leetcode more)
  • recursion
  • bit operation

Still feeling exhausted after learning? It can be consolidated with the help of some question brushing websites. Below are a few recommended websites for brushing questions.

Niuke.com

As a popular celebrity in Niuke, let's give a wave of publicity to Niuke! (Niu Ke pays money!)

Niuke.com has a super-rich IT question bank, question bank + interview + learning + job hunting + discussion, basically covering all written interview questions, and can be called an "Internet job hunting artifact". Here you can not only brush up questions, but also discuss and communicate with other cattle friends to grow together. There are also various referral opportunities on Niuke, which is also very good for students who are looking for jobs.

LeetCode

Force button, force push ! Li Kou abused me thousands of times, and I treated Li Kou like first love!

From now on, you will be able to thank me for a few months’ worth of algorithmic questions every day (tsundere face)

When I first started doing algorithm questions, I chose to do it on Likou. When I first brushed the easy-level questions, I felt a bit difficult. After half a year, I didn't panic when I encountered medium-level or even hard-level questions.

But practice makes perfect.

LintCode

A quiz site similar to Leetcode.

LeetCode/LintCode have about the same amount of questions. LeetCode's test case is relatively complete , and LeetCode has a discussion area , it is more meaningful to look at other people's code.

LintCode's UI, tagging, and filter are more flexible and have more advantages. You can choose one of them to brush the questions.

database

Internet applications are mostly data-intensive applications. For real-world data-intensive applications, unless you are going to start from the wheel of basic components, there are not so many opportunities to play with fancy data structures and algorithms.

In actual production, the data table is the data structure, and the index and query are the algorithms. The application code often plays the role of glue, handling IO and business logic, and most of the other work is to move data between data systems. In the broadest sense, where there is state, there is a database. It is everywhere, behind the website, inside the application, stand-alone software, in the blockchain, and even in the web browser farthest from the database.

book recommendation

  • "MySQL Must Know"
  • "High performance mysql"

"MySQL Must Know" is mainly about the basic syntax of Mysql, which is easy to understand. After you have a foundation, read "High Performance MySQL". This book mainly explains indexing, SQL optimization, advanced features, etc. Many Mysql-related interview questions come from the book "High Performance MySQL", which is worth reading.

video recommendation

Berkeley's CS168 course: https://archive.org/details/UCBerkeley_Course_Computer_Science_186

"Introduction to Database Systems" by Wang Shan, Renmin University of China

Basic knowledge of MySQL:

  • CRUD
  • transaction characteristics, isolation level
  • Indexing principle, optimization
  • b+ tree
  • leftmost matching principle
  • storage engine
  • MVCC
  • Implementation plan
  • Sub-library and sub-table
  • log, bin log/undo log/redo log

computer network

[External link picture transfer failed, the source site may have an anti-leeching mechanism, it is recommended to save the picture and upload it directly (img-UZBLpG1a-1684976576812)(http://img.topjavaer.cn/image/computer network knowledge.jpg)]

The course of computer network needs to learn the concept, principle and architecture of computer network, know the basic principles and protocols of computer layered structure, physical layer, data link layer, media access sublayer, network layer, transport layer and application layer, Master the network protocol structure based on the TCP/IP protocol family, and understand the latest development of new network technologies.

book recommendation

"A Top-Down Approach to Computer Networks"

This book is a classic computer network textbook. It uses the author's original top-down method to teach the principles and protocols of computer networks. Since the publication of the first edition, it has been selected as a textbook by hundreds of universities and colleges. The book starts from the application layer, and then expands, getting rid of the boring starting from the physical layer, directly contacting the application examples, which can attract readers' interest more. Moreover, many examples in the book are very good and vivid.

video recommendation

The video recommends the complete set of "Computer Networks (Top-Down Method 7th Edition, James F.Kurose, Keith W.Ross)" courses by Zheng Xuan and Yang Jian of the University of Science and Technology of China. This course is a recorded version of the undergraduate course of the Department of Automation of the University of Science and Technology of China in the fall of 2020. It can be completed with the students of the University of Science and Technology of China to learn professional knowledge.

In addition, you can also take a look at the computer network course of Teacher Li Quanlong from Harbin Institute of Technology

Core knowledge points of computer network :

  • Network Hierarchy
  • TCP/IP
  • three handshake four wave
  • Sliding window, congestion control
  • HTTP/HTTPS
  • Network security issues (CSRF, XSS, SQL injection, etc.)

linux

The Linux system has penetrated into every corner of the IT field. As an IT practitioner, no matter whether you focus on programming or operation and maintenance, you should have an understanding of Linux, and even in-depth study to master the core principles.

At least be familiar with commonly used Linux commands. Book recommendation **"Brother Bird's Linux Private Kitchen"**.

Design Patterns

Design patterns are solutions to general problems that software developers face during software development. For developers with extensive development experience, learning design patterns can help understand the best solutions to problems faced in the software development process; The quickest way to learn software design.

Why learn Design Patterns :

  • Design patterns are summed up from many excellent software systems that can achieve maintainability and reuse. Using these solutions can avoid doing some repetitive work
  • Reasonable use of design patterns and documentation of the use of design patterns will help others understand the system faster
  • Learning design patterns will help beginners understand object-oriented ideas more deeply

Classification of Design Patterns :

1.1 Creational patterns

The creation pattern (Creational Pattern) abstracts the instantiation process of the class, and can separate the creation and use of objects in the module.

Creational patterns include factory method patterns, abstract factory patterns, singleton patterns, builder patterns, and prototype patterns

1.2 Structural patterns

Structural Pattern describes how to combine classes or objects to form a larger structure, just like building blocks, which can form complex and more powerful structures through the combination of simple building blocks.

Structural patterns include adapter pattern, decoration pattern, proxy pattern, appearance pattern, bridge pattern, combination pattern, flyweight pattern

1.3 Behavioral patterns

A Behavioral Pattern is an abstraction of the division of responsibilities and algorithms between different objects. Behavioral patterns focus not only on the structure of classes and objects, but also on their interactions.

Behavioral patterns include strategy pattern, template pattern, observer pattern, iterative sub-pattern, chain of responsibility pattern, command pattern, memo pattern, state pattern, visitor pattern, intermediary pattern, interpreter pattern, etc.

Recommend the 23 design pattern video tutorials explained by Mr. Qin Jiang based on Java .

tool

Git

Git is an open source distributed version control system for agile and efficient handling of any project, small or large. Git is an open source version control software developed by Linus Torvalds to help manage Linux kernel development.

Video recommendation: https://www.bilibili.com/video/BV1BE411g7SV

Maven

Maven is a software project management tool that can fully automate the construction of Java projects and manage the dependencies required by the project. Maven can also be used to build and manage projects written in C#, Ruby, Scala and other languages.

docker

Docker is an open source application container engine. Docker allows developers to package their applications and dependencies into a lightweight, portable container, which can then be distributed to any popular Linux machine, and can also be virtualized.

Docker is an open platform for developing, delivering and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly.

Application scenarios of Docker

  • Automated packaging and publishing of web applications.
  • Automated testing and continuous integration, release.
  • Deploy and tune database or other backend applications in a service-oriented environment.

The video recommends Guangzhou Yunke's docker introductory tutorial, which is very detailed.

project

Many students who are new to Java will encounter a problem. They don't know where to find Java projects to practice. I also encountered this problem before, and now I will share some projects worth learning here.

First of all, I would like to recommend a few video tutorials for Java projects . They are all videos on station B. The reviews are very good and the explanations are very detailed. If you are interested, you can take a look~

Shang Silicon Valley Shangtu.com Java Project Practical Development Tutorial:

https://www.bilibili.com/video/BV1bE411T7oZ

Shang Silicon Valley Java Microservice + Distributed + Full Stack Project [Shangyitong]

https://www.bilibili.com/video/BV1V5411K7rT

Java Web Project Combat - Changgou Mall:

https://www.bilibili.com/video/BV13J411k7aQ

The following also recommend several high-quality open source projects on Github.

newbee-mall

star:7.8k

https://github.com/newbee-ltd/newbee-mall

The newbee-mall project is a set of e-commerce system, including newbee-mall mall system and newbee-mall-admin mall background management system, developed based on Spring Boot 2.X and related technology stacks. The front-end mall system includes home page portal, product classification, new product launch, home page carousel, product recommendation, product search, product display, shopping cart, order settlement, order process, personal order management, member center, help center and other modules. The background management system includes modules such as data panel, carousel map management, product management, order management, member management, category management, and settings.

litemall

star:16.2k

https://github.com/linlinjava/litemall

Another little mall. litemall = Spring Boot backend + Vue administrator frontend + WeChat applet user frontend + Vue user mobile terminal.

Small mall features:

  • front page
  • Topic List, Topic Details
  • Category List, Category Details
  • Brand List, Brand Details
  • New product launch, popular recommendation
  • Coupon list, coupon selection

Also share a great Java study note here, Github starred 137k+ ! This note mainly covers Java basics, containers, Java IO, concurrency and virtual machines, etc. The layout is excellent and the content is impeccable.

Those who need it can download it by themselves:

http://mp.weixin.qq.com/s?__biz=Mzg2OTY1NzY0MQ==&mid=100000392&idx=1&sn=f6c8e84651ce48f6ef5b0d496f0f6adf&chksm=4e98ffce79ef76d8dcebdc4787ae8b37760ec193574da9036e46954ae8954ebd56c78792726f#rd

eladmin

star:16.2k

https://github.com/elunez/eladmin

A back-end management system based on Spring Boot 2.1.0, Spring Boot Jpa, JWT, Spring Security, Redis, and Vue. The project adopts a sub-module development method, uses RBAC for authority control, supports data dictionary and data authority management, supports one-click generation of front-end and back-end codes, and supports dynamic routing.

The project provides very detailed documentation at https://el-admin.vip

Project experience address: https://el-admin.xin

The technology stack used is also relatively new, give the author a thumbs up!

vhr

star:22.2k

https://github.com/lenve/vhr

Micro Personnel is a human resources management system that separates the front and back ends, and the project is developed with SpringBoot+Vue. The project joins the technical points involved in common enterprise-level applications, such as Redis, RabbitMQ, etc.

Blog

star1.2k

https://github.com/zhisheng17/blog

My-BlogIt is a personal blog template created by Docker + SpringBoot + Mybatis + thymeleaf. This project is modified on the basis of Tale blog system.

community

star:1.8k

https://github.com/codedrinker/community

Code to ask the community. Open source forum, question and answer system, existing functions question, reply, notification, latest, hottest, eliminate zero reply function. Technology stack Spring, Spring Boot, MyBatis, MySQL/H2, Bootstrap.

vblog

star:6.5k

https://github.com/lenve/VBlog

V tribe, a multi-user blog management platform implemented by Vue+SpringBoot!

The backend mainly uses:

1.SpringBoot
2.SpringSecurity
3.MyBatis
4. Some interfaces follow the Restful style
5.MySQL

The front end mainly uses:

1.Vue
2.axios
3.ElementUI
4.vue-echarts
5.mavon-editor
6.vue-router

[External link picture transfer failed, the source site may have an anti-leeching mechanism, it is recommended to save the picture and upload it directly (img-APLCs988-1684976576820)(http://img.topjavaer.cn/image/20220505162337.png)]

gpmall

star:4.3k

https://github.com/2227324689/gpmall

[Gupao Academy Practical Project] An e-commerce platform based on SpringBoot+Dubbo. The division of business modules fits the architecture system of Internet companies as much as possible. Therefore, except that the complexity of the business itself is not very high, the overall architecture is basically the same as the actual architecture.

The main architecture of the backend is based on springboot+dubbo+mybatis.

[External link picture transfer failed, the source site may have an anti-theft link mechanism, it is recommended to save the picture and upload it directly (img-bcC7bhYK-1684976576821)(http://img.topjavaer.cn/image/20220505162427.png)]

guns

star:3.4k

https://github.com/stylefeng/Guns

Guns is a modern Java application development framework, based on the mainstream technology Spring Boot2, the core concept of Guns is to improve the development efficiency of developers, reduce the development cost of enterprise information systems, and improve the overall development level of enterprises.

Guns is based on a plug-in architecture . When building a system, you can freely combine fine-grained module dependencies, realize the combination and elimination of different functions, and allow flexible control of the project volume, so that it is more convenient to build different business systems.

Guns can be used to quickly develop various information management systems, such as OA office system, project management system, shopping mall system, supply chain system, customer relationship management system, etc.

music-website

star:2.3k

https://github.com/Yin-Hongwei/music-website

music site. The client and management are implemented using the Vue framework, the server is implemented using Spring Boot + MyBatis , and the database uses MySQL .

Front-end technology stack: Vue3.0 + TypeScript + Vue-Router + Vuex + Axios + ElementPlus + Echarts.

The above is the learning route of Java self-study, with a lot of content, friends who change careers, come on!

In addition, I have sorted out the electronic version of the books mentioned above and put them on github. There are more than 200 classic computer books in total , including C language, C++, Java, Python, front-end, database, operating system, computer network, For data structure and algorithm, machine learning, programming life, etc., you can star it. Next time you look for a book, you can search directly on it. The warehouse is constantly being updated (it took more than a month to sort it out. I hope it will be helpful to everyone. Welcome to star )

The warehouse is constantly being updated~

[External link picture transfer failed, the source site may have an anti-leeching mechanism, it is recommended to save the picture and upload it directly (img-kupBfjAi-1684976576822)(http://img.topjavaer.cn/image/booklistnew.png)]

Self-pickup if necessary:

github repository: https://github.com/Tyson0314/java-books

Code words are not easy, if you guys find it helpful, please give me a thumbs up. Your thumbs up is the motivation for my creation!

I am @计算大宾, and I regularly share the hard-core knowledge of the Java background. Welcome everyone to pay attention~

Guess you like

Origin blog.csdn.net/Tyson0314/article/details/130859694