Span 를 사용해야 할 5가지 이유

출처 소개: Hello World 런타임이 .Net Core 2.1 이후라면 표준으로 사용할 수 있다. 그렇지 않으면 Nuget에서 System.Memory 라는 패키지를 넣자. 그리고, 언어는 C# 7.2 이상이 필요하다. Span라는게 뭐야? A. 우선, 배열 같은 것이라고 생각해도 좋다. 정확하게 말한다면, 배열의 일부분을 가리키는...
더 읽기

Span 이용에 따른 최적화

출처 힙 사용량 절감 Span 를 사용하면 빠르게 되는 이유는 간단하게 힙 사용량을 줄아가 때문이다. string.Substring 등으로 새로운 문자열을 만들어 않아도 된다. stackallock욿 임시 버퍼에 힙을 사용하지 않는다 네이티브 메모리를 직접 읽을 수 있게함으로써 관리되는 배열에 복사하지 않는다 모두 unsafe...
더 읽기

WCF - Tips

클라이언트가 요청 데이터를 null로 보내는 경우 대처 클라이언트에서 public RES_LOGIN_DATA RequestLogin(REQ_LOGIN_DATA reqData)을 요청한 경우 reqData을 null로 보낼 수 있음(악의적인 이유로). 그래서 아래처럼 요청 데이터를 null 조사를 해야한다. public class ServerService : IServerService { public RES_LOGIN_DATA RequestLogin(REQ_LOGIN_DATA reqData) { if (reqData...
더 읽기

WCF - TCP Sample

서버 WCF LIB namespace WCFServerLib { public interface IClientCallback { [OperationContract(IsOneWay = true)] void SendMessageToClient(string message); } } namespace WCFServerLib { [ServiceContract(CallbackContract = typeof(IClientCallback))] public interface IServerService { [OperationContract(IsOneWay = true)] void RegistClinet(string id); [OperationContract] void TestUserData(RequestEcho reqEcho); [OperationContract] string...
더 읽기

WCF - AsyncAwait

예제 코드 [ServiceContract] public interface IServerService { [OperationContract] Task<RES_LOGIN> RequestUserLogin(REQ_LOGIN reqData); } // http://localhost:15501/GameService/RequestUserLogin [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "RequestUserLogin")] public async Task<RES_LOGIN> RequestUserLogin(REQ_LOGIN reqData) { try { var result = await ReqLogin.ProcessAsync(reqData); return...
더 읽기

WCF - RESTful API

RESTful 서비스 URI나 표준 동사(POST, GET, PUT, DELETE) 등 HTTP 사양을 강하게 의식한 리소스 베이스의 접근을 제공. 최신의 프레임워크는 대 부분 RESTful 서비스를 만들 수 있는 기능 지원. WCF의 REST 서비스에서는 POX (Plan XML 형식), AJAX 애플리케이션 등에서 사용 되는...
더 읽기

golang - 스택과 힙에 대해

실행 시 동적으로 메모리를 확보하는 영역으로서 스택과 힙이 있다. 스택 메모리는 함수 호출 스택을 저장하고 로컬 변수, 인수, 반환 값도 여기에 둔다. 스택의 Push와 Pop은 고속이므로 객체를 스택 메모리에 저장하는 비용은 작다. 단 함수를 나오면 스택이 Pop 되어 해제되므로 함수의...
더 읽기

golang - OOP 프로그래밍 하기

캡슐화 Go에서는 구조체와 해당 필드, 함수, 메소드의 범위는 이름의 선두가 대문자, 소문자로 결정된다. 대문자이면 public, 소문자라면 같은 패키지 내로 닫힌 범위로. 그러므로 아래와 같이 쓰는 것으로 캡슐화를 실현할 수 있다. //human.go package class type Human struct { // 필드 이름을...
더 읽기

golang - go로 쓴 코드의 힙 할당 여부 확인하는 방법

출처 서두 Allocation Efficiency in High-Performance Go Services · Segment Blog 라는 기사를 읽었다. 좋기 때문에 꼭 일독을 권장한다. 이 글은 나의 이해와 실제로 시험해 본 결과의 메모이다. 가장 중요한 포인트는 go build -gcflags ‘-m’ 같이 옵션을 지정하여 빌드하면 코드의...
더 읽기