분류 전체보기 210

카프카 브로커와 클러스터

Apache Kafka는 대용량의 데이터를 실시간으로 처리하고, 높은 처리량과 확장성을 제공하는 분산 메시징 시스템입니다. Kafka 시스템은 여러 구성 요소로 이루어져 있으며, 그 중 브로커와 클러스터는 핵심적인 역할을 합니다. 아래에서는 Kafka의 브로커와 클러스터에 대해 자세히 설명하겠습니다.Kafka 브로커브로커는 Kafka 시스템에서 메시지를 저장하고, 프로듀서(데이터를 보내는 클라이언트)로부터 메시지를 수신하며, 컨슈머(데이터를 읽는 클라이언트)에게 메시지를 전달하는 역할을 합니다. Kafka 클러스터 내에는 여러 개의 브로커가 있을 수 있으며, 각 브로커는 특정 파티션의 리더 역할을 맡습니다. 주요 기능은 다음과 같습니다:메시지 저장: 브로커는 데이터를 주어진 토픽의 파티션에 저장합니다. ..

[KAFKA] 2024.06.23

Thread 사용법 및 코드예제

스레드(Thread)는 여러 작업을 동시에 수행하거나 병렬로 처리할 때 사용되는 중요한 개념입니다. 자바에서 스레드를 사용하는 방법과 관련된 내용을 상세히 설명하고, 실제로 어떻게 구현하는지 예제를 통해 설명하겠습니다.스레드의 기본 개념스레드는 프로세스 내에서 독립적으로 실행되는 흐름의 단위입니다. 프로세스는 운영 체제에 의해 실행되는 프로그램을 의미하며, 스레드는 그 프로세스 안에서 병렬적으로 작업을 수행할 수 있게 해줍니다. 스레드를 이용하면 멀티태스킹이 가능해져서 시스템 자원을 효율적으로 사용할 수 있습니다.스레드 생성 방법자바에서 스레드를 생성하는 방법은 크게 두 가지가 있습니다:Thread 클래스를 상속받는 방법Runnable 인터페이스를 구현하는 방법1. Thread 클래스를 상속받는 방법Th..

Java Collection

Java Collection Framework는 데이터 구조 및 알고리즘을 제공하여 데이터를 효율적으로 관리하고 조작할 수 있게 합니다. 이 프레임워크에는 다양한 인터페이스와 클래스를 포함하며, 주로 List, Set, Map 인터페이스를 중심으로 구성됩니다. 각 인터페이스는 고유한 특성과 기능을 제공하며, 이들을 통해 데이터를 저장하고 조작할 수 있습니다. 또한, Java Collection Framework는 동기화된(Synchronized) 및 동시성(Concurrent)을 지원하여 멀티스레드 환경에서도 안전하게 사용할 수 있도록 합니다.1. List 인터페이스List 인터페이스는 순서가 있는 요소의 컬렉션을 정의합니다. 중복 요소를 허용하며, 인덱스를 통해 요소에 접근할 수 있습니다.주요 구현 클..

Java Generic

Java 제네릭(Generic)은 코드의 재사용성을 높이고, 컴파일 타임에 타입 안전성을 보장하기 위해 도입된 기능입니다. 이를 통해 클래스, 인터페이스, 메서드 등을 다양한 타입으로 사용할 수 있습니다.1. 타입 파라미터 (Type Parameter)타입 파라미터는 제네릭 클래스나 메서드의 정의에서 사용됩니다. 이는 구체적인 타입을 지정하지 않고, 사용할 때마다 다른 타입을 지정할 수 있게 합니다.예제public class Box { private T content; public void setContent(T content) { this.content = content; } public T getContent() { return content; } ..

객체지향 프로그래밍을 하는 이유, 쓰레드 안전

객체지향 프로그래밍(OOP, Object-Oriented Programming)은 소프트웨어 개발에서 매우 중요한 패러다임 중 하나입니다. OOP를 사용하는 이유는 여러 가지가 있으며, 이를 통해 소프트웨어 개발의 효율성과 유지보수성을 크게 향상시킬 수 있습니다. 여기서는 OOP를 사용하는 주요 이유에 대해 깊이 있게 설명하겠습니다.1. 코드의 재사용성 향상OOP는 코드의 재사용성을 높이는 데 큰 도움이 됩니다. 클래스와 객체를 사용하면 동일한 코드를 여러 번 반복할 필요 없이, 필요한 곳에서 객체를 생성하여 사용할 수 있습니다. 예를 들어, 자동차를 모델링하는 클래스를 만들면, 다양한 자동차 객체를 생성하여 코드에서 재사용할 수 있습니다.class Car { String model; int ..

카테고리 없음 2024.06.13

Garbage Collector: minor GC vs full GC 과정과 차이점

예전 멘토링 때 학습 하였던 주제인데한번 더 복습하면서 더 깊이, 그리고 다른 모르는 것들이 있는 지 확인하고 학습을 진행하려고 다시 같은 주제로 공부를 하였다. Garbage Collector: minor GC vs full GC 과정과 차이점Garbage Collection(가비지 컬렉션, GC)은 자바와 같은 언어에서 메모리 관리를 자동화하는 중요한 메커니즘입니다. GC는 더 이상 사용되지 않는 객체를 자동으로 메모리에서 해제하여 메모리 누수를 방지하고, 프로그램의 안정성을 높입니다. GC에는 다양한 유형이 있지만, 그 중에서도 주로 "Minor GC"와 "Full GC"라는 두 가지 주요 유형이 있습니다. 이 두 가지 GC의 과정과 차이점을 자세히 설명하겠습니다.Minor GC (Young Gen..

[프로그래머스] 이중우선순위

아까 문제 너무 어려워서 이문제 풀려고 해이 문제는 이중 우선순위 큐를 구현하여 주어진 연산을 처리하고, 결과를 반환하는 것입니다. 이중 우선순위 큐는 최대값과 최소값을 효율적으로 삽입 및 삭제할 수 있어야 합니다.문제 해결 접근법데이터 구조 선택:Python의 heapq 모듈을 사용하여 최소 힙을 구현할 수 있습니다. 하지만 최대 힙과 최소 힙을 동시에 구현하여 최대값과 최소값을 효율적으로 삭제할 수 있도록 합니다.두 개의 힙을 사용합니다: 최소 힙(min_heap)과 최대 힙(max_heap).연산 처리:I 숫자: 주어진 숫자를 두 힙에 모두 삽입합니다.D 1: 최대 힙에서 최대값을 삭제합니다.D -1: 최소 힙에서 최소값을 삭제합니다.동기화 문제 해결:하나의 힙에서 값을 삭제할 때 다른 힙에서도 해..

[코딩테스트] 2024.06.07

[프로그래머스] 정수 삼각형 - Java

문제 설명주어진 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾는 문제입니다. 이동할 때는 아래층의 바로 아래 숫자 또는 바로 오른쪽 숫자로만 이동할 수 있습니다. 예를 들어, 현재 위치가 (i, j)라면 다음으로 갈 수 있는 위치는 (i+1, j) 또는 (i+1, j+1)입니다.접근 방법이 문제는 다이나믹 프로그래밍(DP, Dynamic Programming)을 사용하여 해결할 수 있습니다. 다이나믹 프로그래밍은 문제를 작은 하위 문제로 나누어 해결하고, 그 결과를 저장하여 중복 계산을 방지하는 기법입니다.해결 과정삼각형의 바닥부터 위로 올라가며 계산:각 위치에서 그 위치를 포함한 최대 경로 합을 저장합니다.삼각형의 바닥에서부터 시작하여 각 위치에서 가능한 두 경..

[코딩테스트] 2024.06.06

카프카

카프카에서 토픽이 뭐야??카프카(Kafka)에서 토픽(Topic)은 메시지를 저장하고 조직하는 기본 단위입니다. 카프카는 대규모 데이터 스트리밍을 지원하는 분산 메시징 시스템으로, 토픽은 이 시스템 내에서 메시지를 논리적으로 구분하는 방법입니다. 좀 더 구체적으로 설명하자면 다음과 같습니다.1. 토픽의 정의토픽(Topic): 카프카 클러스터 내에서 메시지를 카테고리별로 구분하여 저장하는 논리적인 컨테이너입니다. 각 토픽은 특정 주제나 목적에 맞는 메시지를 포함합니다.예를 들어, '웹사이트 로그'를 저장하는 토픽과 '금융 거래'를 저장하는 토픽은 서로 다른 카프카 토픽으로 구성될 수 있습니다.2. 파티션(Partition)파티션: 각 토픽은 하나 이상의 파티션으로 나뉩니다. 파티션은 물리적으로 분할된 메시..

[KAFKA] 2024.06.05

Java Stacktrace, 로그 관리 시스템, Elasticsearch

Java StacktraceJava 스택 트레이스(Stack Trace)는 예외가 발생했을 때, 예외의 원인과 어디서 발생했는지를 추적할 수 있도록 도와주는 유용한 디버깅 도구입니다. 스택 트레이스는 예외가 발생한 위치, 호출된 메서드의 순서, 그리고 각 메서드 호출의 소스 파일과 라인 번호를 제공합니다. 이를 통해 개발자는 예외의 근본 원인을 찾아내고 문제를 해결할 수 있습니다.Java Stacktrace 구조스택 트레이스는 보통 다음과 같은 구조로 나타납니다:Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because "str" is null at com.example.MyClas..