분류 전체보기

· IT 지식
Apache Kafka는 분산 메시징 플랫폼으로, 데이터를 생산자(Producer)에서 소비자(Consumer)로 빠르고 안정적으로 전달하기 위해 설계된 시스템입니다. 처음 LinkedIn에서 개발되었으며, 현재는 오픈소스로 전 세계적으로 사용되고 있습니다. Kafka는 단순한 메시징 큐 이상의 기능을 제공하며, 대규모 실시간 데이터 스트리밍 및 분산 처리를 가능하게 합니다.1. 🌐 Kafka 개요Kafka는 Publish-Subscribe 모델 기반으로 동작하며, 다양한 데이터 소스에서 발생하는 데이터를 처리하는 데 사용됩니다. 이를 통해 실시간 데이터 스트림을 관리하거나, 데이터를 저장소로 전송하는 데이터 파이프라인 역할을 수행합니다.🧩 Kafka의 주요 구성 요소📤 Producer (생산자):..
· Java
1. 🖥️ Spring Boot 대규모 트래픽 처리 방안: Redis, Scheduler대규모 트래픽 상황에서 데이터를 효율적으로 처리하기 위한 방법중 하나로 Redisd와 Scheduler를 활용한 개발 방법을 정리해 보려 합니다.Redis에 데이터를 임시 저장하고, 일정 시간 간격으로 DB에 적재하는 방식을 구현합니다. Redis는 빠른 쓰기 작업에 유리하며, 데이터 배치를 통해 DB의 부담을 줄일 수 있습니다.2. 🚀 로직과 코드 구현🔹 전체 로직데이터 저장데이터를 Redis의 리스트(List) 구조에 저장합니다.가장 최근 키에 데이터를 추가하되, 리스트가 3000개 이상일 경우 새로운 키를 생성합니다.스케줄링 처리Redis에서 가장 오래된 키부터 데이터를 가져옵니다.데이터를 DB에 적재하고,..
· Java
이전 글에서 Spring에서의 단위테스트와 통합테스트에 대해 간략하게 정리해 보았습니다.[JAVA] Spring을 이용한 테스트 코드 작성 방법 (단위 테스트, 통합 테스트) [JAVA] Spring을 이용한 테스트 코드 작성 방법 (단위 테스트, 통합 테스트)소프트웨어 개발에서 테스트 코드는 단순히 오류를 찾는 도구를 넘어, CI/CD(Continuous Integration/Continuous Deployment) 파이프라인과 개발 생산성 향상에 핵심적인 역할을 합니다.이 글에서는 JPA를 사용tae-hui.tistory.com 이번 글에서는 해당 내용에 대해 조금 더 깊에 알아보려고 합니다. 특히, Mock 객체와 MockBean의 차이점, 통합테스트에서의 Application Context 초기화..
· Java
소프트웨어 개발에서 테스트 코드는 단순히 오류를 찾는 도구를 넘어, CI/CD(Continuous Integration/Continuous Deployment) 파이프라인과 개발 생산성 향상에 핵심적인 역할을 합니다.이 글에서는 JPA를 사용한 DB 연결 후 테스트를 작성하는 방법을 단계별로 알아보겠습니다.1. 🌱 단위 테스트와 통합 테스트의 차이✅ 단위 테스트(Unit Test)목적: 메서드, 클래스 등 작은 단위의 코드가 올바르게 동작하는지 검증.도구: JUnit, Mockito 등.실행 방식:@ExtendWith, @Mock, @InjectMocks 등을 활용하여 외부 의존성을 모킹(Mock).테스트 환경에서 빠르게 검증.✅ 통합 테스트(Integration Test)목적: 여러 구성 요소(Con..
· Git
Git을 사용하다 히스토리에 기록된 이메일과 이름 정보를 수정할 일이 생겨 이참에 수정 방법에 대해 포스팅해보려고합니다🚨 주의: 작업 환경 준비기존 프로젝트에 직접 작업하지 마세요!다음 절차를 따라 새로 클론한 저장소에서 작업을 진행하세요.현재 작업 중인 프로젝트가 있다면 변경사항을 커밋하거나 백업하세요.원격 저장소를 새 폴더에 클론합니다:git clone 새로 클론한 저장소에서 아래의 모든 작업을 진행하세요.1. git filter-repo 설치git filter-repo는 Git의 기본 명령어에 포함되지 않으므로 별도로 설치해야 합니다.📝 1.1. Python 설치 여부 확인먼저 Python이 설치되어 있는지 확인합니다:python --version또는:python3 --version팁: Pyt..
· Java
1. ArrayList와 LinkedList의 성능 차이ArrayList와 LinkedList는 중간 삽입/삭제의 시간 복잡도가 모두 O(N)으로 동일합니다. 하지만 실제로는 ArrayList가 더 빠른 경우가 많습니다.ArrayList:내부적으로 배열을 사용하며, 연속된 메모리에 데이터를 저장합니다.특정 위치를 찾는 데 O(1)로 빠르며, 삽입/삭제 시 데이터 이동이 발생하지만, 캐시 최적화 효과로 인해 성능이 더 좋습니다.LinkedList:노드 기반 자료구조로, 삽입/삭제는 연결만 변경하면 되지만 특정 위치를 탐색하는 데 O(N)이 걸립니다.메모리가 비연속적이어서 캐시 효율이 떨어지고, 실제로 더 느릴 수 있습니다.결론: 이론적으로 LinkedList가 유리할 것 같지만, 캐시 친화적인 ArrayL..
· Java
PriorityQueue는 자바에서 제공하는 우선순위 큐(Priority Queue) 구현체로, 요소를 우선순위에 따라 자동으로 정렬하여 관리하는 자료구조입니다. 내부적으로 힙(Heap) 자료구조를 기반으로 하며, 최소 힙(Min-Heap)을 기본으로 사용합니다.1. 🌐 PriorityQueue란?1.1 주요 특징자동 정렬: 삽입된 요소는 우선순위에 따라 정렬됩니다.(기본적으로 오름차순으로 정렬되며, 사용자 정의 정렬 순서를 지정할 수 있습니다.)FIFO가 아닌 우선순위 기반 처리:일반적인 큐(FIFO)와 다르게, 요소는 우선순위가 높은 순서대로 처리됩니다.중복 요소 허용:동일한 값을 여러 번 삽입할 수 있습니다.내부적으로 힙(Heap) 자료구조를 사용하여 정렬 및 삽입/삭제 작업을 효율적으로 수행합니..
· Java
자바에서 Queue 인터페이스는 기본적인 단방향 큐(FIFO)를 정의하는데 사용됩니다. 하지만, 실제로 Queue 대신 Deque를 사용하여 동일한 동작을 구현해도 성능에 문제가 없습니다. Deque는 큐와 스택 동작을 모두 지원하므로, Queue의 모든 기능을 충분히 대체할 수 있습니다.1. 🌐 Queue와 Deque의 차이1.1 Queue의 특징단방향 삽입/삭제만 가능하며, FIFO(First In, First Out) 동작을 따릅니다.주요 메서드:삽입: add(E e), offer(E e)삭제: poll(), remove()조회: peek(), element()1.2 Deque의 특징양방향 삽입/삭제가 가능하지만, 단방향 동작도 구현 가능합니다.Deque를 단방향 큐로 사용하면, Queue의 모든..
TaeHuiLee
'분류 전체보기' 카테고리의 글 목록