[Network] LoadBalancing
·
🔻Computer Science/Network
❗LoadBalancing이란?여러 서버나 네트워크 장치로 들어오는 트래픽을 효율적으로 분산시켜 시스템의 성능, 안정성, 확장성을 향상시키는 기술이다. 이는 서버의 과부하를 방지하고 서비스의 가용성을 보장하는 데 중요한 역할을 한다.로드밸런싱은 다양한 방법과 기술을 사용하여 구현되며 주로 웹 서버, 애플리케이션 서버, 데이터베이스 서버 등에서 많이 사용된다. ❗로드밸런싱 알고리즘 라운드 로빈(Round Robin):가장 기본적인 알고리즘으로, 각 서버에 순서대로 트래픽을 배분하는 방식구현이 간단하고 모든 서버에 고르게 트래픽이 분배됨서버의 성능 차이를 고려하지 않기 때문에 고성능 서버가 충분히 활용되지 못할 수 있음가중치 라운드 로빈(Weighted Round Robin):서버의 성능에 따라 가중치를 부..
[Algorithm] 분할정복 이론 + 예제
·
🔻Computer Science/Algorithm
❗분할정복이란?문제를 작은 하위 문제로 나누고 각각의 하위 문제를 재귀적으로 해결한 뒤, 그 해답을 결합하여 원래 문제를 해결하는 방법이다. ❗분할정복 기본 원리 분할 (Divide):문제를 더 작은 하위 문제로 나눈다.문제를 동등한 크기의 여러 하위 문제로 분할한다.정복 (Conquer):각 하위 문제를 재귀적으로 해결한다.하위 문제들이 충분히 작아지면 재귀적으로 해결할 수 있으며 이를 기저 조건이라고 한다.기저 조건에서는 하위 문제를 더 이상 분할할 수 없는 상태에 도달한다.합병 (Combine):각각의 하위 문제에서 나온 해답을 합쳐 원래 문제의 해답을 구성한다. ❗예제result = "" # 현재 영역이 모두 같은 숫자로 이루어져 있는지 확인하는 함수def all_same(x, y, size):..
[Database] RDBMS vs NoSQL
·
🔻Computer Science/Database
❗ RDBMS이란?Relational Database Management SystemRDBMS는 관계형 데이터베이스에서 데이터를 관리하고 조작하는 시스템데이터는 테이블(스키마)에 저장되며, 각 테이블은 고정된 컬럼과 데이터 타입을 정의SQL은 RDBMS에서 데이터를 질의하고 처리하는 표준 언어예시: MySQL, PostgreSQL, Oracle, MS SQL Server ✏️특징정형화된 스키마: 데이터를 삽입하기 전에 미리 정의된 스키마(테이블 구조)가 있어야 하며, 데이터는 이 구조를 따라야 함관계: 테이블 간의 관계가 중요하며, 이를 외래 키(Foreign Key)로 연결하여 데이터 무결성을 보장ACID: 데이터베이스 트랜잭션은 원자성(Atomicity), 일관성(Consistency), 고립성(Is..
[OS] Process vs Thread
·
🔻Computer Science/Operating System
❗process란?실행 중인 프로그램을 의미한다. 프로그램이 실행되면 운영체제로부터 독립적인 메모리 공간을 할당 받아서 코드, 데이터, 힙, 스택 등의 영역을 가지고 하나의 작업 단위로 처리된다.Code 영역프로그램의 실행 코드(명령어)가 저장됨프로그램의 기계어 명령들이 위치함read-only이며 실행 중 코드가 변경되지 않도록 보호됨Data 영역초기회된 전역 변수와 정적 변수가 저장되는 영역프로그램이 실행되는 동안 고정된 메모리를 차지하며 종료될 때까지 유지됨Heap 영역동적으로 할당되는 메모리가 저장되는 곳malloc이나 new 같은 함수로 요청되는 메모리가 이곳에 할당됨프로그램 실행 중 메모리 크기를 유동적으로 변경될 수 있음낮은 주소 -> 높은 주소로 확장Stack 영역함수 호출 시 지역 변수와 ..
[Algorithm] Recursion 이론 + 예제
·
🔻Computer Science/Algorithm
❗Recursion이란?함수가 자기 자신을 호출하는 프로그래밍 기법이다. 하나의 함수가 자신의 작업을 해결하는 과정에서 스스로를 다시 호출하여 문제를 반복적으로 해결하는 방식이다. 그래서 종종 복잡한 문제를 더 작은 문제로 나누어 해결할 때 사용한다. ❗ 재귀 함수의 구성 요소기본 조건 (Base Case)재귀 호출이 무한히 반복되지 않도록 하기 위한 종료 조건기본 조건이 만족되면 재귀 호출이 중단되고 함수가 결과를 반환하거나 종료됨재귀 호출 (Recursive Case)문제를 해결하기 위해 함수가 자기 자신을 호출하는 부분보통 이 과정에서 더 작은 크기의 문제로 재귀 호출이 이루어짐 ❗예제def factorial(n): if n == 1: return 1 return n * fa..
[Algorithm] 우선순위 큐 이론 + heapq 사용법
·
🔻Computer Science/Algorithm
❗우선순위 큐(Priority Queue)란?일반적인 큐와 같은 성질을 가지고 있지만 삽입될 때 우선순위를 가지고 이에 따라 값이 처리되는 논리적 자료구조이다.  ❗구현 방법우선순위 큐는 배열, 연결 리스트, 힙(Heap) 등으로 구현할 수 있지만, 힙을 사용하는 것이 가장 일반적이다.힙은 최소힙과 최대힙으로 구분되며 최소 힙을 사용하면 우선순위가 낮은 값(최소값)이 루트에 위치하게 되어, O(log n)의 시간 복잡도로 우선순위가 가장 높은 요소를 추출할 수 있다.반대로 최대힙은 최댓값이 루트에 위치하게 된다.   ❗파이썬의 heapq파이썬에서는 heapq 라이브러리를 활용하여 우선순위 큐를 구현할 수 있다. ✏️import heapqfrom heapq import heapify, heappush, h..
[Algorithm] 백트래킹(+순열, 조합) 이론 + 구현
·
🔻Computer Science/Algorithm
❗BackTracking탐색 알고리즘 중 하나로 가능한 후보 해를 탐색하여 문제를 해결하는 방법이다.  ❗동작 방식1. 해를 구성하는 과정에서 해가 유망한지 확인유망하지 않은 경우 현재 경로를 포기하고 다른 경로로 이동한다.여기서 유망의 기준은 '현재 선택된 경로가 문제의 해답을 구하는 데에 있어서 가능성이 있다'는 의미이다.2. 유망한 경우, 해가 완전한지 확인완전한 해인 경우 해답을 출력하거나 저장한다.완전하지 않은 경우 다음 단계로 나아가 계속 해를 확장한다.  ❗파이썬 구현백트래킹 구현의 가장 대표적인 예시로 순열과 조합을 들 수 있다.이 두 알고리즘을 백트래킹으로 구현하기 위해선 뽑은 숫자를 저장한 arr 리스트, 방문 여부 파악을 위한 visited 리스트가 필요하며 백트래킹 함수 내부에선 해..
[Algorithm] 이분 탐색 이론 + 구현
·
🔻Computer Science/Algorithm
❗이분 탐색이분 탐색이란 정렬된 리스트 안에서 탐색 범위를 절반씩 줄여가며 원하는 값을 찾을 때까지 탐색하는 알고리즘이다 ❗동작 방식사전에 정렬된 리스트에서 39를 찾고자 한다. 1. start = 0, end = 9로 시작하여 두 값의 mid를 찾으면 인덱스 4가 된다.data[4]가 가리키는 값이 20이므로 39보단 작기 때문에 start의 위치는 인덱스 4보다 1 더 큰 곳으로 변경한다.2. start = 5, end = 9로 다시 탐색하면 mid는 인덱스 7이 된다.data[7]이 가리키는 값은 타켓인 39와 동일하기 때문에 탐색이 종료된다.이런 방식으로 target보다 현재 값이 작으면 start값을 변경하고, 크다면 end값을 변경한다. ❗파이썬 구현이분 탐색은 반복문과 재귀 2가지 방식으로 ..
[Algorithm] BFS 이론 + 구현
·
🔻Computer Science/Algorithm
❗BFS너비 우선 탐색이라는 그래프 탐색 기법으로 시작 노드에서 연결된 자식 노드를 모두 탐색 후 다시 자식 노드가 부모 노드가 되어 이 부모 노드의 자식 노드를 넓게 탐색하는 방식이다BFS를 구현하는 방식으론 큐를 이용한다. ❗동작 방식위와 같은 그래프가 있고, 1번 노드에서 시작하여 탐색하고자 한다.손으로 BFS를 풀 때는 1 -> 3 -> 2까지 탐색 후 다음 방문 노드는 3번 노드의 자식 노드인 6번과 4번이 된다.1 -> 3 -> 2 -> 6 -> 4 다음엔 2번 노드의 자식 노드인 5번을 방문하고1 -> 3 -> 2 -> 6 -> 4 -> 5 순서로 그래프 탐색을 완료할 수 있다. ❗파이썬 구현위의 케이스를 파이썬 코드로 구현한 것이다.graph = [[],[3,2],[3,1,4,5],[6,4..
[Algorithm] DFS 이론 + 구현
·
🔻Computer Science/Algorithm
❗DFS깊이 우선 탐색이라는 그래프 탐색 기법으로 시작 노드에서 가장 깊숙히 들어가서 노드를 탐색한 후 다시 상위 노드로 이동하여 다른 루트를 탐색하는 방식이다.DFS를 구현하는 방식으론 스택과 재귀 호출이 있는데 해당 포스트에선 재귀 호출로 설명하고자 한다! ❗동작 방식위와 같은 그래프가 있고, 1번 노드에서 시작하여 탐색하고자 한다.손으로 DFS를 풀 때는 1 -> 3 -> 6까지 탐색 후 더이상 나아갈 노드가 없기 때문에 3번 노드까지 거슬러 올라오게 된다.그 후 3번의 자식 노드 중 방문하지 않은 4를 방문하고 이어서 탐색하면결국 DFS의 방문 노드 순서는 1 -> 3 -> 6 -> 4 -> 2 -> 5이 된다. ❗파이썬 구현위의 케이스를 파이썬 코드로 구현한 것이다.graph = [[],[3,2..
_니지
'🔻Computer Science' 카테고리의 글 목록