일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- await
- oauth2
- async await
- 실행계획 원리
- slow in the application
- identityserver3
- MSSQL
- TPL
- 영어공부
- query
- 쿼리 최적화
- esl
- ThreadPool
- async
- .net
- fast in ssms
- SSMS
- english
- 느린 저장프로시저
- IdentityServer4
- C#
- task
- SQLServer
- stored procedure
- identityserver
- execution plan
- 저장프로시저
- Dataannotation
- SQL Server Optimizer
- validation
- Today
- Total
목록C# (14)
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 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 Quick Diagram Tool For C# Visualstudio Extension 툴 하나를 소개할까 한다. Code visualization 툴 중의 하나인데, Framework 분석할 때, 상속 관계를 한 눈에 보고 싶을 때 사용하기 간편해서 애용하는 편이다. 설치Visualstudio 상단에 도구를 클릭하면 확장 및 업데이트(U) 메뉴가 나온다. 그것을 누르자. 검색을 Quick diagram 으로 검색하면, Quick diagram tool for C# 이 보일 것이다. 그것을 설치한다. 사용하기이제 상속관계를 조사하고 싶은 Class, Interface 등의 개체를 우클릭하면 툴팁 메뉴 최하단에 Add to Quick DiagramAdd to Qui..
See content in English 제너릭의 공변성과 반공변성 제너릭에서 공변성과 반공변성 하나의 용어이자, 최초에 정의된 타입보다 더 정확하거나, 덜 정확한 파생 타입을 사용할 수 있는지에 대한 여부를 결정하는 특성이다. 무슨 말인지 이해가 안 될지도 모른다, 하지만 코드를 보면 이해가 빠를 것이다. 샘플 모델 - Cup > Base 클래스.- PlasticCup > Cup 을 상속하는 파생 클래스.- PaperCup > Cup 을 상속하는 파생 클래스. 이렇게 베이스 클래스와 파생 클래스는 다형성으로 인해 아래와 같은 할당이 가능해진다. IEnumerable plasticCups = new List(); IEnumerable cups = plasticCups; 단순히 베이스 클래스와 파생 클래스..
See content in English IdentityServer3 토큰 데이터베이스에 저장하기 IdentityServer3 웹 어플리케이션이나 OAuth2, OpenID Connect 등의 프로토콜을 사용하는 API 에 대한 접근 제어 & SSO 를 이식하는 데 유용한 프레임워크이자 호스팅 가능한 컴퍼넌트이다. 다양한 어플리케이션을 지원하여 범용적으로 활용할 수 있다. Documentation 은 상대적으로 미비하나, Example 소스코드 제공은 매우 풍부하게 되어있는 편이다. 샘플 레파지터리는 https://github.com/IdentityServer/IdentityServer3.Samples/ 이곳에서 다운받을 수 있다. ITokenHandleStore, ITransientDataReposit..