전체 글 74

[C#] Nullable/널 조건부 연산자/널 병합 연산자

Nullable? Null(비어 있는) + able(~될 수 있는) -> 비어 있는 상태가 될 수 있는 형식 int? a = null; float? b = null; double? c = null; int d; // 컴파일 에러 모든 Nullable 형식은 HasValue와 Value 두 가지의 속성을 가집니다. int? a = null; Console.WriteLine(a.HasValue); // null이므로 False a = 37; Console.WriteLine(a.HasValue); // True Console.WriteLine(a.Value); // 37 널 조건부 연산자? ?. 기호를 사용. 객체의 멤버에 접근하기 전에 해당 객체가 null인지를 검사하여 그 결과가 참이면 null을 반환, ..

C# 2023.12.20

[C#] this()/base()/상속/오버라이딩

this() ? this는 자신을 지칭할 때 사용하는 키워드입니다. => 즉 나를 가르킴!!! 다음은 3개의 생성자를 오버로딩하는 클래스의 코드입니다. using System; namespace ThisConstructor { class MyClass { int a, b, c; public MyClass() { this.a = 1; Console.WriteLine("MyClass()"); } public MyClass(int b) : this() { this.b = b; Console.WriteLine($"MyClass({b})"); } public MyClass(int b, int c) : this(b) { this.c = c; Console.WriteLine($"MyClass({b}, {c})"); ..

C# 2023.12.20

[OS] CPU Protection Ring

CPU Protection Ring CPU 보호 링 또는 보호 모드 운영 체제와 응용 프로그램이 실행되는 환경을 격리하고 보호하기 위한 메커니즘 다중 수준의 특권 수준을 정의하며, 사용자 모드(User Mode)와 커널 모드(Kernel Mode)로 구분 응용 프로그램이 운영 체제의 기능을 요청하거나 시스템 호출을 호출할 때, CPU는 현재의 실행 컨텍스트가 사용자 모드인지 커널 모드인지를 판단합니다. 이를 통해 운영 체제와 응용 프로그램 간의 격리를 유지하고, 커널 모드에서만 특권 명령어와 시스템 리소스에 접근할 수 있도록 보호합니다. 보통 4개의 보호 링(0부터 3까지)이 있으며, 보통 다음과 같이 매핑됩니다. Ring 0 (Kernel Mode): 운영 체제의 커널 코드가 실행되는 모드입니다. 이 ..

CS/OS 2023.08.17

[OS] 커널(Kernel)과 쉘(Shell)

커널 운영 체제의 핵심 부분 하드웨어와 응용 프로그램 간의 상호 작용을 관리 시스템 리소스에 대한 접근을 조정 커널은 컴퓨터의 부팅 과정에서 가장 먼저 실행 주요 기능을 제공하고 시스템의 안정성과 보안을 유지 대부분 C나 어셈블리 언어로 작성 다양한 하드웨어 아키텍처와 호환되도록 설계됨 커널의 주요 역할 💡 프로세스 관리: 프로세스 스케줄링, 프로세스 생성 및 소멸, 프로세스 간 통신 관리 등을 수행합니다. 메모리 관리: 메모리 할당 및 해제, 가상 메모리 관리, 페이지 교체 등을 관리하여 프로세스가 메모리를 효율적으로 사용할 수 있도록 합니다. 파일 시스템 관리: 파일 및 디렉터리 생성, 삭제, 읽기, 쓰기 등의 파일 시스템 작업을 제공합니다. 장치 드라이버 관리: 하드웨어 장치 드라이버를 관리하고 하..

CS/OS 2023.08.17

[Network] 면접 예상 질문(2)

HTTP 1.1 의 keep alive 기능에 대해 간략히 설명해주세요. HTTP 기본 구조는 1회성 request와 이에 대한 response로 이루어집니다. 따라서, 매번 HTTP request 및 response로 인한 종료시마다, TCP 프로토콜 단계에서 3-way-handshake 및 4-way-handshake 과정이 필요합니다. keep alive 기능은 이러한 불필요한 연결과 연결종료 과정을 줄이기 위해, 설정한 keep alive timeout 기간에는 동일한 source 에서 이루어지는 HTTP request 에 대해서 연결을 유지하는 기능입니다. 따라서, keep alive timeout 기간 동안에는 TCP 프로토콜 단계에서, 3-way, 4-way handshake 를 수행할 필요..

CS/Network 2023.08.11

[Network] 면접 예상 질문(1)

OSI 7계층과 그 존재 이유, TCP/IP 4계층에 대해 설명해보세요. OSI 7계층은 네트워크 통신을 구성하는 요소들을 7개의 계층으로 표준화한 것입니다. 이렇게 표준화하는 것의 장점은 통신이 일어나는 과정을 단계별로 파악할 수 있어, 문제가 발생하면 해당 문제를 해결하기 용이해집니다. 실제로 우리가 대부분 사용하는 네트워크는 TCP/IP 4계층입니다. 통신에 실제로 사용되는 계층이고 1,2 계층이 1계층, 5, 6, 7계층이 4계층으로 운영됩니다. OSI 7계층에 대해 간략히 설명해주세요. OSI 7 계층은 컴퓨터 간 통신 과정을 추상화한 모델입니다. 물리 계층은 시스템 간 물리적 연결을 담당하고, 데이터 링크 계층은 네트워크 기기 간 데이터 전송을 담당하고, 네트워크 계츠은 다른 네트워크와의 통신..

CS/Network 2023.08.10

[DB] 면접 예상 질문(2)

인덱스란? 인덱스란 추가적인 저장 공간을 활용하여 데이터베이스 처리 속도를 향상시키기 위한 자료구조를 의미합니다. 스키마란? 관계형 데이터베이스에서 데이터베이스에 대한 전체적인 구조와 제약조건에 대한 명세를 기술한 정의를 의미합니다. 관계형 데이터베이스 명령어 종류를 설명해주세요. 관계형 데이터베이스 명령어는 크게, 정의어(DDL), 조작어(DML), 제어어(DCL) 로 나눌 수 있습니다. 정의어는 테이블(TABLE), 인덱스(INDEX) 등의 개체를 만들고 관리하는데 사용되는 명령어로 CREATE, ALTER, DROP 등이 있습니다. 조작어는 데이터 검색, 삽입, 갱신, 삭제를 위한 명령어로 SELECT, DELETE, UPDATE, INSERT 등이 있습니다. 제어어는 데이터 핸들링 권한 설정, 데..

DB 2023.08.06

[DB] 트랜잭션 격리 수준(Transaction Isolation Levels)

트랜잭션 격리 수준(Transaction Isolation Levels) 데이터베이스에서 동시에 여러 트랜잭션이 동작할 때, 트랜잭션들 사이에서 어떻게 데이터의 일관성과 격리를 유지할지를 정의하는 개념 데이터베이스 시스템은 보통 다양한 격리 수준을 제공하여 사용자가 필요에 맞게 선택할 수 있도록 한다. 1. READ UNCOMMITTED 한 트랜잭션에서 변경한 데이터가 커밋되지 않더라도 다른 트랜잭션에서 해당 데이터를 읽을 수 있음 이로 인해 Dirty Read(더티 리드), Non-Repeatable Read(비반복 가능한 읽기), Phantom Read(유령 읽기)와 같은 문제가 발생할 수 있다. 이러한 문제들로 인해 READ UNCOMMITTED 격리 수준은 일반적으로 사용되지 않는다. 2. REA..

DB 2023.08.06

[DB] Redis의 영속성과 복구: 스냅샷과 AOF란?

Redis는 인메모리 데이터베이스로 모든 데이터를 메모리(RAM)에 저장합니다. 때문에 서버가 종료되면 RAM에 저장된 데이터는 모두 사라지겠죠. 즉, 데이터의 지속성은 보장하지 않습니다. 그렇다면, Redis는 데이터의 영속성을 어떻게 보장할까요? 1. 스냅샷 (Snapshot): 스냅샷은 Redis의 데이터를 특정 시점의 상태를 파일로 저장하는 기능입니다. 일정 시간 간격으로 데이터를 스냅샷 파일에 저장하면서 Redis가 비정상적으로 종료되거나 서버가 다시 시작될 경우, 이 스냅샷 파일을 사용하여 데이터를 복구할 수 있습니다. 예시: Redis에 10개의 키-값 쌍을 저장한 상태라고 가정합시다. 스냅샷이라는 기능을 사용하여 현재 데이터 상태를 스냅샷 파일로 저장하였습니다. 그리고 갑작스럽게 Redis..

DB 2023.08.01

[DB] 검색 엔진: 역색인(Inverted Index) 구조란?

Inverted Index(역색인) 검색 엔진에서 사용되는 데이터 구조로, 효율적인 텍스트 검색을 가능하게 합니다. 역색인은 문서에 등장하는 단어들을 기준으로 구축되며, 각 단어가 어떤 문서에 등장하는지를 기록하는 방식으로 동작합니다. 일반적으로 텍스트 데이터는 문서 단위로 구분되고, 각 문서는 여러 단어로 구성됩니다. 역색인은 이러한 각 단어를 중심으로 데이터를 구조화합니다. 각 단어는 해당 단어를 포함하고 있는 문서들의 위치 정보와 함께 색인되어 저장됩니다. 예를 들어, 다음과 같은 세 개의 문서가 있다고 가정해봅시다: 문서 1: "I like apples." 문서 2: "Apples are delicious." 문서 3: "I like oranges." 이 경우 역색인은 다음과 같이 구축될 수 있습..

DB 2023.07.31