Apache Kafka에서 Transaction은 여러 메시지 그룹의 일관성을 보장하는 메커니즘입니다. 쉽게 말하면, 여러 메시지를 하나의 묶음으로 처리하여 모두 성공하거나 모두 실패하도록 하는 기능입니다. 이는 데이터 손실이나 불일치를 방지하는 데 중요한 역할을 합니다. Transaction 종류 Kafka는 두 가지 Transaction 모델을 지원합니다. Producer Transaction: Producer는 Transaction을 시작하고 여러 메시지를 Producer합니다. 모든 메시지가 성공적으로 전송되면 Transaction을 Commit하고, 그렇지 않으면 Rollback합니다. Consumer Transaction: Consumer는 Transaction을 시작하고 여러 메시지를 Con..
Kafka 에서 Leader Epoch 의 의미 카프카에서 리더 에포크(Leader Epoch)는 파티션의 리더가 변경될 때마다 증가하는 32비트 숫자입니다. Leader Epoch정보로 알 수 있는 사항들 1. 리더 변경 시 메시지 일관성 유지: 리더가 변경되면 새로운 리더는 이전 리더가 처리하지 못한 메시지를 처리해야 합니다. 리더 에포크는 이전 리더가 처리한 메시지와 새로운 리더가 처리해야 하는 메시지를 구분하는 데 사용됩니다. 팔로워는 리더에게 리더 에포크를 요청하고, 리더는 자신의 리더 에포크를 팔로워에게 전달합니다. 팔로워는 리더 에포크를 기반으로 메시지를 처리합니다. 2. 리더 변경 시 ISR 갱신: 리더가 변경되면 ISR(In-Sync Replica)도 갱신됩니다. ISR은 리더와 동기화된..
오버라이딩과 오버로딩은 객체 지향 프로그래밍에서 중요한 개념이지만, 종종 혼동되는 경우가 많습니다. 이 글에서는 두 개념의 정의와 차이점을 핵심 내용과 함께 심층적으로 분석하고, 각 차이점과 관련된 코드 예시와 주의 사항을 제공합니다. 1. 개념 및 기본 사용법 오버라이딩: 상속 관계에서 하위 클래스가 상위 클래스의 메소드를 재정의하는 것을 의미합니다. 하위 클래스는 상위 클래스의 메소드 구현을 변경하거나 확장하여 특정 상황에 맞게 사용할 수 있습니다. 메소드 이름, 반환 타입, 매개변수 목록이 완전히 동일해야 합니다. 오버로딩: 같은 클래스 내에서 같은 이름의 메소드를 여러 개 정의하는 것을 의미합니다. 각 메소드는 매개변수 목록 (갯수, 타입, 순서)에 따라 구별됩니다. 메소드 이름이 동일하더라도 매..
자 이번 포스팅에서는 C/C++ 면접 시 단골질문으로 나오는 C/C++의 동적할당 부분에 대해서 포스팅해 보겠습니다. 먼저 동적 할당이란 프로그램 실행 중에 필요한 메모리를 할당하는 것을 말합니다.반면에 정적 할당은 프로그램이 실행되기 전에 메모리를 할당하는 방법을 말하며, 변수 선언과 같이 컴파일 타임에 메모리 공간이 확정됩니다. C/C++에서는 동적 할당을 위해 malloc/calloc/realloc 함수(C) 또는 new/delete 연산자(C++)를 사용합니다. 동적 할당과 정적 할당의 가장 큰 차이점은 할당 시점과 메모리 영역입니다. 할당 시점: 정적 할당은 컴파일 타임에, 동적 할당은 런타임에 메모리를 할당합니다. 이로 인해 동적 할당은 프로그램이 실행 중에도 메모리를 필요에 따라 할당하거나 ..
Booting Sequence 컴퓨터를 부팅할 때 일어나는 일은 다음과 같습니다: 전원 인가: 컴퓨터의 전원을 켜면, 전기 신호가 메인보드(마더보드)로 전달됩니다. 이 신호는 부팅 프로세스를 시작하기 위한 초기 신호입니다. 기본 입력/출력 시스템 (BIOS) 실행: 컴퓨터의 메인보드에는 BIOS 칩이 있습니다. 전원이 켜지면, BIOS가 실행됩니다. BIOS는 컴퓨터의 하드웨어와 상호작용하며 부팅 프로세스를 관리합니다. POST (Power-On Self Test): BIOS가 실행되면, 주요 하드웨어 구성 요소(메모리, 그래픽 카드, 프로세서 등)가 정상적으로 작동하는지 확인하는 POST가 수행됩니다. 이 단계에서 오류가 발견되면 오류 메시지를 출력하고 부팅이 중단됩니다. 부트로더 로드: POST가 성..
엔디언(Endian) Endian은 데이터를 메모리에 저장하고 표현하는 방식을 말합니다. 컴퓨터의 아키텍처에 따라 다른 방식으로 데이터를 저장할 수 있으며, 이를 리틀 엔디언(Little Endian)과 빅 엔디언(Big Endian)으로 구분합니다. 리틀 엔디언 (Little Endian): 리틀 엔디언은 데이터의 가장 낮은(작은) 자릿수부터 메모리에 저장하는 방식입니다. 가장 작은 단위의 데이터(예: 바이트)가 메모리의 낮은 번지부터 시작하여 순서대로 저장됩니다. 예를 들어, 32비트 정수 0x12345678을 메모리에 저장한다면 다음과 같이 됩니다: 주소: | 0x00 | 0x01 | 0x02 | 0x03 | 값: | 0x78 | 0x56 | 0x34 | 0x12 | 빅 엔디언 (Big Endian..
부동소수점 부동소수점은 컴퓨터 프로그래밍에서 실수를 표현하는 방법 중 하나입니다. C 언어에서는 부동소수점을 표현하기 위해 float과 double 두 가지 데이터 타입을 제공합니다. float: 4바이트 크기를 가지며, 단정밀도 부동소수점을 표현합니다. double: 8바이트 크기를 가지며, 배정밀도 부동소수점을 표현합니다. 부동소수점을 이해하기 위해 몇 가지 중요한 개념을 알아보겠습니다. 1. 정수와의 차이: 정수는 소수 부분이 없는 숫자를 표현하는 반면, 부동소수점은 소수점 이하의 숫자를 표현할 수 있습니다. 예를 들어, 5는 정수이지만 5.0은 부동소수점입니다. 2. 부동소수점 표현 방식: 부동소수점은 다음과 같은 형태로 표현됩니다. 부호(sign) + 가수(mantissa) + 지수(expone..
함수포인터 C 언어에서 함수 포인터(Function Pointer)는 함수를 가리키는 포인터 변수입니다. 다시 말하면, 함수 포인터는 메모리에서 특정 함수의 주소를 저장할 수 있고, 해당 주소를 사용하여 함수를 호출할 수 있게 해 줍니다. 이를 통해 함수를 다른 함수의 인수로 전달하거나, 함수를 동적으로 선택하여 실행할 수 있게 됩니다. 함수 포인터의 선언 방법은 다음과 같습니다: 반환_자료형 (*포인터_변수_이름)(매개변수_자료형1, 매개변수_자료형2, ...); 여기서 반환_자료형은 해당 함수의 반환하는 자료형, 매개변수_자료형1, 매개변수_자료형 2,... 는 해당 함수의 매개변수 자료형들을 나타냅니다. 예를 들어, int를 반환하고 int 매개변수를 한 개 가지는 함수를 가리키는 함수 포인터의 선..
- Total
- Today
- Yesterday
- DP
- Problem Solving
- C++
- coding interview
- algorithm
- 인터뷰
- 솔직후기
- Interview
- interview question
- 러스트 입문
- 트리
- 맛집
- 자료구조
- 알고리즘
- 러스트
- 속초 맛집
- ProblemSolving
- 러스트 기초
- Medium
- 러스트 배우기
- 기술면접
- LeetCode
- Tree
- 코딩인터뷰
- PS
- 반드시 알아야 할 자료구조
- 내돈내산
- rust
- 속초
- 리트코드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |