Top Related Projects
😮 Core Interview Questions & Answers For Experienced Java(Backend) Developers | 互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识
:books: 技术面试必备基础知识、Leetcode、计算机操作系统、计算机网络、系统设计
「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!
【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。
To Be Top Javaer - Java工程师成神之路
Everything you need to know to get the job.
Quick Overview
JCSprout is a comprehensive Java learning resource repository on GitHub. It covers a wide range of Java-related topics, including core Java concepts, concurrent programming, distributed systems, and algorithm implementations. The project aims to provide in-depth knowledge and practical examples for Java developers of all levels.
Pros
- Extensive coverage of Java topics, from basics to advanced concepts
- Well-organized content with clear explanations and code examples
- Regularly updated with new information and improvements
- Includes practical examples and real-world scenarios
Cons
- Primarily written in Chinese, which may limit accessibility for non-Chinese speakers
- Some topics may lack depth compared to dedicated resources or textbooks
- Navigation can be overwhelming due to the large amount of content
- May require prior Java knowledge to fully benefit from some advanced topics
Code Examples
Since JCSprout is primarily a learning resource repository rather than a code library, it doesn't have a specific API or set of functions to demonstrate. However, it does contain numerous code examples within its documentation. Here are a few examples from different sections:
- Thread creation example:
public class ThreadDemo {
public static void main(String[] args) {
Thread thread = new Thread(() -> {
System.out.println("Hello from a new thread!");
});
thread.start();
}
}
- Singleton pattern implementation:
public class Singleton {
private static volatile Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
- Binary search algorithm:
public static int binarySearch(int[] arr, int target) {
int left = 0, right = arr.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) return mid;
if (arr[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}
Getting Started
To get started with JCSprout:
- Visit the GitHub repository: https://github.com/crossoverJie/JCSprout
- Clone the repository or download the ZIP file
- Navigate through the README.md file to find topics of interest
- Explore the relevant markdown files in the repository for detailed explanations and code examples
Note that most content is in Chinese, so non-Chinese speakers may need to use translation tools to fully benefit from the resource.
Competitor Comparisons
😮 Core Interview Questions & Answers For Experienced Java(Backend) Developers | 互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识
Pros of advanced-java
- More comprehensive coverage of advanced Java topics
- Better organized structure with clear categorization
- Regularly updated with new content and examples
Cons of advanced-java
- May be overwhelming for beginners due to its extensive content
- Less focus on basic Java concepts compared to JCSprout
Code Comparison
advanced-java example (Distributed Lock):
public class RedisLock {
public boolean lock(String key, String value, long expireTime) {
return jedis.setnx(key, value) == 1 && jedis.expire(key, expireTime) == 1;
}
}
JCSprout example (Thread Pool):
ThreadPoolExecutor executor = new ThreadPoolExecutor(
corePoolSize,
maxPoolSize,
keepAliveTime,
TimeUnit.SECONDS,
new LinkedBlockingQueue<>(queueSize)
);
Both repositories provide valuable resources for Java developers, with advanced-java offering a more extensive and structured approach to advanced topics. JCSprout, while less comprehensive, may be more suitable for those looking for a concise overview of Java concepts. The code examples demonstrate the different focus areas of each repository, with advanced-java emphasizing distributed systems and JCSprout covering core Java features.
:books: 技术面试必备基础知识、Leetcode、计算机操作系统、计算机网络、系统设计
Pros of CS-Notes
- More comprehensive coverage of computer science topics, including operating systems, networks, and databases
- Better organized structure with clear categorization of subjects
- Includes more visual aids like diagrams and charts to explain complex concepts
Cons of CS-Notes
- Less focus on practical Java programming compared to JCSprout
- May be overwhelming for beginners due to the breadth of topics covered
- Updates less frequently than JCSprout
Code Comparison
CS-Notes example (Java):
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
JCSprout example (Java):
public class Singleton {
private static volatile Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
The code comparison shows that JCSprout provides a more thread-safe implementation of the Singleton pattern using double-checked locking, while CS-Notes offers a simpler but potentially less robust version.
「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!
Pros of JavaGuide
- More comprehensive coverage of Java topics, including frameworks and tools
- Better organized structure with clear categories and subcategories
- More frequent updates and contributions from the community
Cons of JavaGuide
- Can be overwhelming for beginners due to the vast amount of information
- Some topics may lack depth compared to JCSprout's focused approach
Code Comparison
JCSprout example (Thread communication):
public class WaitAndNotify {
private static Object lock = new Object();
public static void main(String[] args) {
new Thread(new ThreadA()).start();
new Thread(new ThreadB()).start();
}
}
JavaGuide example (Thread creation):
public class MyThread extends Thread {
@Override
public void run() {
System.out.println("MyThread running");
}
}
MyThread t = new MyThread();
t.start();
Both repositories provide valuable resources for Java developers, but they cater to different needs. JCSprout focuses on core Java concepts and in-depth explanations, while JavaGuide offers a broader overview of Java ecosystem with more topics covered. The choice between the two depends on the developer's specific learning goals and experience level.
【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。
Pros of JavaFamily
- More comprehensive coverage of Java ecosystem topics
- Regular updates and active community engagement
- Includes practical interview preparation materials
Cons of JavaFamily
- Less structured organization compared to JCSprout
- May be overwhelming for beginners due to extensive content
- Some topics lack in-depth explanations
Code Comparison
JCSprout example (Thread creation):
public class ThreadExample extends Thread {
@Override
public void run() {
System.out.println("Thread is running");
}
}
JavaFamily example (Lambda expression):
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.forEach(n -> System.out.println(n));
Both repositories provide code snippets to illustrate concepts, but JavaFamily tends to include more modern Java features and practical examples.
Summary
JCSprout offers a well-structured approach to Java core knowledge, while JavaFamily provides a broader range of topics and more up-to-date content. JCSprout may be more suitable for beginners, whereas JavaFamily caters to a wider audience, including those preparing for interviews. Both repositories have their strengths, and developers may benefit from using them in combination to gain a comprehensive understanding of Java development.
To Be Top Javaer - Java工程师成神之路
Pros of toBeTopJavaer
- More comprehensive coverage of Java topics, including advanced concepts and industry practices
- Better organized structure with clear categorization of subjects
- Includes practical examples and real-world scenarios for better understanding
Cons of toBeTopJavaer
- Less focus on in-depth explanations of core Java concepts
- Fewer code snippets and practical implementations compared to JCSprout
- May be overwhelming for beginners due to the breadth of topics covered
Code Comparison
JCSprout example (Thread creation):
public class MyThread extends Thread {
@Override
public void run() {
System.out.println("MyThread running");
}
}
toBeTopJavaer example (Lambda expression):
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.forEach(name -> System.out.println(name));
Both repositories provide valuable resources for Java developers, but they cater to slightly different audiences. JCSprout focuses more on core Java concepts with detailed explanations and code examples, while toBeTopJavaer offers a broader range of topics and industry-relevant information. The choice between the two depends on the learner's goals and experience level.
Everything you need to know to get the job.
Pros of interviews
- Broader coverage of computer science topics, including algorithms, data structures, and system design
- More comprehensive preparation for technical interviews across various companies
- Includes solutions in multiple programming languages
Cons of interviews
- Less focus on Java-specific concepts and best practices
- May not cover in-depth Java ecosystem topics like JVM internals or Spring framework
- Lacks detailed explanations of core Java concepts
Code comparison
interviews:
def reverse(head):
prev = None
while head:
temp = head.next
head.next = prev
prev = head
head = temp
return prev
JCSprout:
public ListNode reverseList(ListNode head) {
ListNode pre = null;
ListNode cur = head;
while(cur != null) {
ListNode nextTemp = cur.next;
cur.next = pre;
pre = cur;
cur = nextTemp;
}
return pre;
}
Both repositories provide similar implementations for reversing a linked list, but JCSprout focuses on Java-specific code, while interviews offers solutions in multiple languages.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Java Core Sprout
ï¼å¤äºèè½é¶æ®µç Java æ ¸å¿ç¥è¯åºã
访é®è¿éè·åæ´å¥½çé 读ä½éªï¼https://crossoverjie.top/JCSprout/
æè¿å¼éäºç¥è¯æçï¼æ谢大家对 JCSprout
çæ¯æï¼ä¸ºå¤§å®¶æä¾ 100 份 10 å
ä¼æ å¸ï¼ä¹å°±æ¯ 69-10=59 å
ï¼å
·ä½ç¦å©å¤§å®¶å¯ä»¥æ«ç åèåå³å®æ¯å¦å å
¥ã
PS: åç»ä¼ç»§ç»ç»´æ¤è¯¥é¡¹ç®ï¼åæ¶å å ¥ç°å¨çé¨ç Golang/kubernetes/OpenTelemetry çç¥è¯ç¹ï¼æå ´è¶£çå¯ä»¥å å ¥æçå½é¢å¬æ´ï¼å½ç¶å 容ä¹ä¼æ´æ°å°è¿ä¸ªé¡¹ç®éï¼ã
ð | âï¸ | ð¥ | ð | ð | ð | ð® | ð | ð | ð | ð¡ |
---|---|---|---|---|---|---|---|---|---|---|
éå | å¤çº¿ç¨ | JVM | åå¸å¼ | æ¡æ¶ | æ¶æ设计 | æ°æ®åº | ç®æ³ | Netty | éå æè½ | èç³»ä½è |
常ç¨éå
Java å¤çº¿ç¨
- å¤çº¿ç¨ä¸ç常è§é®é¢
- synchronized å ³é®ååç
- å¤çº¿ç¨çä¸å¤§æ ¸å¿
- 对éçä¸äºè®¤ç¥
- ReentrantLock å®ç°åç
- ConcurrentHashMap çå®ç°åç
- å¦ä½ä¼é ç使ç¨åç解线ç¨æ±
- æ·±å ¥ç解线ç¨éä¿¡
- ä¸ä¸ªçº¿ç¨ç½¢å·¥ç诡å¼äºä»¶
- 线ç¨æ± ä¸ä½ ä¸å®¹éè¿çä¸äºç»è
- ã并åå å ¥åæåãä¹é»å¡éå
JVM
- Java è¿è¡æ¶å ååå
- ç±»å è½½æºå¶
- OOM åæ
- åå¾åæ¶
- 对象çå建ä¸å ååé
- ä½ åºè¯¥ç¥éç volatile å ³é®å
- ä¸æ¬¡å å溢åºææ¥ä¼åå®æ
- ä¸æ¬¡ HashSet æå¼èµ·ç并åé®é¢
- ä¸æ¬¡ç产 CPU 100% ææ¥ä¼åå®è·µ
åå¸å¼ç¸å ³
常ç¨æ¡æ¶\第ä¸æ¹ç»ä»¶
- Spring Bean çå½å¨æ
- Spring AOP çå®ç°åç
- Guava æºç åæï¼Cache åçï¼
- è½»é级 HTTP æ¡æ¶
- Kafka produce æºç åæ
- Kafka æ¶è´¹å®è·µ
æ¶æ设计
DB ç¸å ³
æ°æ®ç»æä¸ç®æ³
- 红å ç®æ³
- äºåæ å±åºéå
- æ¯å¦ä¸ºå¿«ä¹æ°å
- é¾è¡¨æ¯å¦æç¯
- ä»ä¸ä¸ªæ°ç»ä¸è¿å两个å¼ç¸å çäºç®æ å¼çä¸æ
- ä¸è´æ§ Hash ç®æ³åç
- ä¸è´æ§ Hash ç®æ³å®è·µ
- éæµç®æ³
- ä¸ç§æ¹å¼ååæå°ååé¾è¡¨
- å并两个æ好åºçé¾è¡¨
- 两个æ å®ç°éå
- å¨æå®ç°ä¸ä¸ª LRU cache
- é¾è¡¨æåº
- æ°ç»å³ç§» k 次
- 交æ¿æå°å¥å¶æ°
- 亿级æ°æ®ä¸å¤ææ°æ®æ¯å¦ä¸åå¨
Netty ç¸å ³
- SpringBoot æ´åé¿è¿æ¥å¿è·³æºå¶
- ä»çº¿ç¨æ¨¡åçè§åº¦ç Netty 为ä»ä¹æ¯é«æ§è½çï¼
- 为èªå·±æ建ä¸ä¸ªåå¸å¼ IM(å³æ¶é讯) ç³»ç»
éå æè½
- TCP/IP åè®®
- ä¸ä¸ªå¦æ¸£çé¿éä¹è·¯
- å¦ä½æ为ä¸ä½ãä¸é£ä¹å·®ãçç¨åºå
- å¦ä½é«æçä½¿ç¨ Git
èç³»ä½è
crossoverJie#gmail.com
Top Related Projects
😮 Core Interview Questions & Answers For Experienced Java(Backend) Developers | 互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识
:books: 技术面试必备基础知识、Leetcode、计算机操作系统、计算机网络、系统设计
「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!
【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。
To Be Top Javaer - Java工程师成神之路
Everything you need to know to get the job.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot