TAG
Java
232 notes
- Java Exceptionshistorical
Checked and unchecked exceptions, propagation, finally, try-with-resources, and Error versus Exception.
- Designing Exception Handlinghistorical
Practical exception-handling rules: catch at meaningful boundaries, preserve context, avoid swallowing failures, and map errors once.
- Guava BloomFilterhistorical
Probabilistic membership testing with Guava BloomFilter, false positives, sizing, serialization, and appropriate use cases.
- How Lombok Workshistorical
Lombok's compile-time annotation processing/compiler integration and the trade-offs of generated Java boilerplate.
- MyBatis Overviewhistorical
MyBatis as a SQL-mapping framework: explicit SQL, parameter/result mapping, sessions, mappers, and transaction boundaries.
- Spring Cloud Overviewhistorical
Spring Cloud as an integration ecosystem for distributed-service concerns, with version-train compatibility and evolving components.
- Spring Framework Learning Resourceshistorical
A roadmap from dependency injection and bean lifecycle through AOP, transactions, MVC, Boot, and source-code reading.
- Spring Boot Overviewhistorical
Spring Boot's opinionated application bootstrap, starters, auto-configuration, embedded servers, external configuration, and observability.
- Spring MVC Overviewhistorical
Spring MVC's DispatcherServlet request pipeline, controllers, handler mapping/adapters, binding, validation, and response rendering.
- Guava RateLimiterhistorical
Local token/rate limiting with Guava RateLimiter and its limits in distributed systems.
- Using MyBatishistorical
Mapper definitions, parameter binding, result mapping, dynamic SQL, sessions, and safe transaction usage in MyBatis.
- Spring Framework Moduleshistorical
A conceptual map of Spring Core/Beans/Context, AOP, data/transactions, web MVC/reactive, testing, and integration modules.
- Spring Boot Learning Resourceshistorical
A learning roadmap for Boot configuration, auto-configuration, web/data integration, packaging, observability, and source analysis.
- Using Spring MVChistorical
Controller mappings, request binding, validation, JSON responses, exception handling, and safe web-layer boundaries.
- MyBatis Source Architecturehistorical
MyBatis execution flow from mapper proxy through mapped statement, executor, statement handler, parameter/result handling, and caching.
- Spring MVC Source Flowhistorical
Source-level request flow through DispatcherServlet, HandlerMapping, HandlerAdapter, interceptors, argument/return handlers, and exception processing.
- MyBatis Learning Resourceshistorical
A practical roadmap for learning MyBatis from SQL mapping through caching, plugins, transactions, and source internals.
- Thread Safety in Spring MVC Controllershistorical
Why singleton controllers handle concurrent requests and should avoid unsynchronized mutable instance state.
- Spring MVC Learning Resourceshistorical
A roadmap from DispatcherServlet and controllers through argument resolution, message conversion, validation, errors, and source analysis.
- Using Nettyhistorical
Building event-driven network clients and servers with Bootstrap, EventLoopGroup, Channel, Pipeline, handlers, and graceful shutdown.
- Netty 3.x Source Analysis (Historical)historical
Historical Netty 3 architecture and why its APIs/classes should not be projected onto modern Netty 4.x designs.
- Apollo Configuration Centerhistorical
Centralized configuration, namespaces, change delivery, local caching, and operational considerations for Apollo-style config systems.
- Eureka Service Discoveryhistorical
Eureka-style client registration and discovery, heartbeats, cached registries, and availability-oriented semantics.
- Feign Declarative HTTP Clientshistorical
Declarative HTTP interfaces, encoding/decoding, errors, timeouts, retries, and service-discovery integration.
- Spring Cloud Gatewayhistorical
Reactive API gateway routing, filters, cross-cutting policy, and the importance of non-blocking/backpressure-safe customization.
- Hystrix (Historical)historical
Historical Hystrix circuit breaker, timeout, fallback, and isolation concepts that remain useful even though the library is legacy.
- Ribbon Client-Side Load Balancing (Historical)historical
Historical Ribbon client-side load balancing and durable instance-selection concepts.
- Spring Cloud Sleuth (Historical)historical
Distributed trace/span propagation concepts and the transition from Spring Cloud Sleuth to newer observability stacks.
- Zuul Gateway (Historical Context)historical
Netflix Zuul gateway/filter architecture and its place as historical context beside newer Spring gateway stacks.
- Spring Application Events and Listenershistorical
Spring application-event publication, listener execution, transactions, asynchrony, and coupling considerations.
- Spring Bean Scopeshistorical
Singleton, prototype, request/session and other Spring bean scopes, including lifecycle and thread-safety implications.
- Using Spring AOPhistorical
Pointcuts, advice, proxies, aspect ordering, and the self-invocation limitation of proxy-based Spring AOP.
- Using Spring IoChistorical
Dependency injection through components/configuration with constructor injection, explicit dependencies, and container-managed lifecycle.
- How Spring Autowiring Workshistorical
Dependency resolution by type/qualifier/name metadata and the BeanPostProcessor infrastructure behind annotation injection.
- Spring Transaction Source Architecturehistorical
Proxy/interceptor transaction flow from metadata lookup to transaction manager begin/commit/rollback.
- Creating a Spring Boot Starterhistorical
Packaging reusable dependencies plus conditional auto-configuration and typed configuration properties without surprising applications.
- Using Spring Boot Cache Supporthistorical
Spring cache abstraction usage, cache annotations, cache keys, invalidation, and the limits of local or remote cache providers.
- How an Executable Spring Boot Jar Startshistorical
Executable Boot archive layout, launcher/class-loader concept, nested dependencies, and why exact launcher classes are version-specific.
- MyBatis Auto-Configuration in Spring Boothistorical
Conditional creation of SqlSessionFactory, mapper integration, transaction participation, and application override points.
- Spring MVC Auto-Configuration in Spring Boothistorical
How Boot conditionally configures MVC defaults while allowing application customization and full override.
- Starting a Spring Boot Applicationhistorical
The application entry point, SpringApplication, configuration sources, profiles, lifecycle hooks, and graceful startup/shutdown.
- Embedded Tomcat Auto-Configurationhistorical
How Spring Boot creates and customizes an embedded servlet container from dependencies, web application type, and server properties.
- Netty Learning Resourceshistorical
A practical Netty learning roadmap from event loops and pipelines through buffers, codecs, backpressure, and version-pinned source reading.
- Netty Source Analysis Summaryhistorical
A durable mental model for Netty server bootstrap, event loops, channel registration, pipelines, and ByteBuf allocation.
- Hystrix Thread Isolation (Historical)historical
Thread/semaphore bulkhead isolation, bounded queues, timeout behavior, and modern resilience interpretation.
- Spring Bean Lifecyclehistorical
From bean definition and instantiation through dependency injection, post-processors, initialization, proxies, use, and destruction.
- What Spring AOP Ishistorical
Spring's proxy-based aspect-oriented programming model: join points, pointcuts, advice, aspects, and proxies.
- What Spring IoC Ishistorical
Inversion of Control and dependency injection as moving object construction/wiring policy from business classes to a container.
- 2.47 Spring常用注解historical
注解作用 @Configuration 相当于之前的applicationContext.xml,就是一个配置文件 @ComponentScan 配置扫描包,如果有@Controller,@Service,@Repositiry,@Component修饰的,则把它加入ioc容器中 @Bean 配合@
- Spring Transaction Propagationhistorical
REQUIRED, REQUIRES_NEW, NESTED and other propagation modes as policies for existing versus new transaction contexts.
- Spring Boot Cache Auto-Configurationhistorical
How Spring Boot conditionally creates cache infrastructure from classpath, properties, beans, and provider availability.
- Netty Core Componentshistorical
The roles of Bootstrap, EventLoopGroup, EventLoop, Channel, Pipeline, Handler, Future, and ByteBuf.
- Netty Direct / Off-Heap Memoryhistorical
Why Netty uses direct buffers, their I/O advantages and native-memory/reference-counting risks.
- Spring BeanFactoryhistorical
BeanFactory as Spring's dependency-container contract and its relationship with ApplicationContext.
- Using Spring Transactionshistorical
Declarative transaction boundaries, rollback rules, proxy limitations, isolation, timeouts, and external side effects.
- Spring Circular Dependencieshistorical
Constructor versus setter/field cycles, early references, proxy complications, and why redesign is usually preferable.
- Ordering Spring Bean Initializationhistorical
How to express real bean dependencies instead of relying on incidental initialization order.
- Netty Source: Creating NioEventLoopGrouphistorical
Historical source view of how a NioEventLoopGroup creates and manages child event loops.
- Netty Source: Bootstrap Creationhistorical
How Bootstrap/ServerBootstrap accumulate configuration before channel registration and bind/connect.
- Netty Bind Source Summaryhistorical
End-to-end server bind flow: create, initialize, register, bind, activate, and complete the ChannelFuture.
- Netty Source: Detecting New Connectionshistorical
How readiness on a listening channel leads the event loop to accept new sockets.
- Netty Source: Pipeline Initializationhistorical
How every Channel owns a pipeline of handler contexts and how initial handlers are installed.
- Netty Server Startup: Creating the Server Channelhistorical
First server-startup phase: Bootstrap configuration produces a concrete listening-channel instance.
- Spring IoC Source: Creating the Application Contexthistorical
High-level ApplicationContext refresh flow from environment/bean definitions through post-processors and singleton initialization.
- Spring Boot Startup Source Flowhistorical
Conceptual SpringApplication startup phases from environment preparation through context refresh, runners, and ready events.
- Netty Source: Creating EventLoop Executorshistorical
How Netty associates event loops with executors/threads and why event-loop thread ownership matters.
- Netty Source: Creating an Accepted NioSocketChannelhistorical
Wrapping an accepted socket as a child Channel with pipeline/configuration and parent relationship.
- Netty Pipeline: Adding and Removing ChannelHandlershistorical
Dynamic pipeline modification, handler lifecycle callbacks, event-loop serialization, and sharability constraints.
- Netty Server Startup: Initializing the Server Channelhistorical
Applying parent options/attributes and installing child-channel initialization logic before registration.
- Spring IoC Source: BeanFactoryPostProcessor Phasehistorical
How BeanFactoryPostProcessor customizes bean definitions/container metadata before ordinary bean instantiation.
- Spring Boot Auto-Configuration Principleshistorical
Conditional configuration selection, metadata/imports, bean back-off, configuration properties, and condition diagnostics.
- Netty Source: Creating NioEventLoop Childrenhistorical
Creation of the event-loop child set and channel-to-event-loop selection in a NioEventLoopGroup.
- Netty Source: Assigning an Accepted Channel to an EventLoophistorical
Selecting a worker event loop and registering the accepted child channel for thread-confined I/O processing.
- Netty Server Startup: Registering with the EventLoophistorical
Assigning the server channel to an event loop and transport selector before binding.
- Spring IoC Source: Registering BeanPostProcessorshistorical
Why BeanPostProcessors must be registered before ordinary singleton creation and what lifecycle extension they provide.
- Netty Source: Registering Read Interesthistorical
How an active socket channel becomes interested in read readiness and feeds inbound pipeline events.
- Netty Server Startup: Binding the Porthistorical
Asynchronous local-address bind, channel activation, failure handling, and bind future completion.
- Spring IoC Source: Instantiating Non-Lazy Singletonshistorical
How Spring resolves bean dependencies, creates singleton instances, applies lifecycle processors, and caches exposed objects.
- Netty Server Startup Overviewhistorical
ServerBootstrap to active listener: channel creation, initialization, event-loop registration, and bind.
- Spring IoC Class Relationshipshistorical
A conceptual map of Spring container interfaces and extension points rather than a version-frozen UML diagram.
- Netty Bind Source: Instantiating the Channelhistorical
Historical source flow from configured channel factory to a server Channel instance before registration.
- Netty Bind Source: Binding the Listening Sockethistorical
How an event-loop-owned server channel performs the transport bind and transitions toward active listening state.
- Netty Pipeline: Inbound Eventshistorical
Propagation of channel lifecycle and read events through inbound handlers.
- Netty ByteBufhistorical
Reader/writer indexes, heap/direct buffers, slicing, reference counting, and ownership rules.
- Spring AOP Source: Registering the Auto-Proxy Creatorhistorical
How annotation-driven AOP enables an auto-proxy BeanPostProcessor, described as versioned Spring internals.
- Spring AOP Source: Creating the Auto-Proxy Creatorhistorical
Lifecycle of Spring's AOP auto-proxy creator as an infrastructure bean and BeanPostProcessor.
- Spring AOP Source Analysis Summaryhistorical
End-to-end Spring AOP model from infrastructure registration and advisor discovery to proxy creation and interceptor invocation.
- Netty Bind Source: Initializing the Channelhistorical
Applying options, attributes, and pipeline handlers to a newly created server channel.
- Netty Source: NioEventLoop Run Loophistorical
Selector waiting, selected-key processing, queued tasks, scheduling, and fairness inside a Netty NIO event loop.
- Netty Pipeline: Outbound Eventshistorical
Propagation of writes, flushes, binds, connects, closes, and other outbound operations through handlers toward the transport.
- Netty ByteBufAllocatorhistorical
Allocator abstraction for heap/direct, pooled/unpooled buffers and why allocation strategy is configurable.
- Spring AOP Source: When Auto-Proxying Runshistorical
Where auto-proxy creation participates in the bean lifecycle and why early references matter for some dependency graphs.
- Netty Bind Source: Registering the Channelhistorical
Assigning a Channel to an EventLoop, registering with selector/transport state, and firing registration events.
- Netty Pipeline: Exception Propagationhistorical
How handler failures become exceptionCaught events and why exceptions need explicit logging, cleanup, and connection policy.
- Using Netty ByteBuf Allocation Safelyhistorical
Allocator usage, capacity, slicing, copying, reference-count handling, and leak-safe buffer ownership.
- Spring AOP Source: Creating the Proxyhistorical
Advisor matching and creation of JDK-interface or class-based proxies around eligible Spring beans.
- Netty Channel Type Hierarchyhistorical
Conceptual Channel hierarchy across transport-independent API, abstract channel support, and concrete NIO/native transports.
- Spring AOP Source: Invoking the Target Methodhistorical
Interceptor-chain execution around a proxied target method and how proceed composes advice.
- Netty PooledByteBufAllocatorhistorical
Pooled ByteBuf allocation, arenas/chunks/suballocation concepts, reuse benefits, and version-sensitive allocator internals.
- Netty PoolThreadCachehistorical
Per-thread pooled buffer caching as an allocation optimization, with retention and event-loop affinity trade-offs.
- Blocking, Non-Blocking, and Asynchronous Java I/Ohistorical
Comparing blocking streams, selector-based non-blocking channels, and asynchronous completion APIs without oversimplifying their OS mappings.
- Multithreaded Blocking I/O Serverhistorical
A thread-per-connection blocking server, its simplicity, and the need for bounded resources and modern virtual-thread context.
- Java Asynchronous I/Ohistorical
Java asynchronous channel APIs, completion handlers/futures, and the distinction between API-level asynchrony and OS implementation details.
- Blocking I/O (BIO)historical
Java blocking I/O semantics and when a simple blocking programming model remains appropriate.
- NIO Bufferhistorical
ByteBuffer position, limit, capacity, flip/clear/compact, and heap versus direct buffers.
- NIO Event-Loop Serverhistorical
A selector/event-loop server architecture and the separation of I/O readiness from application work.
- Asynchronous Java Serverhistorical
A completion-driven server design using asynchronous accept/read/write operations and explicit connection state.
- Java I/O Stream Basicshistorical
Byte streams, character streams, buffering, decorators, and explicit charset boundaries in Java I/O.
- NIO Channelhistorical
Java NIO channel abstractions, partial reads/writes, scattering/gathering, and channel lifecycle.
- Serialization Protocols for Network Serviceshistorical
Choosing text/binary serialization by schema evolution, compatibility, size, CPU, tooling, and security.
- Java File Streamshistorical
Reading and writing files with stream APIs, buffering, resource cleanup, and when NIO Files is simpler.
- java.nio.file.Fileshistorical
High-level Java filesystem operations and important caveats around atomicity, metadata, and large files.
- Application Heartbeatshistorical
Heartbeat design for detecting stale connections and distinguishing liveness from end-to-end health.
- Blocking Java Serverhistorical
A blocking server architecture, thread-per-connection trade-offs, and bounded concurrency requirements.
- Java NIO Overviewhistorical
Buffers, channels, selectors, readiness-based multiplexing, and the scope of Java NIO.
- Message Framing over TCPhistorical
Length-prefix, delimiter, and fixed-size framing for converting a TCP byte stream into application messages.
- java.nio.file.Pathhistorical
Path composition, normalization, absolute/real paths, and filesystem-safe comparisons.
- Selector-Based NIO Serverhistorical
Designing a Java non-blocking server with Selector, per-connection state, partial I/O, and backpressure.
- Java enumhistorical
Java enum types as fixed typed instances with fields, methods, switch support, and identity semantics.
- Java switchhistorical
Java switch statements and expressions, fall-through, enums/strings, and modern exhaustive pattern-oriented forms.
- Java transienthistorical
The transient modifier in Java native serialization and why it is not a general secrecy/security mechanism.
- Java finalhistorical
final variables, methods, classes, final-field semantics, and what final does not make immutable.
- Cloneable and Object.clonehistorical
Java's Cloneable marker interface, shallow copying, constructor bypass, and why explicit copy APIs are usually clearer.
- Integer and Boxinghistorical
Integer boxing/unboxing, value comparison, caching, parsing, overflow, and null-unboxing hazards.
- ArrayListhistorical
ArrayList's resizable-array model, complexity, capacity growth, iteration, and concurrency characteristics.
- Hashtablehistorical
Legacy Hashtable synchronization, null restrictions, and modern replacement choices.
- java.lang.Objecthistorical
Core Object methods: equals/hashCode, toString, class identity, monitor methods, and cloning/finalization caveats.
- PriorityQueuehistorical
Heap-based priority queues, ordering semantics, complexity, and concurrency limitations.
- Java Serializablehistorical
Java native serialization, serialVersionUID, compatibility, security risks, and modern alternatives for service/data formats.
- HashSethistorical
Hash-based Set semantics, equality/hashCode requirements, null handling, and concurrency characteristics.
- Stringhistorical
Java String immutability, pooling, equality, concatenation, encoding boundaries, and implementation-sensitive storage.
- LinkedListhistorical
Java LinkedList as a doubly linked List/Deque, with operation costs and cache-locality trade-offs.
- LinkedHashMaphistorical
Insertion/access-order HashMap with a linked iteration order and the basis of simple LRU-style maps.
- Immutable Objectshistorical
Designing Java immutable objects and the concurrency benefits of stable state.
- StringBufferhistorical
Legacy synchronized mutable text builder and its relationship to StringBuilder.
- Converting Between Lists and Arrayshistorical
Safe Java List/array conversion and the mutability semantics of Arrays.asList and modern collection factories.
- Java Map Implementations Comparedhistorical
Choosing HashMap, LinkedHashMap, TreeMap, ConcurrentHashMap, and synchronized/legacy maps.
- Collections.synchronizedSethistorical
Synchronized Set wrappers and the need for external synchronization during compound operations and iteration.
- StringBuilderhistorical
Efficient mutable text construction, capacity, non-thread-safety, and compiler concatenation optimizations.
- Java List Implementations Comparedhistorical
Choosing among ArrayList, LinkedList, CopyOnWriteArrayList, and synchronized wrappers by access pattern.
- Collections.synchronizedMaphistorical
Synchronized Map wrappers, compound-operation atomicity, iteration locking, and concurrent alternatives.
- TreeSethistorical
Sorted/navigable set semantics, comparator ordering, and logarithmic tree operations.
- Comparing Java Stringshistorical
String identity, content equality, ordering, null safety, and case-insensitive comparison cautions.
- Collections.synchronizedListhistorical
The synchronized List wrapper, compound operations, iteration requirements, and alternatives.
- TreeMaphistorical
Sorted and navigable maps, key ordering, logarithmic operations, and comparator consistency.
- Vectorhistorical
Legacy synchronized Vector behavior and why ArrayList or specialized concurrent collections are usually preferred.
- Fail-Fast Iteratorshistorical
What ConcurrentModificationException means, structural modification tracking, and why fail-fast behavior is not a thread-safety guarantee.
- HashMap in JDK 7historical
Historical JDK 7 HashMap bucket-chain implementation and resize behavior, clearly separated from modern JDK internals.
- HashMap in JDK 8historical
Historical JDK 8 HashMap array/bin/tree design, resize concepts, load factor, and stable API-level lessons.
- 6.1 Hardware Foundations for Concurrencyhistorical
CPU caches, coherence, out-of-order execution, memory ordering, and why language memory models exist above hardware.
- 6.2 synchronizedhistorical
Java intrinsic monitors, mutual exclusion, happens-before visibility, reentrancy, synchronized methods/blocks, and JVM implementation caveats.
- 6.3 volatilehistorical
Java volatile visibility and ordering semantics, acquire/release-style happens-before behavior, atomic single reads/writes, and why volatile is not a lock.
- 6.4 Compare-and-Set (CAS)historical
Atomic compare-and-set as a read-modify-write primitive, retry loops, contention, ABA, and when lock-free does not mean contention-free.
- 6.5 AbstractQueuedSynchronizer (AQS)historical
AQS as the state-and-wait-queue framework behind many JUC synchronizers, with exclusive/shared acquisition, parking, cancellation, and template methods.
- 6.6 ReentrantLockhistorical
Explicit reentrant mutual exclusion with interruptible/timed acquisition, optional fairness, Conditions, and try/finally release.
- 6.7 Lock Conditionshistorical
Condition variables with await/signal, predicate loops, lock association, spurious wakeups, and the relationship to Object.wait/notify.
- 6.8 CyclicBarrierhistorical
A reusable barrier that releases a group when all parties arrive, with barrier actions, broken-barrier behavior, and comparison with CountDownLatch.
- 6.9 CountDownLatchhistorical
A one-shot shared countdown synchronizer for waiting until N events complete, with AQS shared-mode semantics.
- 6.10 CopyOnWriteArrayListhistorical
How CopyOnWriteArrayList provides lock-free reads by publishing immutable array snapshots, and when its write cost makes it unsuitable.
- 6.11 CopyOnWriteArraySethistorical
CopyOnWriteArraySet semantics, implementation relationship with CopyOnWriteArrayList, snapshot iteration, and read-heavy use cases.
- ArrayBlockingQueuehistorical
A fixed-capacity array-backed blocking queue with explicit backpressure, FIFO element order, and optional fairness.
- 6.13 ThreadLocalhistorical
Per-thread context storage, ThreadLocalMap lifetime, weak keys, stale values, thread-pool leaks, remove(), and modern context-propagation considerations.
- 6.14 ThreadPoolExecutorhistorical
Java thread-pool execution policy, core/max workers, work queues, rejection, shutdown, sizing, bounded backpressure, and modern virtual-thread context.
- 6.15 CompletableFuturehistorical
Composable asynchronous computation with CompletableFuture: stage chaining, error handling, executors, blocking hazards, and cancellation semantics.
- 6.16 ConcurrentHashMap in JDK 7historical
Historical JDK 7 ConcurrentHashMap design: segmented locking, read concurrency, and why these internals should not be generalized to modern JDKs.
- 6.17 Fork/Join Frameworkhistorical
Java ForkJoinPool, recursive task decomposition, work stealing, common-pool behavior, and the limits of fork/join for blocking work.
- 6.18 Exchangerhistorical
How Java Exchanger pairs two threads at a rendezvous point and atomically swaps one value from each participant.
- ReentrantReadWriteLockhistorical
A reentrant read/write lock with shared readers, exclusive writers, optional fairness, lock downgrading, and workload trade-offs.
- Semaphorehistorical
Permit-based concurrency control with acquire/release, bounded resource access, optional fairness, and the distinction from rate limiting.
- 6.21 User, Kernel, and Java Threadshistorical
User-level versus kernel-level threads, the traditional Java platform-thread mapping, and how virtual threads change the model.
- 6.22 Unsafehistorical
Why sun.misc.Unsafe exists, what low-level operations it exposes, and why supported Java APIs should usually be preferred.
- 6.23 The Java Memory Model (JMM)historical
Java's memory model, data races, happens-before, synchronization order, volatile, monitors, thread start/join, final fields, and sequential consistency for correctly synchronized programs.
- Optimizing Java Lockinghistorical
Durable lock-performance principles: reduce contention and critical sections, avoid blocking work while locked, split ownership carefully, and treat JVM lock internals as version-sensitive.
- Building an AQS-Style Synchronizerhistorical
A teaching implementation of a synchronizer using atomic state, a FIFO wait queue, park/unpark, and release wakeups, emphasizing invariants rather than copying JDK internals.
- Fair ReentrantLockhistorical
How fair ReentrantLock reduces barging by honoring queued predecessors, and the throughput/latency trade-off of fairness.
- BlockingQueuehistorical
Producer-consumer queues with bounded capacity, blocking/timed operations, backpressure, and the semantics of major Java BlockingQueue implementations.
- Executors Factory Methodshistorical
Convenience ExecutorService factories, their hidden queue/thread choices, and why explicit executor configuration or virtual-thread executors are often clearer.
- 6.16 ConcurrentHashMap in JDK 8historical
Historical JDK 8 ConcurrentHashMap design: CAS insertion, bin synchronization, tree bins, cooperative resizing, and stable public semantics.
- 6.30 Producer-Consumerhistorical
Producer-consumer coordination with BlockingQueue, wait/notify, and Condition, including bounded capacity and correct wait-loop semantics.
- Nonfair ReentrantReadWriteLockhistorical
Default read/write-lock acquisition, reader/writer barging policy, writer-starvation avoidance heuristics, and throughput trade-offs.
- Nonfair Semaphorehistorical
Default semaphore barging behavior, shared AQS permit state, and why nonfair acquisition often improves throughput.
- 6.33 Thread.sleephistorical
Thread.sleep timing semantics and the important difference between sleeping and waiting on an object monitor.
- Nonfair ReentrantLockhistorical
Default ReentrantLock barging behavior, why it can improve throughput, and how AQS queues still handle contended waiters.
- LinkedBlockingQueuehistorical
A linked-node blocking queue with optional capacity, separate producer/consumer coordination, and the risk of its very large default bound.
- RejectedExecutionHandlerhistorical
ThreadPoolExecutor overload policies as backpressure: abort, caller-runs, discard, discard-oldest, and custom rejection semantics.
- 6.37 Deadlock Examplehistorical
A minimal Java deadlock caused by inconsistent lock ordering, plus detection and prevention techniques.
- Fair ReentrantReadWriteLockhistorical
Fair read/write-lock scheduling, queued predecessors, reader grouping, writer progress, and fairness costs.
- Fair Semaphorehistorical
AQS shared acquisition with predecessor-aware fairness and the throughput trade-off of ordered permit allocation.
- 6.40 Java Thread Stateshistorical
The six Thread.State values, what each means, and why Java thread state is not identical to an operating-system scheduler state.
- PriorityBlockingQueuehistorical
An unbounded priority heap for concurrent producers/consumers, with ordering, capacity, and starvation caveats.
- SynchronousQueuehistorical
A zero-capacity rendezvous queue that directly hands an element from producer to consumer, with fair/nonfair transfer modes and thread-pool implications.
- Java Atomic Variableshistorical
AtomicInteger/Long/Reference, CAS-based read-modify-write, accumulators/adders, atomic references, memory semantics, and contention trade-offs.
- JVM Learning Resourceshistorical
A concise roadmap for studying JVM memory, class loading, JIT compilation, garbage collection, and production diagnostics.
- Diagnosing Java Production Incidentshistorical
A production Java incident workflow covering CPU, latency, threads, heap, GC, native memory, I/O, and evidence preservation.
- Garbage Collection: Core Ideahistorical
Reachability-based reclamation, GC roots, object liveness, and why garbage collection manages memory rather than arbitrary external resources.
- JVM Class Lifecyclehistorical
Loading, linking, initialization, use, unloading, and class-loader identity in the JVM.
- JVM Runtime Data Areashistorical
Heap, stacks, method-area metadata, program counters, native stacks, and the difference between JVM specification concepts and HotSpot implementation details.
- JVM Performance Tuning Methodologyhistorical
A hypothesis-driven performance tuning workflow from SLO and bottleneck identification through measurement, change, and regression validation.
- Garbage Collection Algorithmshistorical
Mark-sweep, copying, compaction, generational collection, and the throughput/latency/space trade-offs behind modern JVM collectors.
- Java Class and Object Initialization Orderhistorical
Static initialization, superclass initialization, instance field initializers, initializer blocks, and constructors in Java.
- JVM Object Allocationhistorical
How HotSpot commonly allocates objects, including TLABs, young-generation allocation, large objects, promotion, and why exact rules depend on the collector.
- JVM Garbage Collectorshistorical
A durable overview of Serial, Parallel, G1, ZGC, Shenandoah-style collector goals without treating historical defaults as permanent facts.
- Custom Java Class Loadershistorical
How custom class loaders define classes, delegation, namespace isolation, and the operational risks of loader leaks.
- Escape Analysishistorical
JIT escape analysis, scalar replacement, lock elimination, and why stack allocation should not be treated as a guaranteed Java object-allocation rule.
- Selecting a JVM Garbage Collectorhistorical
Collector-selection principles and JVM flags, with emphasis on verifying support against the deployed JDK instead of copying obsolete flag recipes.
- JVM Object Creationhistorical
From bytecode allocation through class readiness, heap allocation, zero initialization, object headers, and Java constructor execution.
- JVM Garbage Collection Overviewhistorical
An overview of JVM garbage collection: reachability, generations, collection cycles, pauses, concurrent work, and the metrics that matter operationally.
- Java Object Memory Layouthistorical
Conceptual object layout in HotSpot: headers, instance fields, alignment, compressed references, and why byte offsets are implementation-specific.
- Java Reference Typeshistorical
Strong, soft, weak, phantom, and reachability-related references, with practical cautions about caches and cleanup.
- How JVM References Locate Objectshistorical
Direct-pointer and handle-based object-reference models, and why Java code should not depend on a particular physical object-address representation.
- Java OOM Examples and Diagnosishistorical
How to distinguish heap retention, allocation pressure, Metaspace, direct/native memory, and thread-related out-of-memory failures.
- Java Performance Diagnostic Toolshistorical
A practical guide to JFR, jcmd, thread dumps, heap dumps, profilers, GC logs, and OS/container metrics.
- JVM Tuning Parametershistorical
A measurement-first approach to JVM memory and GC parameters, avoiding obsolete one-size-fits-all tuning recipes.
- Analyzing JVM GC Logshistorical
What to extract from GC logs: pause distribution, allocation pressure, live-set behavior, promotion, full collections, and concurrent-cycle health.
- Object-Oriented Programming in Javahistorical
Encapsulation, abstraction, inheritance, composition, and polymorphism with practical Java design guidance.
- Java Reflectionhistorical
Runtime type inspection and invocation with Java reflection, including access, performance, modules, and framework use cases.
- Java Sockethistorical
Java TCP socket basics: connect/accept, stream semantics, timeouts, shutdown, framing, and production resource controls.
- Servlethistorical
Servlet request/response lifecycle, container concurrency, filters/listeners, and the Jakarta namespace evolution.
- Tomcat Performance Tuninghistorical
Capacity-oriented Tomcat tuning: connector limits, threads, queues, timeouts, keep-alive, JVM resources, and downstream bottlenecks.
- Using Tomcathistorical
Tomcat deployment basics, connectors, applications, logs, configuration, and modern operational cautions.
- Tomcat Connectorhistorical
The Tomcat connector boundary between network/protocol handling and the servlet container request pipeline.
- Tomcat Startup Flowhistorical
Conceptual Tomcat startup: bootstrap, server/service/connectors, containers, lifecycle events, and application deployment.
- Tomcat Request Processing: Source Viewhistorical
From connector protocol handling through container mapping/pipeline to servlet invocation, described without freezing one Tomcat version's stack.
- Building Tomcat from Sourcehistorical
A version-aware workflow for checking out, building, testing, and debugging Tomcat source.
- Tomcat Container Hierarchyhistorical
Engine, Host, Context, Wrapper, request routing, and the hierarchical Tomcat container model.
- Tomcat Request Routing: Configuration Viewhistorical
How connector, virtual-host, context, and servlet mapping configuration determines a request's destination.
- Tomcat Lifecyclehistorical
Tomcat component lifecycle initialization, start, stop, destroy, and lifecycle events.
- Tomcat Architecturehistorical
Tomcat's service, connector, container hierarchy, lifecycle, and request-processing architecture.
- Java Genericshistorical
Type parameters, bounds, wildcards, PECS, type erasure, and the limits of Java's generic type system.
- Java 8 Language and Library Featureshistorical
Lambdas, functional interfaces, streams, Optional, default methods, java.time, and CompletableFuture introduced around Java 8.
- Comparable and Comparatorhistorical
Natural ordering, external comparators, comparator contracts, and consistency with equality.