-

[C#] Array 단점 . 장점


An array is a collection of similar data types.


장점

-  Strongly Typed

-  빌드 시 detecting



단점

- 한 번 초기화 되면 그 크기를 변화 시킬 수 없다.

- 배열에서 항목을 저장하거나 검색하려면 정수 인덱스를 사용해야 함!!!


Collection 을 써라. 


List


VS


ArrayList

-
-

[C#] Datatype conversions


데이터형 변환


Cast and Convert

Parse and TryParse



Implicit

int f = i;

        

형 변환


// Use explicit conversion using cast () operator

        int i = (int)f;


        // OR use Convert class


        // int i = Convert.ToInt32(f);



Implicit 암시적

Explicit 명시적


-
-

[C#]  Nullable Types



Value Types  - int, float, double, structs, enums etc
Reference Types – Interface, Class, delegates, arrays etc



value types = non nullable

Reference = null ok



int i = 0 

=> i = null will generate compiler error


int? j = 0 

=> j is nullable int, so j=null is legal


data Types?


Nullable Types



NULL coalescing operator ??



NULL coalescing operator ?? null 일 경우의 초기값




-
-

Ternary Operator





조건 ?  참 : 거짓






-
-


""


Verbatim Literal 
string with an @ symbol prefix




이스케이프 시퀀스

escape sequence


MSDN



https://msdn.microsoft.com/ko-kr/library/h21280bw.aspx

'IT 백과' 카테고리의 다른 글

[C#] Nullable Types - Value / Reference Types  (0) 2017.02.06
[C#] Ternary Operator ?:  (0) 2017.02.06
[C#] Built-in types Data  (0) 2017.02.06
[C#] Place holder syntax , Concatenation + {0}  (0) 2017.02.06
[C#] Namespace - 네임스페이스  (0) 2017.02.06
-
-

[C#] Built-in types Data




Boolean type – true or false 

Integral Types  sbyte, byte, short, ushort, int, uint, long, ulong, char

Floating Types – float and double

Decimal Types 


-
-

[C#] Place holder syntax , Concatenation + {0}






Concatenation +

Place holder syntax {0} {1} {2} ...




-
-

Namespace is used to organize your code


네임스페이스




Namespace is collection of
                                    classes , 

interfaces, 

structs, 

enums, 

and delegates.

'IT 백과' 카테고리의 다른 글

[C#] Built-in types Data  (0) 2017.02.06
[C#] Place holder syntax , Concatenation + {0}  (0) 2017.02.06
[MSSQL] View 한계 / 제한 / limitations  (0) 2017.01.23
TCP UDP 소켓 시스템  (0) 2016.12.31
IoT - 사물인터넷  (0) 2016.12.30
-
-

View 의 한계 / 제한 / limitations


뷰에 대해서 맨날 같은 내용들만 보여서 내가 정리한다.


뷰가 무엇인지 모르는 사람들은 뷰에 대해서 상세히 나와 있는 것들을 찾아보기 바란다.

하지만 아래와 같은 내용들은 잘 찾아 볼 수 없을 것이다.



뷰 (View) 사용 시 주의 할 점 / 뷰의 한계 / 제한 / limitations



1. 뷰는 파라미터를 Pass by 할 수 없다. - 이럴 경우는 Function 을 사용하는 것이 유리




2. 규칙 또는 기본값에 대한 세팅이 불가능 하다. - 당연하지 않은가 가상 테이블이니까 이러한 것들을 할 수가 없다.


3. 뷰는 Order by 절을 사용할 수 없다.  TOP 또는 FOR XML 을 이용


4. 뷰는 가상 테이블을 기반으로 만들 수 없다 - 당연하다. 가상 테이블이니까 ..





즉, 뷰는 가상테이블의 연장선 상에 있는 것으로 생각을 하는 것이 좋다.


그게 바로 팁 Tip !!!



'IT 백과' 카테고리의 다른 글

[C#] Place holder syntax , Concatenation + {0}  (0) 2017.02.06
[C#] Namespace - 네임스페이스  (0) 2017.02.06
TCP UDP 소켓 시스템  (0) 2016.12.31
IoT - 사물인터넷  (0) 2016.12.30
CPU 컴퓨터의 CPU 란??  (0) 2016.12.28
-
-

-자료출처-네이버지식캐스트


TCP


TCP(Transmission Control Protocol)는 IP 프로토콜 위에서 연결형 서비스를 지원하는 전송계층 프로토콜로, 인터넷 환경에서 기본으로 사용한다. TCP에서 제공하는 주요 기능은 다음과 같다. 연결형 서비스를 제공한다.전이중(Full Duplex) 방식의 양방향 가상 회선을 제공한다.신뢰성 있는 데이터 전송을 보장한다. 인터넷 환경에서 사용하는 TCP/IP의 계층적 구조를 보여준다. 인터넷에서 네트워크 계층의 기능을 제공하는 프로토콜은 IP며, IP 프로토콜 위에서 실행되는 전송 계층 프로토콜은 서비스의 유형에 따라 두 종류로 구분한다. TCP는 연결형 서비스를 지원하는 프로토콜이고, UDP는 비연결형 서비스를 지원하는 프로토콜이다. 전송 계층 프로토콜은 운영체제 내부 기능으로 구현된다. 따라서 이 서비스를 사용하려면 상위 계층에서 시스템 콜이라는 프로그램 호출 방식을 이용해야 한다.

전송 계층 프로토콜인 TCP와 UDP 위에는 세션 계층, 표현 계층, 응용 계층의 기능을 지원하는 다양한 응용 프로그램이 존재할 수 있다. 응용 프로그램이 해당 응용 환경에 적합한 기능을 지원하기 위해 연결형 서비스가 필요한지, 비연결형 서비스가 필요한지를 판단해 TCP와 UDP를 선택한다. TCP와 UDP 선택에서는 단순히 신뢰성이나 연결 유무의 차이뿐만 아니라, 이러한 차이가 응용 프로그램의 구축에 어떤 영향을 끼치는지를 이해해야 한다. 응용 프로그램의 종류는 아주 다양하다. 파일 전송 기능, 메일 송수신 기능 등은 일반 사용자가 가장 많이 이용하는 인터넷 서비스다. 호스트의 이름과 주소를 변환하는 네임 서버 기능은 사용자가 의식하지는 못하지만 가장 많이 이용하는 인터넷 서비스다. 이에 대한 자세한 내용은 뒤에서 다룬다. 마지막의 NFS(Network File System)는 원격 분산 파일 시스템 기능을 지원하는 것으로, 호스트 사이의 파일 공유와 유사한 기능을 제공한다. 네트워크 계층의 아래에는 데이터 링크 계층을 지원하는 X.25, 이더넷, 위성 통신 등 다양한 종류의 네트워크 인터페이스가 존재할 수 있다.

TCP에서는 데이터를 세그먼트(Segment)라는 블록 단위로 분할해 전송한다. 전송되는 블록의 크기는 네트워크 부하 정도, 윈도우 크기 등의 영향을 받으며, 가변 크기를 지원한다. TCP에서는 세그먼트를 하나의 단위로 간주하여 순서 번호를 관리하지 않는다. 대신 세그먼트에 실려 전송되는 데이터의 바이트 개수를 순서 번호에 반영한다.


UDP


UDP(User Datagram Protocol)는 인터넷에서 사용하는 프로토콜 중 구조가 가장 간단하다. 하부의 IP 프로토콜을 이용해 비연결형 서비스를 지원하는 UDP는 작지만 빠른 전송이 가능하며, 다음과 같은 특징이 있다. 비연결형 서비스를 제공한다. 헤더와 전송 데이터에 대한 체크섬 기능을 제공한다. Best Effort 전달 방식을 지원한다.UDP는 상위 계층에서 받은 데이터를 IP 프로토콜에 전달하지만 전송한 데이터그램이 목적지까지 제대로 도착했는지는 확인하지 않는다. 따라서 TCP보다 신뢰성이 떨어져 일반 응용 프로그래머가 덜 선호한다. 하지만 프로토콜을 처리하는 기능이 작아 TCP보다 데이터 처리가 빠르므로 데이터 전송 시간에 민감한 응용 환경에서는 UDP를 사용하는 것이 유리하다.


소켓


소켓은 네트워크 통신에서 종단의 교신점 역할을 한다. 종단 교신점은 크게 두 종류로 나눌 수 있는데, 하나는 연결형 종단점이고 다른 하나는 비연결형 종단점이다. 비연결형 종단점은 편지 서비스와 비슷하다. 일반인과 우편 배달부 사이에는 우체통이라는 공통의 교신점이 존재한다. 일반인이 편지를 보내려고 하면 교신점인 우체통에 편지를 넣고, 우편 배달부가 정해진 시간에 우체통에서 편지를 수거한다. 반대쪽 통신에서는 우편 배달부가 각 가정에 편지를 배달한다. 따라서 편지의 송수신 사이에는 곳곳의 우체통과 각 가정을 교신점으로 하는 양방향 통신이 이루어진다. 연결형 서비스의 예는 전화 서비스를 생각할 수 있다. 전화를 이용해 통신하려면 송수신자 모두에게 전화기가 한 대씩 존재해야 하는데 이 전화기가 종단 교신점 역할을 한다. 통화를 하려면 한쪽에서 전화번호를 누르고, 상대방이 수화기를 드는 연결 과정이 필요하므로 전화 서비스는 연결형 서비스 유형에 속한다.
전화 서비스에서는 종단 교신점인 전화가 소켓 기능을 수행하고, 송수신자가 통화하려면 전화를 거는 쪽에서 상대방의 전화번호를 꼭 알아야 한다. 소켓 시스템에서 사용하는 소켓 주소가 전화번호에 해당한다. 전화 서비스 예에서 언급한 바와 같이 두 개의 독립 프로세스가 소켓(Socket)을 이용해 통신하려면 전화번호에 해당하는 소켓 주소의 개념이 필요하다. 소켓은 자체에 어떤 기능이 있는 것이 아니고, 운영체제에서 제공하는 통신 프로토콜을 편리하게 사용할 수 있도록 도와주는 역할을 한다. 따라서 소켓 주소는 사용하는 프로토콜의 종류에 따라 여러 형태의 주소 체계를 사용한다.

AF_UNIX로 표시되는 유닉스 주소 체계는 한 호스트 내부에서 실행되는 프로세스 사이의 통신을 지원한다. 사용하는 주소 체계는 파일 시스템의 경로명을 기반으로 한다. 다음 구조체는 유닉스 주소 체계에서 주소를 표현하는 방법이다. sockaddr_un 구조체는 두 개의 필드를 사용한다. 우선 sun_family 필드는 유닉스 주소 체계를 의미하는 AF_UNIX 값을 갖는다. sun_path 필드에는 소켓을 구분하는 주소를 표시하기 위하여 정의되었으며, 파일 시스템의 경로명을 기록한다.

유닉스 주소 체계를 사용하는 통신 방식은 앞서 설명한 것처럼 하나의 호스트에서 실행되는 프로세스 사이의 통신만 지원한다. 서로 다른 호스트에서 실행되는 프로세스 사이의 통신을 지원하려면 인터넷 주소 체계 방식인 AF_INET을 사용한다. AF_INET 방식에서는 소켓이 생성되는 호스트의 32비트 IP 주소와 16비트의 포트 번호를 조합하여 소켓 주소를 표현한다. 인터넷 주소 체계를 지원하는 sockaddr_in 구조체는 모두 4개의 필드를 정의한다. sin_family 필드는 인터넷 주소 체계를 의미하는 AF_INET을 지정한다. sin_zero 필드는 사용되지 않으며, sin_addr과 sin_port 필드에는 주소를 표시한다. sin_addr에는 호스트의 IP 주소를 기록하고, sin_port에는 포트 번호를 기록한다. IP 주소가 보관되는 sin_addr 필드는 in_addr 구조체에 의해 크기가 32비트인 u_long 타입의 s_addr 필드로 재지정된다.

통합 주소 체계 소켓 주소 체계는 사용하는 프로토콜의 종류에 따라 달라진다. 따라서 운영체제에서 제공하는 통신 프로토콜의 수가 증가하면 이에 비례하여 주소 체계의 표현 방식도 증가한다. 소켓 주소의 사용은 동일한 소켓 시스템 콜을 통해 이루어지는데 의미는 같으나 형식이 다른 여러 구조체를 하나의 함수에서 수용하는 것은 문법적으로 불가능하다. 따라서 여러 소켓 구조체를 통합해 일반 구조체 하나로 정의할 필요가 있다. 다음과 같이 sockaddr이라는 공통 주소 체계를 지원하는 구조체를 사용해 소켓 주소 표현 방법을 정의한다. 이 구조체는 단순히 프로그래밍 환경에서의 문법적인 측면만을 고려하여 정의한 것이다. sockaddr 구조체에 의해 할당되는 공간의 크기는 유닉스나 인터넷 주소 체계 같은 다른 주소 체계에서 필요한 공간보다 커야 한다. 예를 들어, 인터넷 주소 체계를 이용해 소켓 프로그래밍을 하는 경우에 소켓 변수는 다음과 같이 인터넷 주소 체계에서 제공하는 sockaddr_in 구조체를 사용한다. 이후, 주소를 보관하는 addr 변수에는 실제로 인터넷 주소 체계에서 사용하는 IP 주소와 포트 번호 값을 지정한다. 맨 아래 행의 소켓 관련 시스템 콜의 하나인 bind( )는 모든 통신 프로토콜에서 공통으로 사용한다. 따라서 주소 값이 입력되는 두 번째 매개변수를 특정 주소 체계의 구조체로 정의할 수 없다. 예처럼 공통 주소 체계인 sockaddr 구조체로 형 변환하여 문법의 통일성을 유지해야 한다. 결과적으로 bind( ) 함수의 두 번째 매개변수는 struct sockaddr 유형의 포인터 변수만 오도록 정의되었으나, 실제로 사용되는 변수는 각 프로토콜에서 정의되는 주소 체계 유형으로 선언된다. 위의 예에서는 addr 변수를 통해 인터넷 주소 체계인 sockaddr_in 구조체에 의해 소켓이 생성되지만, 시스템 콜에서는 문법적으로 sockaddr 구조로 표현한다.

'IT 백과' 카테고리의 다른 글

[C#] Namespace - 네임스페이스  (0) 2017.02.06
[MSSQL] View 한계 / 제한 / limitations  (0) 2017.01.23
IoT - 사물인터넷  (0) 2016.12.30
CPU 컴퓨터의 CPU 란??  (0) 2016.12.28
애플 - IOS  (0) 2016.12.27
-

+ Recent posts