채야미의 코드레시피🍳

STUDY

STUDY/Design Pattern
1. Observer Pattern?정의한 객체(Subject)의 상태가 바뀌면, 그 객체에 의존하는 여러 옵저버(Observers)들이 자동으로 알림을 받고 갱신되는 구조즉, 1 → N(일대다) 의존성을 정의하는 패턴흔히 Pub/Sub(발행/구독) 모델이라고도 부른다.효과상태 변화를 자동 전파느슨한 결합(Loose Coupling) 확보새로운 옵저버를 쉽게 추가/삭제할 수 있어 OCP(Open/Closed 원칙) 만족뉴스나 유튜브 같은 것!유튜버(Subject) ↔ 구독자(Observers)유튜버가 영상 업로드 → 여러명의 구독자에게 영상 업로드 알림구독자들은 -해당 채널을 구독함으로써 채널에 어떠한 변화(영상을 올리는 등)가 생기게 되면 바로 연락을 받아 탐지반면 구독 안 한 시청자에게는 알림이 가지..
STUDY/Design Pattern
1. 디자인 패턴이란?정의: 반복 출현하는 설계 문제를 문제-맥락-해법 템플릿으로 정리한 이름 있는 해결책Someone has already solved your problems.→ "누군가 당신의 문제를 이미 해결했다": 디자인 패턴은 정해지거나 만들어진 프레임워크 또는 모듈 같은 기능이 아닌, 선배 개발자들이 경험하며 쌓아 온 노하우라는 것.패턴 ≠ 코드 스니펫→ 설계 수준의 역할·책임·협력에 대한 약속(의도·트레이드오프 포함)효과팀의 공유 언어팀원간의 의사소통이 편리해진다. 또한 통일성을 줄 수 있음. e.g.) “여긴 Strategy 패턴을 사용하자” 한마디로 의도와 구조가 모두 전달됨.재사용 가능한 구조 습득, 설계 품질(확장성/유지보수성/가독성) 상승리뷰·온보딩 속도 ↑, 설계 토론 비용 ↓경..
STUDY/Spring
기본 개념Spring Web MVC 패턴Spring Web MVC는 Model-View-Controller(MVC) 패턴을 기반으로 한다.Model: 애플리케이션의 데이터와 비즈니스 로직 담당View: 사용자 인터페이스 담당. (JSP, Thymeleaf 등의 템플릿 엔진)Controller: 사용자 요청을 처리, 모델-뷰 연결 -> Dispatcher Servlet이 컨트롤러 호출Dispatcher Servlet이 때 Dispatcher Servlet은 Spring Web MVC 프레임워크의 핵심 구성 요소로서, 클라이언트의 모든 요청을 받아 적절한 컨트롤러(핸들러)를 찾아 전달하는 역할을 한다.이렇게 컨트롤러 구현을 단순화할 수 있으며, 비즈니스 로직에 집중하고  HTTP 요청 및 응답 처리 등에 대..
STUDY/Spring
ORM이란?ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어(OOP 언어, Java/C#등)와 관계형 데이터베이스 간의 데이터 변환을 자동으로 처리하는 기술ORM을 사용하면 SQL 쿼리 대신 직관적인 코드로 데이터를 조작할 수 있다.ORM은 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 객체 모델과 관계형 데이터베이스 간의 불일치를 해결하고, 이를 통해 개발자는 데이터베이스를 간접적으로 조작할 수 있다.ORM의 장/단점장점생산성 향상: SQL 쿼리 작성을 자동화해 개발 시간을 단축시킬 수 있다.유지보수성 향상: 객체 지향적인 코드로 데이터베이스를 관리하므로 유지보수가 용이하다.데이터베이스 독립성: 데이터베이스 종류에 상관없이 동일한 코드로 작동객체 지향적 접근:..
STUDY/Spring
QueryDSL?QueryDSL은 데이터베이스 쿼리를 생성하기 위한 자바 라이브러리로, JPQL(Java Persistence Query Language)을 보다 유연하게 사용할 수 있도록 도와준다.주로 JPA(Java Persistence API)와 함께 사용되며, 런타임 시점에 유효성 검사가 가능하며, IDE의 자동완성 기능을 지원하여 쿼리 작성 시 오타 등을 방지하는 등의 장점이 있다.기능 및 장점타입 안정성(Type Safety)Java 코드로 쿼리 작성 -> 컴파일 시점에서 타입 안정성 제공오타나 잘못된 속성명을 사용할 경우 컴파일 오류로 잡아낼 수 있어 개발 단계에 도움을 줄 수 있다.Entity 클래스와 QueryDSL의 연동엔티티 클래스를 기반으로 쿼리 작성 가능-> 데이터베이스 테이블과 ..
STUDY/Spring
Spring Data JPA 는 Spring 프레임워크에서 JPA를 더욱 쉽게 사용할 수 있도록 지원하는 모듈이다.이전 JPA/Hibernate에 대해 알아볼 때, EntityManager를 주입받아 사용했다.그러나 Spring Data JPA는 Repository 인터페이스를 통해 JPA를 추상화한다. 즉, Repository 인터페이스를 정의하면 이를 구현해 사용할 때 Spring Data JPA가 자동으로 JPA의 구현체를 생성한다는 거다.그래서 JPA 구현체(Hibernate등)을 따로 사용할 필요가 없다.주요 특징/장점Repository 인터페이스 제공 : 기본적인 CRUD 작업 쉽게 구현 -> 생산성 향상쿼리 메서드 기능메서드 이름 규칙을 따르면 별도의 쿼리 작성 없이도 필요한 쿼리를 자동으로..
STUDY/Spring
JPA(Java Persistent API)JPA(Java Persistence API) : ORM 기술의 표준 인터페이스ORM은 객체와 관계형 데이터베이스를 매핑해 주는 기술이며, JPA는 이를 표준화한 것이다.그러니까, 자바 애플리케이션에서 관계형 데이터베이스를 사용할 때 이를 객체와 매핑해 주며 사용하기 위한 인터페이스라는 것이다.따라서 사용하기 위해서는 구현체가 필요하고,  JPA를 구현한 대표적인 프레임워크로는 Hibernate, EclipseLink, DataNucleus 등이 있으며, 이 중 Hibernate가 가장 널리 사용된다. [OOP] ORM(Object-Relational Mapping)ORM이란?ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어(O..
STUDY/Spring
JDBC란?JDBC(Java Database Connectivity) : 애플리케이션에서 데이터베이스에 데이터를 저장하거나 업데이트, 접근할 수 있도록 도와주는 자바 API데이터베이스 연결, SQL문 실행, 쿼리 결과 처리 등을 위한 표준 인터페이스를 제공한다.등장 배경애플리케이션 개발 시 중요 데이터는 주로 데이터베이스에 저장된다. 클라이언트가 데이터를 저장하거나 조회할 때 과정은 간단히 다음과 같다.애플리케이션 서버는 TCP/IP를 통해 데이터베이스와 연결하고(커넥션 연결),연결된 커넥션으로 SQL을 전달하면 데이터베이스가 SQL 수행한 결과를 보내고, 애플리케이션에서 응답으로 받는다.하지만, 수십개에 달하는 각 관계형 데이터베이스마다 연결, SQL 전달, 결과 응답 방식이 다르므로, 데이터베이스 변..
STUDY/SQLD
식별자의 개념 식별자(Identifier) : 엔터티(Entity)의 각 인스턴스(Instance)를 개별적으로 식별하기 위해 사용 엔터티는 일종의 개념이며, 실제로 존재하는 것이 아니라 비슷한 특성을 가진 객체들의 집합이기 때문에 이런 객체들을 구별하기 위해서는 각 객체에 고유한 식별자가 필요하다. 식별자는 단순히 하나의 속성(Attribute)이 될 수도 있고, 여러 속성의 조합이 될 수도 있다. 식별자의 특징 유일성 주식별자에 의해 엔터티 내에 모든 인스턴스들이 유일하게 구분 최소성 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수 불변성 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함 존재성 주식별자가 지정되면 반드시 데이터 값이 존재 (Null X) 식별자..
STUDY/SQLD
관계의 정의 엔터티 간의 논리적인 관련성, 동사형 사전적으로 정의하면 상호 연관성이 있는 상태이다 “엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태 로서나 행위로서 서로에게 연관성이 부여된 상태” 라고 할 수 있다. 관계의 페어링 페어링 : 인스턴스가 개별적으로 관계를 가지는 것 관계 : 페어링의 집합을 관계로 표현 개별 인스턴스가 각각 다른 종류의 관계를 가지고 있다면 두 엔터티 사이에 두 개 이상의 관계가 형성될 수 있다. 관계 페어링(Relationship Paring) : 각 엔터티 인스턴스가 자신과 관련된 다른 엔터티 인스턴스와의 관계에 참여하는 것 * 인스턴스 각각은 자신의 연관성을 가지고 있을 수 있음 * 이것을 집합하여 “강의한다”라는 관계를 도출 관계의 분류 존재의 의한 관계 ..
STUDY/SQLD
속성의 개념 속성 : 엔터티가 가지는 최소 의미 단위, 인스턴스의 구성요소 업무에서 필요로 한다. 의미상 더 이상 분리되지 않는다. 엔터티를 설명하고 인스턴스의 구성요소가 된다 엔터티, 인스턴스, 속성, 속성값의 관계 한 개의 엔터티는 두 개 이상의 인스턴스의 집합 이어야 한다. 한 개의 엔터티는 두 개 이상의 속성을 갖는다. 한 개의 속성은 한 개의 속성값을 갖는다. 속성의 분류 특성에 따른 분류 기본속성(Basic Attribute) : 업무분석을 통해 바로 정의한 속성 설계속성(Designed Attribute) : 원래 업무상 존재하지는 않지만 설계하며 도출해내는 속성 파생속성(Derived Attribute) : 다른 속성으로부터 계산이나 변형되어 생성되는 속성 엔터티 구성방식에 따른 분류 PK..
STUDY/SQLD
엔터티의 개념 사람, 장소, 물건, 사건, 개념 등의 명사 업무상 관리가 필요한 관심사 저장이 되기 위한 어떤 것(Thing) 엔터티와 인스턴스 엔터티 특징 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다.(예. 환자, 토익의 응시횟수, …) 유일한 식별자에 의해 식별이 가능해야 한다. 영속적으로 존재하는 인스턴스의 집합 이어야 한다.(두 개 이상) 엔터티는 업무 프로세스에 의해 이용되어야 한다. 엔터티는 반드시 속성이 있어야 한다. 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다. 엔터티의 분류 유무형에 따른 분류 분류 예시 설명 유형 사원, 물품, 강사 물리적인 형태가 있고 안정적이며 지속적으로 활용되는 엔터티 업무로부터 엔터티를 구분하기가 가장 용이하다 개념 조직, 보험..
STUDY/SQLD
모델링 모델링의 정의 현실세계를 단순화시켜 표현하는 것 사물 또는 사건에 관한 양상(Aspect)이나 관점(Perspective)을 연관된 사람이나 그룹을 위하여 명확하게 하는 것 현실 세계의 추상화된 반영 특징 추상화 (모형화, 가설적) : 현실세계를 일정한 형식에 맞추어 표현한다. 단순화 : 복잡한 현실세계를 약속된 규약에 의해 제한된 표기법이나 언어로 표현 명확화 : 누구나 이해하기 쉽게 하기 위해 대상에 대한 애매모호함을 제거하고 정확하게 현상을 기술 모델링의 세 가지 관점 데이터 관점 :업무가 어떤 데이터와 관련이 있는지 또는 데이터간의 관계는 무엇인지 모델링하는 방법 프로세스 관점 : 업무가 실제하고 있는 일은 무엇인지 또는 무엇을 해야하는지 모델링하는 방법 상관 관점 : 업무가 처리하는 일의..
STUDY/네트워크
1. DHCP 프로토콜 정적 할당 vs 동적 할당 정적 할당 : IP 정보를 직접 설정하는 것 일반적으로 데이터 센터에서 사용 동적 할당 : 자동으로 설정하는 것 사무실 네트워크에서 사용 DHCP(Dynamic Host Configuration Protocol) 프로토콜 IP를 동적으로 할당하는 데 사용되는 프로토콜 IP 주소, 서브넷 마스크, 게이트웨이, DNS 정보를 자동으로 할당받을 수 있다. BOOTP DHCP는 BOOTP(Bootstrap Protocol)라는 프로토콜을 기반으로 한다. DHCP는 BOOTP와 유사하게 동작하지만 몇 가지 기능이 추가된 확장 프로토콜 BOOTP와 호환성이 있어 서로의 서비스 포트를 공유하고 정보를 수신할 수 있다. 2. DHCP 동작 방식 DHCP Discover..
STUDY/네트워크
DNS를 이용한 로드밸런싱은 동일한 레코드 이름에 다른 IP 주소를 할당함으로써 질의에 따른 응답 IP 주소를 분산시키는 방법하지만 DNS는 서비스의 상태를 체크하지 않음→ 문제가 발생한 서비스에 대한 질의에도 정상적인 응답이러한 문제를 해결하기 위해 등장한 것이 GSLB(Global Server Load Balancing)GSLB는 DNS의 기능인 도메인 질의 응답과 함께 서비스의 상태를 체크하는 역할이를 통해 정상적인 서비스만 사용자에게 연결만약 특정 서비스에 문제가 발생하면 GSLB는 그 서비스의 레코드를 잠시 사용하지 않으므로 사용자는 항상 정상적인 서비스에 접근할 수 있고, 이 때문에 GSLB는 '인텔리전스 DNS'라고도 불린다.이제부터 GSLB의 동작 방식, 분산 방식, 그리고 GSLB를 사용..
ChaeYami
'STUDY' 카테고리의 글 목록