RabbitMQ란?RabbitMQ는 신뢰성 높은 메시지 전달과 유연한 라우팅을 제공하는 오픈소스 메시지 브로커입니다. AMQP(Advanced Message Queuing Protocol) 프로토콜을 기반으로 하여, 다양한 토폴로지와 통신 패턴을 지원합니다. 복잡한 라우팅을 처리할 수 있는 Exchange 타입들을 제공하며, 메시지 큐잉, pub/sub 패턴, 피어-투-피어 통신 등 다양한 메시징 패턴을 구현할 수 있습니다.높은 가용성을 위한 클러스터링과 미러링을 지원하며, 메시지 전달 보장을 위한 Publisher Confirms와 Consumer Acknowledgments 기능을 제공합니다. 또한, Java, Python, JavaScript 등 다양한 프로그래밍 언어를 위한 클라이언트 라이브러리를..
문제https://www.acmicpc.net/problem/7569오늘의 학습 키워드BFS 탐색으로 서로 다른 좌표에서 '동시에' 탐색이 처리된다는 것의 의미는 무엇일까?공부한 내용 본인의 언어로 정리하기해결 과정문제의 핵심은 서로 다른 공간에 있는 익은 토마토들이 주변의 토마토들에 영향을 주며 하루씩 익어 가는 것을 어떻게 코드로 구현하냐는 것이라고 생각한다. 문제의 풀이법이 BFS로 접근해야 한다는 것은 쉽게 떠올릴 수 있었는데 익은 토마토들이 '동시에' 주변의 안 익은 토마토에 영향을 주게끔 코드를 구현하는 방법을 잘 떠올리지 못했다. 그래서 처음에는 days라는 3차원 배열을 만들고 각각의 익은 토마토에 대해 bfs를 실시하며 익는데까지 걸린 날을 갱신해주는 코드로 구현했다. 먼저 days라는..
문제https://school.programmers.co.kr/learn/courses/30/lessons/84512오늘의 학습 키워드중첩 for문과 DFS와의 관계공부한 내용 본인의 언어로 정리하기원래 처음엔 아주 허접하게 문제를 풀었다. 바로 중첩 for문을 이용했다. 참으로 무식한 방법을 사용했다.모음이 5개이니 5개의 for문을 이용해 단어 목록을 만들고 단어 목록에서 주어진 단어의 인덱스를 반환했다.class Solution { static String[] arr = new String[]{"A", "E", "I", "O", "U"}; public int solution(String word) { List map = new ArrayList(); for (in..
문제https://www.acmicpc.net/problem/24479오늘의 학습 키워드인접행렬과 인접리스트공부한 내용 본인의 언어로 정리하기1. DFS (Depth-First Search)DFS는 깊이 우선 탐색으로, 그래프나 트리의 한 노드에서 시작해 가능한 깊이까지 탐색한 뒤 다시 돌아와 다른 경로를 탐색하는 방식이다. 주요 단계는 다음과 같다.방문: 시작 노드를 방문하고 표시.재귀 또는 스택 이용: 현재 노드에서 갈 수 있는 깊이까지 이동.백트래킹: 더 이상 이동할 수 없을 때, 이전 경로로 돌아가면서 탐색.DFS는 스택을 이용해 구현할 수 있고, 재귀 함수로도 구현할 수 있다. 2. 스택을 이용한 DFS (반복문 방식)장점:메모리 효율적: 재귀 깊이가 깊어지면 호출 스택이 커져 메모리 부족 현상..
문제https://www.acmicpc.net/problem/11561오늘의 학습 키워드등차수열이번 문제에서 등차수열이라는 점을 인식하는게 매우 중요했다.잘 생각해보면, 두번째 규칙에 의해 두번째 점프부터는 이전 점프 길이보다 1이상 점프해야하고 우리는 밟을 수 있는 최대 징검다리 수를 생각해야하므로 이전 점프보다 1보다 크게 점프하면 된다. 즉 초항은 처음 점프 길이, 공차가 1인 등차수열로 점프한 길이의 수열을 생각해볼 수 있다. 처음 점프 길이가 1이면 두번째는 2, 세번째는 3 ... 으로 이어진다.중요한 건 등차수열의 합이다. 왜 중요하냐면 총 점프한 길이가, 즉 등차수열의 합이 N을 초과하지 않는 조건에서 최대로 밟을 수 있는 징검다리의 수를 구해야하기 때문이다. 공차가 1이고 점프한 횟수를 ..
Spring In Action(제5판)을 공부하던 중 Converter를 사용해 클라이언트에서 도메인 객체에 대한 id 값을 전달하면 id를 DB에서 도메인 객체를 조회하는 내용이 나왔다.Converter 구현import org.springframework.core.convert.converter.Converter;...@Component@RequiredArgsConstructorpublic class IngredientByIdConverter implements Converter { private final IngredientRepository ingredientRepository; @Override public Ingredient convert(String id) { re..