반응형

2025/02/16 30

[운영체제] 바이트 오더링(Byte Ordering)?

바이트 오더링(Byte Ordering) 또는 **엔디안(Endian)**은 컴퓨터 시스템에서 멀티바이트 데이터를 메모리에 저장할 때, 각 바이트의 저장 순서를 정의하는 방식입니다. 즉, 멀티바이트 값을 메모리에 저장할 때, 그 값이 어떤 순서로 저장될지를 결정하는 규칙입니다.1. 엔디안(Endian)의 종류빅 엔디안(Big Endian):가장 중요한 바이트(상위 바이트)가 메모리의 낮은 주소에 저장됩니다.예를 들어, 4바이트 값 0x12345678을 빅 엔디안 방식으로 저장하면, 메모리에는 다음과 같이 저장됩니다:주소: 0x00 0x01 0x02 0x03값: 0x12 0x34 0x56 0x78즉, 최상위 바이트인 0x12가 먼저, 최하위 바이트인 0x78이 마지막에 저장됩니다...

개발공부/CS 2025.02.16

[자료구조] 트리(Tree)란?

**트리(Tree)**는 계층적(hierarchical) 구조를 가진 데이터 구조로, **노드(Node)**들로 구성됩니다. 트리 구조는 하나의 루트(root) 노드에서 시작해 하위 노드들로 분기하는 방식으로 이루어져 있으며, 각 노드는 여러 개의 자식 노드를 가질 수 있습니다.1. 기본 구성 요소루트(Root): 트리의 최상위 노드. 트리 구조에서 모든 노드는 루트에서 시작하여 탐색됩니다.노드(Node): 데이터를 포함하는 기본 단위로, 트리의 각 요소를 나타냅니다.간선(Edge): 부모 노드와 자식 노드를 연결하는 선. 트리 내의 노드들은 간선으로 연결됩니다.자식(Child): 부모 노드에서 분기된 하위 노드.부모(Parent): 자식 노드를 가진 노드.리프(Leaf): 자식이 없는 노드, 트리의 끝..

개발공부/CS 2025.02.16

[자료구조] Linked List란?

**Linked List (링크드 리스트)**는 데이터를 **노드(Node)**라는 단위로 저장하는 선형 데이터 구조입니다.각 노드는 데이터와 **다음 노드에 대한 참조(혹은 포인터)**를 가지고 있어,데이터를 연속된 메모리 공간에 저장하는 대신,각 노드가 다른 노드를 참조하면서 연결됩니다.1. 구조**노드(Node)**는 두 가지 주요 요소로 구성됩니다:데이터: 실제로 저장하려는 값이나 객체다음 노드를 가리키는 포인터(혹은 참조): 리스트 내에서 다음 노드를 가리키는 참조(포인터)를 가짐예시로, 각 노드는 다음과 같이 구조화됩니다:[데이터 | 다음 노드 포인터] → [데이터 | 다음 노드 포인터] → [데이터 | null]마지막 노드는 null을 참조하여 끝을 나타냅니다.2. 종류단일 연결 리스트 (S..

개발공부/CS 2025.02.16

[자료구조] Stack과 Queue의 차이점은?

Stack과 Queue는 모두 데이터를 저장하는 자료 구조이지만, 데이터의 삽입과 삭제 방식에서 큰 차이가 있습니다.1. Stack (스택)동작 방식: 후입선출 (LIFO, Last In First Out) 방식으로 동작합니다. 즉, 가장 나중에 삽입된 데이터가 먼저 삭제됩니다.주요 연산:push: 데이터를 스택에 삽입합니다.pop: 스택에서 가장 최근에 삽입된 데이터를 삭제하고 반환합니다.peek: 스택의 가장 위에 있는 데이터를 삭제하지 않고 확인합니다.사용 예시:함수 호출의 추적(재귀 호출 등)웹 브라우저의 뒤로 가기 기능 (방문한 페이지를 스택처럼 관리)특징:삽입과 삭제가 항상 스택의 맨 위에서만 이루어집니다.LIFO 방식으로, 가장 마지막에 들어온 데이터가 가장 먼저 나옵니다.2. Queue (..

카테고리 없음 2025.02.16

[자료구조] Linked List와 Array List 차이는?

링크드 리스트와 어레이 리스트는 모두 데이터를 저장하는 자료 구조이지만, 구현 방식과 성능 특성에서 차이가 있습니다.1. 구현 방식어레이 리스트 (Array List):내부적으로 연속된 메모리 공간을 사용하여 데이터를 저장합니다.배열로 구현되며, 인덱스를 사용해 요소에 접근합니다.고정된 크기의 메모리 블록을 사용하고, 크기가 초과하면 크기를 늘리기 위해 새로운 배열을 할당하고 기존 값을 복사하는 방식으로 처리됩니다.링크드 리스트 (Linked List):각 요소가 데이터와 '다음' 요소를 가리키는 포인터(혹은 참조)를 포함하는 노드로 구성됩니다.요소들이 연속된 메모리 공간에 저장되지 않고, 각각의 노드가 다른 노드를 참조하는 형태입니다.2. 특징어레이 리스트:장점:인덱스 접근 시간: O(1)로 빠릅니다...

개발공부/CS 2025.02.16

해시 테이블(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
728x90