👏 MAJOR UPDATE!!! Serious!
Read in other languages: Mandarin
- JavaGuide Read online version（New Version，Recommended👍：https://javaguide.cn/
- JavaGuide Online reading version (old version, some links are no longer accessible): https://snailclimb.gitee.io/javaguide/#/
- [JavaGuide Interview Blitz Edition] PDF Version Download (https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=100029614&idx=1&sn=62993c5cf10265cb7018db7f1ec67250&chksm=4ea1fb6579d67273499b7243641d4ef372decd08047bfbb6dfb5843ef81c7ccba209086cf345#rd)
- Introduction: For an introduction to the JavaGuide, see: Some notes on the JavaGuide 。
- Contribution Guide : You are welcome to participate in the maintenance of JavaGuide, it's a very rewarding thing to do.
- PDF Version : JavaGuide Interview Blitz Edition PDF Version 。
- Illustrated Computer Fundamentals : Illustrated Computer Fundamentals PDF Download 。
- Planet of Knowledge : Resume guide/Java learning/Interview guide/Interview booklet. You are welcome to join My Knowledge Planet 。
- Interview Special Edition : For those who are preparing for the interview, you can consider the interview special edition: [Java Interview Advanced Guide].(https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7) (Very high quality, built specifically for interviews, free for planet users)
- Reprint Instructions: All the following articles are my (Guide) original if not stated at the beginning of the text, reproduced at the beginning of the text to indicate the source, if found malicious plagiarism / transport, will use legal weapons to defend their rights. Let's maintain a good technical creation environment together! ⛽️
Knowledge points/interview questions: (Must see:+1: ):
- Java Basics Knowledge Points/Interview Questions Summary(1)
- Java Basics Knowledge Points/Interview Questions Summary(2)
- Java Basics Knowledge Points/Interview Questions Summary(3)
Important Knowledge Points Explained:
- Why only value passing in Java?
- What is the reflection mechanism? What are the application scenarios of reflection mechanism?
- (docs/java/basis/proxy-model-detail.md) proxy-model-detail: static proxy + JDK/CGLIB dynamic proxy practice
- What are the common IO models and what is the difference between BIO, NIO, AIO in Java?
- BigDecimal solve floating point problem
- Java collection FAQ summary (must see :+1:)
- Summary of considerations for using Java containers
- source code analysis : ArrayList source code + expansion mechanism analysis, [HashMap(JDK1.8) source code + underlying data structure analysis](docs/java/collection/ hashmap-source-code.md), ConcurrentHashMap source code + underlying data structure analysis
Knowledge/Interview Questions: (Must see :+1:)
- Java concurrency basic common interview questions summary
- Java concurrency advanced common interview questions summary
Important Knowledge Points Explained:
- Thread pool: Java thread pool learning summary, Java thread pooling best practices
- ThreadLocal keyword resolution
- Java concurrency container summary
- Atomic atomic class summary
- AQS principle and AQS synchronization component summary
- Getting Started with CompletableFuture
JVM (must see :+1:)
This part of JVM mainly refers to JVM Virtual Machine Specification-Java8 and Mr. Zhou's In-depth Understanding of Java Virtual Machine (3rd Edition) (Highly recommended to read more than once!) .
- Java Memory Regions
- JVM Garbage Collection
- JDK monitoring and troubleshooting tools
- Class file structure
- Class loading process
- Class loader
- [To be completed] Summary of the most important JVM parameters (half of the translation is perfected)
- [Extra Meal] The Big White Word takes you through the JVM
- Java 8: Java 8 new features summary, Java8 common new features summary
- Java9~Java15 : An article to take you through the important new features of JDK9~15!
Diagrammatic Data Structures :
- Linear data structure :array, chain table, stack, queue
- tree : focus on red-black-tree, B-, B+, B* tree, LSM tree
Other common data structures : 1.
This part of the algorithm is very important, if you do not know how to learn the algorithm, you can look at what I wrote.
Summary of common algorithm problems :
- Several Common String Algorithm Questions Summarized
- Summary of several common algorithm problems of the chain table
- Link offer some programming questions
In addition，GeeksforGeeks This site summarizes the common algorithms, which are more comprehensive and systematic.
- Database Basics Summary
- MySQL Knowledge Summary (Must see:+1:)
- One Thousand Lines MySQL Study Notes
- MySQL High Performance Optimization Specification Recommendations
Important knowledge points:
It is used to improve search efficiency and functions similarly to browser search engines. The more common search engines are Elasticsearch (recommended) and Solr.
System design essential foundation
When we do back-end development, our main job is to provide APIs for front-end or other back-end services such as APIs for querying user data. a RESTful API is an API built on REST, and it is an API designed to be better used.
Related reading: RestFul API Brief Tutorial
During programming, you must pay attention to naming. Because a good naming is a comment, others will know what your variable, method or class does as soon as they see your naming!
Read more about: Java Naming 。
If you have not touched Java Web development, you can first look at my summary of J2EE Basics. Although much of the content in this article is now obsolete, it will give you a deeper understanding of Java backend technology development.
Spring/SpringBoot (must see :+1:)
Important Knowledge Points Explained: 1.
- Spring/Spring Boot common annotations summary! Arrangement!
- Spring Transaction Summary
- What design patterns are used in Spring?
- SpringBoot auto-assembly principle?"
Fundamentals of Certification Authorization In this article I will introduce the common concepts of authentication and authorization: Authentication, Authorization and Cookie, Session, Token, OAuth 2, SSO. If you are not clear about these concepts, we suggest you read this article properly.
JWT : JWT (JSON Web Token) is a form of authentication, where a JWT is essentially a signed piece of data in JSON format. Since it is signed, the recipient can verify its authenticity. Related reading.
SSO(Single Sign On): SSO(Single Sign On) that is, single sign on means that a user has the right to access other systems related to him/her by logging into one of the multiple subsystems. For example, after we logged into Jingdong Finance, we also successfully logged into Jingdong Supermarket, Jingdong Home Appliances and other subsystems of Jingdong. Related reading: **SSO Single Sign-On is enough to read this article! **
Data desensitization means that we deform sensitive information data according to specific rules, for example, we replace certain digits of cell phone numbers and ID numbers with *.
Recently, some friends asked about timing task related issues. So, I simply wrote an article to summarize some concepts of timed tasks and some common timed task technology options: ["Java Timed Tasks Revealed"].(./docs/system-design/定时任务.md)
CAP theory and BASE theory
CAP is also the combination of the initials Consistency, Availability, and Partition Tolerance.
BASE is an acronym for Basically Available, Soft-state, and Eventually Consistent. The BASE theory is the result of a trade-off between consistency and availability in the CAP, and is derived from a summary of distributed practices for large-scale Internet systems, evolving from the CAP theorem, which significantly reduces our system requirements.
Related reading: CAP Theory and BASE Theory Explained
Paxos algorithm and Raft algorithm
The Paxos algorithm was born in 1990 as a classical algorithm for solving the consistency of distributed systems. However, since the Paxos algorithm was very difficult to understand and implement, there were continuous attempts to simplify it. Only in 2013 was a distributed consistency algorithm born that is easier to understand and implement than the Paxos algorithm - the Raft algorithm.
RPC makes calling remote service calls as easy as calling local methods.
Dubbo is a home-grown RPC framework , open source by Ali . Related reading.
Gateways are mainly used for request forwarding, security authentication, protocol conversion, and disaster recovery.
- Why gateways? What common gateway systems do you know of?
- Design and Implementation of Shepherd, a 10 Billion Dollar API Gateway Service
In complex distributed systems, a large amount of data and messages often need to be uniquely identified. For example, after the data volume is too large, it is often necessary to split the data into libraries and tables, and after the splitting of the libraries and tables, a unique ID is needed to identify a piece of data or a message, and the self-incrementing ID of the database obviously cannot meet the demand. Related reading: Why distributed id? What are the distributed id generation solutions?
** A distributed transaction is one in which the participants of the transaction, the server supporting the transaction, the resource server, and the transaction manager are located on different nodes of different distributed systems. **
Simply put, a large operation consists of different small operations that are distributed across different servers and belong to different applications, and the distributed transaction needs to guarantee that all of these small operations either succeed or fail. Essentially, distributed transactions are about ensuring data consistency across different databases.
The first two articles may have content overlapping parts, we recommend reading them both.
- [Getting Started] Summary of ZooKeeper-related concepts
- [Advanced] Summary of ZooKeeper Related Concepts
- [Hands-on] ZooKeeper hands-on
Message queues are used in distributed systems primarily for decoupling and peak shaving. Related reading: Message Queues FAQ Summary。
- RabbitMQ : Getting Started with RabbitMQ
- RocketMQ : Getting Started with RocketMQ、A few simple questions and answers for RocketMQ
- Kafka : Kafka FAQ Summary
Read-write separation & split database and split table
Read-write separation is mainly to separate the database read and write operations on different database nodes. The master server is responsible for writes and the slave server is responsible for reads. Alternatively, one master and one slave or one master and multiple slaves can be used.
Read-write separation can substantially improve read performance and marginally improve write performance. Therefore, read-write separation is more suitable for scenarios where there are more concurrent read requests from a single machine.
Library and table separation is to solve the problem of continuous database performance degradation due to the excessive amount of library and table data.
Common library and table splitting tools are:
TSharding (Mushroom Street),
MyCAT (based on Cobar),
Cobar (Alibaba).... We recommend using
sharding-jdbc is a lightweight
Java framework, served as a
jar package, no extra O&M work for us, and good compatibility.
Related reading: read-write separation & sharding summary of common problems
Load balancing systems are often used to distribute tasks such as user request processing to multiple servers to improve the performance and reliability of a website, application or database.
Common load balancing systems include 3 types.
- DNS load balancing: generally used to achieve geographic level balancing.
- Hardware Load Balancing: Load balancing is achieved through a separate hardware device such as F5 (hardware is usually expensive).
- Software load balancing: Load balancing is achieved by load balancing software such as Nginx.
Highly available describes a system that is available most of the time and can provide services to us. High availability means that the system is available even in the event of a hardware failure or system upgrade.
Related reading: "How to design a highly available system? What are the areas to consider?》 。
Flow limiting considers how to respond to system failures from the perspective of user access pressure.
The purpose of flow limiting is to limit the frequency of requests received by the server-side interface to prevent the service from hanging. For example, if an interface is limited to 100 requests per second, requests that exceed the limit are either dropped or placed in a queue for processing. Limiting the flow can effectively deal with the excessive number of burst requests. Related reading: What is flow limiting? What are the flow limiting algorithms?
Downgrading is the consideration of how to respond to system failures from the perspective of system functional priorities.
Service degradation refers to the strategic downgrading of some services and pages based on the current business situation and traffic when the server is under pressure, in order to free up server resources to ensure the normal operation of core tasks.
Meltdown and degradation are two concepts that are easily confused and do not have the same meaning.
Downgrades are intended to deal with failures of the system itself, while meltdowns are intended to deal with failures of external systems or third-party systems on which the current system depends.
An alternative type of flow limitation, analogous to real-world queuing. If you've played League of Legends, you'll know that every time there's an event, you have to go through a queue to get into the game.
Deploy multiple copies of the same service to avoid single points of failure.
Timeout and retry mechanism
** Once a user's request goes beyond a certain time without a response, the request is ended and an exception is thrown. ** Failure to set a timeout may result in slow response times, or even a buildup of requests that prevents the system from processing them.
In addition, the number of retries is generally set to 3. More retries will not be beneficial, but will add pressure to the server (some scenarios may not be suitable to use the failure retry mechanism).
Disaster recovery design and offsite multi-live
Disaster recovery = disaster recovery + backup.
- Backup : Backup several copies of all important data generated by the system.
- Disaster Tolerant : Create two identical systems in offsite locations. When the system in one place suddenly hangs, the whole application system can be switched to the other one so that the system can provide services normally.
Offsite Multi-Live describes the deployment of services offsite and the simultaneous provisioning of services to the outside world. The main difference from traditional disaster recovery design is "multi-live", i.e., all sites are providing services to the public at the same time. Off-site multiplication is designed to deal with unexpected situations such as fires, earthquakes, and other natural or perceived disasters.
- Read this article to understand off-site multi-live
- Four steps to build offsite multi-live
- "Learning Architecture from Scratch" - 28 | Guarantees for Highly Available Business: Offsite Multi-Live Architecture
About the Author
- Personal Introduction Q & A
- I used to be an Internet addict too
- Feelings after one month of onboarding
- Feelings from graduation to six months of employment
- A training institution stole my article into a video also on the B station popular
If you want to follow my updated articles and the dry goods I share in real time, you can follow my public number.
《Java Interview Blitz》: A PDF version of "Java Interview Blitz" derived from this document specifically for interviews Public Reply back to "Interview Blitz " and get it for free!