분류 전체보기 212

[C#] 코딩의기술(실전편) - 1.4 병렬처리

동기 처리, 비동기 처리, 병렬 처리 한개 프로세스 안에서 동시에 여러 개의 일을 하려면 다중 쓰레드(Thread)가 필요합니다. 동시에 여러 개의 일을 한다는 측면에서 비동기와 병렬처리는 맥락을 같이합니다. 동기 처리 : 책을 읽듯이 순차적으로 처리하는 것 입니다. User의 입력이 필요한 경우, User 입력을 받기 전까지는 다음 줄로 넘어가 실행할 수 없는 상태로 컴퓨터는 멈춰있을것이다. 비동기 처리 : 실행되는 타이밍을 다 맞추는 것이 아니라 User 입력을 받는 부분은 별도로 처리한다. 병렬처리 : 병렬 처리란 여러 개의 프로세서를 통해 하나의 프로그램을 처리하는 것을 말합니다. 처리 부하를 분담하여 처리 속도의 향상시킵니다. 참고 https://docs.microsoft.com/ko-kr/do..

[C#] 코딩의기술(실전편) - 1.3 순차처리

동기(Synchronous), 비동기(Asynchronous), 블락(Blocking), 넌블락(Non-Blocking)의 개념 https://jins-dev.tistory.com/entry/%EB%8F%99%EA%B8%B0Synchronous-%EC%9E%91%EC%97%85%EA%B3%BC-%EB%B9%84%EB%8F%99%EA%B8%B0Asynchronous-%EC%9E%91%EC%97%85-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EB%B8%94%EB%9D%BDBlocking-%EA%B3%BC-%EB%84%8C%EB%B8%94%EB%9D%BDNonBlocking-%EC%9D%98-%EA%B0%9C%EB%85%90 Task 값을 반환하지 않고 일반적으로 비동기식으로 실행되는 단일 작업을 ..

[C#] LINQ 연습하기

LINQ 연습하기 Exists ForEach Where Select using System; using System.Collections.Generic; using System.Linq; namespace Sample_TEST { class SampleProgram { public static void Main(string[] args) { // list 선언 및 초기화 var nums = new List { 12, 87, 94, 14, 53, 20, 40, 35, 76, 91, 31, 17, 48 }; //Q1. LINQ의 Exists 메서드 사용하여, 8, 9로 나누어 떨어지는지 확인 if (nums.Exists(x => x % 8 == 0 || x % 9 == 0)) Console.WriteLine..

프로그래밍/C# 2022.03.27

[Linux] 서버 간 시간 동기화

Linux 서버 간 시간 동기화 예를 들어 PC1의 시간을 PC2에 시간과 '똑같이' 맞춰야할 필요가 있습니다. 간단히 다음 명령어를 입력하여 '시간 동기화'를 할 수 있습니다. sudo date --set"$(ssh administrator@192.168.0.2 'date -u')" 이렇게 하면 PC2의 시간과 PC1시간이 동기화가 됩니다. 수동으로 시간 변경하기 - 타임 서버 타임 서버의 시간을 획득하여 Linux서버의 시간을 변경하는 방법도 있다. 타임 서버 주소는 아래를 참고하여 입력하자. time.bora.net time.nist.gov time.nuri.net time.kriss.re.kr time.windows.com date -s {타임 서버 주소} 수동으로 시간 변경하기 유저가 시간을 지..

Linux 2022.03.27

[C#] 문자열 거꾸로 변환하기

String 변수 거꾸로 출력하기 string 형 변수의 문자열을 거꾸로 바꿔 출력하는 방법을 알아봅시다. EX> "안녕하세요" -> "요세하녕안" using System; namespace Sample_TEST { class SampleProgram { public static void Main(string[] args) { // str 변수 선언 및 초기화 string str = "Hello World."; // str을 char형 배열로 변환 후 reversStr변수에 초기화 char[] reverseStr = str.ToCharArray(); // Array.Reverse()메서드 사용하여 // 매개변수의 요소들을 역순으로 재배열 Array.Reverse(reverseStr); // str 문자열..

프로그래밍/C# 2022.03.27

[C#] Thread 2개 사용하여 변수 값 공유 테스트

Thread 2개를 사용하게 될 때, 각 Thread 별 가지고 있는 변수가 있다. 아래 코드는 Thread끼리 변수의 값을 공유하는지 확인하는 테스트이다. using System; using System.Threading; namespace Sample_TEST { class ThreadTestProgram { public static void Main(string[] args) { Thread thread = new Thread(() => Run(0)); // 1번째 Thread 실행 thread.Start(); // 5초 지연 시킨다. Thread.Sleep(5000); // 2번째 Thread 실행 Run(1); } public static void Run(int idx) { // Thread 별..

프로그래밍/C# 2022.03.22

[C#] LINQ 이용하여 리스트 2개 비교

Linq에는 두 목록을 비교하는 유용한 방법이 있습니다. Intersect 리스트의 어떤 요소가 포함되어 있는지 확인할 수 있습니다.var source = new List() { "a", "b", "c" }; var compare = new List() { "b", "c", "d" }; var result = source.Intersect(compare); 결과 Except 리스트에 포함되지 않은 요소를 확인할 수 있습니다.var source = new List() { "a", "b", "c" }; var compare = new List() { "b", "c", "d" }; var result = source.Except(compare); 결과 예외사항 아래 예제처럼 Person Class의 요소를 비..

프로그래밍/C# 2022.03.22

스케일 업(Scale-Up), 스케일 아웃(Scale-Out)

운영중인 서비스의 유저 수가 점점 증가가 된다면, 기존의 서버에서는 충분히 운영이 가능했지만 점점 서버의 한계가 보이기 시작한다. 이때 서버 업그레이드가 필요하다. 업그레이드 하는 방법 2가지 스케일 업과 스케일 아웃의 개념에 대해 알아보자. 스케일 업(Scale-Up) 서버의 HW를 기존 사양보다 더 좋은 HW로 업그레이드 하는 방법이다. 예를 들어, CPU나 메모리 등을 추가하는 것이다. 하나의 서버의 능력을 증강하기 때문에 수직 스케일링(vertical scaling)이라고도 한다. 장점 추가적인 네트워크 연결이 필요가 없다. 스케일 아웃보다 유지보수 비용이나 운영이슈가 적다.단점 성능 향상에 한계가 있다. 서버 한대가 부담하는 양이 많아서 위험부담이 높다. 기존 서버를 교체하기 위해 서비스 다운타..

프로그래밍 2022.03.20