Lambda Expression (람다식)

Lambda Expression


무명함수를 표현할 때 사용되는 식




진행 순서 (소스코드)

1. 기본



2. invoke


3. 무명메소드


4. 명시적 형변환


5. method invoker

TIP)

this.Invoke(delegate {button1.Text = s;} ); //컴파일 에러 발생

MethodInvoker mi = new MethodInvoker(delegate() { button1.Text = s; });

this.Invoke(mi);

//맞는표현

this.Invoke((MethodInvoker) delegate { button1.Text = s; }); //축약된 표현


6. 정리


7. 최종


Lambda : 무명메소드를 더 간결하게 표현, 파라미터가 존재한다면 자료형을 생략 가능


Delegate chain : 연쇄적으로 명시한 method 실행


'SW > C#' 카테고리의 다른 글

Collection method (콜렉션 메소드)  (0) 2017.09.05
LINQ  (0) 2017.09.05
Collection  (0) 2017.09.05

Collection method (콜렉션 메소드)

Collection method


Action<T> : T형태의 파라미터를 받고 리턴 값이 없는 함수에 사용되는 delegate


Func<T, Tresult> : T형태의 파라미터를 받아들이고 리턴타입이 TResult형태로 존재


Predicate<T> : T형태의 파라미터를 받고 리턴타입이 반드시 bool형태



소스코드


1. func


2.변수 선언 생략


3. 람다식 적용


4. 큰 숫자부터 정렬



'SW > C#' 카테고리의 다른 글

Lambda Expression (람다식)  (0) 2017.09.05
LINQ  (0) 2017.09.05
Collection  (0) 2017.09.05

LINQ

LINQ : c# 3.0에서 추가 된 통합 쿼리 언어 (주로 collection을 대상으로 쿼리를 수행)


Foreach와 Linq의 차이점Linq는 실제로 데이터를 저장하지 않는다.


Var 예약어로 타입추론 기능을 사용하여 변수의 타입을 지정하지 않아두 된다.


LINQ to DataSet : 개체에 캐시된 데이터를 쉽고 빠르게 쿼리



'SW > C#' 카테고리의 다른 글

Lambda Expression (람다식)  (0) 2017.09.05
Collection method (콜렉션 메소드)  (0) 2017.09.05
Collection  (0) 2017.09.05

Collection

콜렉션

하나의 단위로 참조될 수 있는 정렬된 항목 집합


1.     배열 : 고정된 개수의 형식 개체


2.     배열과 달리, APP의 요구에 따라 작업하는 개체 그룹이 동적으로 확장되거나 축소


3.     일부는 개체에 신속하게 접근할 수 있도록 컬렉션에 추가하는 모든 개체에 키를 할당할 수 있다.


4.     정확한 형태가 아닌 object 형으로 항상 boxing(값형식 -> Object, Stack -> Heap), unboxing(반대)이 일어난다.



System.collections : 구체적으로 형식화된 객체가 아니라 Object형식의 객체로 요소를 저장


1.     ArrayList : 필요에 따라 크기가 동적으로 증가하는 개체 배열, 변수형을 지정하지 않고 데이터를 넣어둔다.

(Object)형으로 알아서 저장이 된다. 다형성(IEnumerable을 구현하기 때문에 IEnumerable 변수에 넣을 수 있다.

IEnumerable 형으로 자료를 받았다면 ArrayList의 기능을 모두 사용할 수는 없고, IEnumerable에서 사용할 수 있는기능만 사용한다.

->명시적 형변환으로 ArrayList로 변환을 하면 다시 이용할 수 있다.)


2.     Hashtable : 키의 해시코드에 따라 구성된 키/값 쌍의 컬렉션을 나타낸다.

키와 값을 가진 데이터를 저장하는 자료구조 배열에서는 Arr[0]이런 식으로 접근하는데 해쉬 테이블은 Ht[“Apple”] = 이런식으로 접근한다.

인덱스가 아닌 키를 가지고 값에 접근(빠름)


3.     Queue : FIFO방식으 개체 컬렉션


4.     Stack : LIFO방식의 개체 컬렉션


System.collections.Generic


1.     코드의 재사용성을 높이고 타입에 대한 안정성을 높일 수 있는 장점이 있지만, 코드의 크기가 커지고 가독성이 떨어진다.


2.     Object형이 아닌 정확한 자료형을 넣기 때문에 boxing/unboxing을 하지 않는다.

그렇기 때문에 성능이 좋다.


3.     클래스를 사용할 때 타입을 지정

List<T> = index로 접근할 수 있는 강력한 형식, 검색, 정렬, 조작, 데이터 중복 가능

Dictionary<Tkey, Tvalue> : TKey에 대응되는 TvalueKeyValuePair<Tkey, Tvalue> 형태로 저장

'SW > C#' 카테고리의 다른 글

Lambda Expression (람다식)  (0) 2017.09.05
Collection method (콜렉션 메소드)  (0) 2017.09.05
LINQ  (0) 2017.09.05

Computer architecture (용어, 상식)

Computer architecture



Compute : datapath + control + memory + input + output


Spatial locality(공간 구역성) : 하나의 기억 장소가 참조되면 그 근처의 기억 장소가 계속 참조되는 경향이 있는 성질


Temporal locality(잠정 구역성) : 최초 참조된 기억 장소가 가까운 미래에도 계속 참조될 가능성이 높음

메모리의 레벨이 높아질수록 프로세서와의 거리는 증가하고 속도는 감소한다.


FLASH : 비휘발성 반도체 저장소, 디스크 보다 빠르다, 작고 저전력, 튼튼하다 비싸다.


Disk Latency = seek time + rotation time + transfer time + controller overhead


Access time = hit time + miss rate x miss penalty


Processormiss가 나면 파이프라인은 중단시킨다.


Replacement policy = 캐쉬는 사이즈 작기 때문에 miss가 많이 발생하기에 사용빈도가 높은 것을 우선순위에 둠


Write policy = cash memory를 조절


Capacity misses : 용량이 작아서 생기는 miss (용량을 키우면 됨)


Associative cashes : miss rate를 줄이는 효과(장점), 오버헤드, 지연(단점)


Block : direct mapped, set associative, fully associative


Block finding : indexing, limited search, full search, separate lookup table


RAID : 하드에 장애 발생시 실시간으로 데이터를 복구0~7레벨

'SW > Computer Architecture' 카테고리의 다른 글

Computer architecture (용어, 상식) 3  (0) 2017.09.05
Computer architecture (용어, 상식) 2  (0) 2017.09.05

Regular Expression - 자주 쓰이는 표현

자주 쓰이는 표현



l  E-mail 주소

/^[a-z0-9_+.-]+@([a-z0-9-]+.)+[a-z0-9]{2,4}$/i


 

l  URL

/^(?:(http[s]?|ftp[s]):\/\/)?([^:\/\s]+)(:[0-9]+)?((?:\/\w+)*\/)([\w\-\.]+[^#?\s]+)([^#\s]*)?(#[\w\-]+)?$/



 

l  전화번호

/^\d{2,3}-\d{3,4}-\d{4}$/



 

l  휴대전화번호

/^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/



 

l  Hex color code

/^#[A-Fa-f0-9]{6}$/



 

l  확장자(그림)

/^.+\.(jpg|png|gif|bmp)$/



 

l  특수문자 포함 체크

/[^\w\s]/i



 

l  비밀번호 (대문자1 이상, 특수문자 포함, 8글자 이상)

/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/


Regular Expression (정규 표현식) - 메타문자

Regular Expression


메타문자

설명

예시

*

앞의 문자를 0 이상 찾는다.

zo* -> z, zo, zoo, zooooo

+

앞의 문자를 1 이상 찾는다.

zo+ -> zo, zoo zooo, zoo

?

앞의 문자를 0개나 1 찾는다.

zo? -> z, zo

^

검색되는 문자열의 시작 부분에서 위치를 찾는다.

중괄호 안에 있는 ^ 부정을 뜻한다.

^We -> We********

[^abc] -> a,b,c 제외한것들

$

검색되는 문자열의 끝부분에서 찾는다.

$e -> 문장 끝에 e 있으면 참이다.

.

\n 제외한 모든 단일 문자를 검색

a.c -> abc, a1c, a-c, a?c

[  ]

대괄호 식의 시작과 끝을 표시한다.

[1-4] -> 1, 2, 3, 4

{  }

수량자 식의 시작 부분을 표시

a{2,3} -> aa, aaa

|

이상의 항목에서 선택한다.

(z|f)ood -> zood, food

/

리터럴 정규식 패턴의 시작과

/g -> 전역 /i -> 대소문자 무시

\

다음에 오는 문자를 특수 문자, 리터럴, 이스케이프로 표시한다.

\n -> 개행문자, \( -> (

\\ -> \

\b

단어와 공백 사이의 위치를 검색

er\b -> er뒤에 문자가 없는 모든

\B

공백이 아닌것의 위치를 탐색

er\b -> er뒤에 공백이 아닌 모든

\d

숫자를 찾는다 [0-9]

\d{2} -> 12, 34, 56, 13

\D

문자를 찾는다 [^0-9]

\D{2} -> ab, cd, ef, af

\w

A-Z, a-z, 0-9, _ 찾는다. [A-Za-z0-9_]

\w -> yun, se, yeong

\W

\w 제외한 모든 [^A-Za-z0-9_]

\W -> ‘ ‘, !@#$%^&*()

[xyz]

xyz 하나를 찾는다.

[xyz] -> x, y, z

[^xyz]

xyz 아닌 모든 것을 찾는다.

[xyz] -> a, b, c, d, e, 1, 2, 3

-a[z]

지정한 범위에서 문자를 찾는다.

[a-z] -> 모든 소문자

[^a-z]

지정한 범위가 아닌 모든 것을 찾는다.

[^a-z] -> 소문자가 아닌 모든

{n}

n개를 찾는다.

o{2} -> oo

{n,}

n 이상을 찾는다.

o{2,} -> oo, ooo, oooo

{n, m}

n 이상 m 이하를 찾는다.

o{2,3} -> oo, ooo

(Pattern)

Pattern 찾고 일치하는 항목을 저장

(cha\sec)[1-9] ->

cha1 ~ cha9

(?:pattern)

Pattern 찾지만 저장하진 않는다.

Industr(?:y|ies) ->

Industry| Industries

(?=pattern)

일치 항목을 찾은 일치한 텍스트의 앞에서 다음 일치 항목에 대해 검색한다.

^(?=.*\d).{4,8}$ -> 4-8개의 문자로 구성되고 적어도 하나의 숫자를 포함하도록 한다.

(?!pattern)

일치하지 않은 항목을 찾은 다음 일치 항목에 대한 검색을 시작한다.

\b(?!th)\w+\b ->

th 시작하지 않는 단어를 탐색


 

'SW > Regular Expression' 카테고리의 다른 글

정규 표현식 연습할 사이트!  (0) 2017.09.13
Regular Expression - 자주 쓰이는 표현  (0) 2017.09.05

JOIN

JOIN



기본형식

SELECT ‘열 목록’ FROM ‘테이블1’ ~join ‘테이블2’ ON (join 조건)


의미

각 테이블 간 의미 있는 데이터를 연결하는데 사용하는 메커니즘이며 적어도 하나의 컬럼이 테이블 사이에서 공유되어야 한다.


필요한 이유

RDB를 정규화 하면 데이터 집합으로 테이블이 구성되고, 각 테이블끼리는 관계를 갖는다.


이러한 특징으로 RDB는 저장공간의 효율성과 확장성이 향상된다.


한편, 서로 관계 있는 데이터가 여러 테이블로 나뉘어 저장되므로, 각 테이블에 있는 데이터를 효율적으로 검색하기 위해 조인이 필요하다.


표현 방식

명시적 표현법과 묵시적 표현법이 있으며

명시적 표현법은 ‘SELECT column FROM A_table JOIN B_table ON (A_column = B_column)’이고

묵시적 표현법은 ‘SELECT column FROM A_table, B_table WHERE (A_column = B_column)’와 같이 사용한다.


INNER JOIN OUTER JOIN이 있는데, 이 둘의 차이점은 INNER JOIN은 조인조건에 만족하지 않는 데이터를 출력한다면 OUTER JOIN, 그렇지 않다면 INNER JOIN이 된다.


1.     INNER JOIN : 가장 일반적인 조인 형태로 빈번하게 사용한다. 둘 이상의 테이블에 존재하는 공통 컬럼의 값이 같은 것을 결과로 추출한다. 내부 조인에는 동등 조인’, ‘자연 조인’, ‘교차 조인등이 있다.


A.     동등 조인 : ‘Equi join’이라고도 하며, 조인의 가장 일반적인 형식이다. 둘 이상의 테이블에 존재하는 공통 컬럼의 동등만을 비교하며, 부등호 조인은 동등 조인에 포함 되지 않는다.


B.      자연 조인 : ‘natural join’이라고도 하며, 조인 대상 테이블의 모든 컬럼을 비교하여 같은 컬럼명을 가진 컬럼으로 조인을 수행한다. 이때, 동일한 이름은 갖는 컬럼은 한 번만 추출한다.


C.      교차 조인 : ‘cross join’이라고도 하며, 조인에 들어간 테이블들의 모든 데이터가 추출된다. 조인 조건이 잘못되었거나 정의하지 않았을 때, 테이블의 모든 행이 조인되는 경우에 발생한다. Cartesian Product 값을 얻을 수 있다. 너무 많은 레코드를 생성할 위험이 있기 때문에 드물게 사용하며, 테스트 용도로 대용량의 테이블을 생성시에 사용한다.


D.     셀프 조인 : 자가 조인이라고도 하며, 하나의 컬럼에 있는 값들과 이 컬럼에 들어있는 다른 값을 비교할 때 사용한다. FROM절에 각각 다른 alias를 지정하여 테이블을 대입한다. 테이블의 한 컬럼이 자신의 다른 레코드를 참조할 때 사용한다.


2.     OUTER JOIN : 특정 테이블의 데이터가 모두 필요할 때 사용한다.


A.     LEFT OUTER JOIN : 오른쪽 테이블에 조인할 컬럼의 값이 없는 경우 사용한다. 왼쪽 테이블의 모든 데이터를 포함하는 결과를 만든다.


B.      RIGHT OUTER JOIN : 왼쪽 테이블에 조인할 컬럼의 값이 없는 경우 사용한다. 오른쪽 테이블의 모든 데이터를 포함하는 결과를 만든다.


C.      FULL OUTER JOIN : LEFT OUTER JOINRIGHT OUTER JOIN을 합친 것으로 양쪽 모두 조건이 일치하지 않는 것들까지 모두 결합하여 출력한다.





리눅스 명령어 - PROCESS

   Process



A.    ps : 현재 진행중인 프로세스를 출력한다.


B.     Pstree : 프로세스의 상관관계를 출력한다.


C.    top : 프로세스의 목록을 일정시간(사용자가 지정 가능)마다 갱신하여 출력한다.


D.    Kill (시그널 프로세스) : 입력한 프로세스에 입력한 시그널을 보낸다.


E.     (명령어) & : 해당 명령어를 background에서 실행한다.


F.     jobs : background에서 실행중인 작업을 확인한다.

'SW > LINUX' 카테고리의 다른 글

버전관리, SVN  (0) 2017.09.05
GCC compiler (내부 매크로, Makefile)  (0) 2017.09.05
리눅스 명령어 - INFO  (0) 2017.09.05
리눅스 명령어 - USER  (0) 2017.09.05
리눅스 명령어 - FILE&DIRECTORY  (0) 2017.09.05

리눅스 명령어 - INFO

Info



A.    which (명령어) : 해당 명령어의 위치를 절대경로로 알려준다.


B.     whereis (명령어) : 명령어의 정보가 담긴 파일들의 절대경로를 출력.


C.    grep (패턴 파일명) : 패턴에 맞는 문자열을 찾아서 출력한다.


D.    more : 화면단위로 출력한다.

'SW > LINUX' 카테고리의 다른 글

GCC compiler (내부 매크로, Makefile)  (0) 2017.09.05
리눅스 명령어 - PROCESS  (0) 2017.09.05
리눅스 명령어 - USER  (0) 2017.09.05
리눅스 명령어 - FILE&DIRECTORY  (0) 2017.09.05
리눅스 명령어 기초  (0) 2017.09.05

'SW'에 해당되는 글 120건

1 ··· 7 8 9 10 11 12 →