![[Spring] RabbitMQ 설치](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC4nff%2FbtssfxJUL5D%2FHIV6NfkAUnrZ3DZkgdS2kK%2Fimg.png)
1. RabbitMQ 다운로드 brew update brew install rabbitmq 2. 환경 변수 설정 vim ~/.zshrc //아래 내용 추가 export PATH=$PATH:/opt/homebrew/sbin source ~/.zshrc 3. RabbitMQ 실행 rabbitmq-server 또는 brew start 로 실행 brew services start rabbitmq 4. RabbitMQ 접속 http://localhost:15672 Default ID, PW = guest Spring Dependency 추가 implementation "org.springframework.boot:spring-boot-starter-actuator" implementation "org.spring..
![[Algorithm] 그리디 알고리즘](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FneAJu%2FbtsrS6yS1fG%2FFUNTI3KQFIrgw5tOTSz5z0%2Fimg.png)
Greedy Algorithm 현재 상태에서 최선의 선택지를 계속해서 고르다보면, 전체적으로도 최선의 선택지가 된다. 실제로는 최선의 결과가 나올 때가 있고, 안나올 때가 있다. 해 선택: 현재 상태에서 가장 최선이라고 생각되는 해를 선택한다. 적절성 검사: 현재 선택한 해가 전체 문제의 제약 조건에 벗어나지 않는지 검사한다. 해 검사: 현재까지 선택한 해 집합이 전체 문제를 해결할 수 있는지 검사한다. 전체 문제를 해결하지 못한다면 1번부터 다시 반복. 프로그래머스 큰 수 만들기 아래 코드는 앞에서부터 k 범위 내의 최대값을 순차적으로 골라서 새로운 배열에 추가하는 방법이다. 그 순간의 최선의 선택인 최대값을 골라 가장 큰 결과값을 도출하였다. class Solution { public String s..
Deadlock 모든 프로세스가 대기하는 상태, Waiting Thread가 상태를 다시 바꿀 수 없는 상태 데드락은 반드시 아래 4가지 조건을 모두 만족해야한다. 하나라도 만족하지 않으면 발생하지 않는다. Mutual Exclusion Hold and Wait No Preemption Circular wait Deadlock Prevention 네가지 조건 중 하나를 막는 방법으로 단점이 너무 많다. 모드 리소스가 공유가 불가능하게 한다. Thread가 어떤 요청을 받으면 가지고 있던 리소스를 전부 버리고 다른 요청을 처리한다. 선점형으로 만든다. -> 다른 프로세스가 리소스를 가지고 있다면 리소스를 뺐는 방법 리소스 선점을 순서를 선형으로 부여하자. Deadlock Avoidance Request를 ..
![[Algorithm] 탐색](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fenksof%2FbtsrqFvEmnt%2FgANpk5lYBiQ3ttbXYgU8GK%2Fimg.png)
DFS: 깊이 우선 탐색 그래프의 시작 노드에서 출발하여 탐색할 한쪽 분기를 정해 최대 깊이까지 탐색을 마친 후 다른 분기로 이동하여 다시 탐색하는 알고리즘 실제 구현 시 재귀함수를 이용하므로 스택오버 플로우(깊이가 너무 깊어질 때)에 유의해야한다. 핵심: 한번 방문한 노드를 다시 방문하면 안된다 = 노드 방문 여부를 체크할 배열이 필요하다. 시간 복잡도: O(V+E) (노드 수: V, 간선 수: E) 왼쪽 분기로 계속 들어가면서 Visit Array에 방문한 노드를 표기한다. 왼쪽 분기가 존재하지 않는다면 이전 노드의 오른쪽 분기로 넘어간다. 1,2 과정을 반복 BFS: 너비 우선 탐색 그래프의 시작노드에서 가장 가까운 노드로 탐색한다. 큐를 이용한 FIFO 방식을 활용하며 O(V+E)의 시간복잡도를 ..