11659번: 구간 합 구하기 4 문제 N까지의 수가 주어졌을 때 구간의 합을 구하는 문제이다. 풀이 문제를 해결하기 위해 구간합을 구해야 한다. 구간합은 다음과 같이 만든다. int[] array = new int[size+1] for(int i=1; i
분류 전체보기
1546번: 평균 문제 최고점을 기준으로 평균을 다시 구한다. 풀이 전체 점수에서 가장 큰 값을 구한다. M 점수들에 대해서 가장 큰 값으로 계산해준 값을 모두 더해 평균을 구한다. 만약 A, B, C의 값이 있다면 (A / M * 100) + (B / M * 100) + (C / M * 100) / 3 이 식을 단순화하기 위해 / M * 100을 묶어낸다. (A + B + C) / M * 100 / 3 따라서 최대값을 구하고 A, B, C값을 모두 더해 계산을 하면 된다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; pub..
11720번: 숫자의 합 문제 주어진 문자열에 대해 각각의 숫자의 합으로 나타내시오. 풀이 import java.io.*; import java.util.Scanner; public class Main { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); // 입력을 String으로 받고 char[]으로 변경 String S = sc.next(); char[] C = S.toCharArray(); int sum = 0; for(int i =0; i
지난번 MSA 구현 이후 이해가 안되던 부분에 대해서 알게된 점을 포스팅 합니다. 이전 포스트 : https://g-db.tistory.com/9 원인, 문제 이전의 마이크로 서비스를 구현했을 때 Kafka를 이용하여 서비스 로직을 수행하는 서버들을 컨슈머로 구동하게 했고 api gateway를 spring boot로 구현하여 토픽에 메시지를 넣어 요청이 처리되면 redis로 응답을 받아오는 로직을 수행하도록 구현하였습니다. 분명히 비동기 처리를 하기 위해 카프카를 사용해서 이벤트를 토픽으로 날리는 선택을 했지만 실제로는 동기적인 처리를 진행하는 HTTP에 종속되어 로직을 수행하도록 기능을 작동시킨 것이었습니다. 이렇게 한 이유는 기존의 request-response에 얽매여서 비동기로의 확장을 똑바로 ..
원인 서비스 계층의 테스트를 작성하면서 assertJ로 테스트를 작성했다. Service계층은 DAO에 종속되어 메소드를 사용하기 때문에 DAO를 통해서 새로 만들어진 객체를 삭제해주어야 했고 DAO를 통해서 작업을 수행한다. 따라서 Service의 단위 테스트는 DAO에 종속되어 있었고 DAO 빈을 가져와서 일일히 값을 삭제하면서 테스트를 진행했다. 이런 불편한 점을 제거하고 단위 테스트가 DAO에 종속되지 않도록 만들기 위해서 Mockito 프레임워크를 적용해서 DAO에 대한 Mock 객체를 만들어 사용했다. @SpringBootTest public class AuthServiceTest { private UserDTO user1; private UserDTO user2; private UserDTO..
문제 git 사용 도중 브랜치가 Detached Head되고 원격 저장소에 커밋이 올라가지 않는 현상이 발생하였다. 원인 Detached HEAD는 Git에서 특정한 커밋에 직접적으로 체크아웃을 했을 때 발생하는 상태를 말합니다. 일반적으로 Git에서는 브랜치를 통해 작업을 진행하며, 이 브랜치는 해당 커밋을 가리키는 포인터 역할을 합니다. 하지만 브랜치가 아닌 특정 커밋의 해시값으로 체크아웃을 하게 되면, HEAD가 더 이상 브랜치를 가리키지 않고 특정 커밋을 직접 가리키게 됩니다. 이렇게 되면 'Detached HEAD' 상태가 됩니다. Detached HEAD 상태에서는 새로운 커밋을 만들어도 브랜치가 이를 가리키지 않기 때문에, 해당 커밋을 잃어버릴 수 있습니다. 따라서 임시적으로 어떤 커밋을 확..
원인 및 문제 도커 컨테이너에서 Spring Boot를 사용하던 도중 로그가 너무 많이 나와 로그의 확인이 어려워짐 해결 도커 컨테이너의 로그 파일을 확인하고 지우면 된다. 도커 컨테이너의 로그 파일은 아래의 명령어를 통해 찾을 수 있다. $ docker inspect --format='{{.LogPath}}' container-name 도커의 inspect를 통해 컨테이너 정보를 가져오고 LogPath의 정보만 가져온다. 아래의 쉘 명령어를 통해 지울 수 있다. $ sudo sh -c 'echo "" > $(docker inspect --format="{{.LogPath}}" container-name)' 컨테이너의 로그 파일을 지울 수 없는 분들은 아래와 같은 명령어를 사용할 수 있다, $ docke..
AWS EC2 접속 aws에서 EC2에 ssh 접속을 하기 위해서는 공개키 암호화 방식을 사용한다. EC2 인스턴스를 생성할때 RSA를 이용하여 키페어를 생성한다. 해당 키는 .pem으로 받을 수 있다. EC2 ubuntu EC2에서 root가 아닌 각 OS마다 아마존에서 부여된 유저를 사용해주어야 합니다. ubuntu의 경우 ubuntu 유저로 접속하면 되겠습니다.! 이때 MAC OS에서 키에 대한 읽기 권한을 주어야 해당 파일을 읽을 수 있다. 저는 여기서 많이 헤맸습니다. chmod 400 {키페어 파일.pem} 키페어를 이용한 ssh 접속 ssh -i {키페어 파일} ubuntu@EC2ip 키페어를 이용한 scp 전송 ssh -i {키 페어 파일} {로컬 파일 경로} ubuntu@EC2ip:{원격..