본문 바로가기

개발/JAVA & Spring

[모던 인 자바]JAVA 13 설치하기(with intelliJ 셋팅) 환경 : Mac OSX 모던 인 자바에는 Java9 에 대한 예제코드도 있습니다. 주로 Java8 만 사용해서 Java9 이상의 라이브러리는 설치가 되어 있지 않아서 학습이 용이하지 않아서 자바 최신 버전을 설치하고 셋팅하는 과정을 정리해 봅니다.(안 적어놓으면 이제 잘 까먹게 되어서) Oracle JAVA는 이후부터는 상업용이기에 OpenJDK를 설치하기로 합니다. (혹시나 발생할 수 있는 불상사를 방지하기 위해서, 기능상 별 차이는 없다고 합니다. Oracle JDK 과금정책에 대해서는 다음 링크에 자세히 적혀있습니다. https://okky.kr/article/490213) JAVA9 설치하려다가 최신 버전이 나온 것 같아서 이참에 최신버전으로 셋팅해보기로 합니다. https://jdk.java.n..
정규 표현식(전방탐색, with String.replaceAll) 마스킹 문제를 정규식으로 해결하려고 하다가 알게 된 표현식입니다. 다음과 같이 폰번호 뒤 4자리를 제외하고 마스킹을 하려고 합니다. 01012341234 -> *******1234 1 2 3 public String mask(String phoneNumber) { return phoneNumber.replaceAll("(?=.{5}).", "*"); } Colored by Color Scripter cs 사용한 정규표현식은 전방탐색 표현식이며 처음 사용해보는 표현식이라 관련된 표현식을 따로 정리합니다. * (?=) : 전방탐색, 찾고자 하는 표현식 뒤에 전방탐색 표현식을 넣으며 (?= 와 ) 사이에 표현식을 넣습니다. 전방탐색 표현식을 통해 문자가 존재하고, 그 앞에 찾고자 하는 문자가 존재할 때 일치합..
The server time zone value 'KST' is unrecognized or represents more than one time zone 오류 해결 DB 의존성을 추가하였는데도 'KST' 라는 서버 타임존을 알수 없다는 오류가 발생하면서 DB에 연결할수 없었습니다. 심각: StandardWrapper.Throwable org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [spring/applicationContext-database.xml]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to in..
Driver net.sf.log4jdbc.sql.jdbcapi.DriverSpy claims to not accept jdbcUrl 오류 해결하기 Spring mvc 에서 mysql DB 프로퍼티 설정하고 연결하면 아래와 같은 오류 메시지가 나오면서 DB 연결이 되지 않습니다. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [spring/applicationContext-database.xml]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer...
이미지 파일의 판단 :: checkImageType(File file) 파일이 이미지 타입인지 확인하기 위해 Files.probeContentType() 사용하여 메소드를 만들었으나 이미지 파일인데도 false 를 반환하였다. private boolean checkImageType(File file){ try{ String contentType = Files.probeContentType(file.toPath()); return contentType.startsWith("image"); } catch(IOException e){ e.printStachTrace(); } return false; } 디버그를 해보니 Files.probeContentType() 가 null 을 반환하여 false 가 리턴됨. 해결책을 찾기 위해 검색을 해봤으니 버그라고 한다. https://st..
Log4j 로그 패턴 패턴 %p : debug, info, warn, error, fatal 등의 priority 가 출력된다. %m : 로그내용이 출력됩니다. %d : 로깅 이벤트가 발생한 시간을 기록합니다. 포맷은 %d{HH:mm:ss, SSS}, %d{yyyy MMM dd HH:mm:ss,SSS} 같은 형태로 사용하며 SimpleDateForum에 따른 포맷팅을 하면 된다. %d{ABSOLUTE} %d{DATE} %d{ISO8601} %t : 로그이벤트가 발생된 쓰레드의 이름을 출력합니다. %% : % 표시를 출력하기 위해 사용한다. %n : 플랫폼 종속적인 개행문자가 출력된다. rn 또는 n (?) %c : 카테고리를 표시합니다. 예) 카테고리가 a.b.c 처럼 되어있다면 %c{2} 는 b.c 가 출력됩니다. %C :..
가장 얇은 지갑 만들기 1만원, 7만원, 11만원, 17만원권 지폐가 있다. 원하는 액수를 입력하면, 가장 얇은 지갑을 만들 수 있도록, 지폐의 갯수를 최소화 한 구성을 보여주는 프로그램을 작성하시오. 입력값 150000 인 경우 가장 좋은 구성은 7만원 2장, 1만원 1장으로 총 3장이다. 입력 : 프로그램의 첫번째 인자로 숫자를 받는다. 예) 입력값에 오류는 없다고 가정한다. 즉, 135000원 같이 구성 불가능한 입력값은 없다. 별도로 오류 처리를 할 필요 없음 출력 : 예) 1만원 x장, 7만원 x장, 11만원 x장, 17만원 x장 /** * 화폐 찾기 문제 * @author Jong-gook Bae, 까망군 */ import java.util.Scanner; public class Code { public static..
Palindrome Palindrome(이하 회문)은 앞/뒤 어느쪽으로 읽어도 같은 말이 되는 어구를 의미한다. 예) 191, 4325234, 123321, eye 어떤 수를 받아서 그 수를 뒤집은(reverse) 다음 원래의 수에 더하여 나온 값이 회문이 될 때까지, 뒤집은 수 더하기를 반복하여 회문을 찾는 프로그램을 작성하라. 입력값이 195인 경우 1) 195 + 591 = 786 2) 786 + 687 = 1473 3) 1473 + 3741 = 5214 4) 5214 + 4125 = 9339 출력 : 195 4 9339 회문을 찾을 수 없는 수도 있다. 예) 아직 증명되지는 않았지만 196은 회문을 찾을 수 없는 수 이다. 뒤집어 더하는 것을 100번 해도 회문을 찾을 수 없는 경우는 회문이 없다고 가정한다. 입력 ..