일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- english
- 실행계획 원리
- await
- TPL
- query
- esl
- 저장프로시저
- validation
- Dataannotation
- 영어공부
- identityserver3
- async await
- 쿼리 최적화
- MSSQL
- async
- fast in ssms
- oauth2
- 느린 저장프로시저
- SQL Server Optimizer
- C#
- .net
- identityserver
- slow in the application
- SQLServer
- SSMS
- IdentityServer4
- task
- ThreadPool
- stored procedure
- execution plan
- Today
- Total
목록.NET (18)
Genius DM
See content in English Task 기본 요즘은 대부분의 컴퓨터 및 전자 기기가 강력한 멀티 코어를 갖추고 나온다. 컴퓨터 프로그래밍 세계에서 이는 곧 병렬처리가 중요해진다는 것을 의미한다. 컴퓨터 시스템에서 단 하나의 프로세스만을 사용하는 경우는 이제 DOS 만큼 머나먼 과거에나 존재하는 이야기가 되었다. 가장 세련되고 가장 현대적인 프로그래밍 언어 중 하나인 C# 에서 이러한 병렬 프로그래밍 기능을 .NET Framework 4 부터 탑재시켰다. 더 정확하게 얘기하면 .NET Framework 가 이를 지원한다. 이 새로운 프레임워크 버전에서 TPL ( Task Parallel Library ) 이 추가되었는데, 병렬성을 지원하기 위한 자료 구조 다수와 작업 및 작업 스케쥴링을 위한 알..
See content in English ThreadPool 에 대해서 빨리 Task 에 대해서 정리하고 싶지만, 그 근간인 ThreadPool 을 먼저 정리하는 것이 순서이기에 ThreadPool 에 대해서 한번 더 다뤄보려고 한다. 이번엔 이전 포스트보다 좀 더 디테일에 집중한다. ThreadPool 은 두 종류의 쓰레드를 지닌다.ThreadPool API 중 ThreadPool.GetMinThreads(out int workerThreads, out int completionPortThreads); 가 있는데, ThreadPool 의 최소 Thread 유지 개수를 반환하는데, 종류가 두 개이다. 이것의 정체가 무엇일까? WorkerThread Main Thread 를 제외한 모든 Thread 를 의..
See content in English ThreadPool System.Threading 네임스페이스에 속한 클래스로, 쓰레드 풀을 제공한다. Pool 은 영어 의미적으로 한 눈에 볼 수 있는 어떤 공간 ( 주로 사각형 ) 의 내용물을 의미한다. 그 내용물이 물이면 Swimming Pool 로 수영장이 되고, 당구공이 있으면 Pool Table 이 되어 당구대가 된다. Pool 은 그런 느낌이다. 고로 ThreadPool 이면, Thread 가 컨텐츠로 있는 공간을 의미하는 것이다. 이 ThreadPool 을 이용해서 비동기 I/O 작업을 할당하거나 특정 작업을 Thread 를 통해서 실행시킬 수 있다. ThreadPool 의 장점미리 생성된 Thread 를 사용하여 비용이 많이 드는 Thread 생성..
See content in English 이미지 버퍼에 비트맵 헤더 추가하기 TCP, RTSP 등의 IP 카메라나, USB 인터페이스를 사용하는 Webcam 등으로부터 이미지 버퍼를 받고, BMP, JPG, PNG 등으로 변환하는 것은 이미지 프로세싱에서 매우 흔하면서도, 기본적인 작업이다. 그러나 각 파일 구조에 대한 이해가 부족하면, 이를 처리할 수 없는데 스택오버플로우에 올라온 이런 질문이 바로 적당한 예이다. 카메라에서 받는 바이트 배열 ( 버퍼 ) 가 있는데, 어떻게 비트맵으로 변환하나요? 예제를 찾아봐도 C++ 예제 뿐이고, 제 코드에서는 변환하려고 하면 ParameterException 떨어집니다. 어떻게 하나요? 방법은 BMP 파일 구조만 파악하면 간단하다. https://en.wikipe..
See content in English 아이덴티티 서버 클라이언트에서 특정 유저만 접근 허용하기. 스택오버플로우에 이런 질문이 몇 일전에 올라왔는데, 유저나 클라이언트 세팅만으로 간단하게 해결할 수 있을 줄 알았는데, 그런 직접적이고 간단한 방법이 없어서 생각보다 긴 답변을 작성하게 되었다. 요청이 진행 중일 때 이런 접근 제어를 하기위한 가장 적합한 방법을 찾아보았으나, 결국 사용자 정의 벨리데이션을 직접 구현하는 방법 밖에는 없었다. ICustomRequestValidatorthe overview architecture of IdentityServer3 이 글에서 설명했 듯, 아이덴티티 서버는 추가적인 인증 프로세스를 요청 과정에 추가하기 위한 간단한 방법을 디자인 단계에서부터 고안하여 방법을 마련..
See content in English IIS Express 와 IIS applicationhost.config 설정 파일 위치 IIS Express%USERPROFILE%Documents\IISExpress\config * %USERPROFILE% 은 일반적으로 C:\Users\윈도우계정명 이다. Program Files 에도 IIS Express 폴더가 있고, 내부에 applicationhost.config 가 존재하는데, 이 설정은 무시해도 된다. 왜냐하면 VisualStudio 에서 웹 프로젝트를 F5 또는 Ctlr + F5 로 실행하는 경우 위에서 제시된 설정을 참조하게 되기 때문이다. IISC:\Windows\System32\inetsrv\config IIS Express & IIS appl..
See content in English IIS Express 에서 최초 요청이 느리게 처리되는 경우 Async await 패턴 및 Task 에 관해서 깊이 파고 들어가고 있는 요즘 다양한 시도를 하는 중에 흥미로운 테스트 결과가 나와서 Stackoverflow 에 질문까지 남기게 되었다. 이 블로그 포스트 내용과는 다르게 Async API 와 일반 API 에 대해 질문하는 내용인데, 원인이 Async 함수와 일반적인 함수에 있지 않다는 사실을 깨닫기 전이기 때문에, 그 관점으로 질문을 했던 것이다. 최초에 단순한 문자열을 반환하는 async API / 일반 API 를 아래 처럼 만들었었다. public class TestController : ApiController { [HttpGet] [Route(..
See content in English Span Background.NET 은 관리되는 플랫폼으로, 관리된다는 의미는 메모리 접근 및 관리가 안전하면서도 자동으로 관리된다는 의미이다. 모든 타입이 .NET 에 의해 관리되며 .NET 은 실행 스택이나 Managed Heap 상의 메모리를 할당해준다. 플랫폼간 이벤트나 아래 단의 개발을 할 때 네이티브 객체에 대한 접근을 원하거나 시스템 메모리 접근을 원할 수도 있는데, 바로 이것 때문에 interop 이 생겼다. .NET 에는 네이티브 세계로 마샬링될 수 있는 타입들이 존재하며 해당 타입들은 네이티브 API 를 호출하거나 관리되는/네이티브 타입으로 변환할 수 있고 관리되는 코드 상에서 네티이브 구조체를 정의할 수도 있다. 문제점 1 : 메모리 엑세스 패..
See content in English Tuples 튜플에 대해서 알아보자 TuplesSystem.Tuple 네임스페이스로 Key / Value 형태의 속성을 담을 수 있는 형태의 타입을 제공한다. 별도의 타입을 만들기는 싫은데 프로퍼티를 포함한 객체를 지닌 자료 구조를 만들고 싶을 때 사용할 수 있다. 아래 코드는 이름과 나이를 지닌 한 학생의 값을 반환 값으로 사용하는 예제이다. public Tuple GetStudentInfo(string id) { // Search by ID and find the student. return new Tuple("Annie", 25); } Tuple 의 인스턴스를 반환하고 있는데, 첫 번째가 이름이고 두 번째 인자가 나이이다. 추후에 이 메서드를 호출하기 위해 ..
See content in English 제너릭의 공변성과 반공변성 제너릭에서 공변성과 반공변성 하나의 용어이자, 최초에 정의된 타입보다 더 정확하거나, 덜 정확한 파생 타입을 사용할 수 있는지에 대한 여부를 결정하는 특성이다. 무슨 말인지 이해가 안 될지도 모른다, 하지만 코드를 보면 이해가 빠를 것이다. 샘플 모델 - Cup > Base 클래스.- PlasticCup > Cup 을 상속하는 파생 클래스.- PaperCup > Cup 을 상속하는 파생 클래스. 이렇게 베이스 클래스와 파생 클래스는 다형성으로 인해 아래와 같은 할당이 가능해진다. IEnumerable plasticCups = new List(); IEnumerable cups = plasticCups; 단순히 베이스 클래스와 파생 클래스..