프로그래밍 150

[C#] 디자인패턴-싱글톤 패턴(Singleton Pattern)

싱글톤 패턴 싱글톤 패턴은 해당 객체의 메모리를 정적으로 할당하여 하나의 객체에만 접근하는 방법입니다. 따라서 프로그램이 동작하는 동안 최초로 생성된 객체 하나에만 접근하게 되므로 데이터를 접근하고 수정이 용이합니다. 생성자를 다른 곳에서 새롭게 선언을 하더라도 이미 정적으로 선언된 객체가 반환되기 때문에 중복되어 생성되는 것을 방지 할 수 있습니다. 초기 객체를 생성을 하게 되면 정적 메모리에 올라가기 때문에 이후 호출하는데 아주 빠르게 접근할 수 있는 장점이 있습니다. 인스턴스를 생성할 때 매개변수를 지정하는 것을 문제가 추천하지 않습니다. 인스턴스를 여러번 호출할 수 있는데, 매개변수가 달라지는 경우 문제가 될 수 있습니다. 매개변수를 사용하여 인스턴스에 액세스 하는 경우엔 팩토리 패턴이 더 적합합..

프로그래밍/C# 2022.07.03

[C#] ? 와 ?? 연산자

? 연산자 ? 연산자는 [ Null이 아니라면 참조하고, Null이라면 Null로 처리 ]하라는 뜻이다. class CClass { public List lstNumber = new List();; }; static void Main(string[] args) { CClass newClass = new CClass(); Console.WriteLine(newClass?.lstNumber); // List 정보가 출력됨. CClass nullClass = null; Console.WriteLine(nullClass?.lstNumber); // 아무것도 출력되지 않음. (null) } ?? 연산자 ?? 연산자는 [ Null이라면 오른쪽 값으로 처리 ]하는 연산자 이다. Object obj = new Dict..

프로그래밍/C# 2022.06.22

[gRPC] gRPC란?

참조 : https://chacha95.github.io/2020-06-15-gRPC1 참조 : https://grpc.io/docs/what-is-grpc/introduction/ gRPC가 무엇인지 알기전에, 몇가지 추가 개념에 대해 알아봅시다. RPC RPC(원격 프로시저 호출)는 한 프로그램이 다른 컴퓨터에 있는 프로그램에 서비스를 요청하는 프로토콜입니다. 클라이언트에서 서비스를 요청(function call)하면, 서버에서 서비스를 제공합니다. RPC는 client-server 모델을 사용합니다. 스텁(Stub) 서버와 클라이언트는 다른 주소 공간을 사용합니다. 그래서, 함수호출에 사용되는 매개변수를 변환이 필요한데, 스텁이 담당합니다. 마샬링(Marshalling) 스텁은 클라이언트와 서버 각..

프로그래밍 2022.06.16

[Akka.Net] MailBox

참고 : https://getakka.net/articles/actors/mailboxes.html Mailbox Akka.NET에서 Mailbox는 액터를 대상으로 하는 메시지를 보관합니다. 액터에게 메시지를 보낼 때 메시지는 액터에게 직접 전달되지 않고, 해당 액터의 Mailbox로 우선 이동 후 액터가 처리할 시간이 있을 때 메시지를 처리합니다. Mailbox는 메시지 큐로 설명이 가능합니다. Mailbox에 들어온 메시지는 보통 액터에서 순서대로 처리합니다. Priority Mailbox 하지만 처리 순서를 변경할 수 있는 Priority Mailbox가 있습니다. 일반적으로 모든 액터는 Mailbox가 있지만, 필수 사항은 아닙니다. 라우터(Router)에 속한 라우티(Routees)들은 하나의..

[C#] 의존성 주입 (Dependency Injection)

의존성이란의존성이라는 것은 A가 B에 의존할 경우 B가 변경될 때 A도 변경될 수 있는 가능성이 있다는 뜻입니다.의존성 주입 (Dependency Injection)의존성 주입이란 외부에서 객체를 생성하여 넘겨주는 것을 의미합니다.예를들어 A 클래스가 B 클래스를 의존할 때,B Object를 A가 직접 생성하지 않고 외부에서 생성하여 넘겨주면 의존성 주입했다고 합니다.왼쪽은 A에서 B를 생성하는 일반적인 의존 형태이고, 오른쪽은 외부에서 의존 객체를 생성하고 주입하는 형태입니다.의존성 주입은 소프트웨어 디자인 패턴 중 하나로, 클래스 간의 의존성을 외부에서 주입하는 방식을 의미합니다.이를 통해 코드의 재사용성과 유연성을 높이며, 유닛 테스트와 확장성에도 도움을 줍니다.As-Is 코드 (의존성 주입을 사용..

프로그래밍/C# 2022.06.06

[C#] 오버라이딩이란? (Override)

오버라이딩이란? (Override) A클래스의 메서드를 파생 클래스 B클래스에서 메서드를 가져와 내용을 변경 하려면 오버라이딩을 해야한다. A클래스의 메서드의 한정자는 virtual이고, B클래스의 메서드 한정자는 override 이어야 한다. B클래스의 메서드에서 base.{메서드}를 기본으로 호출해야한다. A클래스의 메서드가 private이면 오버라이딩 불가하다. class ArmorSuite { public virtual void Initialize() { Console.WriteLine("Armored"); } } class IronMan : ArmorSuite { public override void Initialize() { base.Initialize(); Console.WriteLine($..

프로그래밍/C# 2022.06.06

[C#] 키워드 정리

필드 클래스 내부의 변수를 말한다. 멤버 클래스 내부의 변수,메서드 등.. 모든 것을 통틀어 말한다. Static static은 메서드나 필드가 클래스의 인스턴스가 아닌 클래스 자체에 소속되도록 지정하는 한정자이다. is 키워드 객체가 해당 형식에 해당하는지 검사, bool값을 반환한다. as 키워드 형식 변환 연산자 형식 변환 실패 시 null을 반환한다.

프로그래밍/C# 2022.06.06

[C#] 생성자 (Constructor)

생성자 (Constructor) class 명과 동일한 메서드 생성자의 임무는 단 한가지, 해당 형식(클래스)의 객체를 생성하는 것이다. 생성자를 구현하지 않으면, 컴파일러에서 만들기 때문에(이런 생성자를 기본 생성자(Default Constructor)라고 한다.) 빌드에 문제가 없다. public class Person { private string last; private string first; // 생성자 public Person(string lastName, string firstName) { last = lastName; first = firstName; } // Remaining implementation of Person class. }

프로그래밍/C# 2022.06.06