본문 바로가기

Computer Science18

[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.
[CS] RDBMS / NoSQL RDBMS정의데이터를 테이블 형식으로 관리하는 데이터베이스 관리 시스템테이블은 Row(tuple), Column(attribute)으로 구성되어 있으며, 각 테이블 간 관계가 설정되어 데이터를 효율적으로 관리할 수 있다.SQL문을 통해 데이터의 CRUD(Create, Read, Update, Delete) 작업이 가능하다.Oracle DB, MySQL, PostgreSQL, MariaDB 등이 대표적인 RDBMS이다. 특징데이터 저장 구조데이터를 테이블 형태로 저장, 테이블은 행과 열로 구성된다.관계 설정각 테이블 간 외래키(Foreign Key)를 통해 관계를 설정하여 데이터의 무결성을 유지한다.데이터 무결성 보장데이터의 정확성과 일관성의 보장을 위해 Primary Key, Foreign Key, Un.. 2025. 1. 14.
[CS] Query String / Path Variable Query String“?” 기호 뒤에 key-value 쌍으로 데이터를 전달하는 방식주로 선택적인 파라미터나 필터링, 검색 조건을 전송할 때 사용한다.여러 개의 파라미터를 사용할 경우, &으로 연결한다.URL 형태https://example.com/products?page=2&category=foodpage가 2이고, 카테고리가 food인 상품을 필터링하여 응답 요청특징순서가 중요하지 않다.쿼리 파라미터는 필수 값이 아니기 때문에 선택적으로 사용 가능하다.RESTful 설계에서는 주로 필터링에 사용된다. Path VariableURL 경로의 일부로 사용되는 변수리소스를 특정하거나 고유 식별자(ID 등)를 지정할 때 주로 사용한다.주로 특정 리소스의 CRUD 작업에서 사용한다.URL 형태https://e.. 2025. 1. 13.
[CS] 서버 개발을 위한 기초 지식 Network여러 대의 컴퓨터 또는 장비가 서로 연결되어 정보를 주고 받을 수 있게 도와주는 기술클라이언트가 요청하면, 서버가 요청에 대한 응답을 수행한다. Client & Server사용자는 브라우저 등(Client)을 이용해 서버(Server)에 정보(Data)를 요청(Request)하고 응답(Response)를 받는다.서버 또한 클라이언트가 될 수 있다. (외부 서버에 API 요청하는 경우 등)요청이 서버에 도달하기 위해서는 IP 주소, 포트 번호가 필요하다. Web Server & Web Application ServerWeb Server클라이언트로부터 HTTP 요청을 받아 정적인 콘텐츠를 사용자에게 전달하는 역할Web Application Server게시물 조회나 정렬처럼 다양한 동적 로직을 수.. 2025. 1. 13.
[CS] 도메인 접속 시, Server-Client 간 흐름 사용자가 브라우저를 통해 URL 주소(e.g. www.naver.com)를 입력한다.브라우저가 로컬 DNS Cache에서 도메인에 대한 IP 주소를 검색한다.해당하는 IP 주소가 없는 경우, 브라우저는 DNS 서버에 IP 주소를 요청한다.IP 주소를 획득 후 TCP 연결을 수행한다. (3-way Handshake)브라우저가 서버에 HTTP(S) 요청을 전송한다.서버는 HTML, CSS, JS 등 리소스를 반환한다.브라우저는 리소스를 파싱 및 렌더링하여 콘텐츠를 출력한다.모든 데이터 수신이 완료되면 TCP 연결을 해제한다. (4-way Handshake) 2025. 1. 9.
[CS] 객체 지향 프로그래밍(OOP) 5원칙 1. Single Responsibility Principle [단일 책임 원칙]하나의 클래스는 하나의 기능(책임)만을 가져야 한다.클래스를 수정할 때는 그 이유가 하나여야 한다. (다른 코드에 영향을 미치기 때문) 2. Open-Closed Principle [개방 폐쇄 원칙]소프트웨어 요소는 확장에는 개방되어 있어야 하지만, 변경에는 폐쇄적이어야 한다.즉, 기존 코드를 변경하지 않고 기능을 수정하거나 추가할 수 있도록 설계해야 한다.인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현한다.기존 코드를 수정하게 된다면 재사용성, 유지보수성 등의 활용이 힘들어지기 때문이다. 3. Liskov Substitution Principle [리스코프 치환 원칙]하위 타입 객체는 상위 타입 객체에.. 2025. 1. 9.
[CS] 클래스와 인스턴스 클래스는 속성과 메서드를 정의한 구조이고, 동일한 형식의 객체를 만들기 위한 설계도이다.인스턴스는 클래스의 정의에 따라 실제로 생성된 객체로, 메모리에 할당된 상태이다.즉, 클래스는 객체를 만들기 위한 설계도이고, 인스턴스는 그 설계도를 따라 생성된 구체적인 실체이다. 예시 실행 결과 2025. 1. 9.