| Ko

VS Code Best Keyboard Shortcuts

Visual Studio Code (VS Code) is a free open-source code editor released by Microsoft in 2015. Built on the Electron framework, it provides the same experience across Windows, macOS, and Linux. With its lightweight execution speed and rich extension ecosystem, it has become the most widely used editor among developers worldwide. To maximize VS Code productivity, mastering shortcuts is essential. Minimizing mouse usage and working keyboard-centrically significantly improves coding speed. This guide organizes VS Code’s core shortcuts by category and explains practical usage. ...

June 21, 2024 · 5 min · 936 words · In-Jun

Floyd-Warshall Algorithm

The Floyd-Warshall algorithm is a dynamic programming-based algorithm that finds the shortest paths between all pairs of vertices in a graph. Independently published by Robert Floyd and Stephen Warshall in 1962, it differs from Dijkstra’s and Bellman-Ford algorithms by computing shortest paths for all pairs simultaneously in a single execution. With O(V³) time complexity, it can handle edges with negative weights and detect the presence of negative cycles, making it a core component in various fields including network diameter calculation, transitive closure operations, and database query optimization. ...

June 17, 2024 · 13 min · 2567 words · In-Jun

Bellman-Ford Algorithm

The Bellman-Ford algorithm is an algorithm that finds the shortest paths from a single source vertex to all other vertices in a weighted graph. Independently discovered by Richard Bellman and Lester Ford Jr. in the 1950s, it has powerful characteristics that distinguish it from Dijkstra’s algorithm: it can handle edges with negative weights and detect whether negative cycles exist in the graph. Using a dynamic programming approach with O(VE) time complexity, it is used as a core component in various real-world applications including network routing protocols, arbitrage detection in financial markets, and minimum cost flow problems. ...

June 17, 2024 · 12 min · 2547 words · In-Jun

Dijkstra's Shortest Path Algorithm

Dijkstra’s algorithm is the quintessential algorithm for finding the shortest paths from a starting vertex to all other vertices in a weighted graph, invented by Dutch computer scientist Edsger Wybe Dijkstra in 1956 and still serving as a core component in numerous fields including network routing, GPS navigation, and game AI. The algorithm uses a greedy algorithm approach to make optimal choices at each step, and achieves an efficient time complexity of O(E log V) through priority queue implementation, making it practical for large-scale graphs. ...

June 17, 2024 · 11 min · 2162 words · In-Jun

CI/CD Continuous Integration and Deployment

CI/CD stands for Continuous Integration and Continuous Delivery/Deployment, referring to a set of automated processes that automatically build, test, and deploy code changes during software development. It has become a core element of DevOps culture in modern software development. CI/CD enables developers to integrate and deploy code more frequently and safely, thereby shortening software release cycles and improving product quality by detecting bugs early. History and Origins of CI/CD CI/CD was born amid the innovation in software development methodologies during the 1990s, starting as one of the core practices of Extreme Programming (XP) and has continued to evolve to the present day. ...

June 10, 2024 · 13 min · 2581 words · In-Jun

Network Sockets

A socket is a software interface that abstracts network communication endpoints, first appearing in the 4.2BSD Unix operating system developed at UC Berkeley in 1983 and remaining a fundamental technology underlying internet communication to this day. It identifies unique communication points on a network through the combination of IP address and port number, providing a standardized API that enables data exchange between processes. History and Evolution of Sockets The Birth of Berkeley Sockets ...

June 8, 2024 · 7 min · 1449 words · In-Jun

JPA First-Level and Second-Level Cache

History and Concepts of Hibernate Cache Architecture Hibernate was designed with caching mechanisms as a core feature for performance optimization from when Gavin King first developed it in 2001. Since then, Hibernate’s cache architecture has evolved into a two-level hierarchical structure called first-level cache and second-level cache, minimizing database access and maximizing application performance. The first-level cache is a mandatory feature that has existed since Hibernate’s early versions along with Session (now EntityManager). The persistence context itself serves as the first-level cache, guaranteeing entity identity within transactions and serving as the foundation for Dirty Checking. ...

June 8, 2024 · 9 min · 1744 words · In-Jun

Understanding JPA Persistence Context

Concept and History of Persistence Context The Persistence Context is an environment for permanently storing entities. It’s a core JPA concept that manages entity lifecycles between the application and database while providing various optimization features. This concept was first introduced under the name “Session” when Gavin King developed Hibernate in 2001. Hibernate’s Session abstracted database connections, tracked entity object states, and provided a consistent data view within transactions. When JPA 1.0 standardized Hibernate in 2006, this concept was reformulated as Persistence Context and EntityManager. ...

June 8, 2024 · 7 min · 1286 words · In-Jun

Dirty Checking in JPA

Concept and History of Dirty Checking Dirty Checking is one of Hibernate’s core features that automatically detects changes to entities managed by the persistence context and reflects them in the database. This concept was introduced as a core implementation of Transparent Persistence when Gavin King first developed Hibernate in 2001. It was designed so that the database would automatically update just by changing an object’s state, without developers writing explicit UPDATE statements. ...

June 8, 2024 · 7 min · 1422 words · In-Jun

Understanding the JPA N+1 Query Problem

What is the N+1 Problem? The N+1 problem is a common performance issue in Object-Relational Mapping (ORM) where N additional queries are executed when retrieving associated entities. As a result, the total number of queries becomes N+1. When the number of queries increases, database communication multiplies, network round-trip time grows, and there is a risk of database connection pool exhaustion, which can significantly degrade performance. History and Background of the N+1 Problem The N+1 problem emerged alongside ORM frameworks and is particularly common when using Lazy Loading strategies in Hibernate and JPA. ORM frameworks adopt lazy loading as the default strategy to handle data in an object-oriented manner by deferring the loading of associated entities until needed. This approach has advantages such as preventing unnecessary data loading and improving initial loading speed. However, when developers access associated entities inside loops without recognizing the relationships, individual queries are executed for each entity, causing the N+1 problem. This has remained a critical performance issue that developers must be aware of from the early versions of Hibernate to the present. ...

June 8, 2024 · 7 min · 1373 words · In-Jun
[email protected]