728x90

C# 81

Dispose

DisposeC#은 가비지 컬렉터(GC)가 메모리를 자동으로 관리한다. 필요 없는 클래스의 인스턴스를 메모리에서 바로 지우는 게 아니라, 조건이 될 때까지 기다렸다가 지우기 때문에 클래스를 지웠다고 해도 바로 삭제되는 것은 아니다.일반적인 메모리라면 GC에 맡겨도 상관이 없지만, 관리되지 않는(Unmanaged Native) 리소스는 즉각 해제해야 하는 경우가 생기는데, 그런 경우 Dispose를 사용한다.참조https://chomdoo.tistory.com/15 C# 에서 Dispose의 개념과 궁금했던 몇가지 사항C#은 가비지 컬렉터(GC)가 메모리를 자동으로 관리한다. 필요 없는 클래스의 인스턴스를 메모리에서 바로 지우는 게 아니라, 조건이 될 때까지 기다렸다가 지우기 때문에 클래스를 지웠다고 해도..

언어/C# 2024.07.31

Using

UsingC# Using문 사용법 2가지지시문상단에 using을 사용하여 import 외부 dll 파일을 사용할 수 있다.문장개체 범위를 정의 할 때 사용한다. 그 범위를 벗어나면 자동으로 dispose(처분)된다. file, font, DB의 같은 경우에 사용할 때 일정부분의 메모리를 잡아 먹는데 이 부분에서 컴퓨터의 자원이 할당 되는 것이다. 메소드나 어떤 형식의 로직이 끝날 때 이 부분을 다시 반납해야 성능이 개선되고 프로그램의 문제가 발생하지 않는다.using문을 메소드 안에 커넥트 형식으로 {} 안에서만 사용하고 나면 바로 dispose 되게 만들어준다.참조https://magpienote.tistory.com/65 c# using 문 사용 법 사용 이유c# using 문 사용법 사용 용도 2가..

언어/C# 2024.07.31

Out 매개변수 한정자

Out 매개변수 한정자out 키워드를 사용하면 변수가 참조로 전달이 된다.out 키워드를 사용한 매개변수는 함수 내부에서 무조건 값을 세팅해주어야 한다.프로퍼티(=속성)는 변수가 아니므로 out 매개변수로 전달할 수 없다.참조https://blockdmask.tistory.com/606 [C#] out 매개변수 한정자 설명 및 예제 (out 키워드)안녕하세요. BlockDMask입니다. 지난 시간에 ref 키워드 포스팅에서 call by value, call by reference에 대해서 배우고 in 키워드에 대해서도 배워봤습니다. 오늘은 C#에서 매개변수를 넘길 때 붙여줄 수 있는blockdmask.tistory.com

언어/C# 2024.07.31

스마트 풀

스마트 풀스마트 스레드 풀은 효율적인 작업 처리를 위해 스레드의 생성 및 관리를 자동화하는 고급 스레드 풀 라이브러리다. 이를 통해 애플리케이션이 동시에 여러 작업을 수행할 때 스레드 리소스를 효과적으로 활용할 수 있다.주요 기능동적 스레드 관리 ****필요에 따라 스레드를 동적으로 생성하거나 제거한다.작업 큐 관리실행 대기 중인 작업을 큐에 저장하고 적절히 분배한다.타임아웃 지원작업 실행에 타임아웃을 설정하여 지정된 시간 내에 완료되지 않으면 중단한다.우선순위 처리작업의 우선순위를 설정하여 중요한 작업이 먼저 실행되도록 한다.작업 완료 알림작업이 완료되면 콜백을 통해 알림을 받는다.

언어/C# 2024.07.31

플랫폼 호환성 분석기

플랫폼 호환성 분석기플랫폼 호환성 분석기는 소프트웨어 애플리케이션이 다양한 운영 체제, 하드웨어 플랫폼, 또는 브라우저 환경에서 제대로 작동하는지 검사하고 분석하는 도구를 말한다. 이를 통해 개발자는 애플리케이션이 모든 대상 플랫폼에서 일관된 사용자 경험을 제공하는지 확인할 수 있다.주요 기능호환성 검사애플리케이션이 다양한 운영 체제와 브라우저에서 정상적으로 작동하는지 검사한다.성능 테스트다양한 플랫폼에서 애플리케이션의 성능을 측정하고 비교한다.호환성 보고서 생성검사 결과를 바탕으로 호환성 문제를 분석하고 보고서를 생성한다.문제 디버깅호환성 문제를 추적하고 해결하는 데 필요한 디버깅 도구를 제공한다.자동화 테스트호환성 검사를 자동화하여 반복적으로 테스트할 수 있도록 지원한다.

언어/C# 2024.07.31

24.07.30 C#, 배치 파일과 도스 명령어, 게임 서버

C#TryGetValue 메서드에서 Dictionary와 Tuple 함께 사용TryGetValue 메서드Dictionary 클래스의 메서드로, 키를 사용해 값을 안전하게 가져오려 할 때 사용한다.형식 : dictionary.TryGetValue(key, out value)((a,b) out c) 매개변수(a, b): 키(key)로 사용되는 튜플이다.out c: 찾은 값을 저장할 변수이다.장점복합 키를 사용할 수 있어 다차원 데이터를 효율적으로 표현할 수 있다.튜플을 사용함으로써 코드가 더 명확해질 수 있다.주의사항튜플을 키로 사용할 때는 모든 요소가 정확히 일치해야 한다.성능을 고려해야 할 경우, 복잡한 튜플 키의 사용은 주의가 필요할 수 있다.String.IsNullOrWhiteSpace(String)..

24.07.29 C#, 게임 서버

C#추상 클래스(abstract class)다른 클래스들이 상속 받을 수 있는 클래스이다. 추상 클래스 자체는 인스턴스화할 수 없으며 주로 공통된 기능이나 인터페이스를 정의하는 데 사용한다.추상 메서드(abstract method)추상 클래스 내에서 선언되며, 메서드 본체를 가지지 않는다.파생 클래스에서 반드시 해당 메서드를 구현해야 한다.주의사항추상 클래스는 인스턴스화할 수 없다추상 클래스는 추상 메서드를 가질 수 있지만, 추상 메서드가 없어도 추상 클래스로 선언할 수 있다.추상 메서드는 오직 추상 클래스 내에서만 선언될 수 있다.추상 클래스는 일반 메서드와 속성도 가질 수 있다.추상 메서드는 파생 클래스에서 반드시 구현해야 한다.게임 서버게임에서 세션이 일시적으로 끊기는 경우는 여러 가지 원인에 의해..

24.07.26 C#

C#AsEnumerable MethodLINQ 쿼리는 IEnumerable 또는 IQueryable 인터페이스를 구현하는 데이터 원본에서 작동한다. DataTable 클래스는 이 인터페이스를 구현하지 않기 때문에 직접 LINQ 쿼리를 사용할 수 없다.AsEnumerable 메서드를 사용하여 Datatable을 IEnumerable로 변환할 수 있다. 변환된 객체는 원본 DataTable에 바인딩 된다. 따라서 AsEnumerable를 여러 번 호출해도 모두 같은 원본 DataTable에 바인딩된 독립적인 쿼리 가능한 객체를 반환한다.DataTable을 LINQ 쿼리의 원본으로 사용하려면 AsEnumerable 메서드를 사용하여 IEnumerable로 변환해야 한다. 이렇게 변환된 객체는 원본 DataTa..

24.07.24 C#

C#세션서버 세션의 역할플레이어 인증 및 연결 유지서버 세션은 플레이어가 게임 서버에 로그인한 순간부터 로그아웃하거나 연결이 끊어질 때까지 유지된다.상태 유지세션을 통해 플레이어의 현재 위치, 진행 상황, 게임 상태 등이 유지된다.통신 관리서버 세션은 게임 클라이언트와 서버 간의 데이터 전송을 관리한다.보안 및 인증세션은 보안 측면에서도 중요한 역할을 한다. 각 세션은 고유한 세션 토큰을 가지며, 이를 통해 서버는 플레이어의 요청을 인증하고 권한을 확인한다.서버 세션의 저장소인메모리(In-Memory) 저장소세션 데이터를 서버의 메모리에 저장한다. 빠르지만 서버가 재시작되면 데이터가 소실될 수 있다.데이터베이스 저장소세션 데이터를 데이터베이스에 저장한다. 안정적이지만 메모리보다 느릴 수 있다.분산 캐시 ..

728x90