[바미] 큐잉 이론(Queueing Theory)이란?
·
프로그래밍(Basic)/이론
큐잉 이론(Queueing Theory)이란?우리 주변에는 ‘대기열(Queue)’라는 개념이 곳곳에 존재합니다. 패스트푸드점에서 줄을 서는 고객, 콜센터에 전화를 기다리는 고객, 웹 서버에 몰려드는 사용자 요청 등 다양한 서비스 대기 상황들이 있는데 큐잉 이론(Queueing Theory)은 이러한 대기열을 수학적으로 분석해, 가장 효율적으로 처리하기 위한 방법을 연구하는 분야입니다.  이를 통해 우리는 어떤 조건에서 얼마나 많은 자원을 배치해야 평균 대기 시간이 줄어들 수 있는지, 시스템 처리 효율을 최대화하기 위해 대기열 구조를 어떻게 설계해야 하는 지와 같은 문제를 해결할 수 있습니다. 큐잉 이론이 중요한 이유현대 IT 환경에서 큐는 다양한 계층에서 핵심적인 역할을 합니다. 단순히 눈에 보이는 고객..
[바미] 자료구조 - 해시맵(HashMap)
·
프로그래밍(Basic)/이론
해시맵(HashMap)?키-값(Key-Value) 쌍을 저장하는 자료구조입니다. 빠른 검색, 삽입, 삭제를 가능하게 하며, 데이터의 중복을 허용하지 않는 특징이 있죠. 해시맵은 해시 함수(Hash Function)를 사용하여 키를 해시 코드(Hash Code)로 변환하고, 이를 배열 인덱스로 사용하여 값을 저장합니다.해시맵의 주요 특징키-값 쌍 저장해시맵은 키와 값의 쌍으로 데이터를 저장합니다. 각 키는 고유하며, 키를 통해 해당 값을 빠르게 검색할 수 있습니다.해시 함수해시맵은 해시 함수를 사용하여 키를 해시 코드로 변환하고, 이 해시 코드를 배열의 인덱스로 사용하여 값을 저장합니다. 해시 함수는 입력 값(키)을 고정된 크기의 해시 코드로 변환하는 함수입니다.빠른 검색 해시맵은 일반적으로 O(1)의 시..
[바미] 자료구조 - 트리(Tree)
·
프로그래밍(Basic)/이론
트리(Tree)?계층적인 구조를 나타내는 자료구조입니다. 트리는 루트 노드(root node)에서 시작하여 각 노드가 0개 이상의 자식 노드(child node)를 가지며, 자식 노드들도 다시 트리 구조를 형성하는 형태로 이루어져 있습니다.트리의 구조루트 노드(root node): 부모가 없는 최상위 노드. 트리는 하나의 루트 노드만을 가집니다.단말 노드(leaf node): 자식 노드가 없는 노드. '말단 노드' 또는 '잎 노드'라고도 부릅니다.내부 노드(internal node): 단말 노드가 아닌 노드를 의미합니다.간선(edge): 노드 간을 연결하는 선으로, 링크(link) 또는 브랜치(branch)라고도 부릅니다.형제 노드(sibling): 같은 부모를 가지는 노드들을 의미합니다.노드의 크기(s..
[바미] 자료구조 - 그래프(Graph)
·
프로그래밍(Basic)/이론
그래프(Graph)?정점과 간선으로 이뤄진 자료구조 입니다. ❓ 정점 정점은 그래프에서 데이터를 저장하는 기본 단위입니다. 노드(Node)라고 불리기도 하고, 다양한 데이터를 저장할 수 있습니다. ❓ 간선정점을 연결하는 선으로 링크(link) 또는 브랜치(branch)라고도 합니다. 그리고 간선에는 방향이 존재하는 그래프와 방향이 없는 그래프가 존재합니다. 아래 그림처럼 방향이 존재하는 그래프는 방향그래프(directed graph), 방향이 존재하지 않는 그래프를 무방향 그래프(undirected graph)라고 부릅니다.추가적으로 그래프 탐색 방법 중 가장 기본적인 두 가지 중 깊이 우선 탐색(DFS, Depth-First Search)과 너비 우선 탐색(BFS, Breadth-First Search..
[바미] 자료구조 - 큐(Queue)
·
프로그래밍(Basic)/이론
큐(Queue)큐(Queue)는 자료 구조의 하나로, 데이터가 FIFO(First In, First Out) 방식으로 관리되는 구조입니다. 즉, 가장 먼저 삽입된 데이터가 가장 먼저 제거됩니다. 그리고 큐는 주로 운영 체제의 작업 스케줄링, 프린터 작업 관리, 데이터 스트리밍 등 다양한 분야에서 사용됩니다.큐는 용도에 따라 종류가 다양하니 큐의 종류에 대해 추가로 살펴보시는 것을 추천드립니다.큐의 주요 연산큐는 선형 자료 구조로 불리고, 두 개의 주요 연산을 제공합니다.Enqueue: 큐의 끝에 데이터를 삽입하는 연산.Dequeue: 큐의 앞에서 데이터를 제거하고 반환하는 연산.코드(Java)// 큐 클래스 정의class Queue { private int[] arr; // 큐의 요소를 저장할 ..
[바미] 자료구조 - 스택(Stack)
·
프로그래밍(Basic)/이론
스택(Stack)스택(Stack)은 자료 구조 중 하나로, 데이터가 LIFO(Last In, First Out) 방식으로 관리되는 구조입니다. 즉, 가장 나중에 삽입된 데이터가 가장 먼저 제거되는 구조를 가진 자료 구조죠.스택의 주요연산스택은 다음과 같은 주요 연산을 제공합니다.Push: 스택의 맨 위에 데이터를 삽입하는 연산.Pop: 스택의 맨 위에 있는 데이터를 제거하고 반환하는 연산.Peek (or Top): 스택의 맨 위에 있는 데이터를 제거하지 않고 반환하는 연산.IsEmpty: 스택이 비어 있는지 확인하는 연산.IsFull: 스택이 가득 찼는지 확인하는 연산 (배열 기반 스택의 경우).코드(Java)class Stack { private int[] arr; private int to..
[바미] 자료구조 - Linked list
·
프로그래밍(Basic)/이론
Linked list?포인터를 통해 여러 노드(Node)가 연결돼 있는 자료구조를 의미합니다. 노드(Node)자료구조에서 노드는 데이터를 저장하는 기본 단위를 의미합니다. 이 노드(Node)는 데이터를 저장하는 공간과 다음 노드를 가리키는 포인터 공간으로 구성됩니다. 이러한 구조 덕분에 Linked list의 삽입과 삭제에 걸리는 시간은 O(1)로 빠른편이죠.노드를 삽입할 땐 새 노드를 만들어 노드 사이에 포인터로 연결하면되고, 노드를 삭제할 땐 바로 앞의 포인터만 바꾸면 되기 때문입니다.위 그림에서 세 번째 노드를 삭제할 때 배열이였다면 그 뒤의 노드를 전부 한 칸씩 이동해야 하지만 Linked list는 바로 앞에 있는 노드의 포인터가 네 번째 노드를 가리키도록 수정하면 되죠. 하지만 Linked l..
[바미] CPU 코어와 멀티태스킹, 멀티프로세스, 멀티스레드의 관계
·
프로그래밍(Basic)/이론
싱글 코어 vs 멀티 코어싱글 코어 (Single Core)싱글 코어 CPU는 하나의 연산 장치를 가지고 있습니다. 싱글 코어에서는 멀티태스킹이 시간 분할 방식으로 이루어지며, 이는 CPU가 매우 빠르게 여러 작업을 번갈아가며 처리하는 방식입니다. 예를 들어, 프로세스 A와 프로세스 B가 있을 때, CPU는 잠깐 동안 프로세스 A를 실행한 후 프로세스 B를 실행하고, 다시 프로세스 A로 돌아갑니다.  이 과정이 매우 빠르게 반복되기 때문에 사용자는 두 작업이 동시에 실행되는 것처럼 느끼지만, 실제로는 한 번에 하나의 작업만 실행할 수 있습니다. 멀티 코어 (Multi Core)멀티 코어 CPU는 여러 개의 연산 장치를 가지고 있으며, 각 코어는 독립적으로 작업을 처리할 수 있습니다. 멀티 코어 시스템에서..
[바미] 멀티 태스킹, 멀티 스레드, 멀티 프로세스
·
프로그래밍(Basic)/이론
멀티 태스킹, 멀티 스레드, 멀티 프로세스는 무엇일까요?각각의 정의는 아래와 같습니다. 멀티 프로세스: 하나의 프로그램을 다수의 프로세서가 다수의 프로세스를 동시에 처리하는 것멀티 스레드: 하나의 프로세스가 여러 작업을 여러 스레드를 사용하여 동시에 처리하는 것멀티 태스킹: 다수의 작업을 운영체제 스케줄링에 의해  번갈아가면서 처리하는 것멀티 태스킹(Multi-tasking)Task라는 개념은 프로세스의 개념보다 조금 확장된 개념입니다. 이러한 Task가 하나의 프로세서 상에서 운영체제의 스케줄링 방식에 따라 조금씩 번갈아가면서 수행되는 것이 멀티태스킹의 개념입니다. 그리고 멀티태스킹 환경에서 운영 체제는 프로세스 스케줄러를 사용하여 각 작업이 공정하게 CPU 시간을 할당받도록 하죠. 빠른 속도로 조금씩..
Bami