Language 4

[C#] 데드락(Deadlock)과 예시

데드락은 두 개 이상의 프로세스가 서로 상대방이 점유하고 있는 자원을 기다리며 무한정 대기하는 상태를 말합니다. 즉, 각 프로세스가 자신이 필요로 하는 자원을 얻기 위해 다른 프로세스가 해제되기를 기다리는데, 다른 프로세스 역시 자원을 해제하지 못하고 있는 상황입니다. 이런 상황에서는 프로세스들이 계속 대기 상태에 빠지게 되어 더 이상 진행할 수 없게 됩니다. 1. 소스 using System;using System.Threading;using System.Threading.Tasks;class Program{ private static readonly object lockA = new object(); private static readonly object lockB = new object(..

Language/C# 2024.06.14

[C#] 이진 탐색 (Binary search) vs 균형 이진 트리 (Balanced Binary Search Tree) 속도 비교

C# 에서 65000 숫자 중 32500이라는 숫자를 찾을 때 빠른 알고리즘을 찾기 위해 테스트를 해보았습니다.이진 탐색이라는 점과 같은 시간 복잡도를 가지고 있는 Binary Search와 Balanced Binary Search Tree를 비교 해보겠습니다.시간복잡도 : O(logN)알고리즘 : 이진 탐색 알고리즘 (탐색할 값과 중간 값을 비교하고, 탐색 범위를 반으로 줄이는 방식)조건 : 이진 탐색은 정렬된 배열에서 찾고, 균형 이진 트리는 SortedSet 자료구조를 사용했습니다. 1. 소스 using System;using System.Collections.Generic;using System.Diagnostics;class Program{ static void Main() { ..

Language/C# 2024.06.14

[C#] 파일 생성 일자 비교 후 이전 날짜 파일 삭제하기

C#을 사용하여 일정 기간 이전에 만들어진 로그 파일을 삭제하는 서비스를 만들어보았습니다. 삭제할 기준의 날짜를 설정한다. 해당 기준 이전의 파일이 txt파일 경우에 삭제한다. 1. C# 소스 try { // 제거할 날짜 범위 (15일) byte Days = CAppConfig.cServiceInfo.MAX_STORAGE_DATE; string deletePath = @"C:\\Logs\\"; DirectoryInfo di = new DirectoryInfo(deletePath); if (di.Exists) { DirectoryInfo[] dirInfo = di.GetDirectories(); // 삭제 날짜 기준 -days(15일) string IDate = DateTime.Today.AddDays(-..

Language/C# 2023.03.14