분류 전체보기 342

BufferedReader close() 사용 이유에 대해

알고리즘 문제를 풀면서 문득 생긴 궁금증이 있었다. 'BufferedReader를 사용해서 입력을 받고 실행하면 굳이 close()를 사용하지 않아도 정상적으로 컴파일 되는데 close()를 사용하지 않아도 되는가?' 찾아 본 결과, BufferedReader의 경우 close() 메소드를 명시하지 않아도 가비지컬렉터에 의해 BufferedReader가 자동으로 정리된다고 한다. 하지만 프로그램이 오랫동안 실행되거나 대용량의 데이터를 처리하는 경우에는 버퍼링된 데이터가 모두 출력되지 않거나 리소스가 해제되지 않을 수 있기 때문에 close()를 호출하는 것이 좋다. 이렇게 함으로써 버퍼를 비우고 안전하게 해제하여 메모리 누수나 시스템 리소스 부족 문제를 방지할 수 있다. 물론 가비지컬렉터가 적절하게 처리..

개발 일지/Java 2023.05.31

data.sql 초기화 설정 후 Error creating bean with name 'dataSourceScriptDatabaseInitializer' 에러

진행 중인 프로젝트에서 데이터 값을 초기 설정하고 싶어서 data.sql을 만들고 설정을 해줬더니 이런 에러가 발생했다. data.sql Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource Table "SKILL_STACK" not found; SQL statement: 해결 과정 시도 1. 테이블이 없다?.. yml 파일에 ddl-auto를 create로 설정해줬는데 그럼 테이블이 생겨야 하는 거 아닌가.. 라는 생각에 mysql을 확인해보니 테이블은 있었다. 직접 쿼리를 작성해서 테이블을 만들어주고 ddl-auto를 update로 변경 후 재실행했다. -> 실패 시도 2. 찾아..

[백준] 1049번

1. 세트와 낱개를 구매하는 경우 2. 세트로만 구매하는 경우 3. 낱개로만 구매하는 경우 이 3가지 경우의 수 중에서 가장 작은 수를 구하는 게 포인트이다. public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); // 끊어진 기타줄의 개수 int M = Integer.parseInt(st.nextToken());..

[백준] 14469번

소가 들어오는 시간과 통과하는 데 걸리는 시간을 배열로 만들어서 오름차순으로 정렬해준다. 그리고 배열을 순회하면서 바로 앞의 소가 검문받는 중이면 기다리는 시간만큼 추가해줬다. public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; int N = Integer.parseInt(br.readLine()); int[][] line = new int[N][2]; for (int i = 0; i < N; i++) { st = new StringTokenizer..

[백준] 11724번

방문하지 않은 곳(visited[] 가 false)들을 dfs로 순회하고 dfs 메서드가 돌아갈 때마다 count를 1씩 증가시켜줬다. public class Main { static int[][] map; static boolean[] visited; static int N; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); // 정점의 개수 int..

[Gradle] build와 bootJar의 차이

Spring rest docs를 포함하여 테스트를 진행하고 html 파일을 만들기 위한 작업을 진행하던 중 build랑 bootJar 둘 다 html 파일을 만들어주는데 왜 둘로 나뉘어 있는걸까? 둘의 차이점은 무엇일까? 하는 궁금증이 생겨서 찾아보았다. 먼저 Gradle build와 Gradle bootJar는 모두 Gradle 빌드 도구를 사용하여 소프트웨어를 빌드하는 프로세스를 의미한다. 둘의 큰 차이를 보면 build는 모든 테스트 실행, 프로덕션 아티팩트 생성 등 모든 것을 구축하기 위한 것이고 bootJar는 Spring Boot 애플리케이션을 실행 가능한 JAR 파일로 패키징하는 특정한 빌드 프로세스만 수행하는 것이다. 즉, Gradle build는 프로젝트의 빌드와 관련된 모든 작업을 수행..

[백준] 2667번

DFS를 통해 문제를 해결했다. 문제에 집의 수를 오름차순으로 정렬하라는 문구를 보지 않아서 인텔리제이로 코드를 실행하면 성공했지만 제출하니까 틀렸다고 나왔었다. 문제를 꼼꼼히 확인하자..! public class Main { static int N, count; static int[][] map; static boolean[][] visited; static List list = new ArrayList(); static int[] dx = new int[]{0, 1, 0, -1}; static int[] dy = new int[]{1, 0, -1, 0}; public static void main(String[] args) throws IOException { BufferedReader br = ne..

[AWS] Amazon Relational Database Service Provisioned Storage 비용

AWS로 서버를 설정하고 배포한 후 청구서에 비용이 조금씩 올라가기 시작했다. $0.131 per GB-month of provisioned GP3 storage running MySQL 이 녀석이 문제였다. 지금은 $0.00 per GB-month of provisioned GP2 storage under monthly free tier 가 적용되어 있지만 처음에는 적용되지 않았었다. 큰 금액은 아니었지만 분명 모든 설정을 freetier로 적용한 것 같은데 왜 요금이 계속 청구되는 거지? 하는 궁금증에 수많은 블로그를 찾아봤었다. 프리티어에 관한 많은 내용들이 있었지만 요금이 청구되는 해당 녀석에 대해서는 프리티어 설정에 대한 특별한 내용이 없었고 AWS에 직접 문의해 봤다. 결론부터 말하면, RDS..

개발 일지/etc 2023.05.17

[백준] 1697번

ArrayIndexOutOfBoundsException 에러를 주의해서 코드를 작성해야 한다. public class Main { static int N, K; static int[] point = new int[100001]; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); // 수빈이가 있는 위치 K = Integer.parseInt(st.nex..