How Redis 6.0’s Multithreading Boosts Network I/O Performance
Redis 6.0 adds multithreaded network I/O to improve throughput, latency, and bandwidth utilization while keeping command execution single‑threaded for simplicity and data safety.
Primarily covers fundamental Java concepts, mainstream frameworks, deep dives into underlying principles, and JVM internals.
Redis 6.0 adds multithreaded network I/O to improve throughput, latency, and bandwidth utilization while keeping command execution single‑threaded for simplicity and data safety.
Redis offers three persistence mechanisms—RDB snapshots, AOF command logging, and a hybrid approach—each with distinct trigger methods, performance impacts, and trade‑offs in recovery speed, data safety, and file size, helping you choose the optimal strategy for your workload.
This article explains how Java’s ArrayList uses the transient keyword during serialization to skip the underlying array, reducing redundant data, and details the custom writeObject and readObject methods that ensure only actual elements are stored and restored efficiently.
Redis stores data directly in memory rather than on disk, leveraging microsecond‑level access, a single‑threaded Reactor event loop with I/O multiplexing, optimized data structures like strings, hashes, lists, sets, and a simple text protocol, all of which combine to deliver exceptionally high performance for high‑frequency read/write workloads.
This article explains the Concurrent Mark Sweep (CMS) garbage collector, detailing its five phases—Initial Mark, Concurrent Mark, Remark, Concurrent Sweep, and Concurrent Reset—while highlighting how each step works to minimize pause times during old‑generation memory reclamation in Java.
This article examines the drawbacks of using Java's primitive int type to store phone numbers, explains how primitive and reference types differ in memory and performance, and demonstrates why the String type, with JVM optimizations like the string pool, provides a safer, more flexible solution for global telephone data.
This guide walks you through registering a SiliconFlow account, obtaining API keys, installing the Continue plugin for VS Code or JetBrains IDEs, configuring DeepSeek models (R1, V3, V2.5) in the plugin’s JSON settings, and testing the integration, with screenshots and full configuration code.
This article explains how to create custom Java class loaders by extending java.lang.ClassLoader, when to override findClass versus loadClass, demonstrates both adhering to and breaking the parent delegation model with complete code examples, and discusses common scenarios such as web servers, SPI, and hot deployment where the delegation mechanism is intentionally altered.
This article explains Java's class loading mechanism, the three built‑in class loaders, the parent‑delegation model, reasons for using it, how to create custom loaders, and the detailed phases of loading, linking, initialization, usage, and unloading.
This article explains the Java Virtual Machine's two subsystems—Class Loader and Execution Engine—and its two main components—Runtime Data Area and Native Interface—detailing their functions, internal structures, and the overall execution workflow of Java programs.