트리(tree)
·
Computer Science/Data Structure
트리(tree)란?트리는 계층적 구조를 가지는 비선형 자료구조이다. 순환(Cycle)이 없는 연결 구조이다.트리는 루트(Root) 노드에서 시작하여, 자식(Child) 노드로 연결되는 노드들로 구성된다.각 노드는 자식 노드를 가질 수 있으며, 노드 간 연결은 부모-자식 관계를 나타낸다. 또한, 부모 노드는 한개만 가질 수 있다.노드의 개수가 N이면, 간선의 수는 항상 N-1개이다.   트리의 구성  루트(Root): 트리의 최상단 노드이다. 트리는 루트 노드에서 시작된다.노드(Node): 트리의 각 요소를 나타낸다. 각 노드는 데이터와 자식 노드에 대한 포인터를 포함한다.부모(Parent): 특정 노드의 바로 위에 있는 노드이다.자식(Child): 특정 노드 바로 아래에 있는 노드이다.리프(Leaf): ..
해시(Hash) - 특징, 충돌 현상 원인과 해결 기법
·
Computer Science/Data Structure
해시(Hash)란?해시는 임의의 크기를 가진 데이터를 고정된 크기의 값으로 변환하는 함수 또는 알고리즘이다.이 과정을 통해 생성된 고정 크기의 값을 '해시 값'이라고 한다.  해시 관련 용어 정리해시 (Hash)임의의 값을 고정 길이로 변환해시 테이블 (Hash Table)키 값의 연산에 의해 직접 접근 가능한 데이터 구조해시 함수 (Hash Function)Key에 대해 산술 연산을 이용해 데이터 위치를 찾을 수 있는 함수해시 값 (Hash Value) / 해시 주소(Hash Address)Key를 해시 함수로 연산해서 해시 값을 알아내고,이를 기반으로 해시 테이블에서 해당 Key에 대한 데이터를 일관성 있게 찾을 수 있음해시 버킷 (Hash Bucket) / 해시 슬롯 (Hash Slot)버킷 : 각..
키(Key)
·
Computer Science/Database
Key의 목적⭐️고유 식별자테이블 내 레코드(행)을 식별하거나 특정 속성에 대해 고유한 값을 유지하는데된다.⭐️효율적인 관리와 검색인덱스를 통해 키를 사용하여 데이터를 빠르게 검색할 수 있다.데이터 모델링특히, 관계형 데이터베이스에서 키를 사용하여 테이블 간의 관계를 정의하고 데이터 모델을 설계할 수 있다.  Key의 종류 기본 키 (Primary Key)각 레코드를 고유하게 식별하는데 사용되는 하나 이상의 속성(attribute)의 집합이다.기본 키는 고유해야하며, Null 값을 가질 수 없다. 후보 키 (Candidate Key)테이블 내의 각 레코드를 고유하게 식별할 수 있는 속성 또는 속성의 집합입니다.하나의 테이블에는 여러 후보 키가 있을 수 있으며, 그 중 하나가 기본 키로 선택된다. 대체 키..
Database와 DBMS
·
Computer Science/Database
데이터베이스란?일정한 규칙이나 규약을 통해 구조화되어 저장되는 데이터 모음.다양한 형태와 구조로 존재하며 사용자나 애플리케이션이 데이터를 효율적으로 저장하고 검색할 수 있도록 설계되어 있다. 데이터 무결성:데이터베이스는 데이터의 일관성과 정확성을 유지하는 데 도움을 준다.데이터 보안:사용자 접근 권한을 설정하여 민감한 데이터를 보호할 수 있다.효율적인 데이터 관리:대량의 데이터를 효율적으로 저장하고 검색할 수 있다.데이터 중복 최소화:데이터베이스는 데이터 중복을 줄이고 저장 공간을 절약하는 데 기여한다.    주요 설계 개념엔티티(Entity)데이터베이스에서 관리해야 할 대상이나 객체를 모델링한 것.DB내에서 하나의 고유하게 식별될 수 있는 속성들을 가짐.실 세계의 사물, 개념, 사람 등을 나타낼 수 있..
큐(Queue) - Array와 LinkedList로 구현, 원형큐, 덱/데크(Deque)
·
Computer Science/Data Structure
큐란?큐는 FIFO(First In First Out) 원칙을 따르는 선형 데이터 구조이다. 즉, 삽입된 순서대로 삭제가 처리된다.   큐 연산 주요 연산인 enqueue, dequeue 외에도 peek(front), empty, size 등의 연산이 있다.enqueue: 큐의 뒤(rear) 끝에 새로운 데이터를 추가하는 연산dequeue: 큐의 앞(front) 끝에서 데이터를 제거하고 반환하는 연산front 또는 peek: 큐의 앞에 있는 데이터를 제거하지 않고 반환하는 연산empty: 큐가 비어 있는지 확인하는 연산size: 큐에 있는 데이터의 개수를 반환하는 연산   큐 구현큐도 스택과 마찬가지로 배열이나 연결 리스트를 사용하여 구현할 수 있다.데이터 크기 예측 가능한 경우         ->  ..
스택(Stack) - Array와 LinkedList로 구현
·
Computer Science/Data Structure
스택이란?LIFO(Last In First Out) 구조를 갖는 자료구조를 말한다. 즉, 나중에 삽입된 데이터가 먼저 삭제되는 구조이다.데이터를 일시적으로 저장할 때 매우 유용한 선형 데이터 구조이다.   스택 연산스택에는 push, pop과 같은 주요 연산과 peek(top), empty, size 등의 연산을 가질 수 있다. push: 스택의 맨 위에 데이터를 삽입하는 연산pop: 스택의 맨 위에 있는 데이터를 삭제하고 반환하는 연산peek 또는 top: 스택의 맨 위에 있는 데이터를 삭제하지 않고 반환하는 연산empty: 스택이 비어 있는지를 확인하는 연산size: 스택에 있는 데이터의 개수를 반환하는 연산   구현스택은 배열이나 연결리스트를 사용하여 구현할 수 있다.데이터 크기 예측 가능한 경우 ..
배열(Array)과 리스트(List), ArrayList와 Linked List
·
Computer Science/Data Structure
배열(Array)배열은 동일한 데이터 타입의 요소들이 연속된 메모리 공간에 저장된 자료 구조이다.특징 : 배열 선언 시 크기가 고정된다.한번 결정된 크기는 변경할 수 없다.인덱스를 사용하여 요소에 빠르게 접근할 수 있으며, 인덱스는 0부터 시작한다.배열 안의 모든 요소가 동일한 데이터 타입을 가진다.연속된 메모리 공간에 할당 된다. Java에서 배열 다루기// 배열 만들기int[] arr1;// 배열 만들면서 크기 지정int[] arr2 = new int[5];// 배열 만들면서 크기+값 지정int[] arr3 = {1, 2, 3, 4, 5};// arr3 배열에서 index 0인 요소에 접근System.out.println(arr3[0]); // 1   Java의 Arrays 클래스Java에서 배열 자..
메모리 할당 - 연속할당(고정분할, 가변분할)과 불연속할당(페이징, 세그멘테이션, 페이지드세그멘테이션), 단편화
·
Computer Science/Operating System
단편화내부단편화외부단편화메모리 블록 안에 사용되지 않는 공간이 발생하는 현상.메모리 블록 밖에 사용 가능한 메모리 공간이 여러 조각으로 나뉘어, 필요한 만큼의 큰 연속된 메모리 블록을 확보하지 못하는 현상.      프로그램에 필요한 메모리를 할당할 때 시작 메모리 위치, 메모리 할당 크기를 기반으로 할당하며, 연속할당과 불연속 할당으로 나뉜다.  연속할당 (contiguous memory allocation)하나의 연속된 메모리 블록에 프로세스를 할당하는 방식. 물리적으로 연속된 공간을 사용하는 메모리 관리 기법이다. 고정 분할 (Fixed Partitioning)메모리를 일정한 크기로 분할하여 프로세스를 할당하는 방식. 즉, 시스템이 시작될 때 고정된 크기의 파티션으로 나누고 이 크기가 변하지 않는다..
캐시 종류와 캐시 매핑( 직접매핑, 연관매핑, 집합-연관 매핑)
·
Computer Science/Operating System
캐시(cache)란?캐시는 컴퓨팅에서 자주 사용되는 데이터나 연산 결과를 임시로 저장하는 고속 메모리이다.메인 메모리보다 빠른 속도로 데이터에 접근할 수 있도록 설계되어 있어, 시스템 성능을 크게 향상시킬 수 있다.특히 CPU와 메모리 간의 병목 현상을 줄이는 데 중요한 역할을 한다.  캐시 히트(Cache Hit)요청한 데이터가 캐시에 존재하는 경우를 뜻함. 캐시 히트가 발생하면 데이터 접근시간이 매우 짧아짐.캐시 미스(Cache Miss)요청한 데이터가 캐시에 없는 경우를 뜻함. 캐시 미스가 발생하면 메인메모리에서 데이터를 가져와야함. 접근시간 길어짐.캐시 일관성(Cache Coherency)여러 캐시가 동일한 메모리 영역을 공유할 때 데이터 일관성을 유지하는 메커니즘. 특히 멀티프로세서 시스템에서 ..