Major version Update time note
v3.0 2020-03-31 Perfect knowledge system, on the basis of V2.0, add about 20% knowledge

Adjust the order and structure of some knowledge to facilitate reading and understanding

Built on GitHub Page for easy reading
v2.0 2019-02-19 Structural adjustment, more suitable from entry to mastery;

Further improve the knowledge system;

New technology supplement;
v1.1 2018-03-12 Increase the knowledge of new technology and improve the knowledge system
v1.0 2015-08-01 First release

GitHub project address: Enter

GitHub Pages to read in full: Enter

Gitee Pages full read: Entry (faster domestic access)

Based on article

object-oriented

What is object Orientation

Object oriented and procedure oriented

Three basic features of object orientation

Five basic principles of object Orientation

Encapsulation, inheritance, polymorphism

What is polymorphism

Method overrides and overrides

Java inheritance and implementation

Inheritance and composition in Java

Constructor and default constructor

Class variables, member variables, and local variables

Member variables and method scope

Platform independence

How is Java platform independent

Which other languages are supported by the JVM

Value passed

Pass by value, pass by reference

Why is there only value passing in Java

Java Basics

Basic data type

Eight basic data types

The value range of integer byte, short, int, and long

What is a floating point?

What are single precision and double precision?

Why can’t you use floating-point amounts?

Automatic unpacking

Automatic unpacking

The caching mechanism for Integer

How to correctly define the type and name of the interface return value (Boolean /Boolean) (Success/SUCCESS)

String

Immutability of strings

The length limit of a String

How substring works in JDK 6 and JDK 7

ReplaceFirst, replaceAll, and Replace are different

The differences and associations between String, StringBuilder and StingBuffer

String overloading of “+”

Several ways and differences of string concatenation

The difference between string. valueOf and integer.toString

Switch’s support for strings

String pooling

Constant pool (runtime constant pool, Class constant pool)

intern

Keywords in Java

transient

instanceof

volatile

synchronized

final

static

const

Collection classes

The difference between Collection and Collections

The use of common collection classes

Set is different from List

ArrayList versus LinkedList versus Vector

The difference between SynchronizedList and Vector

How does a Set ensure that elements are not repeated

Difference between HashMap, HashTable, and ConcurrentHashMap

Java 8 Map related red-black tree reference background, principles, etc

HashMap capacity, expansion, and hash principles

Stream in Java 8

Use of the Apache collection processing tool classes

How different versions of the JDK implement HashMap and why

What should we pay attention to when using the List obtained by Arrays.asList

How to iterate a Collection

The difference between Enumeration and Iterator

How do I delete elements in an ArrayList while iterating

Fail fast and fail – safe

CopyOnWriteArrayList

ConcurrentSkipListMap

The enumeration

Use of enumerations

Implementation of enumerations

Enumerations and singletons

An Enum

How do Java enumerations compare

Switch support for enumerations

How is serialization of enumerations implemented

Thread safety of enumerations

IO

Character stream, byte stream

Input stream, output stream

Conversion between byte streams and character streams

Synchronous, asynchronous

Blocking, non-blocking

Linux has five I/O models

The difference between BIO, NIO and AIO

The usage and principle of the three IO

netty

reflection

What is reflection

What does reflex do

Class Class

java.lang.reflect.*

A dynamic proxy

Static agent

A dynamic proxy

Relationship between dynamic proxy and reflection

Dynamic proxy is implemented in several ways

AOP

serialization

What is serialization and deserialization

How does Java implement serialization and deserialization

How Serializable is different from Externalizable

Why you need serialization

serialVersionUID

Why can’t serialVersionUID be changed

transient

Underlying principles of serialization

How does serialization break singletons

protobuf

Why is serialization unsafe

annotations

Yuan notes

Custom annotations

Java commonly used in annotations

A combination of annotations and reflection

How do I customize an annotation?

Spring Common Annotations

The generic

What is a generic

Type erasure

Problems with generics

In generics, K, T, V, E? Meaning of object, etc

Various uses of generics

Qualified wildcards and unqualified wildcards

The upper and lower bounds are extends and super

What’s the difference between List and the original List?

List<? What is the difference between > and List?

Unit testing

junit

Junit and Spring

mock

mockito

In-memory database (H2)

Regular expressions

java.lang.util.regex.*

Common Java tool libraries

apache-commons

google-guava

netty

API&SPI

API

The relationship and difference between API and SPI

How to define SPI

The implementation principle of SPI

abnormal

The Error and the Exception

Exception types

Exception related keywords

Handling exceptions correctly

Custom exception

Abnormal chain

try-with-resources

Finally and return execution order

Time to deal with

The time zone

Winter time and daylight time

The time stamp

Time in Java API(Java 8)

Greenwich mean time

The meaning and relationship of CET, UTC, GMT and CST

Thread safety issues with SimpleDateFormat

Time processing in Java 8

How do I get American time on the e8 computers

What’s the difference between YYYY and YYYY?

encoding

What is ASCII?

Unicode

Why you need UTF-8 when you have Unicode

UTF8, UTF16 and UTF32 are different

Why GBK is needed when you have UTF8?

The difference between GBK, GB2312 and GB18030

URL decoding

Big Endian and Little Endian

How to solve the garbled characters problem

Syntactic sugar

Java grammar sugar principle, solution sugar

Principle of sugar Switch supports strings and enumerations, generics, autoboxing and unboxing, method variable length arguments, enumerations, inner classes, conditional compilation, assertions, numeric literals, for-each, try-with-resource, Lambda expressions, local variable type inference, and record

JMS

What is the Java Message Service

JMS messaging model

JMX

java.lang.management.*

javax.management.*

Java 8

Lambda expressions

Stream API

Time API

Read the source code

String

Integer

Long

Enum

BigDecimal

ThreadLocal

ClassLoader & URLClassLoader

ArrayList & LinkedList

HashMap & LinkedHashMap & TreeMap & CouncurrentHashMap

HashSet & LinkedHashSet & TreeSet

Java Concurrent programming

Concurrency and parallelism

What is concurrency

What is parallelism

The difference between concurrent and parallel

thread

The difference between threads and processes

Implementation of threads

Thread state

Thread priority

Thread scheduling

How to Debug multithreading

Daemon thread

Multiple ways to create threads

Create a Thread by inheriting the Thread class

Implement the Runnable interface to create threads

Create threads from Callable and FutureTask

Create a thread from a thread pool

The thread pool

Design your own thread pool

Submit () and execute ()

Thread pool Principle

Why don’t YOU allow Executors to create a thread pool

Thread safety

What is thread-safe

Multi-level caching and consistency issues

CPU time slices and atomicity problems

Order rearrangement and order problems

Relationship between thread safety and memory model

happens-before

as-if-serial

The lock

Reentrant lock

Blocking locks

Optimistic lock and pessimistic lock

Database-related locking mechanism

A distributed lock

unlocked

CAS

ABA problems in CAS

Lock the optimization

Biased locking

Lightweight lock

Heavyweight lock

Lock elimination

Lock coarsening

spinlocks

A deadlock

What is a deadlock

The cause of the deadlock

How do I avoid deadlocks

Write a deadlock program

How do I troubleshoot a deadlock

synchronized

How is synchronized implemented?

The relationship between synchronized and lock

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

Synchronized and atomicity

Synchronized and visibility

Synchronized and synchronized

volatile

Compiler instruction reorder and CPU instruction reorder

The implementation principle of volatile

The memory barrier

Volatile and atomicity

Volatile and visibility

Volatile and order

Why do you need volatile when you have symchronized

Thread dependent method

start & run

sleep & wait

notify & notifyAll

ThreadLocal

ThreadLocal principle

The underlying data structure of a ThreadLocal

Write code to solve producer-consumer problems

And contract

Synchronizing containers with concurrent containers

Thread

Runnable

Callable

ReentrantLock

ReentrantReadWriteLock

Atomic*

Semaphore

CountDownLatch

ConcurrentHashMap

Executors

The underlying article

JVM

JVM memory structure

Runtime data area

Which run-time data areas are exclusive to threads

The difference between heap and stack

The location of the method area in different versions of the JDK

Out of memory

TLAB

Are objects in Java necessarily allocated on the heap?

The garbage collection

GC algorithm: mark clear, reference count, copy, mark compression, generational collection, incremental collection

The GC parameter

Determination of object survival

Garbage collector (CMS, G1, ZGC, Epsilon)

JVM parameters and tuning

-Xmx

-Xmn

-Xms

Xss

-XX:SurvivorRatio

-XX:PermSize

-XX:MaxPermSize

-XX:MaxTenuringThreshold

Java Object Model

oop-klass

Object head

HotSpot

Just-in-time compiler

Compiler optimization

Java Memory Model

Computer memory model

Cache consistency

The msci agreement

visibility

atomic

sequential

happens-before

as-if-serial

The memory barrier

synchronized

volatile

final

The lock

Vm performance monitoring and troubleshooting tool

jps

jstack

jmap

jstat

jconsole

jinfo

jhat

javap

btrace

TProfiler

Arthas

Class loading mechanism

classLoader

Is the class loading process thread-safe?

Class loading process

Parental delegation (breaking parental delegation)

Modularity (Jboss Modules, OSGI, Jigsaw)

Packaging tools

Jar, jlink, jPackage

Compile and decompile

What is compilation

What is decompilation

Compile tool: Javac

Decompiler tools: JavAP, JAD, and CRF

JIT

JIT optimization (escape analysis, allocation on stack, scalar substitution, lock optimization)

Advanced article

Java Underlying knowledge

The bytecode

Class File Format

CAFEBABE

An operation

With bit operations to achieve addition, subtraction, multiplication, division, take mod

Design patterns

Six principles of design patterns

The open closed principle

Richter’s substitution principle

Rely on the inversion principle

Interface isolation Rule

Demeter’s Law (least known principle)

Principle of composite reuse

Creative design patterns

The singleton pattern

Abstract Factory pattern

Builder mode

The factory pattern

The prototype pattern

Structural design mode

Adapter mode

The bridge model

Decorative pattern

Portfolio model

The appearance model

The flyweight pattern

The proxy pattern

Behavioral design patterns

Template method pattern

Command mode

Iterator pattern

Observer mode

The mediator model

Memorandum Mode

Interpreter mode

The state pattern

The strategy pattern

Chain of responsibility model

Visitor pattern

Seven ways to write singletons

Slob – Thread unsafe

Slob — thread safe

The hungry

Hungry man — variant

Static inner class

The enumeration

Double check lock

Why is it recommended to implement singletons using enumerations?

The difference and connection of three factory modes

Simple factory, factory method, template factory

Common design patterns are used

Adapter mode

The strategy pattern

Template method pattern

Observer mode

The appearance model

The proxy pattern

Implement a thread-safe singleton pattern without synchronized or lock

Nio and REACTOR design model

What design patterns are used in Spring

Knowledge of network programming

Commonly used protocol

TCP, UDP, HTTP, and HTTPS

Using Java to achieve FTP, SMTP protocol

OSI seven-layer model

Main protocols for each layer

TCP/UDP

Three handshakes with four closes

Flow control and congestion control

TCP bonding and unpacking

TCP/IP

IPV4

IPV6

HTTP

Differences between HTTP /1.0 HTTP /1.1 HTTP /2

Differences between HTTP and HTTPS

The difference between GET and POST in HTTP

Common Web request return status code

What do 404, 302, 301 and 500 stand for

An HTTP server that writes a simple static file in Java

http/2

Java RMI, Socket, HttpClient

The cookie and session

If cookie is disabled, how to implement session

Understand the nginx and Apache server features and set up a corresponding server

Means of interprocess communication

What is a CDN? If implemented?

DNS

What is the DNS

Record type :A record, CNAME record, and AAAA record

Domain name resolution

Root DNS server

DNS pollution

DNS hijacking

Public DNS: 114 DNS, Google DNS, and OpenDNS

The agent

The reverse proxy

Forward agent

Reverse proxy server

Framework of knowledge

Servlet

The life cycle

Thread safety issues

The filter and the listener

Common configurations and functions in web. XML

Hibernate

What is OR Mapping

Hibernate’s caching mechanism

Lazy loading of Hibernate

Hibernate/Ibatis/MyBatis

MyBatis

Mybatis caching mechanism

${} = ${

Multiple parameters are passed in mapper

Mybatis dynamic SQL

Lazy loading for Mybatis

Spring

Initialization of the Bean

AOP principle

Implement Spring’s IOC

Spring has four dependency injection methods

Spring MVC

What is the MVC

Differences between Spring MVC and Struts MVC

Spring Boot

Spring Boot 2.0

Start relying on

Automatic configuration

The starter principle of Spring Boot

Create your own starter

Why can Spring Boot start web projects from Main

Spring Security

Spring Cloud

Service discovery and registration: Eureka, Zookeeper, Consul

Load balancing: Feign, Spring Cloud Loadbalance

Service configuration: Spring Cloud Config

Service current limiting and fusing: Hystrix

Service link tracking: Dapper

Service gateway, security, messaging

Knowledge of application servers

JBoss

tomcat

jetty

Weblogic

tool

git & svn

maven & gradle

Git skills

Branch merge

Conflict resolution

Commit rollback

Maven skills

Rely on the tree

Rely on arbitration

Intellij IDEA

Common plugins: Maven Helper, FindBug-idea, Alibaba code specification detection, GsonFormat, Lombok Plugin,.ignore, Mybatis Plugin

Senior post

The new technology

Java 9

Jigsaw

Jshell

Reactive Streams

Java 10

Local variable type inference

Parallel Full GC for G1

ThreadLocal handshake mechanism

Java 11

ZGC

Epsilon

Enhance the var

Java 12

Switch

Java 13

Text Blocks

Dynamic CDS Archives

Java 14

Java packaging tools

The more valuable NullPointerException

Record type

Spring 5

Responsive programming

Spring Boot 2.0

http/2

http/3

Performance optimization

Use the singleton

Using the Future pattern

Using thread pools

Choose ready

Reduce context switching

Reduce lock size

Data compression

Results the cache

Parallel flow Stream

The GC tuning

JVM memory allocation tuning

SQL tuning

On-line problem analysis

dump

A thread Dump

Memory Dump

The gc conditions

Dump obtaining and analyzing tool

jstack

jstat

jmap

jhat

Arthas

Dump analyzes deadlocks

Dump analyzes memory leaks

Write a variety of outofMemory, StackOverflow program

HeapOutOfMemory

Young OutOfMemory

MethodArea OutOfMemory

ConstantPool OutOfMemory

DirectMemory OutOfMemory

Stack OutOfMemory Stack OverFlow

Arthas

The JVM related

The class/this correlation

Monitor/watch/trace

options

The pipe

Background Asynchronous Task

Solutions to common problems

Out of memory

The thread deadlock

Class loading conflict

The load high

CPU usage skyrocketed

Slow SQL

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

How do you find problems when a Java program is slow to respond

How to solve the problem when a Java program frequently FullGC

How do I view garbage collection logs

What happens when OutOfMemory occurs in a Java application

How can I tell if a deadlock has occurred

How do I know if there is a memory leak

Use Arthas to quickly troubleshoot Spring Boot application 404/401

Use Arthas to troubleshoot the online application log filling problem

Use Arthas to check the Spring Boot application NoSuchMethodError

Knowledge of compilation principles

Compile and decompile

Compilation and decompilation of Java code

Java decompile tool

javap

jad

CRF

Just-in-time compiler

Compiler optimization

Operating system knowledge

Common Linux commands

Find, grep, ps, cp, move, tar, head, tail, netstat, lsof, tree, wget, curl, ping, SSH, echo, free, and top

Interprocess communication

Server Performance Indicators

load

CPU utilization

Memory usage

qps

rt

Process synchronization

Producer consumer problem

The Philosopher’s Dining problem

Reader writer question

Buffer overflow

Segmentation and pagination

Virtual memory and main memory

Virtual memory management

Form-feed algorithm

Database knowledge

MySql Execution Engine

MySQL Execution Plan

How do I view an execution plan

How to optimize SQL according to the execution plan

The index

Hash index &B tree index

Common index & unique index

Clustered index & non-clustered index

Cover index

Leftmost prefix rule

An index pushdown

Index of the failure

Back to the table

SQL optimization

Database transaction and isolation levels

The transaction of the ACID

Transaction isolation level and read phenomenon

Transaction can implement the lock function

encoding

utf8

utf8mb4

Why not use UTF8 encoding in the database

The number of rows of statistical

Difference between count(1), count(*), and count(field)

Why count(*) is recommended

The database lock

Shared locks, exclusive locks

Row lock, table lock

Optimistic lock, pessimistic lock

Use database locks to implement optimistic locking

Gap Lock, next-key Lock

The connection

In the connection

Left connection

The right connection

Set up the active and standby databases

log

binlog

redolog

In-memory database

h2

Depots table

Reading and writing separation

Common NOSQL databases

redis

memcached

Database lock and NoSql are used to implement distributed lock respectively

Performance tuning

Database connection Pool

Knowledge of data structures and algorithms

Simple data structures

The stack

The queue

The list

An array of

Hash table

The similarities and differences between stacks and queues

Stack usually adopts two kinds of storage structure

Two stacks implement the queue, and two queues implement the stack

The tree

Binary tree

The dictionary tree

Balanced tree

Sort tree

B tree

B + tree

R tree

Many trees

Red and black tree

The heap

Big root pile

Small root pile

figure

Directed graph

Undirected graph

The topology

Stable sorting algorithm

Bubble sort

Insertion sort

Cocktail order

Bucket sort

Count sorting

Merge sort

Merge sort in place

Binary sort tree sort

Pigeon nest order

Radix sort

Gnome sorting

Library sorting

Piece of sorting

Unstable sorting algorithm

Selection sort

Hill sorting

Clover sorting algorithm

Comb the sorting

Heap sort

Smooth sorting

Quick sort

Introspective sort

Patience to sort

Time complexity & space complexity

How to calculate time and space complexity

Time complexity of common sorting algorithms

Depth first and breadth first search

The whole arrangement

Greedy algorithm

KMP algorithm

The hash algorithm

Mass data processing

Divide and conquer

The hash map

Heap sort

Double barrel division

Bloom Filter

bitmap

Database index

Graphs etc.

Big Data knowledge

search

Solr

Lucene

ElasticSearch

Flow calculation

Storm

Spark

Flink

Hadoop, offline computing

HDFS

MapReduce

Distributed Log Collection

flume

kafka

logstash

Data mining

mahout

Network Security Knowledge

XSS

XSS defenses

CSRF

Injection attacks

SQL injection

XML injection

CRLF injection

File upload Vulnerability

Encryption and decryption

Symmetric encryption

Asymmetric encryption

The hash algorithm

Salt hashing algorithm

The encryption algorithm

MD5

SHA1

DES

AES

RSA

DSA

Rainbow table

DDOS attack

DOS attack

DDOS attack

Why can Memcached cause DDos attacks

What is reflective DDoS

How do I use Hash collisions to launch DOS attacks

SSL, TLS, and HTTPS

Destocking, washing and colliding

Architecture article

Architectural Design Principles

Single responsibility principle

Open and closed principle

Richter’s principle of substitution

Principle of dependence inversion

Interface separation Principle

distributed

Distributed and Clustered

Data consistency

Service governance

Service degradation

Distributed theory

2PC

3PC

CAP

BASE

Distributed coordination with Zookeeper

The basic concept

Common use

ZAB algorithm

Split brain

Distributed transaction

Local transactions & distributed transactions

Reliable message ultimate consistency

Best effort notice

TCC

Dubbo

The service registry

Service discovery

Service governance

Distributed database

How do you build a distributed database

When do you need a distributed database

mycat

otter

HBase

Distributed file system

mfs

fastdfs

Distributed cache

Cache consistency

Cache hit ratio

Cache redundancy

Current limiting the drop

Fuse mode

Hystrix

Sentinal

resilience4j

Distributed algorithm

Byzantine problems and algorithms

2PC

3PC

Consensus algorithm

Paxos algorithm and Raft algorithm

ZAB algorithm

Domain driven design

Entities, value objects

Polymerization, polymerization root

Bounded context

How is DDD layered

Hyperemia model and anemia model

What does DDD have to do with microservices

Micro service

SOA

Conway’s law

ServiceMesh

sidecar

Docker & Kubernets

Spring Boot

Spring Cloud

High concurrency

Depots table

Horizontal split and horizontal split

Distributed transaction problem after dividing database and table

CDN technology

The message queue

RabbitMQ, RocketMQ, ActiveMQ, Kafka

Comparison of message queues

High availability

Double machine architecture

Lord for copy

A master-slave replication

The main master replicates

Different live

A high performance

High performance database

Reading and writing separation

Depots table

High performance cache

The cache to penetrate

Cache avalanche

Caching hot

Load balancing

PPC, TPC

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

The log

Buried point

Dapper

Load balancing

Load balancing classification

Layer 2 Load Balancing

Layer 3 load balancing

Layer 4 load balancing

Seven layers of load balancing

Load balancing tool

LVS

Nginx

HAProxy

Load balancing algorithm

Static load balancing algorithm: polling, ratio, priority

Dynamic load balancing algorithm: Minimum number of connections, fastest response time, observation method, prediction method, dynamic performance allocation, dynamic server complement, quality of service, service type, regular pattern.

DNS

Principle of DNS

The design of the DNS

CDN

Data consistency

Expand the article

Cloud computing

IaaS

SaaS

PaaS

Virtualization technology

openstack

Serverlsess

Search engine

Solr

Lucene

Nutch

Elasticsearch

Rights management

Shiro

Block chain

The hash algorithm

Merkle tree

Public key cryptography algorithm

Consensus algorithm

Raft agreement

Paxos algorithm and Raft algorithm

Byzantine problems and algorithms

Message authentication code and digital signature

The currency

dig

Consensus mechanism

Lightning network

Side chain

Hot issue

y

The etheric fang

Super books

Artificial intelligence (ai)

Mathematical basis

Machine learning

Artificial neural network

Deep learning

Application scenarios

Common framework

TensorFlow

DeepLearning4J

IoT

Quantum computing

AR & VR

Other languages

Groovy

Kotlin

Python

Go

NodeJs

Swift

Rust