전체 글 669

[CodingTest] 미래도시 ( 플로이드-워셜 알고리즘 )

◎ 문제 공중미래도시는 1번부터 N번까지 회사가 있으며 서로 도로로 연결되어 있다. 방문판매원A는 현재 1번에 있으며 X번 회사에 방문하여 물건을 판매하려고 한다. 연결된 2개의 회사는 양방향 이동이 가능하다. 회사와 회사를 연결하는 도로는 마하의 속도로 사람을 이동시켜 모두 정확히 1만큼의 시간으로 이동한다. 또한 방문판매원A는 소개팅에도 참석하려고 한다. 소캐팅 상대는 K번회사에 있다. 방문판매원A는 K번회사에 참석한 뒤 X번 회사로 가는 것이 목표다. 방문판매원이 회사 사이를 이동하는 최소시간을 계산하는 프로그램을 작성하시오. - 입력조건 첫째 줄에 전체 회사의 개수 N과 경로의 개수 M이 공백으로 구분되어 차례대로 주어진다.(1

[Algorithm] 플로이드-워셜(Floyd-Warshall) 알고리즘이란?

[Algorithm] 다익스트라 알고리즘(Dijkstra)이란? 다익스트라 알고리즘(Dijkstra) 다익스트라 알고리즘은 특정지점에서 다른지점으로 가는 최단경로를 구하는 알고리즘이다. 다익스트라 알고리즘은 그리디(Greedy) 알고리즘 기반으로 한다. 그리디( lordofkangs.tistory.com 이전 포스팅에서 최단경로 알고리즘으로 다익스트라 알고리즘을 알아보았다. 다익스트라 알고리즘은 시작점이 고정되어 있을때 모든노드로 가는 최단경로를 테이블로 관리하였다. 플로이드-워셜 알고리즘은 시작점이 모든 노드인 경우, 다른 모든 노드로 가는 최단경로를 테이블로 관리하는 알고리즘이다. 1. 자료구조 : 2차원 테이블 다익스트라 알고리즘의 최단경로 테이블은 1차원 테이블로 구성 가능했다. A->A(시작점)..

[SpringBoot] 커스텀 메트릭(Metric) 등록하기 - 카운터(Counter)

[SpringBoot] 커스텀 메트릭(Metric) 등록하기 [SpringBoot] 메트릭(Metric) 이란? [SpringBoot] 모니터링 - 엑츄에이터(Actuator)(1) 개발이 완료되면 App을 모니터링해야 한다. ( Production-Ready ) App상태정보, 트래픽, DB상태정보 등등 다양한 모니터링 데이터 lordofkangs.tistory.com 이전 포스팅에서 커스텀 메트릭 등록을 위한 간단한 예제프로그램을 만들어 보았다. 이번 포스팅에서는 예제 프로그램을 활용하여 커스텀 메트릭을 만들어 보겠다. 1) 카운터 ( Counter ) 시간에 따라 '증가'만하는 데이터이다. 주문수는 항상 증가한다. 중간에 감소하지 않는다. 2) 게이지 ( Gauage ) 시간에 따라 '증가'와 '감..

SPRING/Spring Boot 2023.05.16

[SpringBoot] 커스텀 메트릭(Metric) 등록하기 - 예제 만들기

[SpringBoot] 메트릭(Metric) 이란? [SpringBoot] 모니터링 - 엑츄에이터(Actuator)(1) 개발이 완료되면 App을 모니터링해야 한다. ( Production-Ready ) App상태정보, 트래픽, DB상태정보 등등 다양한 모니터링 데이터를 파악해야 하는데 개발자가 lordofkangs.tistory.com [Prometheus] 프로메테우스 연동하기 ( With SpringBoot ) 프로메테우스(Prometheus)란? Application을 모니터링하려면 다양한 데이터를 수집해야 한다. 시간이 지남에 따라 추이가 변하는 데이터를 메트릭(Metric)이라고 하는데, CPU사용량, 메모리 사용량 등이 lordofkangs.tistory.com [Grafana] 그라파나 연..

SPRING/Spring Boot 2023.05.15

[Algorithm] 개선된 다익스트라 알고리즘

[알고리즘] 다익스트라 알고리즘(Dijkstra)이란? 다익스트라 알고리즘(Dijkstra) 다익스트라 알고리즘은 특정지점에서 다른지점으로 가는 최단경로를 구하는 알고리즘이다. 다익스트라 알고리즘은 그리디(Greedy) 알고리즘 기반으로 한다. 그리디( lordofkangs.tistory.com 이전에는 다익스트라 알고리즘이 무엇인지 알아보았고 이번에는 다익스트라 알고리즘을 개선해보겠다. 다익스트라 알고리즘은 그리디(Greedy) 알고리즘을 기반으로 한다. 현재 상황에서 최적의 해를 구하는 것이다. 차가 A에서 각 노드로 가는 최단거리를 구한다고 가정해보자. A에서 출발한 차가 B일때, C일때, D일때... 각 노드별 최단거리를 구해야 한다. 이는 두 과정이 필요하다. 1) 모든 노드를 탐색해야 한다. ..

[Grafana] 그라파나 연동하기 ( With SpringBoot, Prometheus )

그라파나(Grafana)란? 시간이 지남에 따라 추이가 변하는 데이터를 메트릭(Metric)이라 부른다. CPU 사용률, 메모리 사용률, 트래픽 등이 메트릭(Metric)에 해당된다. 메트릭은 시간별로 데이터가 수집되기에 그 양이 많다. 그래서 외부에 메트릭을 저장하는 DB를 두는데, 대표적으로 프로메테우스(Prometheus)가 있다. 프로메테우스는 일정시간 간격으로 App에 접근하여 메트릭 데이터를 수집한다. 프로메테우스는 메트릭을 저장하는 기능에 특화되어 있지만 추이를 시각화하는데는 특화되어 있지 않다. 그래서 프로메테우스 DB에 원격으로 쿼리를 날려 데이터를 가져와 시각화하는 툴(Tool)이 필요한데, 그것이 그라파나(Grafana)이다. SpringBoot와 Prometheus 연동은 이전 포스..

Monitoring/Grafana 2023.05.13

[Algorithm] 다익스트라 알고리즘(Dijkstra)이란?

다익스트라 알고리즘(Dijkstra) 다익스트라 알고리즘은 특정지점에서 다른지점으로 가는 최단경로를 구하는 알고리즘이다. 다익스트라 알고리즘은 그리디(Greedy) 알고리즘 기반으로 한다. 그리디(Greedy) 알고리즘은 '현재'를 기준으로 최적해를 구하는 알고리즘이다. 네비게이션을 떠올리면 이해가 쉽다. 네비게이션은 차가 위치한 '현재'를 기점으로 최단경로를 탐색한다. A와 B는 5L의 기름으로 연결된다. A와 B는 '노드'이고 5L의 기름은 '간선'이다. 그럼 차가 A에서 출발하여 E로 간다고 가정해보자. 네비게이션이 A -> B -> D -> E 경로가 최적이라 알려주어도 운전자가 C로 이동하면 네비게이션은 C에서의 최단경로를 파악해야 한다. '현재'를 기준으로 최적해를 구해야 한다는 의미다. 또한..

[Prometheus] 프로메테우스 연동하기 ( With SpringBoot )

프로메테우스(Prometheus)란? 시간이 지남에 따라 추이가 변하는 데이터를 메트릭(Metric)이라고 한다. CPU사용량, 메모리 사용량 등이 메트릭에 해당한다. SpringBoot는 Metric 수집을 마이크로미터(MicroMeter) 모듈을 내장한 엑츄에이터가 담당한다. 그런데 문제가 있다. 메트릭은 시간이 흐를수록 계속 쌓이게 된다. Application의 메모리만으로는 증가하는 메트릭 데이터를 모두 커버할 수 없다. 그래서 메트릭 전용 외부 DB를 두는데, 그것이 프로메테우스(Prometheus)이다. 프로메테우스는 마이크로미터가 수집한 메트릭 데이터를 일정시간 간격으로 PULL하여 DB에 수집한다. 이때, MicroMeter Prometheus 구현체가 필요하다. 마이크로미터는 수집한 메트..

[SpringBoot] 메트릭(Metric) 이란?

[SpringBoot] 모니터링 - 엑츄에이터(Actuator)(1) 개발이 완료되면 App을 모니터링해야 한다. ( Production-Ready ) App상태정보, 트래픽, DB상태정보 등등 다양한 모니터링 데이터를 파악해야 하는데 개발자가 하나 하나 파악하기에 어려움이 있다. Sprin lordofkangs.tistory.com 메트릭(Metric)이란? 시간이 지남에 따라 변화하는 데이터를 의미한다. 메모리 사용률, CPU 사용률, 스레드 사용률 등등.. 시간에 따른 추이를 추적할 가치가 있는 데이터를 메트릭(Metric)이라 부른다. 메트릭 수집은 마이크로미터(MicroMeter) 모듈이 담당하는데, 이는 엑츄에이터 안에 내장되어 있다. 마이크로미터는 일정한 시간간격으로 메트릭을 수집한다. 수집..

SPRING/Spring Boot 2023.05.11

[SpringBoot] 엑츄에이터(Actuator)(3) - 로그 및 HTTP 기록 확인하기

[SpringBoot] 모니터링 - 엑츄에이터(Actuator)(1) 개발이 완료되면 App을 모니터링해야 한다. ( Production-Ready ) App상태정보, 트래픽, DB상태정보 등등 다양한 모니터링 데이터를 파악해야 하는데 개발자가 하나 하나 파악하기에 어려움이 있다. Sprin lordofkangs.tistory.com 이전 포스팅에서 Actuator에 대해서 알아보았다. 이번 포스팅에서는 Actuator를 활용하여 실시간으로 로그레벨을 수정해보고 HTTP 요청/응답 기록을 확인해보겠다. 실시간 로그레벨 수정하기 logger 엔드포인트는 Spring에 등록된 클래스의 로그레벨을 노출한다. 로그레벨은 중요하다. 프로그램을 운영하다가 에러가 발생하면 로그를 보는데 로그수준에 맞는 로그만 확인 ..

SPRING/Spring Boot 2023.05.11