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.