IoC(제어의 역전) 는 객체의 생성과 연결을 개발자가 아니라 프레임워크(컨테이너)가 맡는 것이고, DI(의존성 주입) 는 그 IoC를 구현하는 방법으로, 객체가 필요한 의존성을 외부에서 넣어주는 것이다. 1. 의존…
객체지향 프로그래밍(OOP)은 프로그램을 데이터와 그 데이터를 다루는 행동을 묶은 객체들의 협력 으로 구성하는 방식이다. 4대 특성은 객체를 만드는 도구이고, SOLID는 변경에 강한 설계를 위한 원칙이다. 1. 절…
쿠키와 세션은 "상태를 기억하기 위한 것", 캐시는 "같은 걸 다시 받지 않기 위한 것"이다. 셋을 가르는 기준은 저장 위치, 목적, 서버로의 전송 여부다. 1. 왜 필요한가: HTTP는 무상태(stateless)다…
HTTPS 는 HTTP에 TLS 암호화 계층을 더한 것이다. 통신 내용을 암호화 하고, 상대 서버가 진짜인지 인증 하고, 중간에 내용이 바뀌지 않았는지 무결성 을 보장한다. 1. 한눈에 비교 구분 HTTP HTTPS…
인덱스는 특정 컬럼 값을 정렬해 둔 별도의 자료구조 로, 책의 색인처럼 원하는 데이터의 위치를 빠르게 찾게 해준다. 조회는 빨라지지만 저장 공간과 쓰기 성능을 대가로 낸다. 1. 인덱스가 없으면 WHERE email…
JOIN 은 여러 테이블의 행을 조건에 맞춰 옆으로 붙이는 것이고, GROUP BY 는 행들을 같은 값끼리 묶어 하나의 요약 행으로 줄이는 것이다. JOIN은 행을 늘리거나 유지하고, GROUP BY는 행을 줄인다.…
메모이제이션은 "이전 결과를 기억해 두고, 입력이 같으면 다시 계산하지 않는 것"이다. React의 최적화 훅은 계산을 아끼거나(useMemo) , 참조를 유지하거나(useCallback) , 렌더링을 건너뛰거나(m…
이펙트는 "렌더링 결과를 React 바깥 세계(DOM, 네트워크, 타이머)와 맞추는 코드"다. 종류마다 다른 건 실행 시점 하나이고, 그 시점이 화면 깜빡임과 성능을 결정한다. 1. 렌더링과 부수 효과(side ef…
생명주기는 컴포넌트가 생성(마운트) → 갱신(업데이트) → 제거(언마운트) 되는 과정이다. 클래스 컴포넌트는 단계마다 메서드를 두고, 함수형 컴포넌트는 Hook으로 같은 시점을 표현한다. 1. 세 단계 단계 언제 대…
SCSS 는 CSS를 더 편하게 쓰기 위한 전처리기(Sass)의 문법 이다. 브라우저는 SCSS를 이해하지 못하므로, 빌드할 때 일반 CSS로 컴파일 해서 배포한다. 1. 용어 정리 용어 설명 CSS 브라우저가 직접…
자바스크립트 엔진은 싱글 스레드 라 한 번에 하나의 코드만 실행한다. 이벤트 루프는 콜 스택이 비었을 때 대기 중인 작업을 정해진 순서로 꺼내 실행하는 장치로, 싱글 스레드로도 비동기 처리를 가능하게 한다. 1. 구…
트랜잭션은 더 이상 쪼갤 수 없는 작업 단위 다. 그 안의 작업은 전부 성공하거나(커밋) 전부 취소된다(롤백). 스프링의 @Transactional 은 이 경계를 프록시로 자동 처리한다. 1. 왜 필요한가 계좌 이체…
유닛 테스트는 가장 작은 단위(보통 클래스·메서드 하나)를 외부 의존성과 분리해서 의도대로 동작하는지 자동으로 확인하는 테스트다. 빠르고 실패 원인이 명확한 게 핵심이다. 1. 테스트를 쓰는 이유 회귀 방지 : 기능…
REST 는 자원(Resource)을 URI로 표현하고, 그 자원에 대한 행위를 HTTP 메서드 로, 결과를 상태 코드 로 표현하는 아키텍처 스타일이다. 이 원칙을 따르는 API를 RESTful API라고 부른다.…
패턴 목록을 자동으로 늘리고, 그중에서 '다양하게' 고르는 문제를 두 단계로 나눠 정리한다. 예시는 4키 리듬게임의 레인 패턴이다. 0~3은 레인, 패턴은 반복해서 도는 레인 배열이다(계단 = [0, 1, 2, 3]…
센서 값, 사용자 입력, 응답 시간처럼 계속 들어오는 측정값을 보고 어떤 값을 조금씩 맞춰 가야 할 때가 있다(리듬게임 자동 싱크가 그 예). 이때 필요한 건 두 가지다. 대표값을 잡음에 휘둘리지 않게 구하는 것,…
N×N 배열의 A[i][j] = i×j 값을 일렬로 정렬했을 때 K번째 수를 구하는 문제. N이 최대 10 5 라 배열을 만들 수 없다. 질문을 뒤집기 "K번째 수는 무엇인가?" 대신 " x 이하인 수는 몇 개인가?…
N개 도시를 모두 한 번씩 방문하고 출발점으로 돌아오는 최소 비용을 구하는 문제다. N ≤ 16이라 모든 순열(16!)은 불가능하지만, 방문한 도시 집합 을 비트로 표현하면 상태 수를 크게 줄일 수 있다. 상태 정의…
CI 는 코드 변경을 자주 합치고 그때마다 자동으로 빌드·테스트해 문제를 빨리 찾는 것이고, CD 는 검증된 코드를 언제든(또는 자동으로) 배포할 수 있게 만드는 것이다. 핵심은 사람이 손으로 하던 반복 작업을 같은…
프로세스 는 실행 중인 프로그램으로 운영체제로부터 독립된 메모리를 할당받는 단위이고, 스레드 는 프로세스 안에서 실행 흐름을 나누는 단위로 같은 프로세스의 메모리를 공유한다. 1. 프로그램, 프로세스, 스레드 용어…