Skip to content
LuTiao Programming
Author

LuTiao Programming

LuTiao Programming is a friendly community offering free programming lessons. We inspire learners to explore new ideas and technologies and quickly acquire job-ready skills.

243
Articles
0
Likes
1.8k
Views
0
Comments
Recent Articles

Latest from LuTiao Programming

100 recent articles max
LuTiao Programming
LuTiao Programming
Sep 17, 2026 · Backend Development

Java 27 Finally Lets You Switch on long, double, boolean — With Range Guards

Java 27's preview feature extends switch expressions to all primitive types (long, float, double, boolean) and adds pattern matching with 'when' guards, enabling concise range-based business rules instead of if-else chains, though it remains a preview feature requiring explicit enablement.

Backend DevelopmentBusiness RulesJava 27
0 likes · 11 min read
Java 27 Finally Lets You Switch on long, double, boolean — With Range Guards
LuTiao Programming
LuTiao Programming
Sep 15, 2026 · Backend Development

Java 27 JFR Auto-Redaction: Automatic Secret Masking in Diagnostic Files

Java 27 introduces JFR in-process data redaction (JEP 536) that automatically masks sensitive values like passwords, tokens, and API keys in environment variables, system properties, and JVM arguments within flight recordings, using default glob patterns and allowing custom rules via FlightRecorderOptions, though custom JFR events and child processes remain unprotected.

Data RedactionFlight RecorderJEP 536
0 likes · 12 min read
Java 27 JFR Auto-Redaction: Automatic Secret Masking in Diagnostic Files
LuTiao Programming
LuTiao Programming
Sep 14, 2026 · Backend Development

Java 27 Structured Concurrency: Simplifying Parallel Aggregation Beyond CompletableFuture

The author explores Java 27's Structured Concurrency (StructuredTaskScope) for parallel service aggregation, showing how it replaces CompletableFuture with clearer lifecycle, automatic cancellation on failure, scope-level timeouts, and virtual threads, while noting it remains a preview API requiring --enable-preview.

Backend DevelopmentCompletableFutureJava 27
0 likes · 15 min read
Java 27 Structured Concurrency: Simplifying Parallel Aggregation Beyond CompletableFuture
LuTiao Programming
LuTiao Programming
Sep 13, 2026 · Backend Development

Spring Data 4.1: Type-Safe Property Paths Turn String Sorting into Compile-Time Checks

Spring Data 4.1 introduces type-safe property paths using method references like Sort.by(Order::getCreatedAt) and TypedPropertyPath for nested fields, replacing error-prone string-based sorting with compile-time checks and IDE refactoring support across JPA, JDBC, MongoDB, and other Spring Data modules.

Compile-time ChecksJPAMethod References
0 likes · 13 min read
Spring Data 4.1: Type-Safe Property Paths Turn String Sorting into Compile-Time Checks
LuTiao Programming
LuTiao Programming
Sep 12, 2026 · Backend Development

Spring Boot 4.1 gRPC: Why I Swapped One REST Call and What It Revealed About Microservice Boundaries

The author migrates a high-frequency internal inventory query from REST to gRPC in Spring Boot 4.1, discovering that gRPC's contract-first approach, binary encoding, and explicit timeout handling improve interface governance for service-to-service RPC, while REST remains better for web-facing and low-frequency APIs.

API ContractMicroservicesProtobuf
0 likes · 17 min read
Spring Boot 4.1 gRPC: Why I Swapped One REST Call and What It Revealed About Microservice Boundaries
LuTiao Programming
LuTiao Programming
Sep 11, 2026 · Backend Development

API Latency Spike to 8s: Not Slow SQL, But Long Transactions Holding DB Connections

An API's sudden latency spike from 200ms to 8 seconds was traced not to slow SQL but to database connection pool exhaustion caused by @Transactional methods holding connections during external HTTP calls to a payment service; splitting transactions and moving external calls outside the transaction boundary resolved the issue.

Database Connection PoolHikariCPMicroservices
0 likes · 15 min read
API Latency Spike to 8s: Not Slow SQL, But Long Transactions Holding DB Connections
LuTiao Programming
LuTiao Programming
Sep 10, 2026 · Backend Development

Spring Framework 7 Retry & ConcurrencyLimit: Avoiding the Traffic Amplifier Trap

The author migrates from hand-written retry code and Spring Retry to Spring Framework 7's built-in @Retryable and @ConcurrencyLimit, discovering that retry logic can amplify downstream traffic under virtual threads, and shares lessons on selective exception handling, jitter, idempotency for write operations, and the difference between local concurrency limits and distributed rate limiting.

Circuit BreakerConcurrencyLimitResilience
0 likes · 16 min read
Spring Framework 7 Retry & ConcurrencyLimit: Avoiding the Traffic Amplifier Trap
LuTiao Programming
LuTiao Programming
Sep 10, 2026 · Backend Development

Spring Boot 4 Native API Versioning: Moving Beyond /v1, /v2 URL Paths

The author demonstrates how Spring Boot 4's built-in API versioning via Spring MVC eliminates duplicated controller hierarchies by using header-based version routing, semantic version matching, and default version fallbacks, allowing per-endpoint versioning without copying unchanged endpoints.

@HttpExchangeAPI versioningController Refactoring
0 likes · 17 min read
Spring Boot 4 Native API Versioning: Moving Beyond /v1, /v2 URL Paths
LuTiao Programming
LuTiao Programming
Sep 8, 2026 · Backend Development

Migrating from Feign to @HttpExchange in Spring Boot 4: Why It's Not That Simple

The author shares their experience replacing OpenFeign with Spring's @HttpExchange during a Spring Boot 4 upgrade, demonstrating how interface definitions simplify but cross-cutting concerns like authentication, timeouts, and error handling remain, leading to a pragmatic coexistence of both tools based on project needs.

@HttpExchangeGateway PatternHTTP Client
0 likes · 15 min read
Migrating from Feign to @HttpExchange in Spring Boot 4: Why It's Not That Simple
LuTiao Programming
LuTiao Programming
Sep 7, 2026 · Backend Development

Virtual Threads Eliminated Thread Pools — Until MySQL Connections Ran Out

After upgrading to Java 25 and Spring Boot 4, the author enabled virtual threads and removed custom thread pools for IO-heavy aggregation endpoints. While code simplified dramatically, the bottleneck shifted from thread exhaustion to HikariCP connection pool exhaustion, revealing that virtual threads don't increase downstream capacity. The solution: limit scarce resources (DB connections, HTTP clients) directly rather than limiting threads.

HikariCPIO-boundJava 25
0 likes · 12 min read
Virtual Threads Eliminated Thread Pools — Until MySQL Connections Ran Out