본문 바로가기

전체 글55

객체 모델과 비동기 실행 1. 프로토타입 체인과 클래스1.1 프로토타입 체인프로토타입이란JavaScript의 모든 객체는 자신을 만들어준 부모 객체를 하나 갖는다. 이 부모 객체를 프로토타입(prototype) 이라고 부르며, 모든 객체 내부에는 부모를 가리키는 숨겨진 링크 [[Prototype]]이 존재한다. 이 링크는 __proto__ 또는 Object.getPrototypeOf(obj)로 접근할 수 있다. 만약 Person이라는 생성자 함수가 있다고 가정할 때, 이 Person의 프로토타입은 Person.prototype이다.하지만 각 프로토타입들은 부모가 있다. Person.prototype의 부모역할은 Object.prototype이고, 함수 객체의 프로토타입인 Function.prototype의 부모 역할도 Objec.. 2026. 5. 25.
변수와 함수의 동작 원리 1. 값 vs 참조, 원시 타입 vs 객체1.1 원시 타입변경 불가능한 값JavaScript의 원시 타입: string, number, boolean, null, undefined, symbol, bigint.핵심 성질: immutable (불변)원시값은 읽기전용 값이며, 변경할 수 없다. 그로 인해 데이터의 신뢰성이 보장된다. 원시값 재할당 시, 새로운 메모리 공간을 확보함으로써 메모리 주소가 바뀌고 재할당한 원시 값을 저장한다.문자열과 불변성문자열 변수를 선언하고 값을 할당한 뒤에 값을 다른 문자열로 재할당하면 메모리상에는 재할당한 값과 이전 값이 모두 존재한다. 고로 문자열은 메모리 상에서 변경이 되지 않고 새로 만들어져서 재할당되기 때문에 문자열이 변경되지 않는다. 다만, 문자열이 변경되지 않는 .. 2026. 5. 10.
SQLite 1. SQLite 제약점 - 동시성 제약 : 파일 기반 DB이기 때문에 쓰기 작업 진행 시, 데이터베이스 전체를 잠근다.모드읽기쓰기기본여러 개 동시 가능전체 DB 잠금 (1개만)WAL 모드여러 개 동시 가능1개 (하지만 읽기와 공존 가능) · WAL 모드 : SQLite의 동시성을 개선하기 위한 저널링 방식더보기· WAL 모드의 원리 ① 쓰기 작업을 할 때, 원본 DB 파일을 건드리지 않고 변경 내용을 .db-wal 파일에 순차적으로 기록 ② 읽기 작업을 할때, 원본 DB + WAL에서 자기 트랜잭션의 시작 시점까지의 내용만 참조 ③ WAL이 일정크기가 되면 checkpoint로 원본 DB에 반영 · WAL 모드의 장점 : 기본 모드 사용 시, 어디선가 쓰기 작업이 진행 중이라면 읽기 .. 2026. 4. 19.
BATCH BATCH란?: 여러 개의 작업을 하나의 묶음으로 모아서 일괄 처리하는 패턴이다. § Batch의 기본 전제 · 동질적 작업 : 묶이는 작업들이 비슷한 유형이어야 한다. 예시) 묶이는 작업들이 모두 INSERT, 모두 파일 업로드 등 · 독립적이거나 순서가 상관 없음 : 작업 간에 의존성이 없거나 실행 순서가 결과에 영향을 주지 않아야 한다. · 시간적 여유 : 실시간 즉시 처리 작업이 아니여야한다. 혹은 작업들을 모으고 묶는데 드는 시간이 무시해도 될 만큼 짧아야 한다. § Batch가 필요한 이유 · 성능 증가 : 개별로 보내서 네트워크 요청 수가 늘어나 성능이 저하되는거 보다는 작업별로 묶어서 한 번의 작업으로 네트워크에 요청하는게 성능적으로 더 낫다. · 안전성 - 트랜잭션 원자성 : 여러 작업.. 2026. 4. 6.
JOIN JOIN이란?: 두 개 이상의 테이블을 공통 칼럼을 기준으로 서로 연결하여, 하나의 결과 집합으로 합치는 SQL 연산이다. § 기본 문법SELECT 조회할 컬럼들FROM 테이블AJOIN 테이블B ON 테이블A.키 = 테이블B.키WHERE 조건 - 예시 :테이블A 구조 : 학번, 이름학번이름001김철수002홍길동003테사다 테이블B 구조 : 학번, 과목, 점수학번과목점수001수학90001영어85002수학95999과학70 목적 : 하나의 쿼리로 이름(테이블A), 과목(테이블B), 점수(테이블B)를 조회하려고 한다.SELECT s.이름, r.과목, r.점수FROM 테이블A sJOIN 테이블B r ON s.학번 = r.학번WHERE s.이름 = '김철수'결과 :이름과목점수김철수수학90김철수영어85 다만, 기본적.. 2026. 4. 6.
N+1 N+1이란?: 1개의 쿼리 실행 후, 해당 쿼리 결과와 연관된 데이터를 조회하기 위해서 실행되는 N개의 추가 쿼리들로 인하여 쿼리가 의도치않게 과다하게 실행되는 문제. - 예시 · N+1 방식 ① 3학년 7반 학생 명단 주세요. ② (명단 리스트 중에서) 김철수가 빌린 책은요? + 홍길동이 빌린 책은요? + ... = 학생 수(N명) 만큼의 쿼리가 더 늘어나게 됨. · 효율적인 방식 : 3학년 7반 학생들의 도서 대출 기록을 학생별로 정리해서 한 번에 전달해주세요. N+1을 해결하기 위한 핵심 : 기존의 방식은 '각자 물어보기' 였지만 에서 '한 번에 물어보고 DB가 정리해서 알려주기' 로 서로 오가는 프로세스를 축약하는 것이다. 특히 현재 진행하고 있는 프로젝트에서 N+1 문제가 중요한 이유는 .. 2026. 4. 5.
반응형