본문 바로가기

분류 전체보기

(118)
Blocking과 Non-blocking Blocking과 Non-blocking은 프로그램이나 시스템에서 작업이 완료될 때까지 대기하는지 여부에 대한 중요한 개념이다. 이 두 개념은 주로 I/O(입출력) 작업, 스레드, 네트워크 통신과 같은 상황에서 사용된다. 이 개념들을 이해하는 것은 프로그램의 성능, 응답성, 자원 사용에 큰 영향을 미치기 때문에 중요하다. 1. Blocking (블로킹)Blocking이란?Blocking은 어떤 작업이 완료될 때까지 해당 작업이 끝날 때까지 프로세스나 스레드가 대기하는 방식을 의미한다. 작업이 완료되기 전까지 다른 작업을 수행하지 않고, 해당 작업이 끝난 후에야 다음 작업으로 넘어갈 수 있다.보통 입력이나 출력(I/O) 작업에서 많이 사용되며, 네트워크 통신, 파일 시스템 접근, 스레드 동기화 등 다양한 ..
경쟁 조건(Race Condition)과 교착 상태(Deadlock) 경쟁 조건(Race Condition)과 교착 상태(Deadlock)는 멀티스레드 또는 멀티프로세스 환경에서 자주 발생하는 동시성 문제이다. 이 두 개념은 동시성 프로그래밍에서 데이터의 무결성과 시스템의 안정성을 위협할 수 있는 중요한 문제이다. 1. 경쟁 조건 (Race Condition)경쟁 조건이란?경쟁 조건은 두 개 이상의 스레드 또는 프로세스가 동시에 공유 자원에 접근하여, 그 실행 순서에 따라 프로그램의 결과가 달라질 수 있는 상황을 말한다. 즉, 여러 스레드나 프로세스가 동일한 자원을 동시에 접근하고 수정하는 경우, 그 결과는 실행 순서에 의해 비정상적인 상태로 변할 수 있다.경쟁 조건의 발생 원인경쟁 조건은 일반적으로 공유 자원에 대한 비동기적 접근으로 인해 발생한다. 여러 스레드가 동시에..
0-1 배낭 문제 (0-1 Knapsack Problem) 0-1 배낭 문제는 NP-완전 문제 중 하나로, 주어진 아이템 중에서 최대 가치를 얻을 수 있도록 배낭에 담는 방법을 찾는 문제이다. 각각의 아이템은 특정한 무게와 가치가 있으며, 배낭은 최대 무게 제한이 있다. 아이템을 쪼갤 수 없기 때문에, 각 아이템을 넣거나 넣지 않는 선택을 해야 하며(즉, 0 또는 1로 선택), 이를 최적화하는 방식이다.문제 정의:N개의 아이템이 있고, 각 아이템은 무게 weights[i]와 가치 values[i]를 가진다.배낭의 용량 W는 한정되어 있으며, 이보다 무게가 큰 아이템들은 넣을 수 없다.목표는 배낭에 담을 수 있는 최대 가치를 구하는 것이다.예시:아이템이 다음과 같다고 가정해 본다:아이템 1: 무게 2, 가치 3아이템 2: 무게 3, 가치 4아이템 3: 무게 4, ..
프로세스(process)와 스레드(thread) 프로세스(process)와 스레드(thread)는 컴퓨터 프로그램의 실행 단위로, 운영 체제(OS)가 프로그램을 실행하고 관리하는 중요한 개념이다. 프로세스와 스레드는 서로 다른 개념이지만, 긴밀하게 연관되어 있으며, 둘 다 병렬 처리나 멀티태스킹 환경에서 중요한 역할을 한다. 1. 프로세스 (Process)프로세스란?프로세스는 메모리에서 실행 중인 프로그램이다. 프로그램은 디스크에 저장된 정적인 파일이며, 프로세스는 이 프로그램이 실행되었을 때 생성되는 동적인 실행 단위이다.운영 체제는 각 프로그램이 독립적인 실행 환경을 가지도록 프로세스를 생성하고, 프로세스는 해당 프로그램이 동작하는데 필요한 자원을 할당받는다. 이러한 자원에는 CPU 시간, 메모리 공간, 파일 입출력 핸들 등이 포함된다.프로세스의 ..
동적 프로그래밍 (Dynamic Programming, DP) 동적 프로그래밍(DP)은 복잡한 문제를 작은 하위 문제로 분할하여 해결하고, 그 결과를 재사용함으로써 효율적으로 문제를 해결하는 알고리즘 기법이다. 기본적으로 동일한 문제를 여러 번 풀지 않도록 중복된 계산을 줄이는 데 중점을 둔다.동적 프로그래밍은 최적화 문제에 많이 사용되며, 특히 최소값, 최대값 또는 경로 탐색과 같은 문제에서 자주 등장한다. DP는 하위 문제의 결과를 저장(Memoization 또는 Tabulation)해두고, 이를 기반으로 더 큰 문제를 해결하는 방식으로 진행된다.DP 문제를 해결하는 핵심 개념중복되는 하위 문제 (Overlapping Subproblems):문제를 재귀적으로 해결할 때, 동일한 하위 문제를 여러 번 해결하는 경우가 많다. 동적 프로그래밍은 이러한 하위 문제의 결..
HTTP와 HTTPS HTTP와 HTTPS는 웹에서 데이터를 전송하는 데 사용되는 두 가지 프로토콜이다. 이 두 프로토콜은 많은 면에서 유사하지만, 보안 측면에서 큰 차이가 있다.1. HTTP (HyperText Transfer Protocol)HTTP는 인터넷 상에서 데이터를 전송하는 프로토콜이다. 주로 웹 브라우저와 웹 서버 간의 데이터 통신을 관리하며, 텍스트, 이미지, 비디오와 같은 다양한 콘텐츠를 전달하는 데 사용된다.특징데이터 비암호화: HTTP로 전송되는 데이터는 암호화되지 않으며, 평문(plain text)으로 전송된다. 즉, 중간에서 누군가가 트래픽을 가로채면 쉽게 데이터를 읽을 수 있다.기본적인 데이터 전송: HTTP는 기본적으로 데이터를 주고받는 간단한 프로토콜이다. 그러나 데이터의 무결성, 기밀성, 인증..
VPN, Port Forwarding, DNS, DDNS VPN(Virtual Private Network), Port Forwarding, DNS(Domain Name System), 그리고 DDNS(Dynamic DNS)는 네트워크 및 인터넷 구조에서 매우 중요한 개념이다. 이 개념들을 깊이 이해하면 네트워크 보안, 연결성, 그리고 통신을 더 잘 이해할 수 있다. 각각의 개념에 대해 자세히 설명하고, 이를 이해하는 데 필요한 연관된 개념들을 추가로 설명하겠다.1. VPN (Virtual Private Network)VPN은 공용 네트워크(인터넷)에서 사설 네트워크를 가상으로 구성하는 기술이다. VPN을 사용하면 사용자가 공용 인터넷을 통해 데이터를 안전하게 전송할 수 있다. 기본적으로 VPN은 인터넷 상의 트래픽을 암호화하여 사용자의 프라이버시를 보호하고,..
HTTP Content-Type Content-Type은 HTTP 헤더 중 하나로, 클라이언트와 서버 간의 통신에서 전송되는 데이터의 미디어 타입을 명시하는 역할을 한다. 클라이언트가 서버에 요청을 보낼 때 또는 서버가 클라이언트에 응답을 보낼 때, 해당 데이터가 어떤 형식으로 인코딩되어 있는지를 Content-Type 헤더를 통해 알릴 수 있다. 1. 기본 역할Content-Type 헤더는 HTTP 요청(request) 또는 응답(response)에서 본문의 데이터가 어떤 형식인지 알려주는 중요한 헤더이다. 이를 통해 클라이언트와 서버는 서로 전송되는 데이터의 형식을 인지하고, 해당 형식에 맞게 데이터를 처리할 수 있다.예시JSON 데이터 전송: 클라이언트가 JSON 형식의 데이터를 서버에 전송할 경우Content-Type: appl..

728x90