프로그래머스 - 서울에서 김서방 찾기 Java
·
코테 문제 풀이/프로그래머스
문제 설명String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.제한 사항seoul은 길이 1 이상, 1000 이하인 배열입니다.seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다."Kim"은 반드시 seoul 안에 포함되어 있습니다. class Solution { public String solution(String[] seoul) { int target = 0; for(int i=0; i "Kim" 이라는 문자가 배열의 몇 번째 원소인지만 알아내면 되는 문..
프로그래머스 - 콜라츠 추측 Java
·
코테 문제 풀이/프로그래머스
문제 설명1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요.제한 사항입력된 수, num은 1 이상 8,000,000 미만인 정수입니다. class Solution { public int solution(long num) { int ..
프로그래머스 - 두 정수 사이의 합 Java
·
코테 문제 풀이/프로그래머스
문제 설명두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.제한 조건a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.a와 b의 대소관계는 정해져있지 않습니다. class Solution { public long solution(int a, int b) { long answer = 0; int tmp = 0; if(a>b){ tmp = a; a = b; b ..
프로그래머스 - 하샤드 수 Java
·
코테 문제 풀이/프로그래머스
문제 설명양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. class Solution { public boolean solution(int x) { int sum = 0; int num = x; while(num!=0){ sum += num%10; num /= 10; } return x%sum==0 ? true : false; }} 각 자릿수..
서킷 브레이커 Resilience4j와 API 게이트웨이 이해하기
·
Spring
서킷 브레이커 서킷 브레이커는 마이크로서비스 간의 호출 실패를 감지하고 시스템의 전체적인 안정성을 유지하는 패턴외부 서비스 호출 실패 시 빠른 실패를 통해 장애를 격리하고, 시스템의 다른 부분에 영향을 주지 않도록 함.상태 변화 : 클로즈드 → 오픈 → 하프-오픈  Resilience4j Resilience4j : 서킷 브레이커 라이브러리로, 서비스 간의 호출 실패를 감지하고 시스템의 안정성을 유지한다.서킷 브레이커 상태클로즈드 : 기본 상태로, 모든 요청을 통과 시킴. 이 상태에서 호출이 실패하면 실패 카운터가 증가함. 실패율이 설정된 임계값을 초과하면 서킷 브레이커가 오픈 상태로 전환됨.오픈 : 서킷 브레이커가 오픈 상태로 전환되면 모든 요청을 즉시 실패로 처리, 에러 응답 반환. 설정된 대기 시간이..
클라이언트 사이드 로드 밸런싱 FeignClient와 Ribbon 이해하기
·
Spring
로드 밸런싱 로드 밸런싱은 네트워크 트래픽을 여러 서버로 분산시켜 서버의 부하를 줄이고, 시스템의 성능과 가용성을 높이는 기술.서버 간 트래픽을 고르게 분배하여 특정 서버에 부하가 집중되는 것을 방지.종류 : 클라이언트 사이드 로드 밸런싱, 서버 사이드 로드 밸런싱 클라이언트 사이드 로드 밸런싱 클라이언트 사이드 로드 밸런싱은 클라이언트가 직접 여러 서버 중 하나를 선택하여 요청을 보내는 방식.클라이언트는 서버의 목록을 가지고 있으며, 이를 바탕으로 로드 밸런싱을 수행.  FeignClient FeignClient는 Spring Cloud에서 제공하는 HTTP 클라이언트로, 선언적으로 RESTful 웹 서비스를 호출 할 수 있음.Eureka와 같은 서비스 디스커버리와 연동하여 동적으로 서비스 인스턴스를 ..
서비스 디스커버리 Eureka 서버 이해하기 및 실습
·
Spring
서비스 디스커버리 서비스 디스커버리 : 마이크로서비스 아키텍처에서 각 서비스의 위치를 동적으로 관리하고 찾아주는 기능.각 서비스는 등록 서버에 자신의 위치를 등록하고, 다른 서비스는 이를 조회하여 통신.주요 기능으로는 서비스 등록, 서비스 조회, 헬스 체크 등이 있음.  Eureka Eureka : 넷플릭스가 개발한 서비스 디스커버리 서버로, 마이크로 서비스 아키텍처에서 각 서비스의 위치를 동적으로 관리.모든 서비스 인스턴스의 위치를 저장하는 중앙 저장소 역할을 하며, 서비스 인스턴스의 상태를 주기적으로 확인하여 가용성 보장. Eureka 서버 설정 Eureka 서버는 서비스 레지스트리를 구성하는 중앙 서버서버 설정 파일 예시 >server: port: 8761eureka: client: reg..
Spring의 RestTemplate 이해하기
·
Spring
RestTemplate 예시로 회원 가입 시 사용자의 주소를 받아와야 할 때 이 부분을 직접 구현하지 않고 이미 만들어져 있는 API를 사용하면 해당 기능을 간편하게 구현 할 수 있다. 이렇게 서버에서 다른 서버로 간편하게 요청할 수 있도록 Spring에서는 RestTemplate 기능을 제공한다.  💭 Client의 서버 포트 번호는 8080, Server의 서버 포트 번호를 7070으로 가정해 놓았을 때RestTemplate Get 요청 알아보기 Client 입장private final RestTemplate restTemplate;// RestTemplateBuilder의 build()를 사용하여 RestTemplate을 생성합니다.public RestTemplateService(RestTempl..