Programmer1970
Author

Programmer1970

Formerly called 'Code to 35'. Add our main WeChat ID to access a wealth of shared resources (algorithms, interview prep, tech stacks: Java, Python, Go, big data). We mainly share serious development techniques, focusing on output-driven input. Occasionally we post life snippets and gossip. Our aim is to attract precise traffic and test advertising opportunities.

123
Articles
0
Likes
329
Views
0
Comments
Recent Articles

Latest from Programmer1970

100 recent articles max
Programmer1970
Programmer1970
Aug 16, 2026 · Backend Development

Why Disruptor’s Ring Buffer Beats BlockingQueue: Zero‑Copy, False‑Sharing Elimination, and Cache‑Line Padding

The article dissects how Disruptor’s ring‑buffer architecture outperforms traditional BlockingQueue by eliminating lock contention, dynamic allocation, and cache‑line interference through pre‑allocated zero‑copy buffers, CAS‑based sequencing, cache‑line padding, batch processing, and tailored wait strategies, achieving millions of TPS.

BlockingQueueCache line paddingDisruptor
0 likes · 13 min read
Why Disruptor’s Ring Buffer Beats BlockingQueue: Zero‑Copy, False‑Sharing Elimination, and Cache‑Line Padding
Programmer1970
Programmer1970
Aug 6, 2026 · Backend Development

Revisiting synchronized lock upgrade: JVM‑level details of biased, lightweight and heavyweight locks

This article explains how the JVM implements synchronized by using the object header's Mark Word to transition through biased, lightweight, and heavyweight lock states, covering the underlying data structures, lock acquisition and release processes, revocation, downgrade, tuning parameters, practical verification, performance pitfalls, and a comparison with ReentrantLock.

JVMJavabiased-lock
0 likes · 16 min read
Revisiting synchronized lock upgrade: JVM‑level details of biased, lightweight and heavyweight locks
Programmer1970
Programmer1970
Jul 23, 2026 · Fundamentals

6 Real Scenarios That Break Java’s ClassLoader Parent‑Delegation Model

The article examines six practical situations—SPI, Tomcat WebAppClassLoader, OSGi bundles, JDBC driver loading, custom ClassLoaders, and Java agents—where Java’s default parent‑delegation class‑loading mechanism is intentionally bypassed, explaining the motivations, implementations, and associated risks of each approach.

ClassLoaderJavaOSGi
0 likes · 13 min read
6 Real Scenarios That Break Java’s ClassLoader Parent‑Delegation Model
Programmer1970
Programmer1970
Jul 21, 2026 · Backend Development

How to Cut RocketMQ Consumer Latency from 10 s to 500 ms with Five Overlooked Settings

During a traffic peak the order service saw 30‑second consumer latency and a backlog of over 20 000 messages; by adjusting five RocketMQ consumer parameters—pullBatchSize, consumeThreadMin/Max, adjustThreadPoolNumsThreshold, pullTimeoutMillis, socketTimeoutMillis, and consumeMessageBatchMaxSize—the team reduced end‑to‑end latency to 500 ms, raised TPS to over 2500, and cleared the backlog.

Performance TuningRocketMQconfiguration
0 likes · 9 min read
How to Cut RocketMQ Consumer Latency from 10 s to 500 ms with Five Overlooked Settings
Programmer1970
Programmer1970
Jun 29, 2026 · Backend Development

How We Cut Full GC from 10 seconds to 200 ms: A Complete JVM GC Tuning Guide

A production outage at 3 am revealed a 10‑second Full GC pause on an 8 GB heap; the article walks through evidence collection, heap‑size rebalancing, switching to G1, fine‑tuning G1 parameters, and code changes that together reduced Full GC pauses to 200 ms and improved latency dramatically.

Full GCG1 GCGC Tuning
0 likes · 12 min read
How We Cut Full GC from 10 seconds to 200 ms: A Complete JVM GC Tuning Guide
Programmer1970
Programmer1970
Jun 1, 2026 · Fundamentals

Why ZGC Pauses Stay Under 1 ms: Inside Colored Pointers and Load Barriers

The article explains how ZGC achieves sub‑millisecond pause times by embedding GC state in pointer bits (colored pointers) and using JIT‑injected load barriers that fix references on first access, comparing this approach with G1 and Shenandoah and detailing ZGC 2.0 enhancements and known pitfalls.

Colored PointersConcurrent GCGarbage Collection
0 likes · 11 min read
Why ZGC Pauses Stay Under 1 ms: Inside Colored Pointers and Load Barriers
Programmer1970
Programmer1970
May 31, 2026 · Fundamentals

Why synchronized is slower – tracing its roots from MESI cache coherence

The article demystifies why Java's synchronized keyword can be slower by tracing the full path from CPU cache‑coherence (MESI) through bus and cache locks, volatile, biased and lightweight locks, up to the heavyweight monitor implementation, revealing each layer’s impact on visibility, ordering and atomicity.

JVMJavacache-coherence
0 likes · 15 min read
Why synchronized is slower – tracing its roots from MESI cache coherence
Programmer1970
Programmer1970
May 27, 2026 · Backend Development

Ultimate Cache Consistency Solution for Billion‑Scale Traffic: Canal + MQ + Local Cache

At billion‑level request rates, the traditional cache‑aside pattern fails, so the article proposes a three‑layer architecture—Canal captures MySQL binlog, an MQ (RocketMQ/Kafka) buffers changes, and a coordinated local cache service updates L1 caches with short TTL, achieving high performance and eventual consistency.

Cache ConsistencyCanalDistributed Architecture
0 likes · 12 min read
Ultimate Cache Consistency Solution for Billion‑Scale Traffic: Canal + MQ + Local Cache
Programmer1970
Programmer1970
May 26, 2026 · Backend Development

7 Distributed Lock Implementations and Real‑World Pitfalls

The article explains why local locks fail in multi‑machine deployments, defines the three essential properties of a correct distributed lock, walks through seven Redis‑based lock solutions with code samples, highlights common production pitfalls, and provides a decision tree for selecting the right approach.

Fault ToleranceJava ConcurrencyRedis
0 likes · 10 min read
7 Distributed Lock Implementations and Real‑World Pitfalls