분류 전체보기
-
HTTP Method란?Computer Science/HTTP 2024. 4. 6. 18:58
웹 개발의 세계에서 HTTP 메소드는 기본적이면서도 필수적인 구성 요소입니다. 웹 애플리케이션과 서버 간의 통신을 가능하게 하는 이 메소드들은 데이터의 조회, 생성, 수정, 삭제와 같은 작업을 수행합니다. 이 글에서는 HTTP 메소드의 중요성을 이해하고, 각 메소드의 사용 사례와 특징을 상세하게 탐구해보겠습니다. 들어가기 전에 들어가기 앞서 REST에 대해 간단히 짚고 넘어갑니다. REST(Representational State Transfer)와 RESTful은 밀접하게 관련되어 있으며, 때때로 혼용되어 사용되기도 합니다. 그러나 둘 사이에는 분명한 차이점이 있습니다. REST (Representational State Transfer) 개념: REST는 분산 시스템 설계를 위한 아키텍처 스타일입니다..
-
기아상태(Starvation)란?Computer Science/OS 2024. 4. 6. 17:22
기아상태(Starvation)는 멀티스레딩 환경에서 특정 스레드가 CPU 시간이나 필요한 자원을 충분히 할당받지 못해 원하는 작업을 수행하지 못하는 상태를 말합니다. 이는 일반적으로 우선순위가 높은 작업에 자원이 계속 할당되어 우선순위가 낮은 작업이 무한히 대기 상태에 머무르게 될 때 발생합니다. 1. 기아상태란? 기아상태는 시스템 내의 자원 할당 정책으로 인해 발생할 수 있습니다. 예를 들어, 특정 스레드나 프로세스가 자원을 오랜 시간 동안 독점하고 있을 때, 다른 스레드는 그 자원을 사용할 기회를 얻지 못할 수 있습니다. 특히, 멀티스레딩 환경에서 스레드에 우선순위를 할당하여 작업을 스케줄링할 때 기아상태가 발생하기 쉽습니다. 2. 기아상태 코드 예시 Java 예시: Java에서는 Thread 클래스..
-
클로저(Closure)란?Back-End/Language 2024. 4. 5. 11:33
Go 언어에서의 클로저(Closure)는 JavaScript의 클로저와 유사한 개념을 가지고 있습니다. 둘 다 외부 함수로부터 생성된 내부 함수가 그 외부 함수의 스코프에 있는 변수에 접근할 수 있게 해주는 프로그래밍 기능입니다. 하지만 언어의 특성과 구현 방식에서는 차이가 있을 수 있습니다. 공통점 변수의 스코프 유지: 클로저는 내부 함수가 외부 함수의 실행 컨텍스트가 종료된 후에도 외부 함수의 변수에 접근할 수 있게 해줍니다. 이를 통해 특정 함수 호출이 종료된 이후에도 변수의 상태를 유지할 수 있습니다. 데이터 은닉과 캡슐화: 클로저는 데이터를 함수 내부에 은닉하고, 특정 함수를 통해서만 데이터에 접근할 수 있게 함으로써 캡슐화를 제공합니다. 차이점 언어적 특성: JavaScript는 프로토타입 기..
-
메모리 구조(Memory Structure)란?Computer Science/OS 2024. 4. 5. 11:21
메모리 구조는 프로그램이 실행되면서 사용하는 메모리의 구성을 설명합니다. 이 구조는 일반적으로 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나누어집니다. 각 영역은 특정 유형의 정보를 저장하며, 프로그램의 성능과 안정성에 직접적인 영향을 미칩니다. 1. 코드(Code) 영역 코드 영역은 프로그램이 실행되기 위해 CPU가 직접 읽어서 실행할 수 있는 기계어 코드가 저장되는 메모리 영역입니다. 이 영역에는 프로그램의 모든 함수와 명령어가 포함되어 있으며, 프로그램 실행 동안 변경되지 않습니다. 코드 영역은 읽기 전용이므로, 프로그램 실행 중에 이 영역의 내용을 변경하려고 시도하면 실행 시간 오류가 발생할 수 있습니다. 보안상의 이유로도 코드 영역은 보호되며, 코드 주입과 같은 공격을 방지하는 데 중요..
-
컴파일(Compile)과 런타임(Runtime)이란?Computer Science/OS 2024. 4. 5. 10:04
1. 컴파일이란? 컴파일은 고수준 프로그래밍 언어로 작성된 코드를 기계가 이해할 수 있는 저수준 언어(보통 기계어나 바이트코드)로 변환하는 과정을 말합니다. 컴파일러는 이러한 변환 과정을 수행하는 프로그램입니다. 컴파일 과정은 일반적으로 여러 단계를 거칩니다. 소스 코드가 토큰으로 분해되고, 구문 분석을 통해 구문 트리가 생성되며, 최적화가 수행되고, 마지막으로 타겟 코드(기계어 코드)가 생성됩니다. 2. 런타임이란? 런타임은 프로그램이 실행되고 있는 시간을 의미합니다. 더 구체적으로는, 프로그램의 코드가 컴퓨터의 프로세서에 의해 실행되고 있는 상태를 말합니다. 런타임 동안, 프로그램은 메모리를 할당받고, 데이터를 처리하며, 사용자의 입력을 받고, 결과를 출력할 수 있습니다. 런타임 환경은 프로그램이 실..
-
라이브락(Livelock)이란?Computer Science/OS 2024. 4. 4. 21:59
1. 라이브락이란?🤷♂️ 라이브락은 무엇인가요?라이브락(Livelock) 은 데드락처럼 시스템이 진행되지 못하는 상태이지만, 프로세스들이 계속해서 상태를 바꾸며 활동은 하고 있는 상태를 말합니다.즉,데드락: 아예 멈춤 (가만히 기다림)라이브락: 계속 움직이지만 아무것도 못함 (헛돌기)🍽️ 현실 비유로 이해하기두 사람이 좁은 복도에서 서로 마주쳤다고 해보세요.A가 오른쪽으로 비킴동시에 B도 오른쪽으로 비킴다시 둘 다 왼쪽으로 비킴또다시 오른쪽으로…계속 피하려 하지만, 서로 계속 겹치면서 아무도 앞으로 가지 못함이게 바로 라이브락이에요. 🔁 데드락 vs 라이브락2. 라이브락 예시코드 구현에 앞서라이브락을 명확히 보여주는 코드 예시는 데드락보다 구현하기 어렵습니다. 라이브락의 상황을 설명하기 위해, 두..
-
데드락(Deadlock)이란?Computer Science/OS 2024. 4. 3. 23:09
1. 데드락이란?🤔 데드락이 뭐길래?컴퓨터 과학에서 데드락(Deadlock) 은 둘 이상의 프로세스(또는 스레드)가 서로가 가진 자원을 기다리느라 영원히 실행되지 못하는 상태를 말합니다. 서로 양보하지 않고 기다리기만 하다 보니, 시스템 전체가 멈춰버리는 현상이죠. 🍜 라면 비유로 이해해보자라면을 끓이는 두 사람이 있다고 해볼게요.A는 냄비를 먼저 잡고, 그다음 가스레인지를 쓰려고 해요.B는 가스레인지를 먼저 잡고, 그다음 냄비를 쓰려고 해요.그런데 A는 "B가 가스레인지를 놓을 때까지" 기다리고,B는 "A가 냄비를 놓을 때까지" 기다립니다.둘 다 서로의 행동을 기다리기만 하니, 결국 라면은 못 끓이고 시스템이 멈춰버린 거예요. 이게 바로 데드락입니다.2. 데드락 예시코드Java:public clas..
-
프로토타입 패턴(Prototype Pattern)이란?Design Pattern/생성 디자인 패턴 2024. 4. 2. 22:35
1. 프로토타입 패턴이란? 프로토타입 패턴은 생성 디자인 패턴의 한 종류로, 기존 객체를 복제하여 새 객체를 생성하는 방식입니다. 이 패턴은 특히 객체 생성 비용이 크거나 복잡한 경우, 또는 클라이언트가 객체의 타입을 미리 알 수 없는 경우에 유용합니다. 프로토타입 패턴은 원본 객체의 정확한 복사본을 제공함으로써, 새 객체의 생성과 초기화 과정을 단순화합니다. 2. 프로토타입 패턴은 주로 어디에 쓰이나? 프로토타입 패턴은 다음과 같은 상황에서 주로 사용됩니다: 객체 생성 비용이 높고, 비슷한 객체가 여러 개 필요한 경우 객체의 타입이 런타임에 결정되는 경우 클론을 지원하여 객체의 상태를 쉽게 복제할 수 있는 경우 이 패턴은 게임 개발에서 캐릭터, 아이템 등의 인스턴스를 만들 때나, 소프트웨어 개발에서 설..