Always said to learn Java, do Java development, in fact, did not do a system summary. So do a Java development, or senior Java development, architect, exactly what things, what principles, first do a simple summary, but also hope to supervise their own learning and summary according to this route.

Basic knowledge:

Java reflection: Field, Type

Java proxy: Proxy, cglib

Java threads: Thread, Runnable, ExecutorService, Callable, Future, ThreadPoolExecutor

Java data structure: HashMap ArrayList LinkedList HashSet BlockingQueue ConcurrentHashMap TreeMap

JVM: Run time data area, heap setup, collector setup, recovery log analysis

Lambda expressions: stream, filter, collect, map, forEach,

Concurrency and locking: synchronized, ReentrantLock, ReadWriteLock, Atomic;

Communication protocols: HTTP, TCP/IP, NIO, BIO, WebSocket

Data structure: table, stack, queue, binary tree, AVL tree, BTree, black and red number, hash, graph.

Common algorithms: bubble sort, select sort, insert sort, heap sort, merge sort, quick sort; Binary search; Bloom filter;

Design patterns: Factory, Observer, singleton, proxy, command, policy

Web containers: Tomcat, JBoss, jetty

HTTP services: HTTPD, nginx, openResty, Kong

Toolkits: Common, POI, Gson, Guava

Build tools: Maven, Gradle

Communication framework: Netty, MINA

Serialization: hessian, Protostuff, JSON

Service discovery: ZooKeeper, ETCD, Eureka, consul

Databases: mysql, mongoDB, Redis, Mycat, berkeleyDB

Connection pool: DBCP, C3O0, DRUID, JDBC, HTTP

Big data: Spark, Storm, Hadoop, HDFS

Containers: Docker, K8S

Monitoring: Zabbix, Prometheus

Open source frameworks:

Spring: IOC, AOP, transaction processing

SpringMVC: DispatcherServlet, HandlerMapping, HandlerAdapter, Controller, Intercepter, View

SpringBoot: integrated with Web, Hibernate, Mybatis, Redis, docker

SpringCloud: Netfix, Config, Bus, Eureka, Consul, Stream, Task, Gateway

Hibernate: Configuration, SessionFactory, Optimistic locking, level 2 cache, high concurrency, multiple data sources

Mybatis: Configuration, SqlSession, Executor, TypeHandler, dynamic SQL, level 2 Cache

Netty: NIO, unpack, Future, pipeline

Guava: Flow limiting algorithm, Bloom filter, JVM cache

Hystrix: Isolation, circuit breaker, downgrade

Message queues: rabbitMQ, rocketMQ, Kafka

RPC frameworks: Dubbo, Motan, Thrift, GRPC

Search invisibility: Lucene, Elasticsearch, Solr

Database:

Mysql: primary/secondary, read/write, horizontal/vertical split, tuning, syntax, indexing, optimization

Redis: primary/secondary, read/write separation, persistence, hit, and expiration

MogoDB: collection, document, file, index, aggregate function, sharding

Message queue:

Concepts: topic, message, Queue, producer, consumer, broker

Message types: sequential message, timed message, delayed message, transaction message

Message backtracking, message stacking, message pulling, message signing

High concurrency:

Service separation: microservitization, distributed transaction, database horizontal and vertical separation

Service governance: ZooKeeper and RPC

Message queuing: asynchronous processing, final consistency

Cache technology: JVM cache, Redis cache, NGINx cache, CDN cache, browser cache. Cache breakdown, cache avalanche, cache obsolescence

High availability:

Load balancing: algorithm, static and static separation, switching, detection

Timeout retry: Timeout duration, retry mechanism, and policy

Flow limiting: algorithms, containers, nginx, jitter prevention

Isolation: thread isolation, process isolation, machine room isolation, read and write isolation, static isolation, hystrix, servlet3 isolation fuse

Demotion: automatic demotion, manual demotion, control center, hystrix means

Monitoring: process monitoring, thread monitoring, machine monitoring, alarm

Problem solving:

1. How to solve the single point of failure? (LVS, F5, A10, Zookeep, MQ)

2. How to ensure data security; (Hot standby, cold standby, live more in different places)

3. How to solve retrieval problems; (Database proxy middleware: mysql-Proxy, Cobar, MaxScale, etc.)

4. How to solve the problem of statistical analysis; (Offline, near real time)

Be sure to share your favorite friends with the surrounding friends!