Read in other languages: Mandarin
- 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 ): Java Basics Knowledge Points/Interview Questions Summary
Important Knowledge Points Explained:
Knowledge/Interview Questions: (Must see )
Important Knowledge Points Explained:
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!) .
Diagrammatic Data Structures :
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 :
In addition，GeeksforGeeks This site summarizes the common algorithms, which are more comprehensive and systematic.
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.
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.
Important Knowledge Points Explained: 1.
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 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
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.
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.
Message queues are used in distributed systems primarily for decoupling and peak shaving. Related reading: Message Queues FAQ Summary。
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.
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.
** 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 = disaster recovery + backup.
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.
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!
：Code submit frequency
：React/respond to issue & PR etc.
：Well-balanced team members and collaboration
：Recent popularity of project
：Star counts, download counts etc.