본문 바로가기
반응형

c#132

C# 컴퓨터가 문자를 표현하는 방법, 문자 인코딩 string에서 byte[]로 변환하기string 타입에서 ToCharArray() 함수를 통해서 바로 Char배열로 변환하는 함수는 존재하지만 ToByteArray() 함수는 존재하지 않는다. 그 이유는 무엇일까? 그 이유는 byte[]로 변환하기 위해서는 결정해야 할 사항들이 있기 때문이다. 변환하기 위해서는 반드시 문자 인코딩을 설정해야 한다. 왜냐면 인코딩이 무엇이냐에 따라서 결괏값이 달라지기 때문이다.문자 집합(Character Set, Charset)문자 집합은 문자들의 모음이다. 즉, 어떤 문자들이 포함될지를 정의한 목록이라고 생각하면 이해가 빠르다. 예를 들어 영어 알파벳(A-Z), 숫자(0-9), 특수 기호(!, @, # 등) 등을 포함하는 문자 집합이 있을 수 있고, 한글이나 일본어, .. 2025. 2. 20.
자연 상수 e에 대해서 알아보자 e는 어디서 나왔을까?e는 지수 성장(Exponential Growth)을 나타내는 숫자이다.쉽게 말해 '어떤 것이 계속 증가할 때 그 증가율이 일정하면, 그 성장이 e를 따른다.'라고 이해할 수 있다. 일단 정의만 읽어서는 전혀 감이 오지 않는다. 예를 들어보자.💰 e가 등장하는 실생활 예제예제 : 100원을 투자했을 때, 복리 이자가 붙는 경우은행에서 연이율 100%로 돈을 맡긴다고 가정해 보자.즉, 1년 이후에는 원금의 2배(200원)가 된다.하지만  이자를 한 번만 주는 것이 아니라, 더 자주 주면 어떻게 될까? 이자를 1년에 한 번만 받는 경우 (단리)원금 + 이자 = 100 + (100 * 1) = 200 이자를 1년에 두 번 주는 경우 (반년마다 50% 이자)1차 : 100 + (100 *.. 2025. 2. 6.
C# 폴더 안에 있는 모든 파일 찾기 해당 경로 폴더 안에 모든 파일 찾기원하는 경로를 지정해서 DirectoryInfo 객체를 생성해서 GetFiles() 매서드를 호출하면 해당 파일 내에 존재하는 모든 파일에 대한 정보를 얻을 수 있다. (폴더는 조회되지 않는다.)DirectoryInfo di = new DirectoryInfo(filePath);foreach (FileInfo fi in di.GetFiles()){ Console.WriteLine($"파일 이름 : {fi.Name}");}해당 경로 폴더 안에 모든 폴더 찾기원하는 경로를 지정해서 DirectoryInfo 객체를 생성해서 GetDirectories() 매서드를 호출하면 해당 파일 내에 존재하는 모든 폴더에 대한 정보를 얻을 수 있다. (파일은 조회되지 않는다.)Dir.. 2025. 1. 23.
C# StackExchange 사용해서 redis에 객체 저장하고 불러오기 Nuget에서 StackExchange 설치하기.Net 개발환경에서 제공하는 패키지 관리 시스템인 Nuget을 이용해서 간단하게 .Net 환경에서 레디스를 사용할 수 있다. 아래의 과정을 따라서 진행해 보자. 프로젝트 선택 -> 오른쪽 마우스 클릭 -> Nuget 패키지 관리 선택 -> 찾아보기에서 'StackExchange.Redis'로 검색해서 해당 패키지를 다운로드 및 설치해 주자.appsettings.json에 redis 세팅 저장하기이제 StackExchange 패키지를 사용하면 레디스를 쉽게 사용하는 게 가능하다. StackExchange를 초기화하는 부분에서 redis의 위치를 지정해줘야 한다. 이때 직접 문자열로 해당 위치를 지정할 수도 있지만 appsettings.json을 읽어서 해당 .. 2025. 1. 13.
C# 웹앱에서 appsettings.json 설정값 사용하기 appsettings.json프로젝트 세팅을 읽는 가장 보편적인 방식은 JSONConfigurationProvider를 사용하는 것이다.이 제공자는 appsettings.json 파일에 정의된 설정값들을 앱에 제공한다. 이 파일은 프로젝트가 빌드된 후에, 출력 폴더에 함께 복사된다. 빌드 출력 폴더의 다른 파일들과 함께 실행할 시스템에 옮겨지고, dotnet run의 입력을 통해 웹앱이 실행될 때, 코드 내의 설정값들이 appsettings.json 파일에 의해 결정되는 것이다. 만약 설정값의 변경이 있다면, 그와 관련된 appsettings.json 파일의 내용을 변경한 후에 앱을 중지하고 다시 실행시키면 된다. appsettings.json 파일뿐만 아니라, 웹앱의 실행에 필요한 파일들은 모두 웹서버.. 2025. 1. 7.
C# Web API 구조 - 비동기, 멀티스레드, 쓰레드 풀 C# Web API의 구조에 대해서C# Web API은 비동기, 멀티스레드, 스레드 풀을 다 사용한다. 비동기, 멀티스레드, 쓰레드 풀을 사용하면 애플리케이션의 성능, 응답성, 확장성을 크게 향상할 수 있기 때문이다. 각 개념의 장점과 이를 사용할 때의 이점에 대해서 알아보자.비동기(Asynchronous)비동기 프로그래밍은 작업이 완료될 때까지 스레드가 대기하지 않고, 그동안 다른 작업을 처리할 수 있도록 하는 방식이다.C#이 제공하는 async/await 패턴을 사용하여 CPU 사용률을 최적화 할 수 있다.높은 처리량 : CPU가 대기 중인 작업을 처리하는 대신 다른 작업을 수행I/O 작업 최적화 : 비동기 방식은 CPU를 차단하지 않고, 네트워크 요청 또는 파일 읽기/쓰기를 기다리는 동안 다른 작업.. 2025. 1. 3.