coffee
Java Standard Edition (Java SE)
Introduction to Java
Expanded Knowledge: GC
Expanded Knowledge: Java Cross Platform
Installing Java Development Kit (JDK)
Java IDEs
"Hello World" Java program
Explanation of "Hello, World!"
Compile "Hello, World!"
Expanded Knowledge: classpath
Expanded Knowledge: JAVA_HOME
Input and Output in Java
Comments in Java
Java Variables
Java Data Types
Java Operators
Java Control Flow Statements
Loops in Java
Java Object-Oriented Programming (OOP)
The "this" Keyword in Java
Java Constructor
Java Methods
Static Members in Java
Access Modifiers in Java
String Handling in Java
Java Arrays
Java Collections
Utility classes in Java
Java Exception Handling
Java I/O
Multithreading and Concurrency in Java
Java Network Programming
Advanced Java Concepts
Advanced Language Features
Generics
Annotations
Enums
Records
Sealed Classes
Lambda Expressions
Functional Interfaces
Collections & Functional APIs
Stream API
Optional
Comparable & Comparator
Collections Best Practices
Concurrency & Parallelism
Thread Pools
Locks & Synchronizers
CompletableFuture
Virtual Threads
Concurrent Collections
I/O & NIO
NIO Basics
NIO.2 File API
Serialization
Character Sets & Encoding
JVM Internals
JVM Architecture
Class Loading
Java Memory Model
Garbage Collection
Bytecode Basics
Java Platform Modules
JPMS Overview
Module Dependencies
Date & Time API
java.time API
Date/Time Formatting
Reflection & Dynamic Proxies
Reflection Basics
Dynamic Proxy
JDK Tools & Diagnostics
jcmd, jmap & jstack
JFR & VisualVM
jlink & jpackage
Java API Reference
java.lang
Object
String
StringBuilder
Integer
Long
Double
Boolean
Character
Math
System
Runtime
Class
ClassLoader
Thread
Enum
Record
Throwable
Exception
RuntimeException
AutoCloseable
Comparable
Cloneable
java.util
ArrayList
LinkedList
HashMap
HashSet
TreeMap
TreeSet
PriorityQueue
ArrayDeque
Collections
Arrays
Optional
Stream
Collectors
Comparator
Iterator
UUID
Random
Properties
Locale
ResourceBundle
java.util.concurrent
ExecutorService
ThreadPoolExecutor
ForkJoinPool
CompletableFuture
CountDownLatch
CyclicBarrier
Semaphore
ConcurrentHashMap
CopyOnWriteArrayList
BlockingQueue
AtomicInteger
Lock
ReentrantLock
ReadWriteLock
java.io
InputStream
OutputStream
Reader
Writer
FileInputStream
BufferedReader
BufferedWriter
ObjectInputStream
ObjectOutputStream
Serializable
File
Path
Files
PrintWriter
Scanner
java.time
Instant
LocalDate
LocalTime
LocalDateTime
ZonedDateTime
Duration
Period
DateTimeFormatter
ZoneId
Clock
java.net
URL
URLConnection
HttpURLConnection
Socket
ServerSocket
InetAddress
URI
HttpClient
java.security
MessageDigest
Cipher
KeyPair
Signature
SecureRandom
KeyStore
Certificate
Advanced Concurrency
Virtual Threads
Structured Concurrency
Scoped Values
CompletableFuture Advanced
ForkJoinPool
StampedLock
LongAdder and LongAccumulator
Concurrent Collections Deep Dive
ThreadLocal
Deadlock Prevention
Liveness Issues
Java Memory Model
Java Cookbook
Strings
Reverse a String
Check Palindrome
Count Vowels
Remove Duplicates
Find First Non-Repeating Character
Check Anagram
Compress String
Convert Case
Split and Join
Parse CSV
Validate Email Format
Extract Numbers from String
Replace Multiple Spaces
Trim Unicode Whitespaces
Generate Random String
Compare Version Strings
Escape HTML Characters
Format String Template
Levenshtein Distance
Longest Common Prefix
Collections
Sort Map by Value
Merge Two Lists
Remove Duplicates from List
Find Top K Elements
Flatten Nested List
Partition List
Rotate List Elements
Find Intersection of Lists
Convert List to Map
Group List by Property
Immutable Collection Copy
Shuffle List Securely
Find Missing Number
Find Duplicate Number
Sliding Window Maximum
Merge Sorted Arrays
Find Median of Two Sorted Arrays
Subarray Sum Equals K
Product Array Except Self
Next Permutation
Files Io
Read File to String
Write String to File
Copy File
Watch Directory Changes
List Files Recursively
Calculate File Hash
Compress with GZIP
Parse CSV File
Read Properties File
Create Temp File
Delete Directory Recursively
Get File Extension
Monitor Log File
Memory-Mapped File Read
Stream Large File
Compare Two Files
Find Largest File in Directory
Atomic File Write
Dates Time
Parse Date String
Format Date Output
Calculate Age from Birthdate
Add Business Days
Find Days Between Dates
Convert Timezone
Get Start of Day
Get End of Month
Check Leap Year
Schedule Task with Delay
Cron Expression Parsing
Measure Execution Time
Format Duration Human-Readable
Compare Dates Ignoring Time
Get Week Number
Find Next Weekday
Handle Daylight Saving Time
Streams
Filter and Collect
Group By with Counting
FlatMap Nested Lists
Reduce to Single Value
Find Max by Property
Partition by Predicate
Custom Collector
Parallel Stream Best Practices
Stream from Iterator
Infinite Stream Generate
Distinct by Property
Sort with Comparator Chain
Join Strings with Stream
Convert Stream to Array
Peek for Debugging
Optional with Stream
Stream Exception Handling
Primitive Streams
Concurrency Recipes
Producer-Consumer Queue
Rate Limiter Implementation
Simple Thread Pool
Parallel File Processing
CountDownLatch Barrier
Read-Write Lock Cache
Async Task Composition
Timeout on Future
Graceful Shutdown
Thread-Safe Singleton
Copy-On-Write Event Listeners
StampedLock Optimistic Read
Networking
Simple HTTP Server
Download File from URL
Send HTTP POST Request
Parse JSON Response
Check URL Reachability
WebSocket Client
Resolve DNS Lookup
Scan Open Ports
Proxy Configuration
SSL Certificate Validation
Retry with Exponential Backoff
Security Recipes
Hash Password with BCrypt
Generate Secure Token
AES Encrypt Decrypt
RSA Key Pair Generation
HMAC Signature Verification
Generate UUID
Secure Random Numbers
Mask Sensitive Data in Logs
Validate Input Sanitization
Parse JWT Claims
Certificate Pinning
Constant-Time String Compare
Java Internals
Bytecode
Bytecode Instruction: aload/aload_0
Bytecode Instruction: invokevirtual
Bytecode Instruction: invokespecial
Bytecode Instruction: invokestatic
Bytecode Instruction: invokeinterface
Bytecode Instruction: invokedynamic
Bytecode Instruction: getfield/putfield
Bytecode Instruction: getstatic/putstatic
Bytecode Instruction: ifeq/ifne
Bytecode Instruction: goto
Bytecode Instruction: tableswitch
Bytecode Instruction: lookupswitch
Bytecode Instruction: new
Bytecode Instruction: checkcast
Bytecode Instruction: monitorenter/monitorexit
Bytecode Instruction: athrow
Bytecode Instruction: ldc
Bytecode Instruction: bipush/sipush
Jvm Components
Class Loader Hierarchy
Bootstrap ClassLoader
Extension ClassLoader
Application ClassLoader
Bytecode Verification
Constant Pool
Method Area
PC Register
Native Method Interface
JNI Basics
JVMTI Overview
Agent Attach
Instrumentation API
Unsafe Class
VarHandle API
MethodHandle API
Lambda Metafactory
Compilation
javac Compilation Process
Annotation Processing
Compiler Plugins
Incremental Compilation
Preview Features
Release Flag
Cross-Compilation
Module Compilation
Record Compilation
Pattern Matching Compilation
String Concat Factory
Extended JDK Tools
jlink Module Linking
jdeps Dependency Analysis
jdeprscan Deprecation Scanner
jconsole Monitoring
jvisualvm Profiling
jshell Scripting
keytool Certificate Management
jarsigner JAR Signing
jar Command
javap Disassembler
javadoc Generation
serialver Serial Version
native2ascii Converter
rmic RMI Compiler
apt Annotation Processing
Java FAQ
Why is String immutable?
Why main method is static?
Pass by value or reference?
Difference between == and equals?
Why char[] for passwords?
What is autoboxing?
Integer cache -128 to 127
Why override hashCode with equals?
Checked vs unchecked?
Final vs finally vs finalize?
Abstract class vs interface?
Composition vs inheritance?
Static vs instance methods?
Override vs overload?
Deep copy vs shallow copy?
Why use interfaces?
What is type erasure?
Why Optional not for fields?
When to use parallel streams?
Why avoid float for money?
Java Comparisons
ArrayList vs LinkedList
HashMap vs TreeMap
HashSet vs TreeSet
String vs StringBuilder
Interface vs Abstract Class
Composition vs Inheritance
Stack vs Heap Memory
Process vs Thread
Runnable vs Callable
synchronized vs Lock
JVM vs JRE vs JDK
Virtual Threads vs Platform Threads
Records vs Classes
Sealed Classes vs Enum
var vs Explicit Types
Java Best Practices
Prefer Immutable Objects
Use Optional Correctly
Avoid Null Returns
Validate Method Arguments
Use Meaningful Names
Keep Methods Short
Single Responsibility Principle
Fail Fast Validation
Use Standard Exceptions
Close Resources with Try-With-Resources
Prefer Composition Over Inheritance
Program to Interfaces
Minimize Mutability
Use Enum for Constants
Avoid Raw Types
Use Bounded Wildcards
Prefer Method References
Use Stream API Idiomatically
Avoid Parallel Streams by Default
Use Concurrent Collections
Minimize Lock Scope
Avoid Thread Groups
Use Executor Framework
Handle InterruptedException Properly
Prefer Time API over Date
Use UTC for Storage
Avoid Calendar Class
Use BigDecimal for Money
Compare BigDecimal with compareTo
Cache Expensive Computations
Use Lazy Initialization Carefully
Avoid Premature Optimization
Profile Before Tuning
Use Appropriate Collection
Size Collections When Known
Override equals and hashCode Together
Make Classes Immutable When Possible
Use Builder for Many Parameters
Avoid Excessive Logging
Use Structured Logging
Never Log Passwords
Sanitize User Input
Use Parameterized Queries
Validate All External Input
Principle of Least Privilege
Keep Dependencies Updated
Use Dependency Injection
Separate Configuration from Code
Write Testable Code
Aim for High Cohesion
Reduce Coupling
Document Public APIs
Use JavaDoc for Libraries
Follow Code Conventions
Use Static Analysis Tools
Review Code Regularly
Refactor Incrementally
Delete Dead Code
Avoid Magic Numbers
Use Constants Class
Handle Errors at Right Level
Use Custom Exceptions Sparingly
Return Empty Collections Not Null
Defensive Copy for Mutable Args
Use CopyOnWrite for Read-Heavy
Prefer ArrayList over Vector
Use EnumSet and EnumMap
Avoid Double-Checked Locking
Use volatile for Visibility
Document Thread Safety
Limit Serialization
Use transient for Sensitive Fields
Prefer Interface Serialization
Version Serializable Classes
Use Module System for Encapsulation
Export Only Public API
Avoid Deep Inheritance Hierarchies
Favor Delegation Over Inheritance
Use Records for Data Carriers
Use Sealed Classes for Restricted Hierarchies
notes
Java Database Libraries and Frameworks
JPA vs MyBatis
JPA vs JDBC
Redis vs Memcached
HikariCP vs Druid
SQL for Java Developers
SELECT Queries
SQL Joins
Subqueries
Aggregation
Indexes
SQL Transactions
Database Normalization
EXPLAIN Plans
Stored Procedures
PostgreSQL with Java
MySQL with Java
Database Migration
Flyway Basics
Flyway with Spring Boot
Liquibase Basics
Liquibase Changesets
Migration Best Practices
Advanced Database
Optimization
Query Plan Analysis
Index Selection Strategy
Covering Index Design
Partial Index Usage
Materialized Views
Query Rewriting
Connection Pool Monitoring
Slow Query Log Analysis
Batch Insert Optimization
Pagination Performance
Cursor-Based Pagination
Read Replica Routing
Nosql Advanced
Redis Pub/Sub Patterns
Redis Pipeline Optimization
Redis Cluster Sharding
MongoDB Aggregation Pipeline
MongoDB Index Strategies
MongoDB Transactions
Elasticsearch Java Client
Cassandra Java Driver
DynamoDB Enhanced Client
Neo4j Java Driver
InfluxDB Java Client
Couchbase Java SDK
Orm Advanced
JPA Entity Graphs
Hibernate Envers Auditing
Hibernate Filters
Second Level Cache Config
Query Cache Setup
Batch Fetch Size Tuning
Hibernate Interceptors
Custom Hibernate Types
Multi-Tenant Hibernate
JPA Attribute Converters
Hibernate Spatial
Blaze Persistence
Database FAQ
JPA vs MyBatis?
When to use NoSQL?
Connection pool size?
What is N+1?
Lazy vs eager loading?
What is ACID?
Isolation levels explained?
Index when to add?
VARCHAR vs CHAR?
Primary key vs unique key?
What is ORM?
Migration tool choice?
Redis vs Memcached?
When to denormalize?
What is sharding?
Read replica lag?
Optimistic vs pessimistic lock?
What is two-phase commit?
PreparedStatement why?
Batch insert how?
JDBC (Java Database Connectivity)
JDBC Overview
Database Connection
Executing SQL Queries
Handling Result Sets
Prepared Statements in JDBC
Transaction Management
JPA & Hibernate
JPA Overview
Hibernate Basics
Entity Relationships
JPQL and Criteria API
Connection Pooling
HikariCP
Druid Connection Pool
NoSQL Clients
Redis with Jedis
Redis with Lettuce
MongoDB Java Driver
MyBatis
MyBatis Basics
MyBatis SQL Mapping
MyBatis Dynamic SQL
notes
Message Queues & Streaming
Kafka vs RabbitMQ
Kafka vs JMS
JMS (Java Message Service)
JMS Overview
JMS Producer and Consumer
Apache Kafka
Kafka Overview
Kafka Producers and Consumers
Kafka Streams
RabbitMQ
RabbitMQ Overview
Exchanges and Queues
Messaging Patterns
Advanced Messaging
Kafka Advanced
Kafka Exactly-Once Semantics
Kafka Connect
Kafka Schema Registry
Kafka KSQL
Kafka MirrorMaker
Kafka ACLs and Security
Kafka Performance Tuning
Kafka Partition Strategy
Kafka Consumer Rebalance
Kafka Transaction API
Kafka Compacted Topics
Kafka Monitoring
Rabbitmq Advanced
RabbitMQ Clustering
RabbitMQ Shovel Plugin
RabbitMQ Federation
RabbitMQ Streams
RabbitMQ Quorum Queues
RabbitMQ Performance Tuning
RabbitMQ TLS Configuration
RabbitMQ Management API
Patterns Advanced
Event Carried State Transfer
Event Notification Pattern
Claim Check Pattern
Message Channel Bridge
Content Enricher Pattern
Message Router Pattern
Wire Tap Pattern
Message Store Pattern
Polling Consumer Pattern
notes
Spring Framework Family
Spring vs Jakarta EE
Spring MVC vs WebFlux
Spring Framework
IoC & Dependency Injection
Aspect-Oriented Programming
Bean Lifecycle
Spring MVC
Spring Boot
Auto-Configuration
Spring Boot Starters
Spring Boot Actuator
Deployment
Spring Cloud
Spring Cloud Overview
Spring Cloud Config
Spring Cloud Gateway
Service Discovery
Spring Data
Spring Data JPA
Spring Data Redis
Spring Data MongoDB
Spring Batch
Spring Batch Introduction
Job Configuration
Chunk Processing
Partitioning
Scheduling Batch Jobs
Spring Integration
Spring Integration Introduction
Channels and Adapters
Transformers and Filters
Integration Gateways
Spring Security Advanced
OAuth2 Authorization Server
SAML Integration
LDAP Authentication
Advanced Method Security
CSRF and CORS
Session Management
Spring Ecosystem
Core Advanced
BeanFactory vs ApplicationContext
BeanPostProcessor
BeanFactoryPostProcessor
ApplicationEvent Publishing
Conditional Annotations
Profile Configuration
PropertySource and Environment
SpEL Advanced
Resource Loading
FactoryBean Pattern
Autowired Resolution
Circular Dependency Solutions
Spring Lifecycle Callbacks
JSR-250 Annotations
Custom Scope
Boot Advanced
Custom Auto-Configuration
ConditionalOnProperty
Spring Boot Starters Creation
Actuator Custom Endpoints
Actuator Security
Spring Boot DevTools
Configuration Properties Validation
Multi-Module Spring Boot
Spring Boot Native Image
Graceful Shutdown
Custom Error Pages
Spring Boot Banner
Log Configuration
External Config Priority
Cloud Advanced
Spring Cloud Config Encryption
Spring Cloud Bus
Spring Cloud Sleuth Migration
Resilience4j Advanced
Spring Cloud Stream
Spring Cloud Function
Service Mesh Integration
Spring Cloud Kubernetes
Spring Cloud AWS
Spring Cloud GCP
Distributed Tracing with Micrometer
Spring Cloud Contract
Data Advanced
Spring Data REST
Spring Data Projections
QueryDSL Integration
Spring Data Auditing
Custom Repository Implementation
Spring Data JDBC
Spring Data Envers
Multi-Tenant Data Access
Spring Cache Abstraction
Transaction Propagation Deep Dive
Read-Only Transactions
Programmatic Transactions
Web Advanced
Spring MVC Exception Handling
Content Negotiation
HandlerInterceptor
WebMvcConfigurer Customization
CORS Configuration
File Upload Handling
Server-Sent Events
Spring HATEOAS
API Versioning Strategies
Spring Validation Groups
Custom Argument Resolver
Thymeleaf Integration
Spring Guides
Getting Started
Build a REST API with Spring Boot
Add Database with Spring Data JPA
Secure API with Spring Security
Add Validation to REST API
Handle Exceptions Globally
Add Pagination to API
Upload Files with Spring MVC
Send Email with Spring Boot
Schedule Tasks with Spring
Add Caching to Spring Boot App
Write Integration Tests
Deploy Spring Boot to Docker
Production
Production-Ready Spring Boot
Configure Logging for Production
Health Checks and Monitoring
Database Connection Pool Tuning
Graceful Shutdown Configuration
Profile-Based Configuration
Secrets Management
Rate Limiting API
API Documentation with OpenAPI
Performance Testing Spring App
Memory Tuning Spring Boot
Zero-Downtime Deployment
Spring FAQ
What is IoC?
What is DI?
Component vs Bean?
Autowired by type or name?
Why constructor injection?
What is AOP?
What is Spring Boot?
Auto-configuration how it works?
What is Spring Cloud?
RestTemplate vs WebClient?
JPA vs JDBC?
What is @Transactional?
Bean scope types?
How to handle exceptions?
Spring Security filter order?
What is Actuator?
Profile vs Property?
What is Feign?
Circuit breaker when to use?
Spring vs Spring Boot?
notes
Java Security
OAuth2 vs SAML
JWT vs Session
Spring Security
Authentication
Authorization
OAuth2 Integration
Apache Shiro
Apache Shiro Basics
Shiro Authorization
Java Authentication and Authorization Service (JAAS)
JAAS Basics
JAAS Policy
OAuth2 & JWT
OAuth 2.0 Overview
JWT Basics
Advanced Security
Owasp
OWASP Top 10 Overview
SQL Injection Prevention
XSS Prevention
CSRF Protection
Broken Authentication
Sensitive Data Exposure
Security Misconfiguration
Insecure Deserialization
Insufficient Logging
Server-Side Request Forgery
XML External Entities
Broken Access Control
Auth Patterns
Multi-Factor Authentication
Passwordless Authentication
Magic Link Login
Social Login Integration
API Key Authentication
Mutual TLS
Certificate-Based Auth
Biometric Authentication
Session Fixation Prevention
Remember Me Implementation
Account Lockout Policy
Password Reset Flow
Crypto
Symmetric Encryption AES
Asymmetric Encryption RSA
Digital Signatures
Key Derivation PBKDF2
Argon2 Password Hashing
Secure Key Storage
TLS Configuration
Certificate Management
Hashing Algorithms
Random Number Generation
Key Rotation Strategy
Tools
Keycloak Integration
Auth0 with Spring Boot
Okta Integration
Spring Security OAuth2 Resource Server
Spring Security OAuth2 Client
Penetration Testing Basics
Dependency Vulnerability Scanning
OWASP Dependency Check
build
Build Tools
Maven vs Gradle
Apache Maven
Maven Basics
Maven Dependencies
Maven Plugins
Advanced Build Tools
Maven Advanced
Maven Lifecycle Phases
Custom Maven Plugin
Maven Profile Activation
Maven Dependency Exclusion
Maven BOM Management
Maven Release Plugin
Maven Site Generation
Maven Archetype
Maven Toolchains
Maven Reactor Build
Maven CI Friendly Versions
Maven Flatten Plugin
Gradle Advanced
Gradle Task Dependencies
Gradle Custom Plugin
Gradle Plugin Portal
Gradle Configuration Cache
Gradle Build Scan
Gradle Dependency Resolution
Gradle Publishing
Gradle Test Fixtures
Gradle Toolchain Support
Gradle Lazy Configuration
Gradle Worker API
Gradle Enterprise
Gradle
Gradle Basics
Gradle Dependencies
science
Testing
JUnit 4 vs JUnit 5
Mockito vs EasyMock
JUnit 5
JUnit 5 Basics
Parameterized Tests
JUnit 5 Extensions
Mockito
Mockito Basics
Mockito Advanced
Testcontainers
Testcontainers Basics
Advanced Testing
AssertJ
WireMock
REST Assured
TestNG
Pact Contract Testing
ArchUnit
JMH Benchmarking
Cucumber BDD
Selenium WebDriver
Performance Testing
architecture
Design Patterns
Creational Patterns
Singleton
Factory Method
Abstract Factory
Builder
Prototype
Object Pool
Structural Patterns
Adapter
Decorator
Facade
Proxy
Composite
Bridge
Flyweight
Behavioral Patterns
Observer
Strategy
Template Method
Command
Iterator
State
Mediator
Memento
Visitor
Chain of Responsibility
Interpreter
language
Web Development
REST vs GraphQL
Tomcat vs Jetty
Servlet
Servlet Basics
Filters and Listeners
JSP
JSP Basics
RESTful APIs
RESTful Design
JAX-RS
Advanced Web Development
Servlets Advanced
Async Servlet Processing
Servlet 6.0 Features
Multipart Config
Servlet Security Constraints
Request Dispatcher Types
Servlet Container Initializer
Programmatic Servlet Registration
HTTP/2 Server Push
Web Fragment
Rest Advanced
HATEOAS Implementation
API Pagination Patterns
Content Negotiation
ETag and Conditional Requests
API Idempotency Keys
Problem Details RFC 7807
OpenAPI Specification
Swagger UI Integration
API Gateway Patterns
GraphQL with Java
WebSocket REST Hybrid
Server-Sent Events API
Frameworks
Thymeleaf Templates
FreeMarker Templates
Vaadin Framework
JSF Components
Struts Legacy Migration
Play Framework Overview
Micronaut Web
Quarkus REST
Helidon SE
Frontend Integration
CORS Deep Dive
JWT for SPA
OAuth2 PKCE Flow
Session vs Token Auth
React with Java Backend
Vue with Java Backend
Mobile API Design
hub
Microservices
Monolith vs Microservices
REST vs gRPC
Microservice Architecture
Microservices Overview
Service Communication
Apache Dubbo
Apache Dubbo Basics
gRPC
gRPC Java Basics
Microservices Patterns
Communication
Synchronous vs Asynchronous
Event-Driven Communication
Request-Response Pattern
Publish-Subscribe Pattern
Message Routing
Content-Based Router
Message Filter
Claim Check Pattern
Correlation ID Pattern
Resilience
Circuit Breaker Pattern
Retry Pattern
Timeout Pattern
Bulkhead Pattern
Fallback Pattern
Rate Limiter Pattern
Health Check Pattern
Self-Healing Pattern
Graceful Degradation
Data
Database per Service
Shared Database Anti-Pattern
Event Sourcing Pattern
CQRS Pattern
Saga Orchestration
Saga Choreography
Eventual Consistency
API Composition
Strangler Fig Pattern
Anti-Corruption Layer
Deployment
Blue-Green Deployment
Canary Deployment
Feature Flags
Service Mesh Overview
Sidecar Pattern
Ambassador Pattern
Adapter Pattern for Legacy
Backend for Frontend
API Gateway Pattern
cloud
Distributed Systems
Caffeine vs Redis Cache
Caching
Local Cache
Distributed Cache
Distributed Lock
Distributed Lock
Distributed Transaction
Distributed Transactions
Seata
Advanced Distributed Systems
Consensus
Raft Algorithm
Paxos Overview
Leader Election
Quorum Systems
Vector Clocks
Lamport Timestamps
Conflict-Free Replicated Data Types
Gossip Protocol
Coordination
ZooKeeper Basics
etcd Usage
Consul Service Discovery
Redis Distributed Lock Advanced
Redlock Algorithm
Leader Election with Redis
Distributed Semaphore
Barrier Synchronization
Messaging Advanced
Exactly-Once Semantics
At-Least-Once Delivery
At-Most-Once Delivery
Message Ordering Guarantees
Dead Letter Queue Design
Event Schema Evolution
Message Idempotency
Outbox Pattern Advanced
Inbox Pattern
Storage
Consistent Hashing Ring
Data Partitioning Strategies
Hot Partition Problem
Read Repair
Hinted Handoff
Anti-Entropy Repair
Multi-Region Replication
Conflict Resolution Strategies
speed
Performance & Tuning
ZGC vs G1 GC
JVM Tuning
Heap Tuning
GC Tuning
Profiling
Profiling Basics
async-profiler
Advanced Performance
Jvm Deep
JIT Compilation Tiers
Escape Analysis
Inline Optimization
Safepoint Mechanism
GC Roots Analysis
Metaspace Tuning
Direct Memory Tuning
Code Cache Tuning
Compressed OOPs
TLAB Allocation
Object Layout
String Deduplication
Gc Deep
G1 GC Deep Dive
ZGC Configuration
Shenandoah GC
Parallel GC Tuning
CMS Legacy GC
GC Log Analysis
GC Causes and Fixes
Allocation Rate Optimization
Humongous Objects G1
GC Pause Targeting
Application
Connection Pool Sizing
Thread Pool Tuning
Cache Hit Rate Optimization
N+1 Query Fix
Batch Processing Optimization
Lazy Loading Strategy
Object Pooling
String Concatenation Performance
Collection Sizing
Stream vs Loop Performance
Reflection Performance
Serialization Performance
Monitoring
JFR Event Streaming
JMC Analysis
Heap Dump Analysis MAT
Thread Dump Analysis
Latency Percentiles
Apdex Score
SLI and SLO Definition
Alerting Best Practices
Performance Budget
quiz
Interview Guide
Java SE Interview
Java SE Fundamentals Interview
Collections and Concurrency Interview
JVM Interview Questions
Spring Interview
Spring Interview Questions
System Design
System Design Basics
Fundamentals
Load Balancing Strategies
Caching Layers
Database Sharding
Replication Strategies
Consistent Hashing
Rate Limiting Design
Message Queue Design
CDN Architecture
API Gateway Design
Microservices vs Monolith
Event-Driven Architecture
CQRS Pattern
Event Sourcing
Saga Pattern Design
Circuit Breaker Design
Bulkhead Pattern
Idempotency Design
Pagination Strategies
Case Studies
Design URL Shortener
Design Twitter Feed
Design Chat System
Design Rate Limiter
Design Web Crawler
Design Notification System
Design E-Commerce Platform
Design Ride Sharing Service
Design Video Streaming
Design Search Autocomplete
Design Distributed Cache
Design Payment System
Design File Storage System
Design Ticket Booking
Design News Feed
Design Leaderboard
Design Analytics Platform
Design Email Service
Design Recommendation Engine
Design Map Reduce System
Components
Design Key-Value Store
Design Unique ID Generator
Design Hit Counter
Design Logger
Design Task Scheduler
Design API Rate Limiter
Design Parking Lot
Design Vending Machine
Design Elevator System
Design Library Management
Design Hotel Booking
Design Food Delivery
LeetCode Patterns
Arrays
Two Sum
3Sum
Maximum Subarray
Merge Intervals
Product of Array Except Self
Rotate Array
Container With Most Water
Trapping Rain Water
Linked List
Reverse Linked List
Merge Two Sorted Lists
Linked List Cycle
Remove Nth Node From End
Reorder List
Trees
Maximum Depth of Binary Tree
Invert Binary Tree
Validate BST
LCA of Binary Tree
Binary Tree Level Order
Serialize and Deserialize
Graphs
Number of Islands
Course Schedule
Clone Graph
Word Ladder
Dp Interview
House Robber
Coin Change
LIS
Word Break
Decode Ways
BFS and DFS Problems
Surrounded Regions
Walls and Gates
Rotting Oranges
01 Matrix
Shortest Path in Binary Matrix
As Far from Land as Possible
Pacific Atlantic Water Flow
All Nodes Distance K in BST
Sum Root to Leaf Numbers
Path Sum II
Binary Tree Right Side View
Average of Levels in Binary Tree
Cousins in Binary Tree
Distribute Coins in Binary Tree
Amount of Time for Tree to Burn
Maximum Width of Binary Tree
Populating Next Right Pointers
Flatten Binary Tree to Linked List
Construct Binary Tree from Preorder Inorder
Serialize Deserialize BST
Two Pointer Problems
Two Sum II Sorted
3Sum Closest
4Sum
Remove Duplicates Sorted Array
Remove Element
Move Zeroes
Sort Colors Dutch Flag
Valid Palindrome II
Boats to Save People
Partition Labels
Minimum Length String After Deletes
Reverse String
Reverse Vowels
Is Subsequence
Shortest Word Distance
Squares of Sorted Array
Backspace String Compare
Interval List Intersections
Merge Sorted Array In Place
Find Duplicate Number Floyd
Math Problems
Reverse Integer
Palindrome Number
Pow(x, n)
Sqrt(x)
Happy Number
Count Primes
Power of Three
Excel Sheet Column Number
Factorial Trailing Zeroes
Counting Bits
Missing Number
Single Number
Single Number II
Sum of Two Integers
Divide Two Integers
Fraction to Recurring Decimal
Max Points on a Line
Valid Square
Rectangle Overlap
Sliding Window Problems
Maximum Average Subarray
Max Consecutive Ones III
Longest Substring Without Repeating
Longest Repeating Character Replacement
Permutation in String
Minimum Window Substring
Sliding Window Maximum
Minimum Size Subarray Sum
Subarray Product Less Than K
Fruit Into Baskets
Longest Continuous Subarray
Replace Substring for Balanced String
Grumpy Bookstore Owner
Get Equal Substrings Within Budget
Number of Substrings Containing All
Minimum Window Subsequence
Max Vowels in Substring
Frequency of Most Frequent Element
Minimum Recolors to Get K Black Blocks
Maximum Points from Cards
Binary Search Problems
Search Insert Position
Find First and Last Position
Search 2D Matrix
Find Minimum in Rotated Array
Find Peak Element
Search in Rotated Array II
Median of Two Sorted Arrays
Split Array Largest Sum
Koko Eating Bananas
Capacity to Ship Packages
Minimum Limit of Balls in Bag
Maximum Running Time
Minimum Speed to Arrive on Time
Maximum Value at Given Index
Minimum Absolute Sum Diff
Minimum Number of Days to Make Bouquets
Minimum Time to Complete Trips
Maximum Number of Removable Characters
Minimum Size Subarray Sum BS
Find K Closest Elements
Behavioral Interview
Tell Me About Yourself
Strengths and Weaknesses
Conflict Resolution
Leadership Examples
Failure and Learning
Why This Company
Salary Negotiation
Database Interview
ACID Properties
Normalization
Indexing Strategies
Query Optimization
Database Sharding
Replication
CAP Theorem
SQL vs NoSQL
Interview Topics
Collections
HashMap Interview Questions
ConcurrentHashMap Questions
ArrayList vs LinkedList
Fail-Fast vs Fail-Safe
Comparable vs Comparator
Iterator vs ListIterator
HashMap Internal Working
HashSet vs TreeSet
Queue and Deque Questions
Multithreading
Thread Lifecycle Questions
Synchronized vs Lock
Volatile Keyword
ThreadLocal Questions
Executor Framework
Deadlock Prevention
Producer Consumer Problem
Print Odd Even
Thread Pool Sizing
CountDownLatch Questions
Semaphore Use Cases
ReadWriteLock Questions
Spring Questions
IoC Container Questions
Bean Scope Questions
Transaction Management
Spring Boot Auto-Config
Spring MVC Flow
Spring Security Filter Chain
Spring Data JPA Questions
Spring Cloud Questions
RestTemplate vs WebClient
Spring AOP Questions
Spring Boot Actuator
Spring Profiles
Database Questions
JDBC vs JPA
N+1 Query Problem
Database Indexing
Transaction Isolation
Connection Pool Tuning
SQL Join Types
Database Normalization
Optimistic vs Pessimistic Lock
Database Migration Tools
Read Replicas
Design Questions
Design Parking Lot
Design Vending Machine
Design Chess Game
Design Deck of Cards
Design In-Memory Cache
Design Logger
Design Stack Overflow
Design Amazon Locker
Design Meeting Scheduler
Design Snake and Ladder
Design Tic Tac Toe
Design Connect Four
Coding Interview
Pattern 1
Problem: Valid Anagram
Problem: Group Anagrams
Problem: Top K Frequent Elements
Problem: Sort Colors
Problem: Majority Element
Problem: Find All Duplicates
Problem: Set Matrix Zeroes
Problem: Spiral Matrix
Pattern 2
Problem: Valid Binary Search Tree
Problem: Kth Smallest in BST
Problem: Construct BST from Preorder
Problem: Lowest Common Ancestor BST
Problem: Path Sum
Problem: Diameter of Binary Tree
Problem: Subtree of Another Tree
Problem: Balanced Binary Tree
Pattern 3
Problem: Number of Connected Components
Problem: Graph Valid Tree
Problem: Redundant Connection
Problem: Find Eventual Safe States
Problem: All Paths From Source to Target
Problem: Minimum Height Trees
Problem: Reconstruct Itinerary
Problem: Evaluate Division
Pattern 4
Problem: Longest Palindromic Substring
Problem: Palindromic Substrings Count
Problem: Longest Repeating Character Replacement
Problem: Minimum Window Substring
Problem: Valid Palindrome II
Problem: Decode String
Problem: String to Integer
Problem: Implement strStr()
Pattern 5
Problem: Climbing Stairs
Problem: Min Cost Climbing Stairs
Problem: House Robber II
Problem: Delete and Earn
Problem: Maximum Product Subarray
Problem: Best Time to Buy Stock
Problem: Best Time to Buy Stock II
Problem: Best Time to Buy Stock III
Pattern 6
Problem: Permutations II
Problem: Combination Sum
Problem: Combination Sum II
Problem: Subsets II
Problem: Letter Combinations Phone
Problem: Palindrome Partitioning
Problem: Restore IP Addresses
Problem: Partition to K Equal Sum Subsets
Interview FAQ
How to prepare for Java interview?
System design interview tips?
Behavioral interview STAR method?
How to explain projects?
Salary negotiation tips?
Remote interview best practices?
Whiteboard vs laptop coding?
How to handle unknown questions?
Follow-up questions to ask?
Red flags in interviews?
Junior vs senior expectations?
How long to prepare?
Mock interview benefits?
Portfolio for backend dev?
Open source contribution value?
Certification worth it?
extension
Java Ecosystem
Netty vs Apache Mina
Lombok vs Manual Boilerplate
Project Lombok
Lombok Basics
Google Guava
Guava Basics
Netty
Netty Basics
Netty Pipeline
Ecosystem Libraries
Apache Commons
Commons Lang3
Commons IO
Commons Collections4
Commons Codec
Commons Compress
Commons CSV
Commons Math
Commons Text
Commons Pool
Commons Configuration
Commons BeanUtils
Commons CLI
Testing Tools
Awaitility
Instancio
Datafaker
GreenMail
WireMock Spring Boot
Testcontainers PostgreSQL
Testcontainers Kafka
Testcontainers Redis
Embedded MongoDB
H2 Database Testing
DbUnit
Flyway Test
Build Tools Advanced
Maven Enforcer Plugin
Maven Shade Plugin
Maven Assembly Plugin
Gradle Kotlin DSL
Gradle Composite Builds
Gradle Convention Plugins
Gradle Version Catalogs Advanced
Maven BOM Import
Multi-Module Maven
Gradle Build Cache
Maven Wrapper
Gradle Wrapper
Serialization
Jackson Annotations
Jackson Custom Serializer
Jackson Polymorphic Types
Gson Type Adapters
Protobuf Java
Avro Java
Kryo Serialization
Java Serialization
JSON Schema Validation
article
Algorithms & Data Structures
Sorting Algorithms
Bubble Sort
Selection Sort
Insertion Sort
Merge Sort
Quick Sort
Heap Sort
Counting Sort
Radix Sort
Shell Sort
TimSort
Searching Algorithms
Linear Search
Binary Search
Binary Search Variations
Interpolation Search
Exponential Search
Ternary Search
Jump Search
Data Structures
ArrayList Internals
Linked List
Stack
Queue
Deque
HashMap Internals
HashSet
TreeMap
TreeSet
Priority Queue
Binary Tree
Binary Search Tree
AVL Tree
Red-Black Tree
Trie
Segment Tree
Fenwick Tree
Union-Find
LRU Cache
Graph Algorithms
Graph Representation
Breadth-First Search
Depth-First Search
Topological Sort
Dijkstra's Algorithm
Bellman-Ford
Floyd-Warshall
Kruskal's Algorithm
Prim's Algorithm
Cycle Detection
Connected Components
Bipartite Graph Check
Dynamic Programming
Dynamic Programming Introduction
Memoization
Tabulation
Fibonacci DP
Climbing Stairs
Coin Change
Coin Change II
Longest Increasing Subsequence
Longest Common Subsequence
Edit Distance
0/1 Knapsack
Unbounded Knapsack
House Robber
Unique Paths
Maximum Subarray
Palindromic Substring
Word Break
Decode Ways
String Algorithms
KMP Algorithm
Rabin-Karp
Longest Palindrome
Anagram Detection
String Compression
String to Integer (atoi)
Valid Parentheses
Minimum Window Substring
Group Anagrams
Recursion & Backtracking
Recursion Basics
Tail Recursion
Backtracking Introduction
Permutations
Combinations
Subsets
N-Queens
Sudoku Solver
Word Search
Generate Parentheses
article
Jakarta EE
Jakarta EE Core
Jakarta EE Overview
CDI (Contexts and Dependency Injection)
Bean Validation
Jakarta Annotations
Jakarta Inject
Jakarta Web
Jakarta Servlet
Jakarta Faces (JSF)
Jakarta WebSocket
Jakarta REST (JAX-RS)
Jakarta MVC
Jakarta Persistence
Jakarta Persistence (JPA)
Jakarta Transactions (JTA)
Jakarta Data
Entity Lifecycle Callbacks
Advanced JPQL
Jakarta Security
Jakarta Security
Jakarta Authentication
Jakarta Authorization
Jakarta Messaging
Jakarta Messaging (JMS)
Jakarta Mail
article
Reactive Programming
Reactive Programming Introduction
Reactive Streams
Project Reactor
Mono and Flux
Reactor Operators
Spring WebFlux
WebFlux Router Functions
WebClient
R2DBC
RxJava
Backpressure
Schedulers
Reactive Error Handling
Testing Reactive Code
article
DevOps for Java
Docker vs VM
Kubernetes vs Docker Swarm
CI/CD
GitHub Actions
GitLab CI
Jenkins
Jenkins Pipeline
CircleCI
Azure DevOps
Docker
Docker Basics for Java
Java Dockerfile Best Practices
Docker Compose
Google Jib
Spring Boot Docker
Kubernetes
Kubernetes Basics
ConfigMaps and Secrets
Health Checks
Helm Charts
Horizontal Pod Autoscaler
article
Cloud Native Java
AWS vs Azure vs GCP
AWS
AWS SDK for Java v2
AWS Lambda
AWS S3
AWS SQS
DynamoDB
AWS ECS
AWS RDS
Azure
Azure SDK for Java
Azure Functions
Azure Blob Storage
Azure Service Bus
Google Cloud
Google Cloud Java SDK
Cloud Run
Cloud Storage
Cloud Pub/Sub
article
Java Libraries
Jackson vs Gson
JSON Processing
Jackson
Gson
JSON-B
JSON-P
HTTP Clients
OkHttp
Apache HttpClient
Java HTTP Client
Retrofit
Utility Libraries
Apache Commons Lang
Apache Commons IO
Apache Commons Collections
Vavr
Joda-Time
Object Mapping
MapStruct
ModelMapper
Dozer
Validation
Bean Validation (Jakarta)
Hibernate Validator
Custom Validators
article
Logging & Observability
SLF4J
Logback
Log4j2
Logging Best Practices
Micrometer
Prometheus Integration
Grafana Dashboards
OpenTelemetry
Spring Actuator Metrics
Mapped Diagnostic Context
Log Aggregation
Health Checks
article
Code Quality
SonarQube
Checkstyle
SpotBugs
PMD
Error Prone
Google Java Format
Refactoring Basics
Extract Method
Replace Conditional with Polymorphism
Code Review Best Practices
Managing Technical Debt
SOLID Principles
Clean Code in Java
Code Coverage
Mutation Testing
article
Java Version Features
Java 8
Lambda expressions
Stream API
Optional
Default methods
Method references
Date and Time API
Nashorn JavaScript
CompletableFuture
Parallel arrays
Java 9
Module system (JPMS)
JShell
Private methods in interfaces
Collection factory methods
Try-with-resources improvements
Stream API additions
Process API updates
Java 10
Local variable type inference (var)
Application Class-Data Sharing
Root certificates
Garbage collector interface
Java 11
HTTP Client API
String methods (isBlank, lines, strip)
Files.readString/writeString
Nest-based access control
ZGC experimental
Removed Java EE modules
Java 12
Switch expressions (preview)
String indent/transform
Shenandoah GC experimental
Microbenchmark suite (JMH) improvements
Java 13
Text blocks (preview)
Switch expressions (preview 2)
Dynamic CDS archives
ZGC uncommit unused memory
Java 14
Records (preview)
Pattern matching for instanceof (preview)
Helpful NullPointerExceptions
Switch expressions (standard)
Foreign Memory API (incubator)
Java 15
Text blocks (standard)
Sealed classes (preview)
Hidden classes
Records (second preview)
ZGC production-ready
Java 16
Records (standard)
Pattern matching for instanceof (standard)
Vector API (incubator)
Unix-domain socket channels
Stream.toList()
Java 17
Sealed classes (standard)
Pattern matching for switch (preview)
Foreign Function & Memory API (incubator)
Deprecate Security Manager
Context-specific deserialization filters
Java 18
Simple web server
Code snippets in JavaDoc
UTF-8 by default
Pattern matching for switch (preview 2)
Vector API (incubator 2)
Java 19
Virtual threads (preview)
Structured concurrency (incubator)
Record patterns (preview)
Pattern matching for switch (preview 3)
Foreign API (preview)
Java 20
Scoped values (incubator)
Record patterns (preview 2)
Virtual threads (preview 2)
Pattern matching for switch (preview 4)
Foreign API (preview 2)
Java 21
Virtual threads (standard)
Sequenced collections
Record patterns (standard)
Pattern matching for switch (standard)
String templates (preview)
Generational ZGC
menu
search
Search
GitHub
Twitter / X
Enable dark mode
Enable light mode
to navigate
to select
to close
cancel
Home
Build Tools
Advanced Build Tools
On this page
Table of Contents
Advanced Build Tools
article
folder
Maven Advanced
Maven Advanced topics.
article
folder
Gradle Advanced
Gradle Advanced topics.