[C#] 프로세스 클래스
C#에서 프로세스를 관리하기 위해서는 System.Diagnostics를 사용해 작성한 코드의 외부에 존재하는 로컬 프로그램을 실행시킬 수 있습니다. 실행방법 Process 클래스의 메서드인 Start를 사용하는 방법이 있습니다. Process.Start("경로 + 실행 프로그램 이름.exe"); 이때, Start 메서드 내부에는 실...
C#에서 프로세스를 관리하기 위해서는 System.Diagnostics를 사용해 작성한 코드의 외부에 존재하는 로컬 프로그램을 실행시킬 수 있습니다. 실행방법 Process 클래스의 메서드인 Start를 사용하는 방법이 있습니다. Process.Start("경로 + 실행 프로그램 이름.exe"); 이때, Start 메서드 내부에는 실...
영어사전에서 template 의 뜻을 찾아보면 다음과 같습니다. template : 형판, 견본, 본보기 template 의 뜻인 형판처럼 C++ 에서의 template 또한 형판과 같은 역할을 합니다. template은 함수 템플릿과 클래스 템플릿이 존재합니다. 함수 템플릿 예를들어 기능은 완전하게 똑같지만 매개 변수의 자료형만 ...
일상 생활 속 경우의 수는 다양한 곳에서 확인할 수 있습니다. 예를들어, 아이스크림 가게에서 아이스크림 맛을 r개 선택할때, 중복을 허용해 같은 맛을 여러 개 선택할 지, 컵에 쌓을 때, 순서는 어떻게 할지 등 여러 경우의 수가 존재합니다. 이러한 경우의 수가 몇 개 존재하는지 확인할 수 있는 방법이 순열과 조합입니다. 순열과 조합은 n개의...
문제 설명 입국 심사관이 사람이면 반드시 심사관에 따라 속도는 다를 것 입니다. 여러분이 입국한 날이 첫 출근인 심사관과 오늘부로 20년 근속을 찍은 심사관까지 다양하겠죠. 첫 출근인 심사관은 긴장해서 입국 심사가 늦어지고, (신입 심사관이라고 하겠습니다.) 20년 근속 심사관은 신참 보다는 속도가 분명 더 빠를 것입니다. (경력 심사관이라고 ...
컴파일러의 동작 과정을 확인하기 전, 먼저 프로그램의 생성 과정을 살펴보겠습니다. 프로그램을 만들기 위해서는 소스코드가 필요하며, 소스코드는 전처리기, 컴파일러, 어셈블러, 링커 총 4가지의 과정을 통해 프로그램으로 출력됩니다. 위의 4가지 과정을 빌드 라고 부릅니다. 프로그램 생성 과정 과정 이름 전처리기...
분할 정복 분할 정복은 분할한 값들을 정복해 나가면서 해결하는 알고리즘입니다. 이를 활용한 대표적인 정렬 알고리즘은 이진 탐색, 합병 정렬, 퀵 정렬 등이 있습니다. 정렬 알고리즘 비교 정렬 알고리즘 최대 실행 시간 최소 실행 시간 평균 실행 시간 ...
정수 A와 B의 최대 공약수를 구하는 가장 간단한 방법은 A가 B보다 크거나 같을 때, 1부터 B까지 모든 정수로 A와 B가 동시에 나누어 떨어지는지 확인하면 됩니다. 그러나 이 방식은 O(log(B)) 라는 시간 복잡도이기 때문에 B의 크기가 매우 크면 불리합니다. 이 성능을 개선하기 위해 사용되는 것이 유클리드 호제법 입니다. 두 정수 A와 B...
SOLID SOLID 는 객체 지향 프로그래밍을 하면서 지켜야하는 5대 원칙입니다. SRP (단일 책임 원칙) OCP (개방-폐쇄 원칙) LSP (리스코프 치환 원칙) ISP (인터페이스 분리 원칙) DIP (의존 역전 원칙) 위의 5가지의 앞 글자를 합쳐 만들어 진 것이 SOLID 입니다. SOLID를 지키면 시간이 지나도...
전송 계층에서 사용하는 프로토콜은 UDP와 TCP가 존재합니다. 먼저 UDP는 데이터의 송수신이 보장되지 않는 통신이지만 통신속도가 TCP와 비교했을 때 비교적 빠르다는 장점이 있습니다. 실생활에서 볼 수 있는 UDP 통신은 비디오 스트리밍이 있습니다. TCP의 경우 UDP와 정반대의 특징을 가지고 있습니다. 패킷 송수신의 순서를 지키며 통신합니다...
Multi thread program에서 thread design만큼 중요한 것이 성능 비교 테스트와 VCS입니다. 이전에 정리했던 것 처럼 thread의 실행 시점 예측은 불가능합니다. 따라서 매번 적용한 코드가 정상적으로 동작하는지 확인해야 합니다. 💡 Multi thread program은 디버깅이 어렵고, 어떤 부분이 문제인지 확인하기 ...