목록전체 글 (12)
404 Brain Not Found

스택 메모리는 왜 필요할까?위의 사진은 exe 파일을 실행 시 저장 공간(ssd, hdd)에서 실행에 필요한 정보들이 메모리(ram)에 올라가는 것을 시각적으로 잘 표현한 이미지입니다. 그리고 실제로 해당 section .text, section .data, section .rsrc는 어셈블리어에서 실제로 사용되는 영역입니다. .text: 프로그램 소스 코드가 저장되는 공간.data:전역변수들이 저장되는 공간 (초기화되어 있음).rsrc: 전역변수들이 저장되어 있는 공간 (초기화되어 있지 않음) 간단하게 변수를 담아서 출력하는 어셈블리어 코드를 작성해 보겠습니다.(스택 메모리를 사용하지 않고. data 영역에 있는 걸 사용하겠습니다) section .textglobal mainextern prin..

UNION, UNION ALL 구문에 대해서 정리해 보겠습니다.관계형 데이터베이스에서 여러 테이블을 JOIN 해서 보여줄 때는 참조할 수 있는 key가 존재해야 합니다.하지만 그렇지 않은 상황에서도 여러 테이블을 합쳐서 출력하고 싶을 때가 있습니다. 그럴 때 UNION, UNION ALL을 사용합니다. 요약하자면 UNION과 UNION ALL은 SQL에서 두 개 이상의 SELECT 문의 결과를 결합하는 데 사용되는 중요한 연산자입니다. 각각의 특징과 차이점을 설명해 드리겠습니다. 1. UNION-두 개 이상의 SELECT 문의 결과를 결합합니다.-중복된 행을 제거합니다. 결과 집합에는 고유한 행만 포함됩니다. -결과를 정렬합니다. (대부분의 데이터베이스 시스템에서).-성능 면에서는 UNION ALL보다 ..

관계형 데이터 베이스에서 관계를 맺고 있는 테이블의 데이터를 조회하기 위해서는 JOIN을 사용합니다.A 와 B 테이블을 설계하였을때 A 와 B 두개의 테이블을 참조할 수 있는 Key가 존재한다면 두개의 테이블의 데이터를 합쳐서 출력할 수 있습니다. 이것이 관계형 데이터 베이스의 장점입니다. 이때 두개의 테이블의 데이터를 합칠수 있는 구문이 바로 JOIN입니다. 관계가 있는 두개의 테이블을 하나로 합쳐서 표현할 수 있습니다. JOIN 문법은 대표적으로 6개가 존재합니다.주요 JOIN 유형1. INNER JOIN: 두 테이블에서 조인 조건을 만족하는 행만 반환합니다.SELECT * FROM Orders oINNER JOIN Customers c ON o.CustomerID = c.CustomerID 2. ..

관계형 데이터 베이스를 사용할때 대부분 직접적으로 SQL 구문을 작성하게 됩니다.이때 성능에 큰 영향을 미치는것은 주로 데이터를 조회하는 것 입니다. 데이터를 조회할때 SELECT 쿼리를 작성하게 되는데, 성능이 좋은 SELECT 쿼리를 작성하기 위해서는 SELECT 문의 실행 순서를 알아봐야 할 필요가 있습니다. STEP 1. SELECT 문의 실행 순서.1. FROM : 데이터를 가져올 테이블을 지정합니다.2. WHERE: 조건에 맞는 행을 필터링합니다.3. GROUP BY: 지정된 열을 기준으로 행을 그룹화합니다.4.HAVING: 그룹화된 결과에 대한 조건을 적용합니다.5.SELECT: 최종적으로 출력할 열을 선택합니다.6.ORDER BY: 결과를 정렬합니다.7.LIMIT / OFFSET: 결과의..

분류:비선형 자료구조계층적 자료구조이진 트리의 일종특징:각 노드는 최대 두 개의 자식 노드를 가짐모든 노드에 대해 왼쪽 서브트리의 값 중위 순회(In-order traversal)시 정렬된 순서로 노드를 방문평균적인 경우 탐색, 삽입, 삭제 연산의 시간 복잡도는 O(log n)최악의 경우(불균형 트리) 시간 복잡도는 O(n)중복된 키를 허용하지 않음 (일반적인 구현의 경우)트리의 균형이 무너질 경우 성능이 저하될 수 있음자가 균형 이진 탐색 트리(예: AVL 트리, 레드-블랙 트리)는 이를 보완사용처:데이터베이스 인덱싱심볼 테이블 구현 (컴파일러, 인터프리터)우선순위 큐 구현파일 시스템의 디렉토리 구조검색 엔진의 검색어 자동 완성 기능수학 및 컴퓨터 과학의 집합 ADT(Abstract Data Type)..

분류:비선형 자료구조노드(정점)와 엣지(간선)로 구성된 자료구조특징:노드(Vertex)와 노드 간의 관계를 나타내는 엣지(Edge)로 구성방향 그래프(Directed Graph)와 무방향 그래프(Undirected Graph)로 구분가중치 그래프(Weighted Graph)와 비가중치 그래프로 구분순환(Cycle)이 있을 수 있음연결 그래프(Connected Graph)와 비연결 그래프로 구분인접 행렬(Adjacency Matrix) 또는 인접 리스트(Adjacency List)로 표현 가능트리는 그래프의 특수한 형태노드 간의 경로(Path)와 거리(Distance) 개념 존재탐색 알고리즘: 깊이 우선 탐색(DFS), 너비 우선 탐색(BFS) 등사용처:소셜 네트워크 분석 및 모델링지도 및 내비게이션 시스..

분류:추상 자료형(Abstract Data Type)힙(Heap) 기반 자료구조특징:각 요소가 우선순위를 가지며, 높은 우선순위의 요소가 먼저 나가는 큐일반적으로 힙(주로 이진 힙)을 사용하여 구현됨삽입(enqueue)과 삭제(dequeue) 연산의 시간 복잡도는 O(log n)최고 우선순위 요소 접근은 O(1) 시간 복잡도우선순위는 요소의 값 자체이거나 별도의 우선순위 값으로 정의될 수 있음동일한 우선순위의 요소들 사이의 순서는 보장되지 않음최대 우선순위 큐(max-priority queue)와 최소 우선순위 큐(min-priority queue)로 구현 가능사용처:운영체제의 작업 스케줄링 (높은 우선순위 프로세스 먼저 실행)네트워크 패킷 라우팅 (QoS 기반 패킷 처리)이벤트 드리븐 시뮬레이션허프만 ..

분류:비선형 자료구조완전 이진 트리(Complete Binary Tree) 기반우선순위 큐를 위해 고안된 자료구조특징:부모 노드와 자식 노드 간의 대소 관계가 일정한 완전 이진 트리최대 힙(Max Heap): 부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진 트리최소 힙(Min Heap): 부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같은 완전 이진 트리중복된 값을 허용배열을 사용하여 효율적으로 구현 가능삽입과 삭제 연산의 시간 복잡도는 O(log n)최대값 또는 최소값을 O(1) 시간에 찾을 수 있음힙 속성(Heap Property)을 유지하기 위해 삽입과 삭제 후 재정렬(heapify) 과정 필요사용처:우선순위 큐 구현힙 정렬(Heap Sort) 알고리즘운영체제의 작업 스케줄..

분류:선형 자료구조동적 배열 기반 자료구조특징:내부적으로 배열을 사용하여 요소를 저장크기가 동적으로 조절됨 (자동으로 크기가 증가하거나 감소)인덱스를 통한 랜덤 접근이 가능 (O(1) 시간 복잡도)요소 추가 시 평균적으로 O(1) 시간 복잡도, 최악의 경우 O(n)중간에 요소를 삽입하거나 삭제할 경우 O(n) 시간 복잡도메모리 상에서 연속적으로 위치용량(Capacity)과 크기(Size) 개념이 분리되어 있음배열의 크기를 늘릴 때 일반적으로 현재 크기의 1.5배 또는 2배로 증가사용처:요소의 개수가 가변적인 목록을 다룰 때빈번한 조회 작업이 필요한 경우데이터의 인덱스 기반 접근이 많은 경우주로 읽기 작업이 많고, 삽입/삭제가 끝부분에서 주로 일어나는 경우데이터베이스의 결과셋 처리GUI 컴포넌트의 아이템 ..

분류:선형 자료구조양방향 입출력 구조특징:양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조Queue와 Stack의 특성을 모두 가짐네 가지 기본 연산 제공: 전단 삽입/삭제, 후단 삽입/삭제양쪽에서 데이터 접근이 가능하므로 더 유연한 데이터 관리 가능일반적으로 동적 할당 배열이나 이중 연결 리스트로 구현원소의 개수가 n개일 때, 양 끝 원소의 삽입/삭제는 O(1) 시간 복잡도를 가짐사용처:앞뒤로 제거와 삽입이 자주 일어나는 자료구조가 필요한 경우웹 브라우저의 방문 기록 (앞으로 가기/뒤로 가기)문자열 편집기에서 undo/redo 기능 구현작업 스케줄링 (우선순위에 따라 앞뒤로 작업 추가/제거)회문(palindrome) 검사슬라이딩 윈도우 관련 문제 해결큐와 스택을 동시에 활용해야 하는 알고리즘#pragma..