대규모 데이터 엑셀 다운로드 시 서버 부하 방지를 위한 큐 기반 처리 최적화

최근 서비스 내 수십만 건 이상의 데이터를 일괄 다운로드하는 기능에 대한 요구가 증가하고 있으며, 특히 여러 사용자가 동시에 엑셀 추출을 요청할 경우 서버 리소스 과부하로 인한 장애 위험이 존재합니다. 이는 DB 조회 I/O와 파일 스트림 생성이라는 두 가지 무거운 작업이 병행되기 때문입니다. 이를 해결하기 위해 동시 처리량을 제어하고, 요청을 순차적으로 ...

6월 28일 23:10에 게시됨

큐를 사용하여 스택 구현: LeetCode 225 풀이

문제 정의 두 개의 큐를 활용하여 후입선출(LIFO) 방식의 스택을 구현해야 합니다. push, top, pop, empty 네 가지 기본 연산을 지원해야 하며, 큐의 기본 기능인 push to back, peek/pop from front, size 및 is empty만 사용할 수 있습니다. 해결 방법 1: 단일 큐 사용 스택의 마지막 요소를 큐의 맨 앞에서 제거해야 하는 점이 어려움입니다. 이는 큐의 끝 요소를 제 ...

6월 27일 17:07에 게시됨

너비 우선 탐색(BFS)으로 Flood Fill 유형 문제 풀이

너비 우선 탐색(BFS)은 그래프나 그리드에서 최단 경로를 찾거나 연결된 구성 요소를 탐색하는 데 자주 사용되는 강력한 알고리즘입니다. Flood Fill 알고리즘은 특정 시작점에서 인접한 모든 요소들을 탐색하여 변경하는 과정으로, BFS의 대표적인 응용 사례 중 하나입니다. 이 글에서는 BFS를 활용하여 Flood Fill 계열의 문제들을 해결하는 방법을 다룹니다. 1. 이미지 ...

6월 23일 03:44에 게시됨

Python에서의 멀티태스킹: 프로세스 기반 병렬 처리

프로세스와 프로그램의 차이점 프로그램은 단순히 소스 코드 파일(예: main.py)과 같이 저장된 정적 상태를 의미합니다. 반면, 프로세스는 해당 프로그램이 실행되어 운영체제에 의해 메모리 상에 로드되고, 코드와 자원을 활용해 동작하는 동적인 인스턴스입니다. 프로세스는 시스템 자원 할당의 기본 단위이며, 각 프로세스는 독립적인 메모리 공간을 가집니다. multipr ...

6월 22일 01:45에 게시됨

Python 다중 프로세스 프로그래밍 기초와 실전 활용

다중 프로세스의 필요성과 multiprocessing 모듈 Python의 GIL(Global Interpreter Lock)로 인해 멀티스레딩은 CPU 집약적 작업에서 멀티코어를 효과적으로 활용할 수 없습니다. 이를 극복하기 위해 multiprocessing 모듈을 사용하면 각 프로세스가 독립된 메모리 공간과 Python 인터프리터를 가지므로, CPU 자원을 최대한 활용할 수 있습니다. 이 모듈은 프로세스 생성, ...

6월 1일 11:36에 게시됨

BFS를 활용한 최단경로 탐색 및 상태 공간 탐색

Breadth-First Search (BFS) 개요 BFS는 트리 또는 그래프 구조에서 노드를 너비 우선으로 탐색하는 알고리즘입니다. 시작점에서 출발하여, 현재 레벨의 모든 인접 노드를 먼저 방문한 후 다음 레벨로 이동합니다. 이 방식은 '원형 확장'과 유사하며, 최단 경로 문제에 적합합니다. 왜냐하면 같은 거리의 노드들이 모두 한 번에 처리되기 때문입니다. 주요 특징 최단 경 ...

5월 31일 15:35에 게시됨

Java 데이터 구조 핵심 요소

큐 선입선출(FIFO) 원리를 구현하는 자료구조입니다. 배열 기반 큐의 핵심은 front와 rear 포인터를 활용한 위치 관리입니다. front: 첫 번째 요소의 이전 위치를 가리킴 rear: 마지막 요소 위치를 가리킴 삽입: rear 증가 후 요소 할당 삭제: front 증가 후 요소 반환 public class ArrayBasedQueue { private int[] elements; private int capacity; ...

5월 25일 01:24에 게시됨