An Idea for a Java Logic Engine
An idea for a visual logic engine that bakes the factory, proxy, strategy, and decorator patterns plus SPI into one tool: compose business logic by dragging components, Kettle-style, so backend developers write less boilerplate.
The Vuetify UI Library
Vuetify is a Material Design component framework built on Vue.js. A look at its main features, documentation quality, and use cases, plus what to keep in mind when choosing it.
Working with Kettle
Notes on using Kettle for multi-source data sync, migration, and transformation: the core concepts, what the common components are for, and the scenarios and limits of query-based CDC.
Sekiro: Shadows Die Twice
Sekiro: Shadows Die Twice is a third-person action-adventure game by From Software. This post traces the two threads of its backstory: Isshin Ashina seizing the land, and the Divine Dragon and the power of immortality.
Cracking JRebel in IntelliJ IDEA 2020
A walkthrough of activating JRebel inside IDEA, plus a look at where JVM hot deployment hits its limits and a few compliant alternatives.
MySQL Transaction Deadlocks Explained
How concurrent transactions walk step by step into a mutual-waiting standoff: deriving deadlock causes from lock ordering, explaining InnoDB's undo-log-based rollback choice and the wait-for graph detection mechanism, and closing with practical ways to reduce deadlock probability.
Notes from Building an IntelliJ IDEA Plugin
Notes from building my own MyBatis SQL log parsing plugin: why I built it, how parameter filling works under the hood, the learning curve of IDEA plugin development, and some takeaways from publishing to the plugin marketplace.
Reflections on My First Few Years in Tech
Before I knew it, I had spent several years in the internet industry. Back when I first started learning to code, I was writing demo projects every day — from the simplest Hello World to little games, crawlers, and admin systems — and every new skill brought a real sense of achievement.
Distributed Locks and Spring Transaction Ordering: A Subtle Concurrency Bug
A reader used a ZooKeeper distributed lock for ticket-sale deductions, yet the counts still went wrong under high concurrency. The root cause: the lock was released before the transaction committed, letting the next thread read stale data. Here is the reasoning and the fix.
How I Think About Java Backend Architecture
Organizing my understanding of Java backend architecture: from coding standards, module decomposition, middleware, and database governance to security, team collaboration, and the evolution toward microservices.