본문 바로가기

분류 전체보기510

thymeleaf 소개, 시작해보기 thymeleaf 는 SSR(서버 사이드 렌더링) 서버 사이드 템플릿 엔진이라고 불린다. 서버사이드 렌더링 종류로는 JSP, FreeMaker, Mustache 등이 있는데, 처음 시작하는 입장으로써, 스프링과 가장 연동이 잘 되어있는(기능이 많은 ) thymeleaf 로 시작하게 되었다. 타임리프의 가장 큰 장점은 natural templates 라는 것이다. JSP 는 확장자가 .JSP 로 되어있는데, 웹 브라우저에서 파일을 띄우면 JSP 문법이 화면에 나타난다. 이와 다르게 타임리프는 네츄럴템플릿으로, 확장자가 .html 이며 렌더링을 하지 않더라도 정상적인 화면을 볼 수 있다. 타임리프를 사용하려면 아래 코드를 꼭 추가해주어야 한다. xmlns:th="http://www.thymeleaf.org".. 2022. 9. 13.
JUnit 테스트의 생명주기를 알아보자 JUnit의 생명주기를 확인해본다. @Test : 테스트 코드를 포함한 메서드를 정의한다. @BeforeAll : 테스트를 시작하기 전에 호출되는 메서드를 정의한다. @BeforeEach : 각 테스트 메서드가 실행되기 전에 동작하는 메서드를 정의한다. @AfterAll : 테스트를 종료하면서 호출되는 메서드를 정의한다. @AfterEach : 각 테스트 메서드가 종료되면서 호출되는 메서드를 정의한다. 아래 전체 코드를 통해 확인해보자. public class TestLifeCycle { @BeforeAll static void beforeAll() { System.out.println("## BeforeAll Annotation 호출 ##"); System.out.println(); } @AfterAl.. 2022. 9. 11.
application.yml 에서 JPA 설정하기 스프링부트 및 JPA 를 연습할 때, 프로젝트를 생성하면서 항상 구글에 찾아서 작성하지 않으려고, 따로 글을 작성했다. yml 에 적용할 때는 띄어쓰기가 중요하고 , properties 랑 적용코드가 조금 다르다. application.yml 설정 // mysql 연결 및 jpa 설정 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver // ? 앞에 shop 은 DB 이름을 작성 url: jdbc:mysql://localhost:3306/shop?serverTimezone=Asia/Seoul username: root password: 1234 jpa: properties: hibernate: show_sql: true // DB 에 날리는 .. 2022. 9. 11.
Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException 에러원인 Swagger 적용중에 해당 에러가 발생했다. Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException 에러내용 Spring boot 2.6버전 이후에 spring.mvc.pathmatch.matching-strategy 값이 ant_apth_matcher에서 path_pattern_parser로 변경되면서 몇몇 라이브러리에서 오류가 발생하고 있다고 한다. 에러조치 application.yml 파일에 해당 내용 추가 spring: mvc: pathmatch: matching-strategy: ant_path_matcher 2022. 9. 11.
백준 JAVA 1012 유기농 배추 https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 한 달만에 다시 dfs 를 풀어봤는데 기억이 잘 안나서 접근 방법을 보고 같은 코드가 아닌 다른 코드로 생각해서 풀었다. 시간이 40ms 정도 줄었는데, 아예 처음 접했을 때보다는 조금 구현이 수월해진 것 같다. 원래 visited 배열을 사용해서 풀었는데, 이번엔 없이 풀을 수 있을 것 같아 만들지 않고 풀었다. 단순히 0 , 1 만을 비교하는 것으로 구현했다. static void dfs(int x, in.. 2022. 9. 10.
백준 JAVA 1629 곱셈 https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 거의 한시간 반동안 잡고있었는데, 못풀어서 다른 블로그의 도움을 받았다. 모듈러 연산과 재귀를 이용해야 하는문제였고, 코드만 보니 이해가 안가서 몇개의 예제를 만들어서 하나하나 분석하니 이해가 됐다. 3~4일 정도 지나고 다시 트라이 해봐야겠다. 가장 중요한 로직이다. cal 메서드를 만들었는데, 결론은 모듈러 연산을 이용한 코드이다. b 만큼 제곱해야하므로, 2로 b == 0 or b== 1 때까지 나누어야 한다. 또한, b가 짝수일때, 홀수일때를 나누어야 한.. 2022. 9. 9.
백준 JAVA 3986 좋은 단어 스택을 활용해서 풀어야하는 문제이다. for (int j = 0; j < str.length(); j++) { if (st.isEmpty() || (st.peek() != str.charAt(j))) { st.push(str.charAt(j)); } else { st.pop(); } } 알파벳을 넣을때의 조건이다. 처음에는 스택이 아예 비어있으니, peek을 사용할 수 없다. 따라서 isEmpty() 를 추가해서 비교 후 추가할 수 있게 작성했다. push 할 조건이 아니라면 ( peek했는데 삽입할 알파벳과 같다면 ) pop 으로 꺼내준다 if (st.isEmpty()) { count++; } 비어있으면 조건에 만족하기 때문에, count 를 추가시켜준다 package BAEKJOON.Silver.Ⅳ;.. 2022. 9. 9.
백준 JAVA 1213 팰린드롬 만들기 https://www.acmicpc.net/problem/1213 2022. 9. 8.
백준 JAVA 3085 사탕 게임 https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net 2주? 전에 한번 봤는데 다시 풀어보려고 했는데 실패했다. 문제는 이해가 되는데 구현이 안되니 답답하다. 2~3일 뒤에 다시한번 풀 예정. // 가로 , 세로 비교하면서 먹을 수 있는 사탕의 최대 개수 찾기 static void check() { // 가로체크 for (int i = 0; i < n; i++) { int count = 1; for (int j = 0; j < n-1; j++) { if ( arr[i][j] == arr[i][j+1]) { count++; } else { count = 1; } max.. 2022. 9. 6.