Maximize Your Potential

CSKnowledge 10

[CS지식 공부하기] 데이터베이스 - InnoDB vs MyIsam

InnoDB의 주요 특징과 장점 트랜잭션 지원InnoDB는 완벽한 ACID(Atomicity, Consistency, Isolation, Durability) 모델을 지원하는 트랜잭션을 제공합니다. 이는 데이터의 정합성과 안정성을 보장하며, 여러 작업을 그룹화하여 하나의 작업으로 관리할 수 있습니다. 외래키 지원데이터베이스 설계에서 중요한 요소인 외래키를 지원합니다. 이를 통해 데이터 간의 일관성을 유지하고 복잡한 쿼리와 관계를 효율적으로 관리할 수 있습니다. MVCC (Multi-Version Concurrency Control)동시성을 높이기 위해 여러 버전의 데이터를 관리할 수 있는 기능을 제공합니다. 이는 읽기 작업 중에 발생할 수 있는 락 경쟁을 최소화하여 성능을 향상시킵니다. Locking L..

CSKnowledge 2024.08.15

[CS지식 공부하기] 데이터베이스 MySQL 엔진 처리 동작 과정

쿼리파서쿼리파서는 쿼리를 요청 받았을 때 가장 먼저 작동하는 구간입니다. 사용자의 요청으로 들어온 SQL구문을 토큰으로 분리해 트리형태의 구조로 변경합니다. 쿼리파서는 쿼리를 파싱한후 SQL 구문의 문법오류 여부 확인합니다. 이후 전처리기로 보내게 됩니다. 전처리기전처리기는 SQL 쿼리의 유효성을 검증하는 중요한 단계입니다. 먼저, Parser가 만든 트리를 기반으로 SQL 구문의 유효성을 검사합니다. 각 토큰을 테이블이나 컬럼명, 내장 함수 등의 개체와 매핑하여 해당 객체의 존재 여부와 접근 권한을 확인합니다. 이 과정에서 권한이 없는 개체의 토큰은 걸러지게 됩니다. 옵티마이저옵티마이저는 SIUD와 같은 쿼리를 최적으로 실행하기 위한 실행 계획을 수립하는 프로세스입니다. 이때 비용 기반 최적화와 규칙 ..

CSKnowledge 2024.08.14

[CS지식 공부하기] 데이터베이스 - MySQL의 구성 요소: 엔진과 스토리지 엔진

MySQL은 관계형 데이터베이스 관리 시스템(RDBMS)으로, 데이터의 저장, 관리, 접근을 담당하는 여러 구성 요소로 구성되어 있습니다. MySQL의 구성요소를 알면 쿼리문 하나 하나 날릴 때마다 어떤 식으로 동작하는 지 조금더 자세히 할수 있게 되고, 오류를 더 쉽게 수정할수 있을 듯합니다. 이 글에서는 MySQL의 핵심 구성 요소인 MySQL 엔진과 스토리지 엔진에 대해 살펴보겠습니다.MySQL 엔진MySQL 엔진은 클라이언트의 접속과 SQL 요청을 처리하는 역할을 합니다. 이를 위해 다음과 같은 논리적인 절차를 거칩니다. 일종의 사람에게서 두뇌와 같은 역할을 하며, 논리적인 절차로 결정을 내립니다.쿼리 파싱 및 전처리: 클라이언트로부터 받은 SQL 쿼리를 분석하여 문법적으로 올바른지 확인하고, 실..

CSKnowledge 2024.08.13

[CS지식 공부하기] 알고리즘 - 그래프: 이해와 활용하는 자료구조

그래프는 현대의 정보 시대에서 다양한 분야에서 활발히 사용되는 중요한 자료구조입니다. 이 글에서는 그래프의 기본 개념과 그래프를 활용하는 방법에 대해 알아보겠습니다. 또한, 이를 통해 다양한 분야에서 그래프가 어떻게 활용되는지에 대해 살펴보겠습니다.그래프의 기본 개념그래프는 노드(정점)와 간선(엣지)으로 이루어진 자료구조입니다. 이 노드들은 서로 연결되어 있으며, 이 연결 관계가 그래프의 핵심입니다. 무방향 그래프는 간선에 방향이 없는 경우이며, 양쪽으로 이동할 수 있습니다. 반면에 유향 그래프는 간선에 방향이 있는 경우로, 한 방향으로만 이동할 수 있습니다.Adjacency정점을 연결하는 모서리가 있는 경우 정점이 다른정점과 인접하다고 함Path(경로)정점 A에서 정점 B로 이동할 수 있는 일련의 가장..

CSKnowledge 2024.08.12

[CS지식 공부하기]알고리즘 - 이진 검색 트리(Binary Search Tree, BST)의 이해와 Up & Down 게임 비교, 트라이(Trie) 문자열 검색의 효율적인 해결책

이진 검색 트리란?이진 검색 트리(Binary Search Tree, 이하 BST)는 데이터의 검색 속도를 최적화하기 위해 고안된 데이터 구조입니다. 이 구조에서 각 노드는 최대 두 개의 자식 노드(왼쪽 및 오른쪽)를 가지며, 각 노드는 다음과 같은 특정 규칙을 준수합니다:노드의 왼쪽 하위 트리에 있는 모든 요소는 해당 노드보다 작습니다.노드의 오른쪽 하위 트리에 있는 모든 요소는 해당 노드보다 큽니다.이 규칙은 BST의 모든 레벨에 걸쳐 일관적으로 적용되며, 데이터를 효과적으로 분류하고 검색하는 데 큰 도움이 됩니다. 그림에서 보면 4가 6보다 작기 때문에 왼쪽으록 가게 됩니다. 반면에 2같은 경우는 3보다 크기 때문에 3의 왼쪽으로 와야합니다.이진 검색 트리의 장점BST의 가장 큰 장점은 탐색 성능입..

CSKnowledge 2024.08.11

[CS지식 공부하기] 알고리즘 - 힙 데이터 구조: Complete Binary Tree와 우선순위 큐를 이진힙(Heap)으로 구현하기

힙(Heap)은 컴퓨터 과학에서 널리 사용되는 중요한 데이터 구조 중 하나입니다. 이번 글에서는 힙이 무엇인지, 어떻게 구성되는지, 그리고 어떻게 활용되는지에 대해 알아보겠습니다. 특히, 힙이 Complete Binary Tree(완전 이진 트리)라는 속성을 가지고 있으며, 우선순위 큐(priority queue)를 구현하는 데 사용된다는 점을 강조할 것입니다.힙 데이터 구조 소개 힙은 완전 이진 트리로 구성됩니다. 여기서 완전 이진 트리란 마지막 레벨을 제외한 모든 레벨이 꽉 차 있고, 마지막 레벨의 노드들이 왼쪽부터 차례대로 채워진 트리를 말합니다. 이러한 특성은 배열을 사용하여 효율적으로 구현할 수 있습니다.Max Heap과 Min Heap힙은 두 가지 주요 유형으로 나뉩니다: Max Heap과 M..

CSKnowledge 2024.08.10

[CS지식 공부하기] 알고리즘 - 이진트리 유형 : Complete Binary Tree, Balanced Binary Tree, Full Binary Tree, Perfect Binary Tree

이진트리에는 4가지 유형이 주로 있습니다. Complete Binary Tree, Balanced Binary Tree, Full Binary Tree, Perfect Binary Tree 입니다. 이러한 4가지 유형의 트리를 알아야하는 이유는 데이터를 검색속도를 향상시키고 정확하고 빠르게 해당 데이터에 접근하기 위해서입니다. 각 유형별로 특징이 있기 때문에 해당 상황에 맞게 쓰시면 됩니다. 컴플리트 이진트리는 메모리 효율적인 데이터 구조로 사용됩니다. 배열을 기반으로 구현되어 메모리적으로 활용할 수 있으며, 우선순위큐 및 힙자료 구조 구현 등에도 사용됩니다.균형이진트리는 검색 및 삽입 작업을 효율적으로 수행해야하는 경우에 사용됩니다. 균형이진트리는 AVL 트리 레드블랙트리 형태로 사용됩니다. 데이터베이..

CSKnowledge 2024.08.09

[CS지식 공부하기] 알고리즘 - 트리 자료구조의 속성과 활용 및 이진 트리 순회 방법: 중위, 전위, 후위 순회에 대한 이해

이해하기 쉬운 트리 자료구조의 속성과 활용트리 자료구조는 계층적인 구조를 표현하는 데 사용되며, 단방향 그래프의 한 종류로 볼 수 있습니다. 그 모양이 나무와 유사하여 트리라고 불립니다. 이 구조는 하나의 뿌리(root)에서부터 여러 가지 가지(branch)가 뻗어나가는 형태를 가집니다. 그리고 데이터를 순차적으로 나열하는 선형 구조가 아니기 때문에 비선형 구조입니다. 또한, 트리 자료구조는 아래와 같은 여러 가지 속성을 가지고 있습니다. 루트(Root): 트리의 가장 위에 있는 노드로, 다른 모든 노드들은 이 루트 노드에서부터 시작합니다.노드(Node): 트리의 각 요소를 나타냅니다. 노드는 데이터를 저장하고 다른 노드와 연결된 엣지(Edge)를 가질 수 있습니다.엣지(Edge): 노드와 노드를 연결하..

CSKnowledge 2024.08.08

[CS지식 공부하기] 네트워크 통신의 기초 & HTTP, HTTPS 프로토콜

네트워크 통신의 기초: 프로토콜과 OSI 7계층 모델1. 프로토콜 (Protocol)프로토콜은 컴퓨터나 원거리 통신 장비가 메시지를 주고받는 양식과 규칙의 체계입니다. 이는 웹 통신에서 데이터를 송수신할 때 필수적인 규약들을 말하며, 통신의 신뢰성과 효율성을 보장하기 위해 정해진 규칙을 따릅니다.2. OSI Layer 7 Model (OSI 7계층 모델)OSI(Open Systems Interconnection) 모델은 네트워크에서 데이터의 흐름을 이해하고 문제를 진단하기 위해 국제 표준화 기구(ISO)에서 개발한 모델입니다. 총 7계층으로 구성되어 있으며, 각 계층은 다음과 같습니다:물리 계층(Physical Layer): 하드웨어 전송 기술을 다룹니다.데이터 링크 계층(Data Link Layer):..

CSKnowledge 2024.08.07

[CS 지식 공부하기] 프로세스와 스레드의 이해 - 파이썬에서 쓰레드 예제 만들기

OS에서 가장 중요한 것은 프로세스와 스레드 일 것입니다. 기본적으로 운영체제에서 빠질 수 없는 주제입니다.이 글에서는 프로세스와 스레드의 개념을 탐구하고, 다중 스레드 프로그래밍의 장점에 대해 논의해보겠습니다.프로세스와 스레드의 이해프로세스는 컴퓨터에서 실행 중인 프로그램의 인스턴스입니다. 운영 체제는 프로세스에 메모리 공간, 파일 핸들, 입출력 장치 등 실행에 필요한 자원을 할당합니다. 각 프로세스는 고유한 주소 공간에서 독립적으로 실행되며, 다른 프로세스와 자원을 공유하지 않습니다.스레드는 프로세스 내에서 실제로 작업을 수행하는 실행 단위입니다. 프로세스는 하나 이상의 스레드를 가질 수 있으며, 이 스레드들은 프로세스의 자원을 공유하면서 동시에 실행될 수 있습니다. 각 스레드는 고유의 스레드 ID,..

CSKnowledge 2024.07.29