전체 글53 [CS] Singleton Pattern 정의객체를 생성하는 디자인 패턴 중 하나로, 특정 클래스에 대해 오직 하나의 인스턴스만 생성되고, 이를 전역에서 접근할 수 있도록 보장한다.핵심 원칙유일한 인스턴스 보장: 싱글톤 클래스는 애플리케이션 실행 중 단 하나의 인스턴스만 생성된다.지연 초기화: 필요할 때까지 인스턴스를 생성하지 않는다.글로벌 접근성: 생성된 싱글톤 인스턴스는 애플리케이션 어디서든 접근할 수 있다.장점하나의 인스턴스만 사용하기 때문에 메모리와 시스템 자원을 절약한다.애플리케이션 전역에서 공통된 데이터나 설정을 관리할 수 있다.인스턴스 생성과 접근 방식을 제한하여, 일관된 동작을 유지한다.단점여러 클래스에서 싱글톤 인스턴스를 참조하면, 결합도가 높아질 수 있다.전역 상태를 가지기 때문에 테스트가 어렵다. 2025. 1. 21. [CS] Cookie / Session 쿠키와 세션을 사용하는 이유쿠키와 세션은 HTTP의 아래와 같은 특성 때문에 사용한다.connectionlessHTTP는 클라이언트가 요청을 서버에 보내면, 서버는 클라이언트에 response를 보내고 접속을 끊는다.statelessHTTP는 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며, 상태 정보를 유지하지 않는다.쿠키정의클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 데이터 파일유효기간을 명시할 수 있으며, 유효기간이 남아있다면 브라우저가 종료되어도 인증이 유지된다.브라우저가 요청 시에 Request Header를 넣어서 자동으로 서버에 전송한다.구성 요소이름: 각 쿠키를 구별하는 데 사용값: 쿠키의 이름과 관련된 값유효기간: 쿠키의 유지 시간도메인: 쿠키를 전송할 도메인경로: 쿠키를.. 2025. 1. 21. [CS] TCP 3-way handshake 정의TCP/IP 네트워크에서 안정적이고 연결 지향적인 통신을 설정하기 위해 사용되는 절차.클라이언트와 서버 간 신뢰할 수 있는 연결을 설정하기 위해 세 개의 세그먼트를 교환하는 과정과정클라이언트가 서버에 연결을 요청하는 SYN 세그먼트를 모낸다. 이 세그먼트에는 Sequence Number와 Window Size 정보가 포함되어 있다.서버는 클라이언트의 요충을 수락하고, SYN과 ACK 플래그가 설정된 세그먼트를 클라이언트에 보낸다. 이 세그먼트는 서버의 초기 순번과 클라이언트의 초기 순번에 대한 응답(ACK = 클라이언트의 초기 순번 + 1)을 포함한다.클라이언트는 서버의 응답을 확인하고, ACK 플래그가 설정된 세그먼트를 서버에 보낸다. 이 세그먼트는 서버의 순번에 대한 응답(ACK = 서버의 초기 .. 2025. 1. 21. [CS] Synchronous / Asynchronous Synchronous (동기)정의작업을 순차적으로 진행하는 것한 작업이 시작되면, 그 작업이 끝날 때 까지 다른 작업은 대기해야 한다.특징간단하고 직관적인 코드 설계여러 작업이 동시에 실행되어야 할 때, 대기 시간으로 인한 전체 프로세스 성능 저하작업 지연 시, 다른 작업들 또한 지연된다.작업 간 의존성이 높은 경우 사용 Asynchronous (비동기)정의작업이 독립적으로 실행되는 것작업의 완료 여부에 상관 없이, 다른 작업의 실행이 가능하다.특징I/O 작업, 네트워크 요청 등 시간이 오래 걸리는 작업에 사용callBack, Promise, async/await 등의 메커니즘으로 구현동기 vs. 블로킹(Blocking)동기 호출에서는 호출된 함수가 작업을 완료할 때 까지 호출한 함수가 기다린다.⇒ 순차.. 2025. 1. 21. [CS] DTO Data Transfer Object계층 간 데이터 전송을 위해 도메인 모델 대신 사용되는 객체단순성복잡한 데이터 구조를 단순화하여 직렬화(Serialization)와 역직렬화(Deserialization)가 쉬워지게 한다.불필요한 데이터 제거DTO는 필요한 필드만 포함하며, 불필요한 데이터를 제거하여 성능을 향상시킬 수 있다.재사용성하나의 DTO 클래스를 통해 여러 시스템 간 데이터 전달이 가능하며, 유지보수가 용이하다.캡슐화도메인 모델을 계층 간 전송에 직접 활용하지 않으므로, 도메인 모델을 캡슐화하여 보호할 수 있다.결합도 감소도메인 모델을 계층 간 전송에 사용하면, 모델과 뷰의 결합도가 올라갈 수 있다. 이 때 DTO를 사용하여 계층 간 결합도를 느슨하게 만든다. 2025. 1. 20. [CS] Primary Key / Foreign Key Primary Key [주 키]각 테이블에서 각 레코드를 고유하게 식별하는 필드.유일성: 주 키 값은 테이블 내에서 유일해야 한다. (중복 X)Not NULL: 주 키 필드는 NULL값을 가질 수 없다.주 키는 필수적으로 정의되어야 한다.Foreign Key [외래 키]다른 테이블의 주 키를 참조하는 필드.외래 키는 두 테이블 간의 관계를 정의하며, 주로 데이터 일치를 유지하거나 참조 무결성을 보장하는 데 사용된다.참조 무결성: 외래 키는 참조하는 테이블의 주 키와 일치해야 한다.유일성 X: 외래 키는 중복될 수 있으며, NULL값을 가질 수도 있다.Conclusion특징Primary KeyForeign Key유일성반드시 유일중복 가능NULL값가질 수 없음가질 수 있음참조 관계데이터의 고유 식별자다른 테.. 2025. 1. 20. [CS] IoC / DI (제어 역전과 의존성 주입) Inversion of Control [제어 역전]제어의 역전제어 흐름을 애플리케이션의 외부 요소에게 위임하는 패턴객체의 생성과 관리, 제공의 주체가 프로그래머가 아닌 컨테이너(프레임워크)가 되는 것IoC를 통해 코드의 결합도를 낮추고, 테스트와 유지보수가 더 용이해진다.Dependency Injection [의존성 주입]IoC의 주요 기법 중 하나객체가 필요로 하는 의존성을 외부에서 주입받아 사용하는 패턴특정 서비스나 객체가 필요할 때 생성하는 것이 아니라, 외부에서 제공되는 객체를 전달받아 사용하는 방식의존성 주입 방법- Constructor 주입클래스의 생성자 메서드를 통해 의존성을 주입하는 방식의존성은 주입받는 생성자 매개변수를 통해 전달된다.@Injectable() 데코레이터를 사용하여 의존성이.. 2025. 1. 20. [CS] MVC Pattern Model - View - Controller Pattern애플리케이션의 구성 요소를 세 가지 역할로 분리하여 코드의 유지보수성과 확장성을 높이는 데 사용하는 아키텍처 패턴구성 요소Model데이터와 비즈니스 로직을 처리하는 부분DB, 상태 관리, 응용 프로그램의 핵심 로직을 포함한다.View나 Controller와는 독립적으로 동작하며, 데이터의 변경 사항을 View에 알려준다.e.g. DB에서 영화 정보를 가져오는 클래스ViewUI를 담당화면에 데이터를 출력하고, 사용자의 입력을 처리하기 위한 시각적 요소를 포함한다.Model에서 데이터를 가져와 화면에 출력하고, Controller와 협력하여 사용자 입력을 처리한다.e.g. HTML, JSP, XML layout file 등Controller사용자의 .. 2025. 1. 20. [CS] Overriding / Overloading Overriding부모 클래스의 메서드를 자식 클래스에서 재정의하는 방식메서드 이름, 매개변수, 리턴 타입이 부모 메서드와 동일해야 한다.@Override 어노테이션을 이용해 오버라이딩 여부를 명확히 표시 가능런타임에 호출될 메서드가 결정된다.오버라이딩을 통해 다형성을 구현할 수 있다.class Parent { public void display() { System.out.println("Parent Mehtod"); }}class Child extends Parent { @Override public void display() { System.out.println("Child Method"); }}Overloading같은 이름의 메서드를 여러 개 정의하는 방식같은 이름의 .. 2025. 1. 20. 이전 1 2 3 4 5 6 다음