Takeaway: read this article needs to have enough time, the author will from shallow to deep with you step by step to understand what a senior architect to master all kinds of knowledge, you can also according to the article listed the knowledge system of contrast, to oneself to leak fill a vacancy, it’s helpful for you to feel this article, can thumb up look.

Directory:

First, the foundation

Two, advanced

Three, advanced chapter

4. Structure

Five, the extension

Six, system

7. Recommended books

Eight, summary


First, the foundation

JVM

JVM memory structure

Heap, stack, method area, direct memory, heap and stack distinction

Java memory model

Memory visibility, reordering, order consistency, volatile, locking, and final

The garbage collection

Memory allocation strategy, garbage collector (G1), GC algorithm, GC parameters, object survival determination

JVM parameters and tuning

Java Object Model

Oop -klass, object header

HotSpot

Just-in-time compiler, compiler optimization

Class loading mechanism

Classloaders, classloading procedures, parental delegation (breaking parental delegation), modularity (Jboss Modules, OSGi, Jigsaw)

Vm performance monitoring and troubleshooting tool

JPS, jStack, jmap, jstat, jConsole, jinfo, jhat, Javap, bTrace, TProfiler

Compilation and decompilation

Javac, JAVAP, JAD, CRF

Java Basics

Read the source code

String, Integer, Long, Enum, BigDecimal, ThreadLocal, ClassLoader & URLClassLoader, ArrayList & LinkedList, HashMap & LinkedHashMap & TreeMap & CouncurrentHashMap, HashSet & LinkedHashSet & TreeSet

Various variable types in Java

Familiar with the use of Java String, familiar with String functions

JDK 6 and JDK 7 substring principles and differences

ReplaceFirst, replaceAll, replace

String overloading “+”,

ValueOf and Integer.toString.

Immutability of strings

Automatic unpacking

Integer cache mechanism

Familiar with Java keywords

Transient, instanceof, volatile, synchronized, final, static, const principle and usage.

Collection classes

The use of common collection classes

ArrayList vs. LinkedList vs. Vector

Difference between SynchronizedList and Vector

HashMap, HashTable, and ConcurrentHashMap

Stream usage in Java 8

Apache collections handle the use of utility classes

Different implementations of HashMap in different JDK versions and why

The enumeration

Usage of enumerations, enumerations and singletons, Enum classes

Java IO&Java NIO, and learn to use

Bio, NIO and AIO, three IO usage and principles, NetTY

Java reflection versus JavAssist

Reflection and Factory mode, java.lang.reflect.*

Java serialization

What is serialization and deserialization, and why

Serialization underlying principles

Serialization and singleton patterns

protobuf

Why is serialization not safe

annotations

Meta annotations, custom annotations, common usage of annotations in Java, the combination of annotations and reflection

JMS

What is the Java messaging Service, JMS messaging model

JMX

Java. Lang. Management. *, javax.mail. Management. *

The generic

Generics versus inheritance

Type erasure

K, T, V, E

The meaning of object, and various uses of generics

Unit testing

Junit, Mock, Mockito, In-memory Database (H2)

Regular expression

java.lang.util.regex.*

Common Java tool libraries

commons.lang, commons.*… guava-libraries netty

What is a API&SPI

abnormal

Exception types, correct handling of exceptions, custom exceptions

Time to deal with

Time zone, time, time API in Java

encoding

Solve the problem of garbled code, common coding

Syntactic sugar

Java syntax sugar principle, solution sugar

Java concurrent programming

What is a thread and what is a process

Read the source code and learn to use it

Thread, Runnable, Callable, ReentrantLock, ReentrantReadWriteLock, Atomic*, Semaphore, CountDownLatch, ConcurrentHashMap, Execut ors

The thread pool

Design your own thread pool, submit(), and execute()

Thread safety

Deadlock, deadlock how to troubleshoot, Java thread scheduling, thread safety and memory model relationship

The lock

CAS, Optimistic and pessimistic locking, database related locking mechanism, Distributed locking, biased locking, Lightweight locking, heavyweight locking, Monitor, lock optimization, lock elimination, lock coarsing, spin locking, reentrant lock, blocking lock, deadlock

A deadlock

volatile

Happens-before, compiler instruction reordering, and CPU instruction reordering

synchronized

How is synchronized implemented?

Relationship between synchronized and lock

How do you implement a thread-safe singleton without using synchronized

Sleep and wait

Wait and notify

Notify and notifyAll

ThreadLocal

Write a program that deadlocks

Write code to solve producer-consumer problems

Daemon thread

The difference between daemons and non-daemons and their usage

Two, advanced

Java Basics

Bytecode, class file format

CPU caches, L1, L2, L3 and pseudo-sharing

Tail recursion

An operation

Add, subtract, multiply, divide and mod with bit operation

Design patterns

Understand 23 design patterns

Use common design patterns

Singleton, policy, factory, adapter, chain of responsibility.

Implement AOP

To realize the IOC

Use synchronized and lock to achieve thread-safe singleton mode

Nio and REACTOR design patterns

Network programming knowledge

Common protocols include TCP, UDP, HTTP, and HTTPS

Three-way handshake and four-way shutdown, flow control and congestion control, OSI seven-layer model, TCP sticky packet and unpack

HTTP /1.0 HTTP /1.1 The differences before HTTP /2

Java RMI, Socket, HttpClient

The cookie and session

Cookie is disabled. How to implement session

Write a simple static file HTTP server in Java

Using thread pools to handle client requests. Using NIO to handle client requests. Using simple rewrite rules.

Understand nginx and Apache server features and build a corresponding server

FTP, SMTP protocol with Java

Means of communication between processes

What is a CDN? If implemented?

What is DNS?

The reverse proxy

Framework of knowledge

Servlet thread safety issues

Filters and listeners in servlets

Hibernate’s caching mechanism

Lazy loading for Hiberate

Initialization of the Spring Bean

The AOP principles of Spring

Implement Spring’s IOC yourself

Spring MVC

Spring Boot2.0

Spring Boot starter principle, to implement a starter

Spring Security

Application server

JBoss

tomcat

jetty

Weblogic

tool

git & svn

maven & gradle

Three, advanced chapter

The new technology

Java 8

Lambda expressions, Stream APIS,

Java 9

Jigsaw, Jshell, Reactive Streams

Java 10

Local variable type inference, G1’s parallel Full GC, ThreadLocal handshake

Spring 5

Responsive programming

Spring Boot 2.0

Performance optimization

Use singletons, use Future patterns, use thread pools, select-ready, reduce context switching, reduce lock granularity, data compression, result caching

Online problem analysis

The dump to get

Thread Dump, memory Dump, GC situation

Dump analysis

Analyze deadlocks, analyze memory leaks

Write a variety of outofMemory, StackOverflow procedures

HeapOutOfMemory, Young OutOfMemory, MethodArea OutOfMemory, ConstantPool OutOfMemory, DirectMemory OutOfMemory, Stack OutOfMemory Stack OverFlow

Common problem solving ideas

Memory overflow, thread deadlocks, class loading conflicts

Use tools to try to solve the following problems and write a summary

How to find problems when a Java program is slow to respond,

How to resolve the problem when a Java program FullGC frequently,

How to view garbage collection logs,

How to resolve OutOfMemory in a Java application

How to tell if there is a deadlock,

How do I know if there is a memory leak

Compilation principle knowledge

Compilation and decompilation

Java code compilation and decompilation

Java decompiler tool

Lexical analysis, syntax analysis (LL algorithm, recursive descent algorithm, LR algorithm), semantic analysis, runtime environment, intermediate code, code generation, code optimization

Operating system knowledge

Common Linux commands

Process synchronization

Buffer overflow

Segmentation and paging

Virtual memory and main memory

Database knowledge

MySql Execution Engine

MySQL Execution Plan

How do I view the execution plan and optimize SQL based on the execution plan

SQL optimization

The transaction

The isolation level of the transaction and whether the transaction can be locked

The database lock

Row locks, table locks, optimistic locks using database locks,

The database is set up in active/standby mode

binlog

In-memory database

h2

Common NOSQL databases

Redis, memcached

Use database lock, NoSql respectively to achieve distributed lock

Performance tuning

Knowledge of data structures and algorithms

Simple data structures

Stack, queue, linked list, array, hash table,

The tree

Binary tree, dictionary tree, balanced tree, sorting tree, B tree, B+ tree, R tree, multipath tree, red black tree

Sorting algorithm

Various sorting algorithms and time complexity depth first and breadth first search full permutation, greedy algorithm, KMP algorithm, hash algorithm, mass data processing

Big data knowledge

Zookeeper

Basic concepts and common usage

Solr, Lucene, ElasticSearch

Deploy Solr, SolrCloud on Linux, add, delete, query index

Storm, streaming, know Spark, S4

Deploy Storm on Linux, coordinate with ZooKeeper, run Storm Hello World, Local and remote to debug storm Topology.

Hadoop, offline computing

HDFS, graphs,

Distributed log collection flume, Kafka, and Logstash

Data mining, Mahout

Network Security Knowledge

What is a XSS

XSS defenses

What is a CSRF

What is an injection attack

SQL injection, XML injection, CRLF injection

What is a file upload vulnerability

Encryption and decryption

MD5, SHA1, DES, AES, RSA, DSA

What are DOS and DDOS attacks

Why memcached can lead to DDos attacks and what is reflective DDos

SSL, TLS, HTTPS

How do I use Hash collisions for DOS attacks

Sign a certificate to deploy to Apache or Nginx with OpenSSL

4. Structure

distributed

Data consistency, service governance, and service degradation

Distributed transaction

2PC, 3PC, CAP, BASE, Reliable message final consistency, best effort notification, TCC

Dubbo

Service registration, service discovery, service governance

Distributed database

How to build a distributed database, when do you need a distributed database, MyCAT, Otter, HBase

Distributed file system

The MFS, fastdfs

Distributed cache

Cache consistency, cache hit ratio, cache redundancy

Micro service

SOA, Conway’s Law

ServiceMesh

Docker & Kubernets

Spring Boot

Spring Cloud

High concurrency

Depots table

CDN technology

The message queue

ActiveMQ

monitoring

What to monitor

CPU, memory, disk I/O, network I/O, etc

Monitoring means

Process monitoring, semantic monitoring, machine resource monitoring, data fluctuation

Monitoring data collection

Log, buried point

Dapper

Load balancing

Tomcat load balancing, Nginx load balancing

DNS

DNS principle and DNS design

CDN

Data consistency

If you want to know more about Java architecture technology, you can follow me, and I will share more knowledge about architecture technology later. In addition, I recommend an architecture exchange learning group: 650385180, which will share some videos recorded by senior architects: Spring, MyBatis, Netty source code analysis, high concurrency, high performance, distributed, microservice architecture principle, JVM performance optimization, concurrent programming these become architects essential knowledge system. You can also get free learning resources, which have benefited a lot at present. The following course system map is also available in the group.





Five, the extension

Cloud computing

IaaS, SaaS, PaaS, Virtualization Technology, openstack, Serverlsess

Search engine

Solr, Lucene, Nutch, Elasticsearch

Rights management

Shiro

Block chain

Hash algorithm, Merkle tree, Public key cryptography algorithm, Consensus algorithm, Raft protocol, Paxos algorithm and Raft Algorithm, Byzantine problem and algorithm, Message authentication code and digital signature

The currency

Mining, consensus mechanisms, lightning networks, side chains, hot issues, forks

The etheric fang

Super books

Artificial intelligence (ai)

Fundamentals of Mathematics, Machine learning, Artificial neural network, Deep learning, application scenarios.

Common framework

TensorFlow, DeepLearning4J

Other languages

Groovy, Python, Go, NodeJs, Swift, Rust

Six, system

1. Performance tuning

Whether it’s dealing with a front-end interview or improving the product experience, performance optimization is a topic that can’t be avoided.

The purpose of optimization is to make users feel “fast”, so how to make users feel fast?

Loading speed is really fast, the user opened the input URL press enter immediately see the page

It doesn’t load faster, but your site feels fast to your users

Performance optimization depends on several factors, including garbage collection, virtual machine, and underlying operating system (OS) Settings. There are several Tools available to developers for Analysis and Optimization, and you can learn and use them by reading Java Tools for Source Code Optimization and Analysis.

It is important to understand that no two applications can be optimized the same way, and there is no perfect reference path for optimizing Java applications. Use best practices and insist on handling performance optimizations in an appropriate manner. To achieve the true highest performance optimization, you as a Java developer need to have a correct understanding of the Java Virtual Machine (JVM) and the underlying operating system.

The following five knowledge systems are based on my experience in the industry and are the most mainstream technologies. For more information, you can add 650385180, which will share some videos recorded by senior architects: Spring, MyBatis, Netty source code analysis, high concurrency, high performance, distributed, microservice architecture principle, JVM performance optimization, concurrent programming these become architects essential knowledge system.

The following is a summary of what I should learn and understand about performance optimization:




2. Source code interpretation

Source code analysis is a kind of critical knowledge, master this critical knowledge, can be invariable should change, source code analysis for many people is very boring, difficult to understand.

Read the source code, I think there are three core points: technical basis + strong thirst for knowledge + patience.

I think is the core driver of reading source code. The majority of programmers I’ve seen have this kind of attitude toward learning:

1. Focus only on the project itself, baidu will search if you don’t understand.

2. In addition to working on projects, I also read technical books about projects and read Wikipedia.

3. Besides reading books related to the project, I will also read books about the IT industry. For example, when LEARNING Java, I will also learn functional languages, such as LISP.

4. Look for open source projects, try out a lot of third-party frameworks, and write demos.

5. Read the basic framework, J2EE specifications, and Debug server kernel.

Most programs are type 1. Getting to type 5 requires not only intense interest, but courage: Can I read it? In fact, you can read it.

Patience is really important. Because you rarely see instructional articles or books reading the source code, you are not required or advised to read it. You’ll often get stuck, and a reader can get stuck in a maze. What you need to do, perhaps, is to pause for a moment and look at it from the outside: the API structure, the framework design.

The following is my summary of the current most should learn source knowledge:




3. Distributed

Distributed system is an old and broad topic, but in recent years because of the rise of the concept of “big data”, it is full of new youth and vitality. In addition, distributed systems is a discipline that places equal emphasis on theoretical models and engineering techniques. Compared with the research direction of machine learning, students studying distributed systems often feel that “it is easy to get started, but difficult to get deep”. Indeed, learning distributed systems requires almost no mathematical knowledge.

Distributed systems are a complex and broad field of study, and a course or two online, or a book or two, may not cover all of it.

In general, the task of distributed system is to combine and connect multiple machines organically, so that they can cooperate to complete a task, which can be a computing task, or a storage task. If I have to make a classification of distributed system research in recent years, I think it can probably be divided into three parts:

1. Distributed storage system

2. Distributed computing system

3. Distributed management system

Here is my summary of the most mainstream distributed technologies in recent years:




4. Micro services

Microservices are hot right now, and everyone claims to be using microservices architecture, but what exactly is microservices architecture? Is microservices architecture a trend? We all lack a clear understanding of these issues.

In order to solve the problems under the single architecture, the microservice architecture came into being. Better to break up services sooner rather than build a bloated monster that is hard to tame. The core idea of microservices is to split and decouple services to reduce complexity. Microservices emphasize the reasonable disassembling of functions, as far as possible to ensure the Single function of each service, and clear roles according to the Single Responsibility Principle. Make each service light, so as to be flexible and reusable, and also according to the needs of each service’s own resources, separate deployment, separate horizontal expansion.

The following is a summary of the knowledge points I need to learn about microservices:




5. Engineering

To do a good job, you must first sharpen its tools, whether it is small white, or senior development, need to choose a good tool first. Improve development efficiency and teamwork efficiency. Give yourself more time to think.




7. Recommended books

In-depth Understanding of the Java Virtual Machine

“Effective Java”

An Inside Look at Java Web Technology

Technical Architecture for Large Web Sites

The Code Clean Way

Head First Design Patterns

Maven in Action

Blockchain Principle, Design and Application

Java Concurrent Programming

Birdman’s Linux Home Dish

From Paxos to Zookeeper

Architecture is the Future

Viii. Summary:

The above is my summary of Java from shallow to deep technical points, I hope the above content can help are silently difficult, encountered bottle disease and do not know how to do Java programmers, need to learn, access to information can also add the group recommended above, I hope to help friends and children in the development of this industry, Spend less time looking for information in forums, blogs and other places, and spend your limited time really learning.

If there is insufficient knowledge summary, welcome friends to correct, feel a harvest of friends can also like to pay attention to it.