CS 공부 19

[C#] 가비지 컬렉터 (Garbage Collector, GC)

C#은 메모리 관리를 자동화하는 가비지 컬렉터(Garbage Collector, GC)를 사용합니다. 가비지 컬렉터는 프로그래머가 직접 메로리를 관리하지 않고도 메모리 누수를 방지하고 효율적인 메모리 관리를 가능하게 합니다. 이번 글에서는 C# 가비지 컬렉터의 개념과 동작 원리, 그리고 가비지 컬렉션을 최소화 하는 방법에 대해 알아보겠습니다.  1. C# 가비지 컬렉터(GC)란?가비지 컬렉터는 더 이상 사용되지 않는 객체를 자동으로 식별하고 해제하여 메모리를 회수하는 메커니즘입니다. C#에서 가비지 컬렉터는 .NET 프레임워크의 일부로, 개발자가 메모리 관리에 신경쓰지 않아도 되도록 합니다. 가비지 컬렉터는 힙(heap) 영역에서 동작하며, 힙은 프로그램 실행 중 동적으로 할당되는 메모리 공간입니다.  ..

CS 공부 2024.07.15

[C#] Virtual, Abstract, Interface

객체 지향 프로그래밍을 할 때 'virtual', 'abstract', 'interface'는 알고있어야 하는 개념입니다. 각각의 키워드는 클래스와 메서드의 동작 방식을 제어하고, 코드의 유연성과 재사용성을 높이는데 사용됩니다. 이 글에서는 세 가지 키워드의 차이점과 특징을 서술해보겠습니다.    설명 Virtual정의: 'virtual' 키워드는 메서드, 속성, 인덱서 또는 이벤트 선언에 사용되어, 파생 클래스에서 이를 재정의할 수 있게 합니다.특징:기본 구현을 제공할 수 있습니다.파생 클래스에서 'override' 키워드를 사용하여 재정의할 수 있습니다.선택적으로 재정의할 수 있습니다.기본 클래스에서 공통 동작을 정의하고, 파생 클래스에서 필요에 따라 동작을 변경할 때 사용합니다.코드 예시:publi..

CS 공부 2024.07.09

[C#] 박싱과 언박싱 (Boxing & Unboxing)

1. 박싱과 언박싱이란? 박싱(Boxing)박싱은 값 형식을 참조 형식으로 변환하는 과정입니다. 값 형식은 'int', 'float', 'double', 'struct' 등과 같은 데이터 타입이며, 이들은 스택(Stack) 메모리에 저장됩니다. 박싱을 통해 값 형식을 힙(Heap) 메모리에 할당된 객체(Object 타입)로 변환하여 참조 형식처럼 다룰 수 있게 됩니다. 언박싱(Unboxing)언박싱은 박싱된 객체를 다시 값 형식으로 변환하는 과정입니다. 힙에 저장된 객체에서 값을 꺼내와 스택에 저장합니다. 이 과정에서 타입 검사와 캐스팅이 필요합니다.    2. 작동 구조 및 예제 박싱의 작동 구조값 형식 데이터를 힙에 할당: 값 형식 데이터를 힙에 새로운 객체로 할당합니다.객체 생성: 이 객체는 해당 ..

CS 공부 2024.07.02

[C#] 해시셋 (HashSet)

1. 해시셋(HashSet)이란? 해시셋(HashSet)은 C#의 'System.Collections.Generic' 네임스페이스에 포함된 컬렉션 클래스 중 하나로, 해시 테이블을 기반으로 구현된 집합 데이터 구조입니다. 해시셋은 중복되지 않은 요소들의 모임을 관리하는데 최적화되어 있으며, 빠른 탐색, 추가 및 삭제 작업을 제공합니다. 이는 특히 고유한 값들만을 유지해야 하는 경우에 유용합니다.   2. 내부 작동 구조해시셋의 내부 구조는 해시 테이블을 기반으로 합니다. 해시 테이블은 키-값 쌍을 저장하는 데이터 구조로, 키를 해시 함수에 의해 해시 코드로 변환하고, 이 해시 코드를 인덱스로 사용하여 요소를 저장합니다. 해시 셋의 작동 원리는 다음과 같습니다. 해시 함수: 해시 함수는 객체의 고유한 해시..

CS 공부 2024.06.28

[C#] 링크드 리스트 (Linked List)

1. 링크드 리스트(Linked List)란? C#의 링크드 리스트(Linked List)는 데이터 구조의 한 현태로, 각 요소가 노드(Node)로 구성되며, 각 노드는 데이터와 다음 노드에 대한 참조를 포함합니다. 링크드 리스트는 동적 메모리 할당을 통해 크기가 가변적이며, 연속적인 메모리 주소에 저장되는 것이 아닌, 비 연속적으로 저장이 되며 이전, 다음 노드 정보를 통해 데이터를 연결합니다.이러한 구조로 배열과 달리 요소의 삽입 및 삭제가 용이하다는 장점이 있습니다.'System.Collections.Generic' 네임스페이스에 포함된 'LinkedList' 클래스를 사용하여 링크드 리스트를 구현할 수 있습니다.   2. 내부 작동 구조 링크드 리스트는 주로 세 가지 유형이 있습니다. 1. 단일 ..

CS 공부 2024.06.23

[C#] 딕셔너리 (Dictionary)

딕셔너리란?C#의 Dictionary 자료구조는 키와 값의 쌍의 데이터를 저장하는 제네릭 컬렉션입니다.이 자료구조는 System.Collections.Generic 네임스페이스에 포함되어 있으며, 키를 사용하여 값을 효율적으로 검색할 수 있습니다.  주요 특징 및 기능1. 키-값 쌍 저장:딕셔너리는 키와 값의 쌍을 저장합니다. 각 키는 고유하며, 중복될 수 없습니다.값은 중복될 수 있지만, 키는 유일해야 합니다. 2. 빠른 검색 속도:딕셔너리는 해시테이블을 사용하여 내부적으로 데이터를 저장하므로, 평균적으로 O(1)의 시간 복잡도로 키를 사용한 값 검색이 가능합니다. 3. 제네릭 타입 지원:Dictionary는 제네릭 타입을 지원하여, 타입 안정성과 성능을 보장합니다.예: Dictionary, Dicti..

CS 공부 2024.06.21

[C#] 리스트 (List)

1. C# List란?C#에서 List는 제네릭 컬렉션으로, C++에서 동적으로 크기가 조절되는 Vector와 유사합니다. List는 . Net의 ‘Systtem.Collections.Generic’ 네임스페이스에 속해 있으며, 다양한 데이터 타입을 저장하고 관리하는데 유용합니다.   2. 주요 특징제네릭 타입: 리스트는 제네릭 타입으로, 특정 타입의 데이터를 저장할 수 있습니다. 타입 안전성을 제공하여 컴파일 시간에 타입 오류를 방지할 수 있습니다.동적 크기 조정: 리스트는 내부적으로 배열을 사용하여 요소를 저장합니다. 리스트의 크기 조정은 다음과 같이 작동합니다. 1. 요소 추가 시 크기 조정: 리스트의 용량이 현재 요소의 수를 초과할 때, 새로운 요소를 추가하면 내부 배열의 크기가 두 배로 증가합니..

CS 공부 2024.06.16

[C#] 자료구조와 컬렉션

자료구조(Data Structure)자료구조란?자료구조는 컴퓨터 과학에서 데이터를 효율적으로 관리하기 위해 사용되는 다양한 방식과 체계입니다. 데이터의 조직, 관리, 저장 형식을 정의하며, 이를 통해 데이터에 빠르고 효율적으로 접근하고 조작할 수 있도록 합니다. 적절한 자료구조의 선택은 프로그램의 성능에 직접적인 영향을 미치므로 매우 중요합니다.  자료구조의 중요성1. 효율적인 데이터 관리: 자료구조는 데이터를 체계적으로 저장하여 관리의 복잡성을 줄이고, 데이터를 빠르게 검색, 삽입, 삭제할 수 있게 해줍니다.2. 성능 향상: 적절한 자료구조를 사용하면 프로그램의 성능이 크게 향상됩니다. 예를 들어, 배열과 링크드 리스트의 선택은 데이터 접근 속도와 메모리 사용량에 큰 차이를 가져올 수 있습니다.3. 코..

CS 공부 2024.06.11

CS 지식 강의 요약 정리본 1 (메모리, 대리자, 람다식)

제가 학원에서 강의를 들으며 간략하게 정리한 내용을 올립니다. 이 글을 보시고 도움이 됬으면 좋겠습니다!  new 키워드란?메모리를 동적할당 하여 생성하는 키워드구조체에 new키워드를 사용하면 구조체의 내의 변수들을 초기화한다.함수내의 변수들 중 참조타입은 주소의 크기(4byte)를 할당받고 값 타입은 변수크기만큼 할당한다.Dummy: 정수형 변수 4개를 가진 클래스(참조 타입이기에 주소의 크기만 할당)Coord: 정수형 변수 3개를 가진 구조체(값 타입이기에 변수의 크기만큼 할당)   RAM이란?저장장치, CPU간의 병목 현상 해소를 위해 CPU에서 필요한 데이터를 미리 적재해 놓는 공간실행하려는 프로그램의 인스턴스를 만들어서 올려놓고 연산에 필요한 데이터를 찾기위해 컴퓨터에 있는 전체 프로그램을 탐색..

CS 공부 2024.05.27