[알고리즘] 백트래킹(Backtracking)
·
CS/알고리즘
"답이 아닌 것 같으면 즉시 돌아가서 다른 길을 탐색하는 스마트한 완전 탐색" 백트래킹이란?백트래킹(Backtracking)은모든 경우를 시도하되,"이 경로는 답이 될 수 없다"라고 판단되면바로 중간에 포기하고 되돌아가는(Back) 알고리즘입니다.브루트포스(완전 탐색)를 더 효율적으로 개선한 형태라고 볼 수 있습니다.일단 가능한 선택을 따라 내려가면서 탐색합니다.중간에 잘못된 선택이라고 판단되면, 다시 이전 상태로 돌아갑니다.돌아가면서 다른 선택을 다시 탐색합니다.주요 키워드"선택(Choice)""탐색(Explore)""포기(Abandon)""되돌아가기(Backtrack)"백트래킹이 필요한 이유완전 탐색(Brute Force)은 단순하지만, 가능한 모든 경우를 끝까지 가보려 합니다.하지만 경우의 수가 너..
[데이터베이스] ERD (Entity-Relationship Diagram)
·
CS/데이터베이스
"데이터베이스 설계의 시작은 ERD다."ERD란 무엇인가?ERD(Entity-Relationship Diagram)는데이터베이스를 설계할 때, 데이터 간의 관계를 시각화하는 다이어그램입니다.Entity(엔티티): 독립적으로 존재할 수 있는 데이터 객체 (ex. 사용자, 주문)Relationship(관계): 엔티티 간의 연결 (ex. 사용자가 주문한다)Diagram(다이어그램): 이것을 그림으로 표현한 것쉽게 말하면,"데이터베이스에 어떤 테이블이 있고, 테이블 간에 어떤 관계가 있는지 그림으로 그린 것"입니다.ERD가 왜 필요한가?필요성설명데이터베이스 구조 설계테이블 구조를 논리적으로 설계팀원 간 소통개발자, 기획자, 디자이너 모두 이해할 수 있게시스템 확장성 고려미래에 데이터가 확장될 것을 고려해서 설계..
[데이터베이스] NoSQL
·
CS/데이터베이스
"NoSQL은 단순한 유행이 아니라, 필요한 상황에서는 필수 선택입니다."NoSQL이란 무엇인가?NoSQL은 "Not Only SQL"의 줄임말입니다.즉, "SQL만이 데이터 저장 방법은 아니다"라는 뜻입니다.정의전통적인 관계형 데이터베이스(RDBMS)가 아닌 대안을 의미합니다.일반적으로 테이블, 조인, 스키마가 강제되지 않습니다.대신에, 유연한 데이터 모델과 확장성을 제공합니다.탄생 배경웹 서비스 규모가 급격히 커지면서, 전통적인 RDBMS의 확장 한계(수직 확장)가 문제였습니다.대규모 트래픽, 비정형 데이터(예: JSON), 빠른 응답이 필요한 시대에 등장했습니다.NoSQL의 종류NoSQL은 하나로 뭉뚱그릴 수 없습니다.저장 방식에 따라 4가지로 분류됩니다.종류설명대표 기술Key-Value Store..
[Node.js] PM2
·
JavaScript/Node.js
"PM2 없이 Node.js를 운영환경에 띄우는 건, 칼 없이 요리하는 것과 같다."PM2란 무엇인가?PM2는 Node.js 애플리케이션을 프로덕션(운영 환경)에서효율적이고 안정적으로 실행/관리할 수 있게 도와주는 프로세스 매니저입니다.정의Process Manager for Node.js서버가 꺼지거나 에러가 발생해도 자동 재시작해줍니다.로드 밸런싱(클러스터링)을 통해 멀티코어 CPU를 활용할 수 있습니다.등장 배경Node.js는 서버가 하나의 프로세스이기 때문에에러가 터지면 서버 자체가 꺼지고,서버 재시작/관리도 수동으로 해야 했습니다.이런 문제를 해결하기 위해 탄생한 것이 바로 PM2입니다.PM2 설치 방법설치는 매우 간단합니다.npm install pm2 -g-g 옵션은 전역(Global) 설치를 ..
[데이터베이스] 정규화
·
CS/데이터베이스
“데이터 중복을 줄이고, 무결성을 지키는 가장 기본이자 중요한 설계 원칙” 데이터베이스를 설계할 때 정규화(Normalization)는성능 최적화보다도 먼저 고려해야 할 기초 중의 기초입니다.정규화를 제대로 이해하고 적용하면:중복 데이터가 사라지고삽입·갱신·삭제 이상(Anomaly) 위험이 줄며스키마가 명확해져 유지보수가 쉬워집니다.하지만 과도한 정규화는 JOIN 과다로 성능 저하를 불러오기도 하니,“언제, 어떻게” 적용할지 균형을 잘 맞추는 게 중요합니다.정규화란 무엇인가?정규화(Normalization)는관계형 데이터베이스 설계 이론 중 하나로,테이블을 일련의 정규형(Normal Form)을 만족하도록 분해하는 과정입니다.각 정규형은 테이블이 가져야 할 제약 조건을 하나씩 더 추가해 갑니다.제약을 충..
[Web] 브라우저 렌더링 과정
·
CS/Web
"HTML 코드 한 줄이 실제 화면에 보이기까지, 브라우저 안에서는 수많은 일들이 일어난다." 웹 개발을 하면서 가장 많이 다루지만, 가장 잘 모를 수 있는 영역이 바로 브라우저 렌더링입니다.렌더링 과정을 제대로 이해하면:레이아웃이 깨지는 이유느린 페이지의 원인효율적인 최적화 방법등을 깊이 이해하고 실전 코드 품질을 한층 끌어올릴 수 있습니다.브라우저 렌더링이란?브라우저 렌더링(Rendering)은,HTML, CSS, JavaScript 등의 리소스를 가져와서사용자가 볼 수 있는 화면(UI)으로 변환하는 전체 과정을 말합니다.간단히:코드 → 구조(구조화) → 스타일(디자인) → 위치(배치) → 픽셀(화면 표시)브라우저 렌더링 전체 흐름 요약1. HTML 파싱 → DOM 트리 생성2. CSS 파싱 → CS..
[운영체제] 프로세스와 스레드
·
CS/운영체제
"프로그램이 실행될 때, 내부에서는 어떤 일이 벌어질까?" 코드를 실행하면 프로그램이 "돌아간다"고 쉽게 표현하지만,사실 그 내부에는 프로세스와 스레드라는 구조가 정교하게 움직이고 있습니다.이 글에서는프로세스와 스레드의 개념차이점실제 컴퓨터에서 어떻게 사용되는지개발할 때 어떤 점을 신경 써야 하는지를 하나하나 차근차근 깊게 설명하겠습니다.프로세스(Process)란 무엇인가?프로세스(Process)는실행 중인 프로그램(program)을 의미합니다.하나의 프로그램이 메모리에 올라가서 운영체제(OS)로부터 독립된 자원(메모리, CPU 시간 등)을 할당받고, 실행되는 단위입니다.각 프로세스는 고유한 메모리 공간(코드, 데이터, 스택, 힙 등)을 갖습니다.예시:메모장에서 .txt 파일을 열면 하나의 프로세스가 생..