728x90
C#
조건 연산자(Conditional Operator)
- 조건 연산자는 ?: 은 큭이하게도 피연산자가 세 개이다.
- 조건식 ? 참일 때의 값 : 거짓일 때의 값
null 조건부 연산자
- ?. 은 객체의 멤버에 접근하기 전 해당 객체가 null인지 검사해서 그 결과가 참이면 그 결과로 null을 반환하고, 그렇지 않은 경우 . 뒤에 지정된 멤버를 반환한다.
- ?[] 도 동일한 기능을 수행한다. 배열과 같은 컬렉션 객체의 첨자를 이용한 참조에 사용된다는 점이 다르다.
null 병합 연산자
- ?? 연산자는 두 개의 피연산자를 받아들이고 왼쪽 피연산자가 null인지 평가한다. 평가 결과가 null이 아닌것으로 나타나면 왼쪽 피연산자를 그대로 반환하고, 만약 왼쪽 피연산자가 null인 것으로 평가되면 오른쪽 피연산자를 반환한다.
Switch문과 패턴 매칭
- Switch 레이블의 패턴에는 상수와 형식을 비롯해서 관계, 논리 등등 C#이 지원하는 다양한 패턴을 적용할 수 있다.
케이스 가드(Case Guard)
- 케이스 가드란 switch 문의 case 절의 패턴을 더 구체적으로 만들어주는 추가적인 조건검사라고 할 수 있다.
- 케이스 가드는 case절 뒤에 when 절을 붙여 사용한다.
- when절은 if문처럼 true/false로 결과가 나오는 식을 입력 받는다.
패턴 매칭(Pattern Matching)
- 어떤 식(Expression)이 특정 패턴(Pattern(형태))과 일치하는지 검사한다.
- 패턴 매칭을 이용하면 분기문을 간결하고 읽기 쉬운 코드로 대체할 수 있다.
- 식(Expression)
- 코드에서 단일 결과 값을 만들어 낼 수 있는 연산자와 연산자의 조합이다.
- 리터널과 상수, 변수는 연산자 없이 식이 될 수 있다.
C#이 지원하는 패턴
선언 패턴(Declaration Pattern)
- 주어진 식이 특정 형식(ex)int, string)과 일치하는지 평가한다.
- 주어진 식과 형식이 일치한다면, 선언 패턴(Declaration Pattern)은 식을 해당 형식으로 변환한다.
형식 패턴(Type Pattern)
- 선언 패턴과 거의 같은 방식으로 동작하지만, 변수 생성없이 형식 일치 여부만 테스트한다.
상수 패턴(Constant Pattern)
- 식이 특정 상수와 일치하는지 검사한다.
- 정수 리터널과 문자열 리터럴 뿐 아니라 null과 enum등 모든 상수와 매칭 할 수 있다.
프로퍼티 패턴(Property Pattern)
- 식의 속성이나 필드가 패턴과 일치하는지 검사한다.
- 입력된 식이 int, double 같은 기본 데이터 형식이 아닌 경우 특히 유용하다.
관계 패턴(Relational Pattern)
- 관계 연산자를 이용해서 입력 받은 식을 상수와 비교한다.
논리 패턴(Logical Pattern)
- 패턴과 패턴을 패턴 논리 연산자를 조합해서 하나의 논리 패턴으로 만들 수 있다.
괄호 패턴(Parenthesized Pattern)
- 소괄호로 패턴을 감싸, 논리 패턴으로 여러 패턴을 조합하여 이를 새로운 패턴으로 만드는 경우 사용한다.
위치 패턴(Position Pattern)
- 식의 결과를 분해(Peconstruct) 하고, 분해된 값들이 내장된 복수의 패턴과 일치하는지 검사한다.
- 위치 패턴 안에 내장되는 패턴에는 형식 패턴, 상수 패턴등 어떤 패턴이든 올 수 있다.
- 분해된 값들과 내장된 패턴의 개수, 순서가 일치해야 한다.
Var 패턴
- null을 포함한 모든 식의 패턴 매칭을 성공시키고, 그 식의 결과를 변수에 할당한다.
- 어떤 식의 결과를 임시 변수에 할당한 뒤 추가적인 연산을 수행하고자 할 때 유용하게 사용할 수 있다.
무시 패턴(Discard Pattern)
- var 패턴과 같이 모든 식과의 패턴 일치 검사를 성공시킨다.
- var 패턴과는 다르게 is식에서는 사용할 수 없고, switch식에서만 사용할 수 있다.
- ‘모든 식’을 매칭할 수 있기 때문에 switch문의 default 케이스와 비슷한 용도로 사용하면 된다.
- 무시 패턴은 _ 기호를 이용한다.
목록 패턴(List Pattern)
- 배열이나 리스트가 패턴의 시퀀스가 일치하는지 검사한다.
- 패턴의 시퀀스는 대괄호 [ 와 ] 사이에 패턴의 목록을 입력해서 만든다.
CS
Redis
- 빠른 오픈 소스 인 메모리 키 값 데이터 구조 스토어이다.
- 보통 데이터베이스는 하드디스크나 SSD에 저장한다. 하지만 Redis는 메모리(RAM)에 저장해서 디스크 스캐닝이 필요없어 매우 빠르다.
- 캐싱도 실시간으로 가능하며 실시간 채팅에 적합하다. 세션 공유를 위해서 세션 클라스터링에도 활용 가능하다.
저장 공간이 RAM 이라면 휘발성 문제는?
- 백업 과정이 존재한다.
- Snapshot : 특정 지점을 설정하고 디스크에 백업한다.
- AOF(Append Only File) : 명령(쿼리)들을 저장해두고, 서버가 셧다운 되면 재실행해서 다시 만들어 놓는 것이다.
- 데이터 구조는 key/value 값으로 이루어져 있다. 따라서 Redis는 비정형 데이터를 저장하는 비관계형 데이터베이스 관리 시스템이다.
value 5가지
- String(text, binary data) - 512MB까지 저장이 가능하다.
- Set(String 집합)
- Sorted Set(Set을 정렬해둔 상태)
- Hash
- List(양방향 연결리스트도 가능하다.)
728x90
'Study > TIL(Today I Learned)' 카테고리의 다른 글
24.07.18 C# (0) | 2024.07.18 |
---|---|
24.07.17 C# (0) | 2024.07.17 |
24.07.15 C# (0) | 2024.07.15 |
24.07.12 서버 프로그래밍 복습 (0) | 2024.07.12 |
24.07.11 C#, CS (0) | 2024.07.11 |