소리소문 없이... 사랑도 명예도 이름도 남김 없이...
DexCore.net

C# 251

[.Net 4.5] 2Gb 이상 메모리 사용 하기

x64 운영체제에서 어플리케이션을 개발하다가 보면 OOM(OutOfMemory)이 발생하지 않을것으로 예상했었는데 실질적으로는 발생 하는 케이스가 있었습니다. 실예로 대용량으로 DataSet들을 미들티어단에서 모아서 리턴해주는 Broker 기능을 하는 프로세스에서 발생을 하였습니다. ( 여러 서비스에서 리턴된 DataSet이 한곳에 모여져서 관리가 되다 보니 하나의 객체가 2Gb가 넘는 순간이 간혹 발생을 하여 한동안 골머리를 앓고 있었죠) 이와 같은 문제점을 .Net 4.5에서는 쉽게 해결할 수 있게 되었습니다. 바로 런타임 설정 파일에 적용하면 하나 객체가 2Gb이상 관리할 수 있게 할 수 있습니다. http://msdn.microsoft.com/ko-kr/library/hh285054.aspx 위와..

C# 2018.07.03

yield

c#의 yield 키워드는 호출자(Caller)에게 컬렉션 데이터를 하나씩 리턴할 때 사용한다.흔히 Enumerator(Iterator)라고 불리우는 이러한 기능은 집합적인 데이타 셋으로부터 데이타를 하나씩 호출자에게 보내주는 역할을 한다. yield는 yield return 또는 yield brake의 2가지 방식으로 사용되는데, (1) yield return은 컬렉션 데이타를 하나씩 리턴하는데 사용(2) yield brake는 리턴을 중지하고 iteration 루프를 빠져 나올 때 사용한다. 아래의 코드는 3개의 yield return문을 가지고 있다. 만약 외부에서 GetNumber()를 호출하게 되면, 첫번째 yield return인 10, 두번째는 20, 30을 리턴한다.한꺼번에 모두 리턴하는 ..

C# 2018.06.29

대용량 txt 파일 짜르기

[ 대용량 txt 파일 편집 에디터를 못찾으셨거나 대용량 txt 파일을 짜르거나 추출해 할 경우 ] using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO; namespace ConsoleApplication3{ class Program { static void Main(string[] args) { int counter = 0; int fileCounter = 0; string readLine, writeLine; // 파라메터가 있는 지 확인 : 파라메터는 읽어들일 '파일경로\파일명.확장자' 임. if (args.Length < 1) { System.Console.WriteLine(..

C# 2018.06.29

ENCODING / BITCONVERTER

컴퓨터는 내부적으로 데이터를 숫자로 처리합니다. A, B, C와 같은 문자도 마찬가지입니다. 그럼 시스템은 내부적으로 문자를 처리하기 위해 숫자로 표현해야 하는데 이 과정을 인코딩(Encoding)이라고 합니다. 다만 특정 문자를 표현하기 위해 내부적으로 문자를 어떤 숫자로 처리해야 하는가가 정해져야 하며 이를 정리한 코드체계중 대표적으로 ASCII코드가 있습니다. ASCII코드는 A를 65, B를 66... 으로 표현합니다. 하지만 ASCII코드는 7bit를 기반으로 하기에 영문자나 숫자, 일부특수문자만을 표현할 수 있을뿐 한글, 한자, 일어와 같은 문자는 표현할 수 있는 방법이 없습니다. 그래서 대한민국은 한글표현을 위해 EUC-KR, CP949, KS_C_5601-1987등의 인코딩방식을 만들게 되..

C# 2018.06.29

BinaryFormatter / XmlSerializer / DataContractJsonSerializer

C#에서는 문자열이나 정수와 같은 타입의 데이터를 byte배열로 변환하는 직렬화를 수행할 수 있으며 물론 그 반대로 가능합니다. 그렇다면 기본 데이터타입이 아닌 직접 만든 클래스와 같은 요소는 어떻게 직렬화를 수행할 수 있을까? System.Runtime.Serialization.Formatters.Binary.BinaryFormatter가 그 답이 될 수 있습니다. 예를 들어 아래와 같은 클래스가 있습니다. class Employee { public Employee(string name, string department, int level) { Name = name; Department = department; Level = level; } public string Name { get; set; } p..

C# 2018.06.29

LINQ

배열이나 컬렉션에 들어간 요소를 순회하는 고전적인 방법중 하나는 foreach를 이용하는 것입니다. List li = new List { new Member { Name = "홍길동", Age = 40, BirthDay=DateTime.Parse("1978-01-28") }, new Member { Name = "홍길순", Age = 21, BirthDay=DateTime.Parse("1997-05-16") }, new Member { Name = "홍길남", Age = 38, BirthDay=DateTime.Parse("1980-03-06") }, new Member { Name = "홍길영", Age = 19, BirthDay=DateTime.Parse("1999-11-20") }, new Membe..

C# 2018.06.29
728x90
반응형