#기본개념

리팩토링의 경계 — 무엇까지가 리팩토링인가

동작을 바꾸면 리팩토링이 아니다. 인접한 작업들과 갈라놓고, 좋은 리팩토링의 판단 기준을 정리한다

·리팩토링·기본개념, 리팩토링, Kotlin

실행계획 노드가 나타나는 조건 — 스캔·조인·정렬 예시로 확인

Seq Scan이 Hash Join으로, Nested Loop이 Merge Join으로 바뀌는 조건을 실제 EXPLAIN 결과로 확인한다

·데이터베이스·기본개념, Database, PostgreSQL

코틀린 코루틴 기본 개념 정리

코루틴이 스레드와 어떻게 다른지, suspend 함수와 CoroutineScope·Job·Dispatcher가 하는 역할을 표와 예시로 정리한다.

·Kotlin·기본개념, Kotlin, 코루틴

계층 구조를 부모 참조로 저장하는 Adjacency List

각 행이 자신의 parent_id만 저장하는 가장 기본적인 계층 구조 저장 방식과, 재귀 조회가 필요한 이유·비용을 정리한다

·데이터베이스·기본개념, Database, 계층구조

계층 구조를 저장하는 Closure Table

부모-자식 컬럼만으로는 재귀 조회가 필요한 계층 구조를, 조상-자손 관계를 미리 계산해 저장하는 Closure Table로 다루는 방법을 정리한다

·데이터베이스·기본개념, Database, 계층구조

JVM 기본개념 — 클래스 로딩부터 메모리 구조, 실행 엔진까지

자바 프로그램이 실행되는 과정을 클래스 로딩, 런타임 메모리 영역, 실행 엔진 세 부분으로 정리한다

·JAVA·기본개념, JVM, Java

계층 구조를 숫자 구간으로 저장하는 Nested Set

트리를 깊이 우선으로 순회해 매긴 left/right 번호로 계층을 표현하는 Nested Set의 동작 방식과 실무 활용 예시를 정리한다

·데이터베이스·기본개념, Database, 계층구조

계층 구조를 문자열로 저장하는 Path Enumeration

루트부터 현재 노드까지의 경로를 문자열에 이어붙여 저장하는 Path Enumeration의 동작 방식과 실무 활용 예시를 정리한다

·데이터베이스·기본개념, Database, 계층구조

힙(Heap) — 배열 하나로 우선순위를 유지하는 원리

min-heap을 배열로 표현하는 방식과 push·pop이 sift-up·sift-down으로 힙 속성을 지키는 과정을 정리한다

·자료구조·기본개념, 자료구조, Python

Kotlin 애노테이션 use-site target

Kotlin 프로퍼티에 애노테이션을 붙일 때 field·get·set·param 중 어디로 갈지 정하는 use-site target을 표로 정리한다

·Kotlin·기본개념, Kotlin, 애노테이션

격리 수준과 세 가지 이상 현상

SQL 표준이 정의한 4단계 격리 수준과 각 단계가 허용하는 이상 현상을 정리한다

·데이터베이스·기본개념, Database, 트랜잭션

실행계획 읽기 — 스캔, 조인, rows와 loops

EXPLAIN 출력에서 무엇을 먼저 보고 무엇을 무시해도 되는지 정리한다

·데이터베이스·기본개념, Database, PostgreSQL

Spring AOP 프록시

스프링이 주입하는 것은 원본 객체가 아니라 프록시다. 그 구조와 제약을 정리한다

·Spring·기본개념, Spring, AOP

트랜잭션과 ACID

트랜잭션이 무엇을 보장하고 무엇을 보장하지 않는지 네 속성으로 정리한다

·데이터베이스·기본개념, Database, 트랜잭션

@Transactional 전파 속성 7가지

진행 중인 트랜잭션을 만났을 때의 동작 7가지와 기본 롤백 규칙을 정리한다

·Spring·기본개념, Spring, 트랜잭션