Redis - 1
·
Backend/DB
Redis (Remote Dictionary Serve) ?Redis란 Remote Dictionary Server의 약자로, 오픈 소스 인메모리 데이터 저장소이다.주로 캐시, 메시지 브로커, 세션 저장소, 실시간 데이터 처리 등에 사용 됨Remote: 원격 서버 / Dictionary: 해시 테이블, 자바에 비유하면 해시 맵`키 -값` 구조의 인메모리 데이터 베이스빠른 속도 덕에 캐시 시스템이나 실시간 애플리케이션에서 많이 사용데이터를 디스크에도 저장할 수 있어 영속성(persistence) 제공❓ 영속성 (Persistence)이 머더라데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성주요 특징 특징 설명 인메모리 저장소모든 데이터를 `메모리(RAM)`에 저장하여 매우 빠름..
최소 신장 트리 (Minimum Spanning Tree)
·
PS/알고리즘
최소 신장 트리란 그래프에서 모든 노드를 연결할 때 사용된 간선들의 가중치 합을 최소로 하는 트리임📌 최소 신장 트리 특징사이클이 포함되면 가중치의 합이 최소가 될 수 없으므로 사이클을 포함하지 않음`N개`의 노드가 있으면 MST를 구성하는 간선의 개수는 항상 `N-1개`핵심 이론1. 간선 리스트로 그래프를 구현하고 유니온 파인드 배열 초기화MST는 데이터를 노드가 아닌 간선 중심(≒ 벨만 포드)으로 저장하므로 인접리스트가 아닌 간선 리스트의 형태로 저장edge class는 일반적으로 노드 변수 2개와 가중치 변수로 구성사이클 처리를 위한 유니온 파인드 배열도 선언 및 인덱스를 해당 자리의 값으로 초기화2. 그래프 데이터를 가중치 기준으로 정렬간선 리스트에 담긴 그래프를 데이터를 가중치 기준으로 오름..
벨만-포드 (Bellman-Ford-moore)
·
PS/알고리즘
벨만 포드 알고리즘은 그래프에서 최단 거리를 구하는 알고리즘으로, 주요 특징은 다음과 같음기능특징시간 복잡도(노드: V, 에지: E)특정 출발 노드에서 다른 모든 노드까지의 최단 경로- 음수 가중치 간선이 있어도 수행- 음수 사이클의 존재 여부 판단 가능O(VE)핵심 이론벨만 포드 알고리즘은 다음 3단계의 원리로 동작1. 에지 리스트로 그래프 표현 및 최단 경로 배열 초기화벨만 포드 알고리즘은 간선을 중심으로 동작하므로 그래프를 간선 리스트로 구현또한 최단 경로 배열은 출발 노드는 0, 나머지는 무한대로 초기화2. 모든 에지를 확인해 정답 배열 갱신최단 거리 배열에서 갱신 반복 횟수는 노드 개수 -1∵ 노드 개수가 N이고, 음수 사이클이 없을 때 특정 두 노드의 최단 거리를 구성할 수 있는 간선의 최대개..
FrontController
·
Dev Trivia
Front Controller 패턴 웹 애플리케이션의 진입점을 하나로 통합하여 공통된 처리 로직을 중앙 집중화 하는 디자인 패턴주로 MVC 아키텍처에서 사용되며, 요청을 하나의 컨트롤러 (Front Controller)에서 받아 적절한 처리기로 위임하는 방식핵심 개념Front Controller는 모든 요청을 하나의 진입점에서 받아 처리인증, 인가, 로깅, 에러 처리, 로케일 설정 같은 공통 기능을 이 중앙 컨트롤러에서 처리함이후 실제 요청에 맞는 컨트롤러로 분기(Dispatch)Client ──> FrontController ──> Dispatcher ──> Controller ──> View 구성 요소설명Front Controller모든 요청을 받는 중앙 서블릿 (또는 핸들러)DispatcherURI..
플로이드-워셜 (Floyd-warshall)
·
PS/알고리즘
플로이드-워셜 알고리즘은 그래프에서 최단 거리를 구하는 알고리즘임기능특징시간복잡도 (노드 수:V)모든 노드 간에 최단 경로 탐색음수 가중치가 있어도 수행 가능DP의 원리를 이용해 알고리즘에 접근O(V³)핵심 이론플로이드 워셜 알고리즘을 도출하는 가장 핵심적인 원리는 A노드에서 B노드까지 최단 경로를 구했다고 가정. 최단 경로 위에 k노드가 존재한다면, 그것을 이루는 부분 경로 역시 최단 경로라는 것.색칠된 경로가 `1→5`의 최단 경로라면, `1→4` 최단 경로와 `4→5` 최단 경로 역시 색칠된 경로로 이루어질 수 밖에 없음즉, 전체 경로의 최단 경로는 부분 경로의 최단 경로 조합으로 이루어진다는 의미이므로다음과 같은 점화식을 도출 가능 함.📌 도출한 플로이드 워셜 점화식D[S][E] = Math.m..
MVC, 포워딩과 리다이렉트
·
Backend/JAVA
MVC 패턴`Model`, `View`, `Controller`의 약자로, 웹 애플리케이션을 모델, 뷰, 컨트롤러로 나누어 개발하는 디자인 패턴👉 SOLID 원칙 중 단일 책임 원칙을 지킴MVC 패턴은 다시 Model1과 Model2 아키텍처로 나뉨Model2 는 Model1의 문제점을 해결하기 위해 등장Model1 아키텍처1. 모델 (Model)일반적으로 모델을 Service 클래스와 DAO 클래스로 구성`DAO`는 DB연동을 담당하는 클래스이며, `Service` 클래스는 DAO를 이용하여 비즈니스로직을 처리하는 클래스임즉, Service 클래스에서 DAO를 처리2. 뷰 (View)화면 정보에 해당하는 뷰는 일반적으로 HTML이나 CSS이용하여 구성MVC 아키텍처에서 가장 중요한 요소가 바로 JS..
트랜잭션 (Transaction)
·
Backend/DB
트랜잭션이란?트랜잭션은 데이터베이스에서 하나의 작업 단위를 의미일련의 SQL 문장이 모두 성공해야만 반영되고, 중간에 하나라도 실패하면 전체가 취소(rollback) 되는 구조📌 은행 계좌 이체 예시1. A → B 계좌로 돈 이체 2. A 계좌에서 출금, B 계좌에 입금 👉중간에 B 계좌 입금 실패 시 → A 계좌 출금도 되돌려야 함트랜잭션의 특징 (ACID)원자성(Atomicity)트랜잭션은 전체가 수행되거나, 전혀 수행되지 않거나중간 실패 시 rollback 가능일관성(Consistency)트랜잭션이 완료되면 DB는 항상 일관된 상태로 유지예: 잔액 총합은 항상 동일격리성(Isolation)여러 트랜잭션이 동시에 실행되더라도 서로 간섭하지 않음지속성(Durability)트랜잭션이 성공적으로 끝나면..
DB 정규화, 역정규화, 이상현상
·
Backend/DB
정규화RDB에서 중복을 제거하고, 데이터 구조를 논리적으로 분해하여 삽입, 삭제, 갱신 이상을 방지하고일관성 있는 구조를 만드는 과정제 1정규형 (1NF: First Normal Form)모든 컬럼은 원자값만 가져야 함👉 한 셀에는 하나의 값만 있어야 한다.수강 과목이 여러 값을 가짐 = `비정규형`정규화 후제 2정규형 (2NF: Second Normal Form)1NF 만족`부분 함수 종속 제거` 👉 기본 키가 복합키일 경우, 일부 키에만 의존하는 속성 제거기본 키 (학번, 수강 과목) → 하나의 학생이 여러 과목 수강성적은 기본키 전체에 종속 됨 = OK이름은 학번으로만 결정됨 = 부분 종속! (2NF 위반)제 3정규형 (Third Normal Form)2NF 만족이행적 함수 종속 제거 👉 A ..