분류 전체보기(23)
-
[항해 취업 리부트 코스] 모듈간 통신에 대하여 FeignClient
이번주 과제 역시 저번주 이상으로 어려웠다.이제 본격적으로 msa구조로 저번주에 모놀리스 하게 만들었던 프로젝트를 쪼갰는데쪼개는 과정에서 모듈을 분리하다가 프로젝트가 꼬인 바람에 git stash를 하고 복구하려고 하였으나 심하게 꼬인 나머지 git stash한것도 복구를 못하고 많은 코드가 날라가 버렸다.... 결국 git도 꼬여버려서 그 프로젝트 파일을 버리고 새롭게 아예 프로젝트를 만들어서 애초에 멀티 모듈로프로젝트를 구성하고 코드를 쪼개서 넣기로 했다. 기존에 의존성과 결합을 가지고있던 단일db와 단일 서비스를 쪼개는건 매우 어려운 과정이었다.각 의존성을 빼는 식으로 엔티티를 수정하고 서비스 코드들역시 수정이 필요했다아직 보안과 게이트웨이는 시작도 못했다.. 이번에 추천으로 FeignClient를..
2024.05.01 -
[항해 취업 리부트 코스] 프로젝트 1주차를 보내주며..
이번 프로젝트는 시작이 젤 어려웠던것 같다. 첫 과제가 docker환경 세팅이다보니 docker를 처음해보는 (심지어윈도우인) 나는 rinux 가상 머신이나 서버를 띄우는 시스템이 낯설게 다가왔다. 도커를 진행하면서 가장 힘들었던건 spring서버가 로컬에선 잘 동작하는데 도커컴포즈 서버에서 띄우면 db를 인식을 못하는 것이었다. 어쨌든 지금이야 로컬에서 서버를 돌리면 그만일수 있지만 MSA방식으로 개발하기 위해선 결국은 docker-compose위에 spring을 여러대 띄워서 돌리는 수 밖에 없기에 나는 해결을 해야만했다. services: mysql: image: mysql:latest ports: - 3306:3306 environment: - MYSQL_DATABASE=market - MYSQL..
2024.04.23 -
여전히 헷갈리는 다익스트라..
package com.example.demo; import java.io.*; import java.util.*; /* 우선 각 테스트에 컴퓨터N 의존성M 해킹 컴퓨터C가 주어지는데 의존성에 엮인 컴퓨터는 대상이 해킹되면 S초 후에 자기도 전염되서 감염된다. 문제는 마지막 컴퓨터가 언제 감염이 되는지 묻는것이다. */ public class Main { static final int INF = Integer.MAX_VALUE; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; int..
2024.04.16 -
DP 다이나믹 프로그래밍 개념
다이나믹 프로그래밍(Dynamic Programming)은 주어진 문제를 여러 하위 문제로 나누어 푸는 알고리즘 기법이다. 이를 통해 문제의 해결 방법을 동적으로 계산해서 이전에 계산한 결과를 저장하여 중복 계산을 피하고 효율을 높인다. 다이나믹 프로그래밍은 주로 최적화 문제에서 쓴다. 그럼 특징을 알아보자. 최적 부분 구조: 큰 문제의 최적 해결 방법이 작은 문제의 최적 해결 방법에서 구현. 작은 문제의 최적 해결 방법을 이용하여 전체 문제의 최적 해결 방법을 구한다. 중복 부분 문제: 작은 문제를 해결하는 과정에서 중복된 하위 문제가 발생.(아파트 인구 문제같은)중복 계산을 피하기 위해 한 번 계산한 하위 문제의 해결 방법을 저장하고 재활용한다.(이전 호수에서 계산한 인구+) 다이나믹 프로그래밍은 보..
2024.04.15 -
데이크스트라와 bfs의 차이는?
비슷하면서도 쓰이는 곳이 다른 데이크스트라와 BFS(너비 우선 탐색) 둘은 각각 어떤것이고 어떻게 쓰임을 구분해야할까? BFS(너비 우선 탐색): 시작 지점으로부터 해당 노드까지의 최소 이동 횟수를 찾는 것이다. 따라서 가중치가 없는 그래프에서 최단 경로를 찾을 때 사용된다. 데이크 스트라 알고리즘: 시작 노드로부터 각 노드까지의 최단 경로와 그 거리를(다른부분) 찾는 것이다. 따라서 가중치가 있는 그래프에서 최단 경로를 찾을 때 사용된다. BFS는 최소 이동횟수를 구하는 루트를 찾는것이기에 여비가 소모된다던가 하는 가중치는 고려하지 않는다! 동일한 것으로 간주하고 큐를 사용해서 탐색하는 것이다. public class Main { public static void main(String[] args) t..
2024.04.13 -
알고리즘 BFS의 템플릿?
package com.example.demo; import java.io.*; import java.util.*; /* 아기 상어의 위치에서 이웃한 모든 정점을 거리를 한 단계씩 증가시키면서 탐색한다. 아기 상어와 가장 가까운 칸부터 시작하여 거리를 기록하고 그거리가 가장 큰 칸이을 구하는 문제. */ public class Main { public static int n, m; public static int[][] arr;//방문 여부체크 public static int[] x = {-1, 1, 0, 0, 1, 1, -1, -1}; public static int[] y = {0, 0, -1, 1, -1, 1, -1, 1}; public static void main(String[] args) thr..
2024.04.12