전체 글 104

[Spring Boot] Spring Boot에서의 Logging Pattern 설정

Spring Boot에서의 Logging Pattern 설정을 위해 Log와 관련된 간단한 지식을 정리한 글입니다.Logging Pattern 설정과 관련된 내용입니다.1. Logback이란?Java에서 Log 기록을 위한 Open-Source framework.  SLF4J의 구현체입니다.Spring Boot에서는 default로 설정되어 있어서 사용 시 별도로 라이브러리를 추가하지 않아도 됩니다.spring-boot-start-web 안에 spring-boot-starter-logging에 구현체가 있습니다.Logback을 이용하여 logging 하기 위해서 필요한 주요 설정 요소로는 Logger,  Appender, Encoder의 3가지가 있습니다.  2. Spring Boot  logback 설..

[Spring Test] Test Double에 대한 소개

0. 들어가면서Kent Beck의 XP(Extreme Programming) Explained 저서에는 이런 문구가 있습니다.개발의 기본 흐름은 일단 실패하는 테스트를 작성하고, 그 다음으로 그 테스트를 통과하도록 만드는 것이다.…해결하고 싶은 스토리들을 목록으로 만들고, 그 스토리들을 표현하는 테스트들을 작성하고, 그런 다음 그 테스트들 통과하도록 만든다. 여러분이 작성해야 할 필요가 있다고 생각하는 테스트들을 목록으로 만들고, 테스트를 하나 작성하고, 그 테스트를 통과하도록 만들고, 다른 테스트를 작성하고, 두 테스트 모두 통과하도록 만들고 하면서 목록이 비워질 때까지 일한다.이번에 VmWare Tanzu Labs분들에게 TDD로 진행하는 법을 배우면서, 테스트 주도 개발(TDD, Test Drive..

[JAVA] 이펙티브 자바 1장. 들어가기

1장. 들어가기 1. 이 책은 자바 언어와 그 기반 라이브러리, 즉 java.lang, java.util, java.io, java.util.concurrent, java.util.function 같은 하위 패키지를 효과적으로 사용하게끔 구성했음(때때로 다른 패키지도 다룸) 2. 많은 디자인 패턴과 관용구를 설명해줌 3. 이 책의 규칙 대부분은 아주 핵심적인 기본 원칙 몇 개에서 파생됨 바로 명료성과 단순성임. - 컴포넌트는 사용자를 놀라게하는 동작을 해서는 절대는 안됨. - 코드는 복사되는게 아니라 재사용되어야함. - 컴포넌트 사이의 의존성은 최소로 유지해야함. 4. 기술 용어는 대부분 자바 8용 언어 명세를 따르며, 주요사항은 아래와 같음 - 자바가 지원하는 타입은 인터페이스, 클래스, 배열, 기본타..

[JAVA] 백준 1181번 : 단어 정렬 (정렬)

www.acmicpc.net/problem/1181 문제 해결 방안 1. HashSet을 이용하여 입력을 받아 중복된 경우를 제거해준다. 2. ArrayList에 담아서 해당 ArrayList를 Collections.sort()를 이용하여 정렬해준다. 이 때, new Comparator를 사용하여 길이가 짧은 것과 길이가 같으면 사전순으로 정렬하는 코드를 구현해준다. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import jav..

[JAVA] 백준 7568번 : 덩치 (브루트포스)

www.acmicpc.net/problem/7568 문제 해결 방안 전체 경우의 수를 비교해보면 되는 간단한 문제이다. 완전탐색을 이용하여 peoples i번째의 키와 몸무게를 다른 j번째 키와 몸무게를 비교하면 된다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; // 덩치 public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.rea..

[JAVA] 백준 2667번 : 단지번호붙이기(DFS)

www.acmicpc.net/problem/2667 문제 해결 방안 total이 단지 수가 되고 지도를 탐색하면서 1을 발견하면 total++을 해준다. 그리고 DFS탐색으로 통해 해당 단지에 속한 집의 갯수를 cnt에 저장하여 dfs()를 빠져나오면 ArrayList에 해당 cnt를 넣어준다. 그리고 ArrayList에 저장된 각 단지의 집의 갯수들을 정렬하여 출력해주면 된다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.List; import ..

[JAVA] 백준 1012번 : 유기농 배추(DFS)

www.acmicpc.net/problem/1012 문제 해결 방안 배추가 있는 공간들을 DFS 탐색을 통해 분리된 갯수를 찾는 문제이다. maps에 배추가 있는 값들을 추가해주고 maps를 탐색하면서 1(배추가 있는 곳)일 때 result(지렁이)++해주고 DFS를 해서 visited를 true로 만들어줘서 다음에 1일때 이미 방문했으면 넘어갈 수 있게 해주었다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; //유기농 배추 public class Main { static int m; // 가로길이(1~50) static int n; // 세로길이(1~50) static int ..

[JAVA] 백준 2178번 : 미로 탐색(BFS+DP)

www.acmicpc.net/problem/2178 문제 미로의 (1,1) 에서 (n,m)위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 문제이다. BFS + DP를 이용하여 해결하였다. 해결 방안 1. 미로의 이동 가능 여부 관련 값은 maps[][]에 저장하였다.(1이면 이동 가능) 미로의 해당 칸으로 이동할 때 지나야하는 최소의 칸 수는 cnts[][]에 저장하였다.(0이면 한번도 이동 안한 곳) 2. 주어진 maps의 (1,1) 위치에서 (m,n)으로 BFS 방법으로 4방향을 탐색하고 DP를 이용하여 cnts에 지나야하는 최소 칸 수를 메모제이션하였다. 3. cnts[n][m]을 출력하면 도착 위치에 가기위해 지나야하는 최소의 칸을 출력한다. 코드 import java.io.BufferedR..

[JAVA] 백준 2606번 : 바이러스 (DFS)

www.acmicpc.net/problem/2606 문제 입력의 첫째 줄이 그래프의 노드 갯수가 되고 둘째 줄이 간선의 갯수가 될 것이다. 또한 무방향 그래프가 될것이다. 해결 방안 무방향 그래프를 ArrayList를 이용하여 구현하였다. 1번부터 시작하는 DFS 탐색을 하였으며 DFS의 depth를 바이러스 감염 시킨 컴퓨터 갯수로 하였다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; // 바이러스 public class Main { static int n; // v static int e; // edge static Array..

[JAVA] 백준 10974번 : 모든 순열 (DFS)

www.acmicpc.net/problem/10974 문제 해결 방안 모든 순열을 출력하는 기본적인 DFS 문제이다. DFS + 백트래킹을 이용하여 구현하였다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; // 모든 순열 public class Main { static int n; static boolean[] visited; public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader..