본문 바로가기

분류 전체보기71

[Web] HTTP(Hyper Text Transfer Protocol) HTTP 출처 HTTP(Hyper Text Transfer Protocol)은 웹에서 데이터를 전송하기 위한 프로토콜 중 하나로 클라이언트와 서버 간의 통신을 위해 사용합니다. HTTP는 TCP/IP 프로토콜 위에서 동작하며 요청과 응답으로 구성됩니다(HTTP/3은 UDP 기반). 클라이언트가 웹 사이트의 URL에 액세스하거나 입력하면 브라우저는 웹에서 HTTP 요청을 생성하고 URL에 표시된 IP 주소로 보냅니다. 서버는 이 요청을 받고 관련 파일을 보냅니다. 또한 HTTP는 아래와 같은 거의 모든 형태의 데이터가 전송 가능합니다. HTML, TEXT IMAGE, 음성, 영상, 파일 JSON, XML (API) 특징 Client-Server Architecture 출처 클라이언트-서버 아키택처는 컴퓨터.. 2023. 8. 24.
[Java] 가비지 컬렉션(Garbage Collection) Garbage Collection GC는 자바의 메모리 관리를 자동화하는 메커니즘으로 명시적으로 메모리를 할당하거나 해제하지 않아도 동적으로 사용하지 않는 객체들을 인식하고 제거하는 프로세스입니다. GC의 자동 메모리 관리로 인해 프로그래머들은 메모리 누수 문제, 메모리 관리 등과 같은 문제에서 벗어나 오로지 개발에만 집중 할 수 있게 되었습니다. 하지만 GC는 일시적으로 메모리에 대한 가비지를 수집할 때까지 GC 스레드를 제외한 모든 스레드를 중지하는 Stop the world 이벤트를 진행하는데 이는 오버헤드가 발생돼 프로그램의 응답성이 떨어지는 문제점이 있습니다. GC가 오히려 자주 실행되면 프로그램의 실행 시간이 증가되어 성능상의 이슈가 발생합니다. 따라서 실시간으로 제어하는 것이 중요한 프로그램.. 2023. 8. 21.
[GoF] 옵저버 패턴(Observer Pattern) Observer Pattern 옵저버 패턴(Observer Pattern)은 Gang of Four(GoF) 디자인 패턴 중 하나로 Design Patterns: Elements of Reusable Object-Oriented Software 책에서 소개 된 23가지 디자인 패턴 중 하나입니다. 옵저버 패턴은 동작 패턴으로써 객체의 상태 변화가 생길 때 각 객체를 관찰하는 옵저버들에게 통지하고 옵저버들은 받은 인지한 상태 변화에 따른 조치를 취하는 디자인 패턴입니다. 옵저버 패턴은 객체 간의 일대다 의존성 관계를 정의하며 Pub/Sub(발행/구독) 모델로서 주로 분산 이벤트 핸들링 시스템을 구현하는데 사용됩니다. Structure Subject Observer의 관찰 대상자 인터페이스입니다. 주제를 나.. 2023. 8. 19.
[Design] 결합도(Coupling) 결합도(Coupling) 커플링은 서로 다른 모듈이나 클래스가 얼마나 강하게 연결되어 있는지를 나타내는 개념입니다. 즉 서로 상호 작용하는 시스템들간의 의존성을 나타내며 모듈 간의 독립성 정도를 나타내는 지표입니다. Tight Coupling 두 요소가 강하게 결합되어 있다는 것은 한 요소가 다른 요소의 내부 동작에 의존하거나 직접 접근하는 상태를 말합니다. 이런 상태에서는 한 요소의 변경은 다른 요소에 직접적인 영향을 미치고 다른 요소에 대한 많은 변경을 요구하게 됩니다. Tight Coupling은 다른 오브젝트에 대한 상당히 많은 정보를 필요로 하고 보통 두 객체간의 인터페이스들에게 서로 높은 의존성을 가지고 있습니다. Loose Coupling 두 요소가 느슨하게 결합되어 있다는 것은 한 요소가 .. 2023. 8. 18.
[GoF] 파사드 패턴(Facade Pattern) Facade Pattern 파사드 패턴(Facade Pattern)은 Gang of Four(GoF) 디자인 패턴 중 하나로 Design Patterns: Elements of Reusable Object-Oriented Software 책에서 소개 된 23가지 디자인 패턴 중 하나입니다. 파사드 패턴은 구조 패턴으로써 하위 시스템을 보다 쉽게 사용할 수 있게 해주는 고급 인터페이스로 표현됩니다. 먼저 파사드(Facade)는 프랑스어 Façade 에서 유래된 단어로 건물의 '외관'이라는 뜻입니다. 하위 시스템(내부 구조)에 있는 인터페이스들에 대한 통합된 고급 인터페이스(외벽)를 제공하는 패턴입니다. 이로써 내부 시스템의 복잡도를 감추기 위해 복잡한 기능을 감싸고 상호 작용할 더 단순한 메소드를 제공하는.. 2023. 8. 17.
[CS] 내부 기억장치(Internal Memory)(1) 기억장치 기억장치의 분류와 특성 CPU가 어떤 정보를 기억장치에 쓰거나 기억장치로부터 읽는 동작을 액세스(access)한다고 말하는데 액세스 유형은 일반적으로 다음과 같이 분류됩니다. 순차적 액세스(sequential access): 기억장치에 젖아된 정보들을 처음부터 순서대로 액세스합니다. 자기 테이프(magnetic tape) 저장장치가 이방식을 이용하는데 저장되는 모든 정보는 테이프의 처음 위치에서 시작하여 연속적으로 위치하게 됩니다. 그 내용들은 내부적으로 레코드(record)라고 불리는 정보 단위로 분리되어 저장되고 각 레코드는 고유의 주소를 가집니다. 테이프 내 임의의 위치에 저장된 특정 정보를 읽기 위해서는 그위치에 도달할때까지 앞부분의 테이프를 모두 통과해야합니다. 따라서 정보가 저장된 위.. 2023. 8. 16.
[Network] 트랜스포트 계층(Transport Layer)(4) 연결지향형 트랜스포트: TCP 혼잡 제어에 대한 접근법 실제로 TCP가 혼잡 제어를 수행하는 두 가지 광범위한 접근 방식이 있습니다. 가장 크게 보면 네트워크 계층이 혼잡 제어를 목적으로 트랜스포트 계층에 어떤 직접적인 도움을 제공하는지에 따라 혼잡 제어 접근을 구별할 수 있습니다. 종단 간의 혼잡 제어: 혼잡 제어에 대한 종단 간의 접근 방식에서 네트웤 ㅡ계층은 혼잡 제어 목적을 위해 트랜스포트 계층에게 어떤 직접적인 지원도 제공하지 않습니다. 네트워크에서 혼잡의 존재는 단지 관찰된 네트워크 동작에 기바초하여 종단 시스템이 추측해야합니다. IP 계층은 네트워크 혼잡에 관해 종단 시스템에게 어떠한 피드백 제공도 요구받지 않으므로 TCP가 혼잡 제어를 위한 종단 간의 접근 방식을 취합니다. TCP 세그먼트.. 2023. 8. 15.
[Network] 트랜스포트 계층(Transport Layer)(3) 연결지향형 트랜스포트: TCP 흐름 제어 TCP 연결의 각 종단에서 호스트들은 연결에 대한 개별 수신 버퍼를 설정합니다. TCP 연결이 순서대로 올바르게 바이트를 수신할 때 TCP는 데이터를 수신 버퍼에 저장합니다. TCP는 송신자가 수신자의 버퍼를 오버플로시키는 것을 방지하기 위해 애플리케이션에게 흐름 제어 서비스(flow-control service)를 제공합니다. 흐름 제어는 속도를 일치시키는 서비스로 수신하는 애플리케이션이 읽는 속도와 송신자가 전송하는 속도를 같게 합니다. 송신자 제어의 이 형태는 혼잡 제어(congestion control)이라 부릅니다. TCP는 송신자가 수신 윈도(receive window)라는 변수를 유지하여 흐름 제어를 제공합니다. 수신 윈도는 수신 측에서 가용한 버퍼 .. 2023. 8. 14.
[Network] 트랜스포트 계층(Transport Layer)(2) 연결지향형 트랜스포트: TCP TCP가 신뢰적인 데이터 전송을 제공하기 위해 오류 검출, 재전송 누적 확인응답, 타이머, 순서 번호와 확인응답 번호를 위한 헤더 필드를 포함한 방법을 설명하겠습니다. TCP 연결 TCP는 애플리케이션 프로세스가 데이터를 다른 프로세스에게 보내기 전에 두 프로세스가 서로 '핸드셰이크'를 먼저 해야하므로 연결지향형(connection-oriented)입니다. 즉 데이터 전송을 보장하는 파라미터들을 각자 설정하기 위한 어떤 사전 세그먼트들을 보내야합니다. TCP 포로토콜은 오직 종단 시스템에서만 동작하고 중간의 네트워크 요소(라우터와 링크 계층 스위치)에서는 동작하지 않으므로 중간의 네트워크 요소들은 TCP 연결 상태를 유지하지 않습니다. (중간 라우터들은 이들의.. 2023. 8. 12.