목록분류 전체보기 (271)
전공공부
설명 인접리스트 형태로 풀기 위해서 Map이라는 새로운 객체로 각 i,j 번째 행렬의 위치의 노드 위치 값을 저장하고 이를 이용해서 Dijkstra를 구현하였는데 double dist = Math.sqrt(Math.pow(distX, 2) + Math.pow(distY, 2)); //double dist = Math.sqrt(Math.abs(distX) * Math.abs(distX) + Math.abs(distY) * Math.abs(distY)); 위에 보이는 해당 코드 형태 때문에 계속 틀렸었습니다. 약간 어이 없는 문제인데 컴퓨터의 부동소수점 표현 방식에 따른 정밀도 문제로 인해서 그렇다고 합니다. 적어도 PS를 할 때는 API를 적극 이용하여야 겠습니다. 코드 import java.io.Buff..
설명 정말 간단한 다익스트라 구현 문제 같지만 그렇지만은 않은 것이 해당 부분이 문제 였었습니다. 저는 아래 부분을 풀때, 처음에는 우선 넘긴다음 다음 차례로 들어온 것에 대해서 visited와 함께 걸러내는 식으로 만들었는데요. private static void dijkstra(int start) { boolean visited[] = new boolean[N + 1]; Queue q = new PriorityQueue(); q.add(new Data(start,0)); int[] weight = new int[N + 1]; while (!q.isEmpty()){ Data now = q.poll(); if(visited[now.to] || weight[now.to] > M){ continue; } v..
https://velog.io/@ddh963963/Webflux-R2dbc-nonblocking-vs-MVC-JDBC-blocking-%EC%84%B1%EB%8A%A5-%ED%85%8C%EC%8A%A4%ED%8A%B8 Webflux + R2dbc (nonblocking) vs MVC + JDBC (blocking) 성능 테스트 완전한 환경에서 한 테스트가 아니기 때문에 편차가 있을 수 있습니다. WebFlux vs MVC 테스트의 목적 및 개요 WebFlux 와 MVC의 성능테스트를 눈으로 보고 스레드의 동작을 살피는 것이 테스트의 목적 velog.io https://medium.com/oracledevs/spring-blocking-vs-non-blocking-r2dbc-vs-jdbc-and-webfl..
HorizontalPodAutoscaler Deployments를 자동으로 업데이트 하며 target resource의 설정 값에 따라서 replica를 늘리고 줄이는 등의 행위를 하는 리소스입니다. 이를 사내 서비스에 Deployments의 Request.memory 기준으로 70%로 설정해서 배포하려고 하였는데 생긴 이슈가 있었습니다. 오류 내용은 Unable to get metrics for resource memory: no metrics returned from resource metrics API 와 같았습니다. 이때, 제가 1차로 의심 한 것은 metric server의 동작 유무를 체크하였습니다. 하지만, 명령어로 확인해보았으나 정상적으로 cpu, memory 사용량 등이 적절히 출력되었습..
설명 가중치가 부여된 그래프 상에서 단방향 일 때 모든 정점 쌍 간의 최단 경로를 찾는 알고리즘인 플로이드 와샬 알고리즘을 사용하면 거리를 쉽게 구할 수 있습니다. 먼저 2차원 배열을 초기화 합니다. 각 배열의 정점에서 다른 모든 정점으로의 직접적으로 도착하는 이동거리를 찾습니다. 그 후, 알고리즘 상세를 살펴 보자면 X -> Y 까지의 최소 비용을 구한 것arr[X][Y]으로 이러한 방식으로 비용을 찾아나가는데. 예시로 X -> Y -> Z 가 만일, X->Z 최소 이동거리라면 arr[X][Y] + arr[Y][Z]를 구합니다. 즉, for문을 보면 알겠지만 출발지 i , 목적지 j, 중간 지점을 k로 둡니다. 이미 i -> j가 최소인 경우에는 탐색을 하지 않겠지만 만일, k를 거쳐서 갈 때 최소가 ..

Networking Basic Switching and Routing, DNS, Network Namespace, Docker Namespace 등에 대해서 개념적인 의미 그리고 시스템에서 어떻게 사용되는지 알아봅시다. 우리는 네트워크 엔지니어가 아니니 가볍게 볼 거지만 적어도 기본적으로 용어나 어떤 행동을 하는지 알아야 깊이 있는 이해가 가능하기 때문에 한 번 알아봅시다. Switching Switch는 네트워크 내부에서만 통신 할 수 있게 도와줍니다. 각각의 VM 또는 데스크톱이 있다고 합시다. 우리는 서로 소통하기 위해서 이들을 스위치에 연결하고, 스위치는 이 두 시스템을 포함하는 네트워크를 생성합니다. 이들을 스위치에 연결하기 위해서는 각 호스트에 인터페이스가 필요한데요. 호스트에 따라 물리적인 ..

Volume 우선 쿠버네티스의 볼륨을 알아보기 전에 도커의 볼륨에 대해서 먼저 알아봅시다. 도커에 볼륨은 영구히 쓰기 위해서 컨테이너가 붙기 전에 먼저 host에 /data 와 같은 폴더에 볼륨을 두고 있습니다.이를 컨테이너를 연결 시켜서 써서 영구히 쓰려고 하죠 자 쿠버네티스에서 보면 pod도 일시적이고 pod 내부에 data도 일시적이죠. 그렇기 때문에 volume을 씁니다. 그래서, pod가 삭제가 되어도 volume이 data를 유지를 해주죠. 아래 그림을 보면 알 수 있듯이 pod는 보라색 동그라미이고 volumeMounts는 pod의 /opt 폴더의 값을 volume에 마운트 하겠다는 소리입니다. 이렇게 만들어 두면 volume이 실제 host에 생성이 되고 pod가 삭제되어도 이미 volum..
MVC 패턴은 일반적으로 Controller, Service, Repository 각 계층의 역할과 책임을 분리하여 애플리케이션 유지보수성을 높이기 위해서 사용합니다. 하지만, MVC 패턴은 비즈니스 로직과 외부 서비스의 로직 결합도를 완전히 분리하지 못한다는 단점이 있는데요. 이를 같이 알아봅시다. MVC @Service public class OrderService { private final OrderRepository orderRepository; private final String filePath; public OrderService(OrderRepository orderRepository, @Value("${file.path}") String filePath) { this.orderRepos..