import java.util.*;class Main { public String solution(String str) { String answer = ""; for(int i = 0; i 문자열이 "banana"일 때:i = 0: str.charAt(0)은 'b'이고, indexOf('b')는 0. (같으므로 'b'를 answer에 추가)i = 1: str.charAt(1)은 'a'이고, indexOf('a')는 1. (같으므로 'a'를 answer에 추가)i = 2: str.charAt(2)는 'n'이고, indexOf('n')는 2. (같으므로 'n'을 answer에 추가)i = 3: str.charAt(3)은 'a'이고, indexOf('a')는 1. (다르므로 '..
import java.util.*;class Main { public String solution(String str) { String answer = ""; // char 배열에 str 담기 char[] s = str.toCharArray(); // 시작, 마지막 위치 설정 int lt = 0; int rt = str.length()-1; while(lt import java.util.*;class Main { public String solution(String str) { String answer = ""; char[] s = str.toCharArray(); i..
import java.util.*;class Main { public ArrayList solution(int n, String[] str) { ArrayList answer = new ArrayList(); for(String x : str) { // 배열 str을 char 배열로 변경 char[] s = x.toCharArray(); // 문자열 좌측 선언 int lt = 0; // 문자열 우측 선언 (array는 0부터 시작이라서 -1 해주기) int rt = x.length()-1; // 좌측, 우측을 변경하고 좌측은 +, 우측은 - 해..
import java.util.*;class Main { public String solution(String str) { String answer = ""; // 정수에서 가장 작은 수 int min = Integer.MIN_VALUE; // 공백을 기준으로 자르고 arr[]에 저장 String arr[] = str.split(" "); for(int i = 0; i import java.util.*;class Main { public String solution(String str) { String answer = ""; int min = Integer.MIN_VALUE; ..
import java.util.*;class Main { public String solution(String str) { String answer = ""; for(int i = 0; i import java.util.*;class Main { public String solution(String str) { String answer = ""; for(int i = 0; i
import java.util.*;class Main { // solution 메서드 정의, str과 t를 매개변수로 받음 public int solution(String str, char t) { int count = 0; // 문자열 str을 대문자로 변환 str = str.toUpperCase(); // 입력된 문자 t를 대문자로 변환 t = Character.toUpperCase(t); for(int i = 0; i import java.util.*;class Main { public int solution(String str, char t) { int..
1. 서비스 실행 방법- IntelliJ IDEA- Exported JAR file- Docker Container 2. Docker Network1). Bridge network$ docker network create --driver bridge [브릿지이름]2). Host network - 네트워크를 호스트로 설정하면 호스트의 네트워크 환경을 그대로 사용 - 포트 포워딩 없이 내부 어플리케이션 사용3). None network - 네트워크를 사용하지 않음 - Io 네트워크만 사용, 외부와 단절 4). docker 기본 네트워크 목록$ docker network lsNETWORK ID NAME DRIVER SCOPEb0d1b31fd518 bridge bridge ..
1. 가상화1). 호스트 OS 가상화 - Host OS 위에 Guest OS 전체를 가상화- VMWare, VirtualBox- 자유도가 높으나 시스템에 부하가 많고 느려짐 2). 컨테이너 가상화- Host OS가 가진 리소스를 적게 사용하며 필요한 프로세스 실행- 최소한의 라이브러리와 도구만 포함- Container의 생성 속도 빠름 Container Image : Container 실행에 필요한 설정 값Image만 가지고 있으면 바로 하나의 운영체제나 소프트웨어를 바로 실행할 수 있는 상태 Dockerfile- Docker Image를 생성하기 위한 스크립트 파일- 자체 DSL(Domain-Specific language) 언어 사용 -> 이미지 생성과정 기술 2. Docker Desktop 설치ht..
1. 설명 1). Micrometer- JVM 기반의 애플리케이션의 Metrics 제공- Prometheus 등의 다양한 모니터링 시스템 지원 2). Prometheus- Metrics를 수집하고 모니터링 및 알람에 사용되는 오픈소스- 16년부터 CNCF에서 관리되는 2번째 공식 프로젝트 [1번째는 k8s] - Level DB -> Time Series Database(TSDB)- pull 방식의 구조와 다양한 Metric Exporter 제공- 시계열 DB Metrics 저장 -> 조회 가능(Query) 3). Grafana- 데이터 시각화, 모니터링 및 분석을 위한 오픈소스- 시계열 데이터를 시각화하기 위한 대시보다 제공 2. Micrometer 적용1). 코드user-service, apigat..
1. Resilience4j-CircuitBreaker란? - 장애가 발생하는 서비스에 반복적인 호출이 되지 못하게 차단- 특정 서비스가 정상적으로 동작하지 않을 경우 다른 기능으로 대체 수행 -> 장애 회피 다른 마이크로 서비스에서 오류가 발생했음에도 지금 서비스에서도 오류가 발생하는 경우가 종종 있다문제가 있는 서비스에는 요청을 보내지 않아야 한다.Feign Client에서는 임시로 그 에러를 대신, 우회, 정상적으로 보여지는 다른 데이터를 보여줄 준비를 해야된다.2. 테스트1). 기존 오류 테스트config, 유레카, gateway, user, rabbitmq 기동 2). CircuitBreakerUserServiceImpl.java@Override public UserDto getUse..