Category

Covering 10 topics so far.

Algorithm/CS (31)

The Proxy Pattern Hidden Behind @Transactional
Decorator Pattern: Combining Features Without Inheritance
Adapter Pattern: The Solution for Incompatible Interfaces
Template Method Pattern: Fixing the Skeleton, Changing the Steps
What Are Coupling and Cohesion?
Cryptographic Techniques: Substitution, Transposition, Block Ciphers, and Stream Ciphers
Builder Pattern for Many Parameters
Factory Method Pattern: Delegating Object Creation to Subclasses
Argument and Parameter
Difference Between Process and Thread
LeetCode 344. Reverse String
Binary Search Tree: Implementation in Java
Binary Search Tree: Theory and Introduction
Observer Pattern
LeetCode 2. Add Two Numbers
LeetCode 3. Longest Substring Without Repeating Characters
Functional Programming and Object-Oriented Programming
Why Are Computers Based on Binary System?
Strategy Pattern
Finding Prime Numbers Quickly Using Sieve of Eratosthenes
Singleton Pattern
Levenshtein Distance Algorithm (Edit Distance Algorithm)
Time Complexity and Space Complexity
LeetCode 412. Fizz Buzz
LeetCode 292. Nim Game
Big Endian and Little Endian
LeetCode 1. Two Sum
Selection Sort
Merge Sort
Quick Sort
Bracket Matching with a Stack (Java)

Java/Kotlin (120)

JDK 25 LTS Release Notes: Key Changes at a Glance
Kotlin Scope Functions Compared: let, run, with, apply, also
Kotlin Error Handling and Coroutine-Based Failure Resilience
Kotlin Coroutines: Concepts and Practical Usage
Kotlin Null Safety and Functional Programming
Kotlin Class Design and Type System Usage
Kotlin Basics: Syntax and Core Concepts
What Is a Java Record and When Should You Use It?
Java 21 LTS Is Here: What Changed?
Java Sealed Class vs Abstract Class vs Interface: When to Use Each
How to Generate Random Numbers in Java and What to Watch
FileNotFoundException When Running as a JAR
Java ThreadLocal: Usage and Caveats
What Is New in Java 17: First LTS Release in 3 Years
Java effectively final
Java BigDecimal: Accurate Real Numbers and Floating Point
Java Optional: 5. A Closer Look at Optional
Java Optional: 4. Terminal Optional Methods
Java Optional: 3. Intermediate Optional Methods
Java Optional: 2. Introduction to Optional
Java Optional: 1. What Is null?
Java BigInteger: Representing Very Large Integers
Encryption and Decryption in Java
How to Measure Code Execution Time in Java
What’s New in Java 14?
Java Scripting API: Migrating to GraalVM
Java Scripting API: Bindings, ScriptContext, and Execution Performance
Java Scripting API: Calling JavaScript Functions from Java
JSON Schema: Implementing a Validator in Java
Comparing Performance: String vs StringBuilder vs StringBuffer in Java
[Effective Java 3rd Edition] Item 11. Always Override hashCode When You Override equals
[Effective Java 3rd Edition] Item 76. Strive for Failure Atomicity
[Effective Java 3rd Edition] Item 23. Prefer Class Hierarchies to Tagged Classes
[Effective Java 3rd Edition] Item 24. Favor Static Member Classes over Nonstatic
[Effective Java 3rd Edition] Item 15. Minimize the Accessibility of Classes and Members
[Effective Java 3rd Edition] Item 86. Implement Serializable with Great Caution
[Effective Java 3rd Edition] Item 89. For Instance Control, Prefer Enum Types to readResolve
[Effective Java 3rd Edition] Item 90. Consider Serialization Proxies Instead of Serialized Instances
[Effective Java 3rd Edition] Item 88. Write readObject Methods Defensively
[Effective Java 3rd Edition] Item 87. Consider Using a Custom Serialized Form
[Effective Java 3rd Edition] Item 85. Prefer Alternatives to Java Serialization
[Effective Java 3rd Edition] Chapter 12. Serialization
[Effective Java 3rd Edition] Item 81. Prefer Concurrency Utilities to wait and notify
[Effective Java 3rd Edition] Item 80. Prefer Executors, Tasks, and Streams to Threads
[Effective Java 3rd Edition] Item 79. Avoid Excessive Synchronization
[Effective Java 3rd Edition] Chapter 11. Concurrency
[Effective Java 3rd Edition] Item 78. Synchronize Access to Shared Mutable Data
[Effective Java 3rd Edition] Chapter 10. Exceptions
[Effective Java 3rd Edition] Item 68. Adhere to Generally Accepted Naming Conventions
[Effective Java 3rd Edition] Item 62. Avoid Strings Where Other Types Are More Appropriate
[Effective Java 3rd Edition] Chapter 9. General Programming
[Effective Java 3rd Edition] Chapter 8. Methods
Java Serialization: readResolve and writeReplace
[Effective Java 3rd Edition] Item 44. Favor the Use of Standard Functional Interfaces
Java Serialization: writeObject and readObject
[Effective Java 3rd Edition] Chapter 7. Lambdas and Streams
[Effective Java 3rd Edition] Item 39. Prefer Annotations to Naming Patterns
[Effective Java 3rd Edition] Chapter 6. Enums and Annotations
[Effective Java 3rd Edition] Chapter 5. Generics
[Effective Java 3rd Edition] Chapter 4. Classes and Interfaces
[Effective Java 3rd Edition] Chapter 3. Methods Common to All Objects
The Difference Between map and flatMap in Java
Java Serialization: What to Consider and Why It Is Discouraged
Manage Multiple Java Versions with jEnv
Detect JAXB Parsing Errors with ValidationEventHandler
JAXB Marshalling and Unmarshalling
Java Exceptions: Checked vs Unchecked
Java Licensing? OpenJDK vs Oracle JDK
[Effective Java 3rd Edition] Chapter 2. Creating and Destroying Objects
Java Streams: 5. Common Mistakes
Java Streams: 4. Examples
Java Streams: 3. Terminal Operations
Java Streams: 2. Intermediate Operations
Java Streams: 1. API Overview and Stream Creation
[Effective Java 3rd Edition] Item 17. Minimize Mutability
[Effective Java 3rd Edition] Item 82. Document Thread Safety
The final Keyword in Java
[Effective Java 3rd Edition] Item 74. Document All Exceptions Thrown by Each Method
Numeric Literals and Underscores in Java
[Effective Java 3rd Edition] Item 66. Use Native Methods Judiciously
[Effective Java 3rd Edition] Item 58. Prefer for-each Loops to Traditional for Loops
[Effective Java 3rd Edition] Item 8. Avoid Finalizers and Cleaners
[Effective Java 3rd Edition] Item 31. Use Bounded Wildcards to Increase API Flexibility
[Effective Java 3rd Edition] Item 50. Make Defensive Copies When Needed
Java Serialization: What Is SerialVersionUID?
Java Serialization: What Is Serialization?
Benefits of Java Generics and Pitfalls to Avoid
[Effective Java 3rd Edition] Item 42. Prefer Lambdas to Anonymous Classes
[Effective Java 3rd Edition] Item 4. Enforce Noninstantiability with a Private Constructor
Java Generics
Java 8 Date and Time
Why Java Date and Calendar Are a Bad Fit
[Effective Java 3rd Edition] Item 28. Prefer Lists to Arrays
[Effective Java 3rd Edition] Item 34. Use Enums Instead of Int Constants
[Effective Java 3rd Edition] Item 18. Favor Composition over Inheritance
[Effective Java 3rd Edition] Item 26. Don't Use Raw Types
[Effective Java 3rd Edition] Item 10. Obey the general contract when overriding equals
[Effective Java 3rd Edition] Item 2. Consider a builder when faced with many constructor parameters
log4j, logback, and log4j2
Java Upcasting and Downcasting
Java and Behavior Parameterization
Java Method Overriding and Overloading
Java String Objects and String Literals
Java Collection Synchronization
Java References and Garbage Collection
Java Garbage Collection
Java String replaceAll Method $(Dollar Sign) Issue
Java Interface
Java Reflection and Dynamic Loading
The this Keyword in Java
Java File Compression and Decompression (ZipInputStream, ZipOutputStream)
Creating Java Executable Files
Abstract Classes and Methods in Java
Java Access Modifiers
Java Inheritance
Why Does Java Main Method Use public static?
Java Finalize Method
Java Swing LookAndFeel
Java Language Characteristics
Java Data Types

Frontend (7)

Infra (21)

Backend (35)

Gradle Build Performance Tuning: From 5 Minutes Down to 2
Managing Dependencies in One Place with Gradle Version Catalog
Kafka Connect: Monitoring and Incident Response
Kafka Connect: Building a Debezium CDC Pipeline
Kafka Connect: Introduction and Architecture
Why Does a Kafka Consumer Keep Falling Behind?
Kafka Message Keys: Is It Really Enough to Just Put One In?
Kafka Exactly-Once: Is It Really Processed Only Once?
Kafka Producer: How Safe and How Fast?
Kafka Streams Error Handling and Recovery Strategies
Kafka Streams Windows and Joins
Kafka Streams KStream and KTable
Kafka Streams Concepts and Architecture
Kafka Consumer Offsets and Commit Strategies
Kafka Error Handling and Dead Letter Topic Design
What Is Kafka Schema Registry and Why Does It Matter?
Why Kafka Consumer Rebalancing Happens
How Many Kafka Partitions Do You Need? Why More Consumers Do Not Always Increase Throughput
Kafka Topic Configuration Reference
Kafka Consumer Reprocessing Strategies
JSON Schema: Combining Schemas, Conditional Schemas, and Reuse
JSON Schema: Basic Schema Definitions and Validation
JSON Schema: What Is JSON Schema?
Multiple Tomcat Instances
Installing Node.js on macOS and Running an Example
Getting Started with Node.js
Python switch Statements
Python URL Parsing and Calling (urllib)
Entering Korean Comments in Python (SyntaxError: Non-ASCII character)
Python if __name__ == "__main__" Meaning
Java Kafka Producer and Consumer configs Settings
Java Kafka Producer and Consumer Example Implementation
Gradle Project Structure and Gradle Wrapper
What is Gradle?
Resolving Maven Tomcat 404 Error

Data (13)

Spring (31)

Building an LLM API with Spring AI
Spring Boot 2 to 3 Migration Checklist: Breaking Changes You Must Address
How Spring @Transactional Works Under the Hood
Spring RestClient Usage and Differences from RestTemplate
Auto-Create Spring Batch Metadata Tables
Set Default Values in Spring @Value Annotation
What Is Spring Cloud OpenFeign and What Should You Watch Out For
Simplify Object Mapping with MapStruct
What If a Spring Data JPA Field Name Matches a Database Reserved Word?
Managing SQL When Using Spring JDBC
Spring Cloud Config: Changes in Spring Boot 2.4
How to Avoid Storing _class Field in MongoDB from Spring Boot
Can Spring Register and Use Multiple DataSources?
RestTemplate and WebClient
How to Run Code When a Spring Boot Application Starts
Resolving DataBufferLimitException in Spring WebClient
Spring Cloud Config: Auto Refresh with Git Webhook
Spring Cloud Config: Spring Cloud Bus Example
Spring Cloud Config: Introduction and Example
Can Spring Include Package Names in Bean Identifiers?
Why Constructor Injection Is Preferred Over Field Injection with @Autowired
How to Fix ClassNotFoundException: JAXBException When Running a Spring Boot Project on Java 9
Handling JSONP in Spring Boot and Solving CORS Issues
Setting Up a Spring MVC + Maven Project in IntelliJ
How to Autowire a Static Field
Setting Up Log4j2 in Spring Boot
Setting Up Spring Boot Project in IntelliJ
Spring Bean Lifecycle Methods and Execution Order
Spring Framework Summary: Testing
Spring Framework Summary: Inversion of Control
Spring Framework Summary: Design Patterns

Career (9)

Engineering (11)

AI (21)

When Subagents Aren't Enough: Claude Code Agent Teams
Claude Code Subagents: How Is Work Divided and Processed?
Beyond Prompts and Context: Harness Engineering for AI Agents
I Only Compressed CLI Output, Yet Tokens Dropped by 80%?
Why Did OpenClaw Suddenly Become a Hot Topic? (feat. Agent Runtime)
Five Critical Risks of Powerful AI That Anthropic's CEO Warns About: Reading 《The Adolescence of Technology》
Building Custom AI Agents with the Claude Agent SDK
Cursor vs Claude Code: How to Choose the Right AI Coding Tool
AI Agent Skills: How to Create and Use Them
Claude Code Settings Files: How to Separate Shared Rules from Private Configuration
Why You Should Run /init First in Claude Code
How to Manage Claude Code Context and Reduce Token Usage
Context Engineering: The Next Step After Prompt Engineering
How to Connect MCP Servers to Claude Code and What to Watch For
How to Install Claude Code and Run It for the First Time
What Is Vibe Coding?
The Optimistic Future Dario Amodei Described in 《Machines of Loving Grace》
Tree of Thoughts and RAG in Prompt Engineering
Prompt Engineering Techniques
Prompt Engineering Basics and LLM Settings
ChatGPT: Can AI Replace Developers?