본문 바로가기

Language

강한참조 / 약한참조(WeakReference) 강한참조 일반적으로 new 할당 후 새로운 객체를 만들어 해당객체를 참조하는방식이다.할당된 객체를 해지하기 위해 null값을 넣어도 새로운 객체가 참조를 하고 있어GC가 수집해 가지 않는다. 약한참조 WeakReference를 이용하여 new할당된 객체를 참조하는 방식이다.할당된 객체를 해지하기 위해 null값을 넣으면 WeakReference객체가 참조를 하고 있어도약한 참조를 하고 있기 때문에 GC가 수집해가서 할당된 객체는 사라지고 weakreference 객체는 null값을 가지게 된다. //new 할당할 객체 2개 stock phone; stock notebook; //각각 강한참조객체와 약한참조 객체 stock stock1; WeakReference stock2; public void Test..
.NET Reflection .NET Reflection .NET Reflection은 .NET 객체의 class type, method, property등의 meta information을 runtime중에 알아내는 기능을 제공한다.또한, 이러한 meta information을 얻은 후 직접 method를 호출하거나 property를 변경하는 등의 작업도 가능하다.물론 객체에서 method를 직접 호출하는 경우가 더 빠르겠지만 어떤 경우는 runtime중에 이런 meta information을 동적으로 알아낼필요가 있다.예를들어 test assembly에 있는 test class들의 public method를 선별해서 이를 동적으로 호출하는 경우라든가특정 class안에 지정된 이름의 member가 있는지 판단하는 경우 등이 있다...
Generalization Generalization(일반화) Generalization는 서로 다른 개념에서 공통점을 찾는것이다. 'A', 'B', 'C'는 다른 단어지만 '영어'라는 공통점을 가지며 int, float, string은 다른 type이지만 '변수'라는 공통점을 가진다. 위처럼 어떤 개념을 포괄하는 공통된 개념을 찾아 서로 다른 개념을 하나로 묶어주는것이다. void print(int A) { Console.WriteLine(A); } void print(float B) { Console.WriteLine(B); } void print(string C) { Console.WriteLine(C); } //위 3개 method를 generalization한 method void print(T value) { Conso..
Boxing / UnBoxing Boxing 값형식을 참조형식으로 변환하는것Boxing은 내부적으로 stack영역에서 heap영역으로 data가 copy되고그 copy된 data를 object가 참조하게 된다.(값형식 -> 참조형식) UnBoxing 참조방식을 값형식으로 변환하는것UnBoxing이 되면 data를 heap영역에서 stack영역으로 copy한다.(참조형식 -> 값형식) 참고https://mrw0119.tistory.com/16
Collection의 성능문제 / Generic Collection C# Collection의 경우 type을 object type으로 저장하기 때문에 하나의 collection안에 다양한(int, bool, string) type들을 보관할 수 있다.하지만 이것이 성능상 단점을 유발하게된다. Collection은 data를 받으면 어떤 형식이든지 object type으로 Boxing되어 저장되고data에 접근하여 사용할때는 원래의 data type으로 UnBoxing하게되는데 알다싶이 Boxing, UnBoxing하는것은 비용이 들게 되고 따라서 data가 많아지고 data의 입출력이 잦아질 경우Boxing, UnBoxing의 횟수가 늘어나 성능저하가 발생하게 된다. 이러한 문제때문에 Generic Collection을 사용한다. using System.Collecti..
C# 제네릭 https://slaner.tistory.com/122 잘 설명이 되어있다.
Coroutine Main Routine Program이 실행될 때 불려지도록 만들어진 program의 중심이 되는 일련의 code들을 뜻한다.C++에서는 main함수가 main routine이다. Subroutine Main Routine이외의 다른 모든 routine즉 main함수 외의 모든 함수 Coroutine 진입하는 지점을 여러개 가질 수 있는 subroutineCoroutine은 호출한 routine을 대등한 관계로 호출할 수 있기때문에다른 Routine의 종속관계가 아니다. 라고 표현할 수 있다. Coroutine은 함수 내에서 호출한쪽을 다시 호출할 수 있고 다시 다른 routine에서 함수의 중간 지점을 호출할 수 있는것 Main Routine과 SubroutineCoroutine Coroutine은 T..
COM / DCOM / COM+ / IPC COM(Component Object Model) 단위 software component들이 서로 통신할 수 있게 하즌 표준화 된 방법VB, C++, MFC, ATL, JAVA등 어떤 language를 사용해서 만든 COM객체든 다른 language에서도 재사용이 가능하게 해준다.(.NET Framework로 대체됨) DCOM(Distributed Component Object Model) 인터넷이나 LAN환경에서 서로 다른 컴퓨터끼리의 통신을 지원하는 분산확장형 COM COM+ 분산형 트랜잭션을 동시 처리목적으로 나타난것 IPC(Inter Process Communication) 필요에 따라 process간 정보를 교환해야 할 떄 두 process가 상호 통신하며 정보를 교환하는 방법