Major version Update time note
v1.0 2015-08-01 First release
v1.1 2018-03-12 Increase the knowledge of new technology and improve the knowledge system

First, the basic article

JVM

JVM memory structure

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

Java Memory Model

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

The garbage collection

Memory allocation policy, 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, compilation optimization

Class loading mechanism

ClassLoader, class loading process, parent delegation (breaking parent delegation), Modularity (Jboss Modules, OSGi, jigsaw)

Vm performance monitoring and troubleshooting tool

JPS, jStack, jmap, jstat, jConsole, jInfo, Jhat, Javap, Btrace, TProfiler

Compile and decompile

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

Variable types in Java

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

Substring in JDK 6 and JDK 7

ReplaceFirst, replaceAll, replace

String overloading of ‘+’,

The difference between String.valueOf and integer.toString

Immutability of strings

Automatic unpacking

The caching mechanism for Integer

Familiar with Java keywords

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

Collection classes

Use of common collection classes, ArrayList, LinkedList and Vector differences, SynchronizedList and Vector differences, HashMap, HashTable, ConcurrentHashMap differences, Java The use of Stream, the use of the Apache collection handling utility class, and the differences in the implementation of HashMap in different versions of the JDK and why

The enumeration

Use of enumeration, enumeration and singleton, Enum class

Java IO&Java NIO, and learn to use them

The differences between BIO, NIO and AIO, the usage and principle of the three IO, Netty

Java Reflection with JavAssist

Reflection and factory patterns, java.lang.Reflect.*

Java serialization

What is serialization and deserialization, why serialization, the underlying principles of serialization, serialization and singleton mode, Protobuf, why serialization is not safe

annotations

Meta-annotations, custom annotations, common use of annotations in Java, combination of annotations and reflection

JMS

What is the Java Message Service, JMS messaging model

JMX

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

The generic

Generics and inheritance, type erasure, K T V E in generics? The meanings of object and other generic types

Unit testing

Junit, Mock, Mockito, in-memory database (H2)

Regular expressions

java.lang.util.regex.*

Common Java tool libraries

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

What is a API&SPI

abnormal

Exception type, correct handling exception, and custom exception

Time to deal with

Time zone, season, time API in Java

encoding

Solve garbled problem, commonly used encoding

Syntactic sugar

Java grammar sugar principle, solution sugar

Java Concurrent programming

What is the difference between a thread and a process

Read the source code and learn how to use it

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

The thread pool

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

Thread safety

Deadlocks, how to troubleshoot deadlocks, Java thread scheduling, thread safety, 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 locking, blocking lock, deadlock

A deadlock

volatile

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

synchronized

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

Sleep and wait

Wait and notify

Notify and notifyAll

ThreadLocal

Write a deadlock program

Write code to solve producer-consumer problems

Daemon thread

The difference between a daemon thread and a non-daemon thread and how to use it

Second, the advanced chapter

Java Underlying knowledge

Bytecode and class file format

CPU cache, L1, L2, L3 and pseudo share

Tail recursion

An operation

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

Design patterns

Understand 23 design patterns

Common design patterns are used

Singletons, policies, factories, adapters, chains of responsibility.

Implement AOP

To realize the IOC

Implement a thread-safe singleton pattern without synchronized or lock

Nio and REACTOR design model

Knowledge of network programming

Common protocols, such as TCP, UDP, HTTP, and HTTPS

Three-way handshake and four-way close, flow control and congestion control, OSI seven-layer model, TCP sticking and unpacking

Differences before HTTP /1.0 HTTP /1.1 HTTP /2

Java RMI, Socket, HttpClient

The cookie and session

If cookie is disabled, how to implement session

An HTTP server that writes a simple static file in Java

Implement client-side caching, support for return 304, implement concurrent download of a file, use thread pools to process client requests, use NIO to process client requests, and support simple rewrite rules. These functions should be implemented according to the “open closed principle”.

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

Using Java to achieve FTP, SMTP protocol

Means of interprocess communication

What is a CDN? If implemented?

What is DNS?

The reverse proxy

Framework of knowledge

Servlet thread safety issues

The filter and listener in the Servlet

Hibernate’s caching mechanism

Lazy loading for Hiberate

Initialization of Spring beans

Spring AOP principles

Implement Spring’s IOC yourself

Spring MVC

Spring Boot2.0

Spring Boot starter principle, their own implementation of a starter

Spring Security

Knowledge of application servers

JBoss

tomcat

jetty

Weblogic

tool

git & svn

maven & gradle

Three, advanced

The new technology

Java 8

Lambda expressions, Stream API,

Java 9

Jigsaw, Jshell, Reactive Streams

Java 10

Local variable type inference, parallel Full GC of G1, ThreadLocal handshake mechanism

Spring 5

Responsive programming

Spring Boot 2.0

Performance optimization

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

On-line 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 program

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

Solutions to common problems

Memory overflows, thread deadlocks, class loading conflicts

Use the tool 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 solve problems when a Java program frequently FullGC,

How to view garbage collection logs,

When OutOfMemory occurs in a Java application,

How to determine if there is a deadlock,

How do I know if there is a memory leak

Knowledge of compilation principles

Compile and decompile

Compilation and decompilation of Java code

Java decompile 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 pagination

Virtual memory and main memory

Database knowledge

MySql Execution Engine

MySQL Execution Plan

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

SQL optimization

The transaction

The isolation level of the transaction and whether the transaction can implement the locking function

The database lock

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

Set up the active and standby databases

binlog

In-memory database

h2

Common NOSQL databases

Redis, memcached

Database lock and NoSql are used to implement distributed lock respectively

Performance tuning

Knowledge of data structures and algorithms

Simple data structures

Stack, queue, linked list, Array, hash table,

The tree

Binary tree, dictionary tree, equilibrium 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 array, greedy algorithm, KMP algorithm, hash algorithm, massive data processing

Big Data knowledge

Zookeeper

Basic concepts, common usage

Solr, Lucene, ElasticSearch

Deploy Solr, SolrCloud, add, delete, and query indexes on Linux

Storm, Streaming computing, Understanding Spark, S4

Deploy Storm on Linux, use ZooKeeper for coordination, and debug Storm Topology in Storm Hello World, Local, and Remote mode.

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, and DSA

What are DOS attacks and DDOS attacks

Why can memcached cause DDos attacks, and what is reflective DDos

SSL, TLS, and HTTPS

How do I use Hash collisions to launch DOS attacks

Sign a certificate with OpenSSL to deploy to Apache or Nginx

Iv. Architecture

distributed

Data consistency, service governance, 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 to need distributed database, Mycat, otter, HBase

Distributed file system

The MFS, fastdfs

Distributed cache

Cache consistency, cache hit ratio, and 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, and network I/O

Monitoring means

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

Monitoring Data Collection

Log, buried point

Dapper

Load balancing

Tomcat load balancing and Nginx load balancing

DNS

Principle and design of DNS

CDN

Data consistency

Five, the expansion

Cloud computing

IaaS, SaaS, PaaS, Virtualization technology, openstack, Serverlsess

Search engine

Solr, Lucene, Nutch, Elasticsearch

Rights management

Shiro

Block chain

Hash algorithms, Merkle trees, Public key Cryptoalgorithms, consensus algorithms, Raft protocol, Paxos algorithms and Raft algorithms, Byzantine problems and algorithms, Message Authentication codes and digital signatures

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 Networks, Deep learning, application scenarios.

Common framework

TensorFlow, DeepLearning4J

Other languages

Groovy, Python, Go, NodeJs, Swift, Rust

Recommended books

“In-depth Understanding of Java Virtual Machine”, “Effective Java”, “In-depth Analysis of Java Web Technology Insider”, “Large Website technology Architecture”, “The Way of Clean Code”, “Head First Design Mode”, “Maven Actual Combat”, “Blockchain Principle, Design and Application” From Paxos to Zookeeper, Architecture is the Future

PS: for a long time, I also in advanced according to the Java programmer guide to enrich their own knowledge system, in the process of learning to learn the contents of the summary to my blog (http://www.hollischuang.com) and public (Hollis). Welcome to study together.

Follow my public number, 2000G Java learning resources for free