본문 바로가기

C#

(12)
[C#] DB Connection Keep or Close 연결을 닫았다가 다시 열어야 할 이유는 없습니다. 데이터베이스와 네트워크에 불필요한 로드를 부과합니다. 커넥션 풀링에 관해 알아보겠습니다.원래 질답란에 있던 내용인데, 일반적이지 않은 내용이어서 정리를 해서 일반적인 사용법을 알려드리겠습니다. 커넥션 풀링은 DB와의 새 연결시 많은 자원을 소모하는 데, 직접연결을 피하고, 연결된 커넥션을 자원으로서 관리를 하여 성능향상을 얻고자 하는 방법입니다. 다시 설명하면, 풀링매니저가, 연결된 커넥션을 자원으로 관리를 하면서, 어플리케이션에서 필요로 할 때 리소스가 많이 필요한 새연결을 하지 않고, 기존 자원으로 재사용을 하고, 연결 끊기문장을 만났을 때 DB와의 실제 연결을 끊지 않고, 풀링에 반납함으로써, DB와의 연결과 끊기를 실제적으로 줄여주는 효과가 있습니..
[C#] DB Connection Pooling ◈ Connection Pooling클라인언트가 데이타베이스 서버에 작업 명령을 보내기 전에 반드시 DB 서버 연결을 먼저 해야하는데, 이 Connection 작업은 클라이언트/서버간 핸드쉐이크를 비롯해 서버 로그인까지 여러 과정을 거치는 것으로 상대적으로 긴 시간을 소요한다. 따라서, DB 처리가 많은 웹 프로그램이나 기업 S/W에서는 한번 사용한 Connection을 끊지 않고 Connection Pool이라는 곳에 저장해 두었다가 다음 DB연결 요청에 재활용하는 방식을 사용한다 ◈ Connection Pooling 생성 과정ADO.NET의 SqlConnection은 기본적으로 Connection Pooling 기능을 ON하고 있으므로, 다음과 같은 방식으로 Connection 생성 관리하게 된다. ..
[C#] 요점정리 ▣ 닷넷이란-. 모든 것을 포괄하고 있는 이상적인 개발환경-. 개발에 필요한 개발 언어, 개발 툴, 라이브러리, 기반 기술 등을 제공하는 이상적인 개발환경이다. ▣ 닷넷의 특징-. 플랫폼 독립성-. 다양한 언어의 지원-. 상호 운용성 : 서로 다른 언어끼리의 호환성 ▣ C#과 자바 차이-. 자바는 동적 해석 언어이다-. 자바는 바이트코드를 인터프리터 방식으로 해석해서 실행한다.-. C#은 동적 컴파일 언어이다.-. JIT 컴파일러에 의해서 동적으로 중간언어을 재컴파일해서 실행한다. ▣ 값타입(Value Type): 변수를 선언하면 자동으로 메모리가 생성되는 데이터 타입 ▣ 선택문: 프로그램 내에서 주어진 조건에 따라 실행여부를 결정하는 제어문: if switch ▣ 추상클래스(abstract)-. 몸체만..
[C#] 배열 복사 ▣ 배열 복사: 일반적인 객체처럼 배열 또한 참조값이기 때문에 복사를 해도 참조값만 복사되는 문제가 있다. 배열의 메모리 차원에서의 복사를 위해 C#에서는 다음과 같이 두가지 복사 방법을 제공하고 있다. □ 배열을 복사하는 2가지 방법-. Array.Copy() 함수를 이용한 부분 배열 복사-. Clone() 함수를 이용한 배열 통복사 Array.Copy() 함수는 배열의 일정 부분을 다른 배열의 특정 위치로 복사할 때 사용한다. 쉽게 부분 배열 복사라고 말할 수 있다. 물론 전체를 복사할 수도 있다. Array.Clone() 함수는 배열의 전체를 한꺼번에 복사하는 함수이다. 통째로 복사되는 의미에서 복사보다는 복제가 더 어울리는 표현이다. □ Array.Copy() 함수를 이용한 부분 배열 복사-. 배..
[C#] Thread(스레드) ▣ 프로세스(Process): 하나의 프로그램은 하나의 프로세스에 해당한다. ▣ 멀티 태스킹(Multi-Tasking)-. 프로세스의 경우 운영체제에서 자동으로 관리해준다.-. 운영체제 차원의 프로세스 관리를 멀티 태스킹이라고 한다. ▣ 프로세스와 스레드-. 하나의 프로세스 내애세 여러 개의 스레드가 존재할 수 있다. ▣ 스레드란?-. 하나의 프로그램 내에서 실행되는 함수-. 한순간에 두 개의 함수가 동시에 실행되면 두 개의 스레드가 동작하는 것이다. ▣ 스레드 프로그램을 할 때 주의해야 할 사항-. 우선권(Priority)-. 동기화(synchonization) 윈도우의 장점 중에서 가장 두드러진 것이 바로 멀티 태스킹이다. 윈도우즈에서 작업을 할 때 워드창, 웹 브라우저, 음악 플레이어 정도는 동시에..
[C#] Naming 규칙 ▣ 파스칼 표기법 - 모든 단어에 첫번째 문자가 대문자이며 나머지는 소문자이다.예) BlackColor ▣ 카멜 표기법 - 최초에 사용된 단어를 제외한 첫번째 문자가 대문자이며 나머지는 소문자이다.예) blackColor ▣ 클래스 Naming : 명사 또는 명사절을 사용한다 : 예: Component, CustomerAttributeProvider : 클래스명에는 파스칼 표기법을 사용한다. : 클래스명은 약자형을 사용한다. : 클래스명 앞에 클래스의 첫 자 "C" 와 같은 것을 붙이지 않는다 (예제) : public class FileStream{} : public class Button {} : public class String {} ▣ 메서드 Naming : 메서드명은 동사 또는 동사절을 붙인다...
[C#] MemberwiseClone() 함수 ◈ 정의 Object 클래스의 protected 멤버 함수이며 객체 복사를 위한 함수 ◈ 설명객체는 참조를 기본으로 하기 때문에 객체 변수를 사용한 할당은 참조값을 넘겨주는 의미이지 메모리 차원에서의 복사 개념은 아니다. 따라서 아무리 할당을 해도 넘어가는 것은 참조값 뿐이다. 이러한 문제를 해결하기 위해서 MemberwiseClone() 함수를 제공한다. 이 함수는 메모리 차원에서 객체의 복사본을 생성하는 함수이다. ◈ 객체복사-. 얕은 복사: object의 MemberWiseClone()이 자동으로 지원해준다.-. 깊은 복사: 직접 구현해서 사용해야 한다. ☞ protected의 사용: MemnberwiseClone()의 접근 지정자는 protected이다. 접근 지정자가 protected인 멤버는 ..
[C#] enum의 Flag 연산 enum(열거형)에서는 Flag(FlagsAttribute)속성이 있는데, 이를 이용하면 하나의 속성을 선택하는 것이 아니라 여러 속성을 선택하는 것이 가능합니다.다음의 코드는 열거형의 Flag연산을 쉽게 정리해 놓은 것입니다. [Flags]public enum Column{None = 0,Priority = 1