전체 글
-
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Solution_D3_3431_준환이의운동관리 { static int T, Answer; public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //br = new BufferedReader(new StringReader(src)); T..
D3 3431. 준환이의 운동관리import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Solution_D3_3431_준환이의운동관리 { static int T, Answer; public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //br = new BufferedReader(new StringReader(src)); T..
2019.07.23 -
import java.util.Arrays; import java.util.Scanner; public class Main_1810_백설공주 { // TODO: http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1083&sca=50&sfl=wr_hit&stx=1810&sop=and static int[] source = new int[9]; static int[] target = new int[7]; public static void main(String[] args) { Scanner scanner = new Scanner(str); for (int i = 0; i < source.length; i++) { source[i] = scanner.ne..
[솔루션]정올 1810 백설공주import java.util.Arrays; import java.util.Scanner; public class Main_1810_백설공주 { // TODO: http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1083&sca=50&sfl=wr_hit&stx=1810&sop=and static int[] source = new int[9]; static int[] target = new int[7]; public static void main(String[] args) { Scanner scanner = new Scanner(str); for (int i = 0; i < source.length; i++) { source[i] = scanner.ne..
2019.07.23 -
클래스간의 관계는 통상 4단계로 구별할 수 있다. 1. dependency: - 의존 관계( A ------> B: A는 B에 의존한다.) - 의존 관계로 모든 객체들은 대부분 의존 관계를 갖는다. - A 클래스에서 B 클래스를 사용하고 있다면 이것은 dependency 관계이다. - 왜냐하면 B를 변경하게 되면 A가 영향을 받기 때문이다. 2. association: - 의존 관계 중 member 변수 관계(A-B: A는 B를 포함한다.) - A 클래스가 B 클래스를 맴버변수로 포함해서 의존하는 관계 - 학생이 차를 소유한다: 학생 - 차 - 학생이 라디오를 소유한다. - 라디오 굳이 association을 세분화 한다면.. 3. aggregation: - association 중 whole - par..
클래스간의 관계클래스간의 관계는 통상 4단계로 구별할 수 있다. 1. dependency: - 의존 관계( A ------> B: A는 B에 의존한다.) - 의존 관계로 모든 객체들은 대부분 의존 관계를 갖는다. - A 클래스에서 B 클래스를 사용하고 있다면 이것은 dependency 관계이다. - 왜냐하면 B를 변경하게 되면 A가 영향을 받기 때문이다. 2. association: - 의존 관계 중 member 변수 관계(A-B: A는 B를 포함한다.) - A 클래스가 B 클래스를 맴버변수로 포함해서 의존하는 관계 - 학생이 차를 소유한다: 학생 - 차 - 학생이 라디오를 소유한다. - 라디오 굳이 association을 세분화 한다면.. 3. aggregation: - association 중 whole - par..
2019.07.23 -
junit을 이용해서 multi thread를 테스트하면 아무래도 main thread가 빨리 종료해버리기 때문에 원하는 테스트 결과를 얻기 어렵다. 다음은 @Async를 이용해서 비동기 호출을 구현하고있는 빈의 예이다. @Component @Slf4j public class HeavyWorkBean { @Async public void heavyWork(int i) throws InterruptedException { Thread.sleep(1000); log.trace("아주 무거운 작업을 {} 번째 진행중.", i); } } 위 코드를 아무 생각 없이 테스트 하면 아래와 같다. public class AsyncTest { @Autowired HeavyWorkBean hBean; @Test publi..
junit을 이용한 multi thread 단위테스트junit을 이용해서 multi thread를 테스트하면 아무래도 main thread가 빨리 종료해버리기 때문에 원하는 테스트 결과를 얻기 어렵다. 다음은 @Async를 이용해서 비동기 호출을 구현하고있는 빈의 예이다. @Component @Slf4j public class HeavyWorkBean { @Async public void heavyWork(int i) throws InterruptedException { Thread.sleep(1000); log.trace("아주 무거운 작업을 {} 번째 진행중.", i); } } 위 코드를 아무 생각 없이 테스트 하면 아래와 같다. public class AsyncTest { @Autowired HeavyWorkBean hBean; @Test publi..
2019.07.22 -
JGit을 이용해서 remote repository의 특정 경로만 checkout을 하기 위한 코드 private static String userId = "사용자 ID"; private static String userPass = "사용자 비번"; private static String hash = "origin/master"; private static String url = "https://lab.ssafy.com/user_id/repository_name.git"; private static void checkOut() throws Exception { Git gitRepo = Git.cloneRepository() .setURI(url) // remote 주소 .setDirectory(new F..
JGit을 이용해서 remote repository의 특정 경로만 checkoutJGit을 이용해서 remote repository의 특정 경로만 checkout을 하기 위한 코드 private static String userId = "사용자 ID"; private static String userPass = "사용자 비번"; private static String hash = "origin/master"; private static String url = "https://lab.ssafy.com/user_id/repository_name.git"; private static void checkOut() throws Exception { Git gitRepo = Git.cloneRepository() .setURI(url) // remote 주소 .setDirectory(new F..
2019.07.21 -
gmail을 이용해 smtp를 이용하려는 경우 아래와 같이 코드를 작성할 수 있다. @Bean public JavaMailSenderImpl mailSender() { JavaMailSenderImpl sender = new JavaMailSenderImpl(); sender.setHost("smtp.gmail.com"); sender.setPort(587); sender.setUsername("사용자 이메일"); // gmail 로그인 아이디 sender.setPassword("사용자 암호"); // gmail 로그인 암호 sender.setDefaultEncoding("utf-8"); Properties javaMailProperties = new Properties(); javaMailPropert..
2단계 인증 상태에서 smtp를 이용한 gmail 발송gmail을 이용해 smtp를 이용하려는 경우 아래와 같이 코드를 작성할 수 있다. @Bean public JavaMailSenderImpl mailSender() { JavaMailSenderImpl sender = new JavaMailSenderImpl(); sender.setHost("smtp.gmail.com"); sender.setPort(587); sender.setUsername("사용자 이메일"); // gmail 로그인 아이디 sender.setPassword("사용자 암호"); // gmail 로그인 암호 sender.setDefaultEncoding("utf-8"); Properties javaMailProperties = new Properties(); javaMailPropert..
2019.07.16 -
오류 메시지: Archive for required library: '사용자별_메이븐_경로/org/springframework/spring-context/5.1.7.RELEASE/spring-context-5.1.7.RELEASE.jar' in project 'temp' cannot be read or is not a valid ZIP file 원인: 스프링은 Maven을 통해서 필요한 라이브러리의 의존성을 파악한다. 그런데 네트워크 상황이 좋지 않은 상태에서 라이브러리를 다운받다 보면 라이라이브러리가 깨지는 현상이 종종 발생한다. 특히 무선랜 환경에서 그렇다. 대책: 이 경우는 이미 잘못 다운로드된 파일을 삭제하고 다시 받는 수 밖에 없다. 사용자별_메이븐_경로(기본은 c:\users\사용자명\.m2\..
[오류처리]cannot be read or is not a valid ZIP file오류 메시지: Archive for required library: '사용자별_메이븐_경로/org/springframework/spring-context/5.1.7.RELEASE/spring-context-5.1.7.RELEASE.jar' in project 'temp' cannot be read or is not a valid ZIP file 원인: 스프링은 Maven을 통해서 필요한 라이브러리의 의존성을 파악한다. 그런데 네트워크 상황이 좋지 않은 상태에서 라이브러리를 다운받다 보면 라이라이브러리가 깨지는 현상이 종종 발생한다. 특히 무선랜 환경에서 그렇다. 대책: 이 경우는 이미 잘못 다운로드된 파일을 삭제하고 다시 받는 수 밖에 없다. 사용자별_메이븐_경로(기본은 c:\users\사용자명\.m2\..
2019.05.11 -
path variable이 email 주소로 끝날 경우 스프링은 '.'뒤를 확장자로 인식해서 제외시킨다. 즉 user/abc@def.com 로 데이터가 오면 user/abc@def만 남는다. 이를 방지하기 위해서 path variable에 아래와 같이 설정한다. @GetMapping(value="/session/userinfo/{userId:.+}" ) public Map getUser(@PathVariable String userId) { logger.trace("getUser: {}", userId); } 하지만 일부 이메일 주소(.com 등)은 여전히 아래의 오류메시지와 함께 406 오류가 발생한다. org.springframework.web.servlet.mvc.support.DefaultHand..
path variable과 email 전송path variable이 email 주소로 끝날 경우 스프링은 '.'뒤를 확장자로 인식해서 제외시킨다. 즉 user/abc@def.com 로 데이터가 오면 user/abc@def만 남는다. 이를 방지하기 위해서 path variable에 아래와 같이 설정한다. @GetMapping(value="/session/userinfo/{userId:.+}" ) public Map getUser(@PathVariable String userId) { logger.trace("getUser: {}", userId); } 하지만 일부 이메일 주소(.com 등)은 여전히 아래의 오류메시지와 함께 406 오류가 발생한다. org.springframework.web.servlet.mvc.support.DefaultHand..
2019.04.18