전체 글 96

도커

1. 패키지 목록 업데이트우선, 패키지 목록을 최신 상태로 업데이트한다.sudo apt update2. 필요한 패키지 설치HTTPS를 통해 패키지를 사용하고, APT를 통해 도커의 공식 리포지토리를 추가하기 위해 필요한 패키지들을 설치한다.sudo apt install apt-transport-https ca-certificates curl software-properties-common3. 도커의 GPG 키 추가도커의 공식 GPG 키를 추가한다.curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg4. 도커 공식 리포지토리 추가도커의..

Server 2024.10.10

[크래프톤 정글] malloc, calloc, realloc

malloc, calloc, realloc 같은 동적 메모리 할당 함수들은 C 언어의 표준 라이브러리 함수들이다.실제로는 운영체제(OS)에서 제공하는 시스템 호출(syscall)을 통해 메모리를 할당하는 과정으로 이루어진다.1. malloc의 내부 동작malloc은 사용자가 요청한 크기의 메모리를 힙 영역에서 할당하는 함수이다.malloc이 어떤 흐름으로 메모리를 할당하는지 알아보자기본 흐름사용자가 메모리를 요청: malloc에 의해 사용자는 지정한 크기의 메모리를 할당받기를 원한다.힙 영역에서의 메모리 관리: C 프로그램은 스택(Stack)과 힙(Heap)이라는 두 가지 주요 메모리 영역을 사용한다. 힙은 프로그램 실행 중에 동적으로 메모리를 할당하는 데 사용된다. 힙은 연속된 메모리 블록으로 관리되며..

Clang 2024.10.07

[크래프톤 정글] 가상 메모리 와 페이징 *

64비트 시스템을 기준으로 가상 메모리와 페이지 개념을 다시 정리 해보려 한다.64비트 아키텍처는 약 8TB의 가상 메모리 공간을 지원 한다.1. 64비트 가상 메모리 주소 공간64비트 시스템에서는 가상 주소가 64비트로 표현된다. 이론적으로는 2^64 바이트, 즉 16엑사바이트(EB)의 가상 메모리 공간을 제공할 수 있다.하지만 실제로는 물리적 제약 및 운영체제의 설계에 따라 약 8TB정도(윈도우 기준)가 지원된다.예를 들어, 일반적인 64비트 리눅스 시스템은 48비트나 57비트만을 사용하여 가상 주소 공간을 관리한다.2. 가상 주소의 구조페이지 번호: 가상 주소의 상위 비트는 해당 페이지를 식별하는 데 사용된다.오프셋(Offset): 하위 비트는 페이지 내에서의 위치를 나타낸다.예를 들어, 64비트 ..

cs 2024.10.07

[크래프톤 정글] 구조체 와 클래스 의 차이

1. 클래스와 구조체의 주요 차이점1.1 C와 C++에서의 차이먼저, C에서는 구조체(struct)가 데이터 타입을 정의하는 데 사용된다. C 언어의 구조체는 데이터를 묶어서 하나의 사용자 정의 데이터 타입으로 만드는 역할만 수행하며, 함수나 메서드를 포함하지 못한다. 반면에, C++과 같은 객체 지향 프로그래밍 언어에서는 클래스가 구조체와 유사하지만 더 많은 기능을 제공한다. C++의 구조체는 함수도 포함할 수 있지만, 기본적으로 다루는 접근 제어가 다르고, 객체 지향적인 요소가 약하다.1.2 클래스(C++)와 구조체(C)의 주요 차이점클래스(Class):메서드 포함 가능: 클래스는 변수(멤버 변수)뿐만 아니라, 그 변수를 조작하는 함수(멤버 함수)도 포함할 수 있다.캡슐화: 클래스는 캡슐화를 통해 외..

Clang 2024.10.05

[크래프톤 정글 ] 포인터

C 언어에서 포인터는 변수의 메모리 주소를 저장하는 변수이다.즉, 포인터는 다른 변수나 메모리 상의 데이터의 위치를 가리키는 역할을 한다. 이로 인해 직접적으로 메모리 주소를 다룰 수 있는 유연성과 강력함을 제공하지만, 그만큼 주의가 필요하다.포인터는 메모리 관리, 함수 매개변수 전달, 동적 메모리 할당 등의 영역에서 중요한 역할을 한다.1. 포인터 선언과 기본 사용법포인터는 메모리 주소를 저장하는 변수이므로, 선언할 때는 데이터 타입 뒤에 *을 붙여 선언한다.int *ptr; // int형 변수를 가리키는 포인터이 선언은 ptr이 int형 데이터를 가리킬 수 있는 포인터임을 의미한다. 하지만 아직 ptr은 유효한 주소를 가리키고 있지 않으므로, 초기화되지 않은 상태에서 이를 사용하면 안 된다.1.1 포..

Clang 2024.10.05

[크래프톤 정글] 위상 정렬

참고 자료 - https://m.blog.naver.com/ndb796/2212368749841. 위상정렬 (Topological Sorting)위상정렬은 그래프 이론에서 나오는 개념으로, 순서를 정하는 문제에서 사용된다. 특히, 방향성이 있는 비순환 그래프(Directed Acyclic Graph, DAG)에서 각 노드를 선행 관계에 맞춰 순서대로 나열하는 것을 의미한다.대표적인 예시를 하나 들자면위의 사진에서 보다 시피 우리가 졸업을 하기 위해서는 필요한 조건들이 존재하고 그 조건들에 순서가 존재 할때 그 순서를 결정 해주는 알고리즘이라 할 수 있다.스택을 이용한 방식과 큐를 이용한 방식이 있는 데 큐를 이용하는 방법이 더 많이 사용되고 , 고급 알고리즘이라 큐를 이용한 방법을 정리 해보고자 한다.위..

Algorithm 2024.10.04