반응형

전체 글 436

해시 테이블(Hash Table)과 시간복잡도 관계

**해시 테이블이란?**- 키(Key)를 값(Value)에 매핑하는 자료구조- 해시 함수를 사용하여 키를 배열의 인덱스로 변환- 평균적으로 O(1)의 시간복잡도로 데이터 접근 가능**시간복잡도**기본 연산:1. 삽입(Insert): O(1) 평균, O(n) 최악2. 삭제(Delete): O(1) 평균, O(n) 최악3. 검색(Search): O(1) 평균, O(n) 최악```python# 해시 테이블 구현 예시class HashTable: def __init__(self, size): self.size = size self.table = [[] for _ in range(size)] def hash_function(self, key): return ..

개발공부/CS 2025.02.16

[자료구조] 레드블랙 트리

레드블랙 트리는 모든 노드를 빨간색 또는 검은색으로 색칠합니다.그리고 연결된 노드들은 색이 중복되지 않도록 관리됩니다. 레드블랙 트리는 자가 균형 이진 탐색 트리의 한 종류로, 각 노드에 색상(빨간색 또는 검은색)을 부여하여 균형을 유지합니다.**기본 규칙**1. 모든 노드는 빨간색 또는 검은색2. 루트는 항상 검은색3. 모든 리프(NIL)는 검은색4. 빨간 노드의 자식은 모두 검은색5. 임의의 노드에서 그 노드의 자손인 리프까지 가는 경로들은 모두 같은 수의 검은 노드를 포함**구현 예시**```pythonclass Node: def __init__(self, key): self.key = key self.left = None self.right = None ..

개발공부/CS 2025.02.16

[자료구조] AVL 트리란?

AVL 트리란 한 쪽으로 값이 치우치는 이진 균형트리의 한계점을 보완하기 위해 만들어진 균형 잡힌 이진트리.AVL은 항상 좌/우로 데이터를 균형잡힌 상태로 유지하기 위해서 추가연산을 진행. AVL 트리는 자가 균형 이진 탐색 트리(self-balancing binary search tree)의 한 종류입니다. 모든 노드의 왼쪽과 오른쪽 서브트리의 높이 차이가 최대 1을 유지하도록 자동으로 균형을 잡습니다.**핵심 개념**1. 균형 인수(Balance Factor)- BF = 왼쪽 서브트리 높이 - 오른쪽 서브트리 높이- 모든 노드의 BF는 -1, 0, 1 중 하나여야 함2. 회전 연산```pythonclass Node:    def __init__(self, key):        self.key = k..

개발공부/CS 2025.02.16

MSA(Microservices Architecture)란?

MSA(Microservices Architecture)애플리케이션을 작은 독립적인 서비스들로 분리하는 아키텍처각 서비스는 독립적으로 개발, 배포, 확장 가능MSA의 장단점: 장점:독립적인 개발과 배포기술 스택 유연성확장성과 유지보수성장애 격리단점:분산 시스템의 복잡성트랜잭션 관리의 어려움테스트와 디버깅의 복잡성운영 관리의 부담초기 개발 비용과 시간 증가이러한 기술들은 현대 소프트웨어 개발에서 자주 함께 사용됩니다: 예시 구성:- MSA 기반 시스템  - DDD 원칙으로 설계된 마이크로서비스들  - Docker로 컨테이너화  - Kubernetes로 운영 관리

개발공부/CS 2025.02.16

DDD(Domain-Driven Design)란?

DDD(Domain-Driven Design)비즈니스 도메인을 중심으로 소프트웨어를 설계하는 방법론주요 개념:유비쿼터스 언어바운디드 컨텍스트애그리게이트도메인 이벤트엔티티와 값 객체**핵심 개념과 원칙**1. 전략적 설계 (Strategic Design)- 바운디드 컨텍스트 (Bounded Context)  - 특정 도메인 모델이 적용되는 명확한 경계  - 예: '주문' 컨텍스트와 '배송' 컨텍스트는 서로 다른 규칙과 개념을 가짐- 유비쿼터스 언어 (Ubiquitous Language)  - 도메인 전문가와 개발자가 공유하는 공통 언어  - 코드, 문서, 대화에서 일관되게 사용  - 예: '주문'이라는 용어가 모든 맥락에서 동일한 의미를 가짐2. 전술적 설계 (Tactical Design)- 엔티티 (En..

개발공부/CS 2025.02.16

쿠버네티스란?

쿠버네티스(Kubernetes)컨테이너 오케스트레이션 플랫폼도커 컨테이너를 자동으로 배포, 확장, 관리부하 분산, 자동 복구, 무중단 배포 지원**개념**쿠버네티스는 컨테이너화된 애플리케이션의 자동 배포, 스케일링, 관리를 위한 오픈소스 플랫폼입니다.**주요 컴포넌트**1. 마스터 노드 컴포넌트- API Server: 모든 통신의 중심점- etcd: 클러스터의 상태 정보 저장소- Scheduler: 새로운 워크로드 배치 담당- Controller Manager: 클러스터 상태 관리2. 워커 노드 컴포넌트- kubelet: 노드에서 컨테이너 실행 관리- kube-proxy: 네트워크 규칙과 포워딩 관리- Container Runtime: 컨테이너 실행 환경**핵심 개념**1. Pod```yamlapiVer..

개발공부/CS 2025.02.16

메시지 큐(Message Queue)

메시지 큐는 프로그램 간에 데이터를 주고받을 때 사용하는 비동기 통신 방식입니다. 주요 특징과 장점을 살펴보겠습니다:작동 방식:- 발신자(Producer)가 메시지를 큐에 보냅니다- 수신자(Consumer)가 자신의 처리 속도에 맞춰 큐에서 메시지를 가져갑니다- 메시지는 선입선출(FIFO) 방식으로 처리됩니다주요 장점:1. 비동기 처리- 시스템 간 즉각적인 응답이 필요 없어 서로 독립적으로 동작할 수 있습니다- 부하 분산과 성능 향상에 도움이 됩니다2. 안정성- 메시지 유실 방지- 시스템 장애 시에도 메시지가 보존됩니다3. 확장성- 시스템 간 결합도를 낮출 수 있습니다- 새로운 시스템 추가가 용이합니다대표적인 사용 사례:```1. 이메일 발송- 사용자 가입 → 메시지 큐에 환영 이메일 요청 추가 → 이메..

개발공부/CS 2025.02.16

프레임워크와 라이브러리의 차이점

프레임워크와 라이브러리의 주요 차이점을 설명해드리겠습니다.가장 중요한 차이는 '제어의 주체'입니다:라이브러리:- 개발자가 직접 제어 흐름을 결정합니다- 필요한 기능만 골라서 호출하여 사용할 수 있습니다- 예를 들어 jQuery, Moment.js와 같이 특정 기능을 모아둔 도구 모음입니다프레임워크: - 프레임워크가 전체적인 흐름을 제어합니다- 개발자는 프레임워크가 정해둔 규칙과 설계 원칙을 따라야 합니다- Spring, Django, Angular와 같이 전체적인 아키텍처와 규칙을 제공합니다이를 비유하자면:- 라이브러리는 가구를 직접 배치할 수 있는 빈 방과 같습니다. 원하는 가구(기능)를 원하는 위치에 놓을 수 있습니다.- 프레임워크는 이미 가구가 배치된 방과 같습니다. 방의 구조(아키텍처)는 이미 정..

개발공부/CS 2025.02.16

파라미터(Parameter)와 아규먼트(Argument)의 차이점

## 파라미터(Parameter)와 아규먼트(Argument)의 차이점프로그래밍에서 함수를 정의하고 호출할 때 사용되는 용어인 파라미터(Parameter)와 아규먼트(Argument)는 종종 혼동되어 사용되지만, 명확한 차이가 있습니다.### 1. 파라미터(Parameter)* **정의**: 함수를 정의할 때 함수 내부에서 사용될 변수의 이름으로, 함수 선언 부분에 나열됩니다.* **역할**: 함수가 입력받을 값을 나타내는 **형식적인 변수**입니다.* **예시**:```pythondef my_function(x, y):  # x와 y는 파라미터    return x + y```### 2. 아규먼트(Argument)* **정의**: 함수를 호출할 때 함수에 실제로 전달되는 값입니다.* **역할**: 함수..

개발공부/CS 2025.02.16

Call by Reference

## Call by Reference (참조 호출)**Call by Reference (참조 호출)**는 함수나 메서드를 호출할 때 인자로 변수의 **주소**를 전달하는 방식을 말합니다. ### Call by Value (값 호출) 와의 차이점* **Call by Value (값 호출)**: 변수의 **값**을 복사하여 함수에 전달합니다. 함수 내에서 인자의 값이 변경되어도 원래 변수에는 영향을 주지 않습니다.* **Call by Reference (참조 호출)**: 변수의 **주소**를 전달하므로 함수 내에서 인자의 값을 변경하면 원래 변수의 값도 함께 변경됩니다.### 장점* 함수 내에서 원래 변수의 값을 직접 변경할 수 있습니다.* 큰 데이터를 복사하지 않고 주소만 전달하므로 메모리 효율성이 좋습니..

개발공부/CS 2025.02.16
728x90