CS 7

역정규화(Denormalization)

데이터베이스 설계에서 역정규화의 개념을 정리한 글입니다. 역정규화(Denormalization)데이터베이스 설계에서 정규화를 통해 분리된 테이블들을 일부러 다시 결합하거나 중복을 허용하는 방식으로 정규화를 깨는 과정 필요성정규화된 데이터베이스는 데이터의 중복을 줄이고 무결성을 유지하는 데 유리하지만, 지나치게 분리된 테이블 구조는 과도한 조인 연산이 필요해서 다음과 같은 문제점이 있을 수 있다.성능이 떨어진다조인 연산이 많아질수록 데이터 조회 속도가 느려지고, 시스템 부하도 커짐비즈니스 로직이 복잡해진다필요한 데이터를 가져오기 위한 쿼리나 애플리케이션 코드가 복잡해질 수 있어 개발과 유지보수가 어려워질 수 있다.실시간 응답 요구에 대해 응답이 느릴 수 있다대시보드, 리포트, API 응답 등의 빠른 처리 ..

CS 2025.04.13

SQL: DDL과 DML

SQL의 DDL과 DML에 대해 정리한 글입니다.DDL(Data Definition Language)데이터베이스의 구조를 정의하거나 변경할 때 사용하는 SQL의 한 종류 특징데이터베이스 객체의 형태나 구조를 정의대부분의 DDL 문은 실행 즉시 자동 커밋되어 되돌릴 수 없음스키마 설계 및 변경 시 필수적으로 사용주요 명령어CREATE: 데이터베이스 객체(테이블, 뷰, 인덱스 등)를 새로 생성할 때 사용ALTER: 기존의 데이터베이스 객체를 수정할 때 사용DROP: 데이터베이스 객체를 삭제할 때 사용TRUNCATE: 테이블의 모든 데이터를 삭제, 테이블 구조는 유지 DML(Data Manipulation Language)데이터베이스에 저장된 실제 데이터를 조회, 추가, 수정, 삭제하는 데 사용하는 SQL의 ..

CS 2025.04.13

웹 서버(Web Server)와 WAS(Web Application Server)

웹 서버(Web Server)와 WAS(Web Application Server)에 대해 간단히 정리한 글입니다. 웹 서버(Web Server)웹 서버는 정적인 컨텐츠를 사용자에게 보여주는 역할을 합니다.우리가 브라우저에 www.naver.com을 입력하면, 웹 서버는 HTML, CSS, 이미지 같은 정적인 파일을 찾아서 사용자에게 전달합니다. 더보기정적 컨텐츠: 누가 요청하든 변하지 않는 콘텐츠 (모든 사용자에게 동일한 내용)더보기동적 컨텐츠: 사용자에 따라 요청할 때마다 내용이 바뀌는 콘텐츠 (개인정보 페이지, 검색 결과 등)대표적인 웹 서버Apache HTTP Server: 전통적인 웹 서버, 다양한 운영체제에서 사용 가능Nginx: 빠르고 가벼워서 요즘 가장 인기 많은 웹 서버 WAS(Web Ap..

CS 2025.03.23

Framework와 Library의 차이점

Framework와 Library를 제어 흐름의 주체와 사용 방식을 중심으로 차이점을 정리한 글입니다. 제어 흐름의 주체 관점Framework는 어플리케이션의 제어 흐름을 자체적으로 관리합니다. 프로그램의 흐름은 개발자가 아닌 Framework에 있습니다. 이를 제어의 역전이라고 합니다.Library는 특정 기능을 제공하는 모듈이기에 개발자가 필요할 때 직접 호출하여 사용합니다. 따라서 프로그램 흐름은 개발자가 제어합니다.사용방식의 관점Framework의 경우 개발자가 Framework의 구조와 규칙을 따라야합니다. 개발자는 Framework가 제공하는 기능을 확장하여 개발합니다.Library의 경우 개발자가 원하는 기능을 선택적으로 가져와서 사용합니다.예시Framework: Spring Framewor..

CS 2025.03.16

Java HashSet의 내부 동작 방식과 중복 제거 메커니즘

Java HashSet의 내부 동작 방식과 중복 제거 메커니즘을 정리한 글입니다. HashSetHashSet은 Java의 java.util 패키지에 속하는 컬렉션 클래스입니다.요소 중복을 허용하지 않으며 순서를 보장하지 않습니다. HashSet의 내부 구조내부적으로 HashMap을 사용하여 요소를 저장합니다.private transient HashMap map;// Dummy value to associate with an Object in the backing Mapprivate static final Object PRESENT = new Object();map은 HashMap 타입으로 선언되어 있으며, HashSet에 추가된 요소가 key로 저장됩니다.PRESENT는 value 역할을 하는 더미 객체..

CS 2025.03.09

Stream API: map vs flatMap

Stream API의 map과 flatMap을 비교하고 정리한 글입니다. Stream API의 map과 flatMap 차이점map: 스트림의 각 요소를 특정 연산을 거쳐 변환한 후 새로운 스트림을 반환합니다. 각 요소가 변환되지만, 결과적으로 스트림의 구조는 변하지 않습니다.flatMap: 각 요소를 스트림으로 변환한 후, 모든 결과 스트림을 하나의 스트림으로 평탄화(flatten)하여 반환합니다. 즉, 중첩된 스트림 구조를 제거합니다.map 사용 예시import java.util.List;public class MapExample { public static void main(String[] args) { List names = List.of("Alice", "Bob", "Charli..

CS 2025.03.03

SOLID 원칙

SOLID 원칙 개요SRP(Single Responsibility Principle) - 단일 책임 원칙OCP(Open-Closed Principle) - 개방-폐쇄 원칙LSP(Liskov Substitution Principle) - 리스코프 치환 원칙ISP(Interface Segregation Principle) - 인터페이스 분리 원칙DIPDIP (Dependency Inversion Principle) - 의존성 역전 원칙SRP (단일 책임 원칙)"클래스는 하나의 책임만 가져야 한다."한 클래스가 하나의 이유로만 변경되어야 합니다. 여러 개의 책임을 하나의 클래스에서 맡게 된다면 Coupling이 증가하면서 유지보수성이 떨어지는 등 여러가지 문제가 발생할 수 있기 때문입니다. 예제class St..

CS 2025.03.03