본문 바로가기

분류 전체보기64

[Network] TCP/UDP 0. 배경0-1. 전송 계층전송 계층은 애플리케이션(end point)간 신뢰성 있는 데이터 전송을 담당하는 계층이다.신뢰성 : 데이터를 순차적이고 안정적인 전달하는 것을 의미전송 : 포트 번호에 해당하는 프로세스에 (신뢰성 있는)데이터를 전달하는 것을 의미0-2. 전송 계층의 필요성전송 계층이 없다면 아래와 같은 여러 문제가 발생하기 때문에 전송 계층은 데이터 송수신에서 필수적이다.데이터의 순차 전송이 원할하지 않고, 데이터 손실이 발생할 수 있다.흐름 문제가 발생 (Flow) : 송수신간의 데이터 처리 속도 차이로 인해 발생송신측의 전송량이 수신측의 처리량보다 많은 경우, 처리할 수 있는 데이터량을 초과했을 때 손실될 수 있기 때문에 누락하는 문제가 발생한다.혼잡 문제 발생 (Congestion) :.. 2024. 7. 17.
[Java] 정적 팩토리 메서드 (Static Factory Method) 1. 정적 팩토리 메서드 (Static Factory Method)란?정적 팩토리 메소드는 개발자가 구성한 Static Method를 통해 간접적으로 생성자를 호출하여 객체를 생성하는 패턴보통 객체를 인스턴스화 할 때, 생성자를 호출하며 객체를 생성하는데 생성자에는 다양한 단점이 존재할 수 있다.이를 해결하기 위해, 객체 생성을 담당하는 메소드를 정적 팩토리 메서드라고 한다.정적 팩토리 메서드는 이름에서 알 수 있듯이 GOF의 팩토리 메서드, 추상 팩토리 패턴에서의 팩토리 개념을 따온 것이라고 생각할 수 있다.자바에서 '생성자 대신 정적 팩토리 메서드를 고려하라' 라는 말이 있을 정도로 정적 팩토리 메서드는 객체를 생성할 때, 꽤나 중요해 보인다. 생성자를 왜 사용하지 말고 더 나아가 정적 팩토리 메서드.. 2024. 7. 15.
[DBMS] Redis 알아보기 1.Redis란?위의 사진에서 보다 싶이 Dictionary 구조(Key - Value)의 형태로 데이터를 저장하고 관리하기 위한 서버오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템데이터베이스, 캐시, 메시지 브로커로 사용되며 인메모리 데이터 구조를 가진 데이터 저장소공식 홈페이지에서는 Redis의 핵심 기능을 아래와 같이 말하고 있다. Redis - The Real-time Data PlatformDevelopers love Redis. Unlock the full potential of the Redis database with Redis Enterprise and start building blazing fast apps.redis.ioRedis는 문자열, 해시, 목록, 집합, 범위 쿼리가 있.. 2024. 7. 11.
[OS] "Multi Process / Multi Thread” Multi의 의미와 특징 및 차이점 1. Multi Process1-1.  개념두개 이상의 다수의 프로세서(CPU)가 협력적으로 하나 이상의 작업(Task)을 동시에 처리하는 것(병렬적 처리)각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용한다.즉, 멀티 프로세스는 운영체제에서 하나의 응용 프로그램에 대해 동시에 여러 개의 프로세스를 실행할 수 있도록 하는 기술예를 들면, 크롬과 같은 웹 브라우저에서 여러 개의 탭이나 새 창을 띄울 때, 하나의 프로그램에서 여러 개의 프로세스를 사용한다.이때, 각 브라우저 탭은 같은 브라우저 프로그램을 실행한 것이지만, 각기 다른 사이트를 실행하기 때문이다.1-2. 장점1. 프로그램 안정성 각 프로세스가 독립적인 메모리 공간을 가지기 때문에, 하나의 프로세스가 비정상적으로 .. 2024. 7. 3.
[OS] 동기화 메커니즘(Synchronization Mechanisms)과 스핀락(Spinlock), 뮤텍스(Mutex), 세마포어(Semaphore) 0. 경쟁 상태와 임계 구역0-1. 경쟁 상태 (Race Condition)경쟁 상태는 여러 개의 프로세스가 병행하여 공유 자원을 읽고 쓸 때 발생하는 상황공유 자원 접근 순서에 따라 실행 결과가 매번 달라지는 문제 (non-deterministic)이러한 경쟁 상태를 해결하기 위해 동기화 매커니즘이 필요하다.0-2. 임계 구역 (Critical Section)둘 이상의 프로세스/스레드가 동시에 실행될 경우 생길 수 있는 경쟁 조건을 발생시킬 수 있는 코드 영역임계 구역 해결 조건Mutual Exclusion (상호 배제) : 이미 한 프로세스가 임계 구역에서 실행중이라면 다른 프로세스의 접근을 금지하는 것Progress (진행) : 임계 구역에 프로세스가 없을 때, 임계 구역에 접근하고자 하는 프로세스.. 2024. 6. 28.
동적 계획법 (DP) 1. 중복이 많은 완전 탐색피보나치 수열 : 첫재 및 둘쨰 항이 1이며 그 뒤의 모든 항은 바로 앞 두항의 합인 수열점화식 : f(0) = 1, f(1) = 1, f(n) = f(n-1) + f(n-2)만약 완전 탐색(백트레킹)으로 해결한다면?f(5)가 필요하다면 ? → f(4) + f(3) 이 필요해f(4)가 필요하면 → f(3)과 f(2)가 필요해f(3)이 필요하면 → f(2)와 f(1)이 필요해탑 다운 방식으로 해결하려고 한다면 너무 비효율적이고 중복으로 구해야 하는 부분이 많다.→ 시간 복잡도 : 약 O(2^n)…. 너무 오래 걸리고 비효율적이다.그렇다면 먼저 계산한 값들을 저장해놓고 필요할 때 사용하면 편하겠는데??? → 메모이제이션 2. 메모이제이션메모이제이션 : 작은 문제의 결과값을 저장해놓.. 2024. 6. 27.
MST (Minimun Spanning Tree, 최소 신장 트리) 그래프와 트리비선형 자료구조 : 객체간의 관계를 관리하며 하나의 자료 뒤에 여러 개의 자료가 존재그래프 : 노드(정점, 위치), 간선(위치간 관계), 가중치(간선에 할당된 비용)로 이루어진 자료구조유향 그래프, 무향 그래프 : 단방향이면 유향, 양방향이면 무향트리 : 사이클 없이 모든 노드가 하나의 연결 요소인 그래프사이클 - 단순 경로(노드가 중복되지 않은 경로)의 시작점과 종점이 동일한 그래프→ 노드의 개수가 n개일 때, 간선의 개수는 n-1개 이다.기본 트리는 루트를 고려하지 않음, 루트를 고려하면 루티드 트리가 된다.신장 트리(Spanning Tree) : 그래프 내의 모든 정점을 포함하는 트리→ 최소 연결(간선의 수가 가장 적은 부분 그래프)→ n개의 노드에 n-1개의 간선으로 모두 연결된 그래.. 2024. 6. 26.
[Network] TCP 연결 및 해제 과정 (3 way-handshake & 4 way-handshake) 0. TCPTCP는 전송 계층(Transport Layer)에서 사용되는 프로토콜이다.장치들 사이에 논리적인 접속을 성립(Establish)하기 위하여 연결을 설정높은 신뢰성을 제공하고 연결 지향성 서비스를 제공한다.정보 전달에 있어 안정적으로, 순서대로, 에러 없이 데이터를 교환을 목적으로 한 프로토콜위의 안정적이고 논리적인 특징을 만족하기 위해 TCP의 경우 handshake를 사용한다. 1. TCP의 3 way-handshake 1-1. TCP의 3 way-handshake 역할3 way-handshake는 TCP 통신을 이용해 데이터 전송 전 정확한 전송을 보장하기 위해 사전에 세션을 수립하는 과정클라이언트와 서버 모두 데이터를 전송하고 받을 준비가 되었다는 것을 보장한다.실제로 데이터 전달이 시.. 2024. 6. 24.
[OS] DeadLock(교착상태) 발생과 해결 방안 1. DeadLock (교착상태) 란?교착상태란 여러 프로세스나 스레드가 서로 자원을 기다리며 실행이 멈추는 상태를 말한다.예를 들어, 프로세스 A가 프로세스 B의 자원을 요청할 때 프로세스 B도 프로세스 A가 점유하고 있는 자원을 요청하는 것이다. 2. DeadLock 원인DeadLock(교착상태)은 아래의 네가지 조건을 모두 만족할 때 발생한다.상호배제(Mutual exclusion) : 자원은 한번에 하나의 프로세스만 사용할 수 있어야 한다.점유대기(Hold and wait) : 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 한다.비선점(No preemption) : 다른 프로세스에 할당된 자원은 사용이 끝날 때.. 2024. 6. 24.