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 ..
스키마 3계층
·
Backend/DB
데이터베이스를 사용자와 시스템 관점에서 나누어 설계하기 위해 ANSI/SPARC 모델에서 제안한 개념총 3가지 수준으로 나누어 DB 정의외부 스키마 개념 스키마내부 스키마이 구조는 데이터 독립성을 보장하는 핵심 메커니즘이다.외부 스키마 (External Schema)사용자 관점의 스키마각 사용자 또는 응용프로그램이 보는 부분적인 데이터 구조하나의 DB에 대해 여러 개 존재 가능 (사용자마다 다름)-- 실제 테이블에는 이름, 나이, 급여, 주소 등이 있지만-- 외부 사용자 1은 이름과 급여만 조회하도록 설계SELECT name, salary FROM employees;개념 스키마 (Conceptual Schema)DB 전체를 통합적으로 표현한 논리 구조모든 사용자와 응용 프로그램에 공통으로 보이는 구조관계..
RDB와 NoSQL 비교
·
Backend/DB
RDB (Relational Database)관계형 데이터베이스는 가장 많이 사용되고 있는 DB 중 하나로, 데이터를 테이블 형태로 표현하여 구조화각 테이블은 `행`과 `열`으로 이루어져 있으며, 테이블 간의 관계를 맺어서 데이터를 조직적으로 관리// MySQL-- Users 테이블+----+--------+----------------------+| ID | Name | Email |+----+--------+----------------------+| 1 | 철수 | chulsoo@gmail.com |-- Orders 테이블 (user_id 외래 키)+----+----------+-----------+| ID | user_id | Product |+---..
키 (Key), 인덱스 (Index)
·
Backend/DB
KEY 는 DB에서 레코드를 고유하게 식별하는 데 사용되는 속성 또는 속성들의 집합을 의미Key의 종류이름설명슈퍼 키 (Super Key)유일성을 만족하는 키, ex) 학번 + 이름, 주민번복합 키 (Composite Key) 2개 이상의 속성을 사용한 키후보 키 (Candidate Key) 유일성과 최소성을 만족하는 키, 기본키가 될 수 있는 후보이므로 후보 키라고 불림기본 키 (Primary Key) 후보 키에서 선택된 키, NULL값과 중복 허용 X대체 키 (Surrogate Key) 후보 키 중에서 기본 키로 선택되지 않은 키외래 키 (Foreign Key) 어떤 테이블 간의 기본 키를 참조하는 속성테이블 간의 관계를 나타내기 위해 사용예시) 학생 테이블 학생ID 이름이메일학번반번호1철수chuls..