목록Java (21)
개발
pom.xml ... javax.mail mail 1.4.7 ... org.apache.commons commons-email 1.5 ... commons-email은 javax.mail 1.5.6에 의존한다..(commons-email 열어보면있음) com.sun.mail javax.mail 1.5.6 현재 라이브러리의 상태 javax.mail 1.4.7과 sun.mail1.5.6은 MimeBodyPart에서 소스가 다른데, 실제 ServiceImpl에서 클래스파일 참조시에는 다음처럼 버전은 명시하지않음. import javax.mail.internet.MimeBodyPart; 문제 프로젝트로 설치할 경우 1.4.7을 참조하는 프로젝트도있고 1.5.6을 참조하는 프로젝트도있다. 참고 https://st..
JPA에서 데이터베이스의 다른 사용자의 db를 조회 이슈 다음처럼 user를 teaming_core로 설정 vendorAdapter.database=ORACLE database.driverClassName=oracle.jdbc.driver.OracleDriver database.url=jdbc:oracle:thin:@localhost:1521:orcl database.username=test1 database.password=test1 로그 확인시 테이블 유저를 test2로 접근하고있음. executing prepstmnt 1259003280 SELECT t0.USERFLAG_ID, t0.USERFLAG_NAME FROM TEST2.TABLE_NAME DB툴에서 test1로 접근후 다음처럼 test2 스..
DKIM DKIM (Domain Keys Identified Mail)스팸메일을 차단하기 위해 개발된 기술 중 하나 (발신자가 위조되지 않았는지 수신자 측에서 검증할수 있음)Dkim을 메일 헤더에 추가하여 사인이 맞을경우 메일의 컨텐츠가 수정/변경/손상이 없을을 신뢰할수 있게 해주는 기술 송신자의 사인과 수신자의 검증단계로 구성된 피싱 검출, 스팸 방지의 목적의 RFC 4871 기술로 Sendmail, Cisco Yahoo에서 만듬 메일 발송자의 도메인과 메일 내용의 무결성을 검증할 수 있는 기술 적용방법 os에서 private, public key 생성 openssl genrsa -out dkim-private.pem 1024 openssl rsa -in dkim-private.pem -out dkim..
요소 반복 public class Test { public static void main(String[] args) throws Exception { List list = Arrays.asList("A","B","C","D"); Stream stream = list.stream(); //람다식에서 파라미터가 하나일때 ()생략 가능. stream.forEach(element -> System.out.println(element)); } } String -> Integer배열 반환 후(map이용) 평균값 구하기 public class Test { public static void main(String[] args) throws Exception { List list = Arrays.asList("30","4..
import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; class Computer{ String cpu; String ram; public Computer() {} public Computer(String cpu, String ram){ this.cpu = cpu; this.ram = ram; } public String getCpu() { return cpu; } public String getRam() { return ram; } public void setCpu(String cpu) { this.cpu = cpu; } public void setRam(String ram)..
멀티 타입 파라미터 class Top{} class Pants{} //두개 이상의 타입파라미터 사용 가능 public class Cody { private T top; private M pants; public T getTop() { return top; } public void setTop(T top) { this.top = top; } public M getPants() { return pants; } public void setPants(M pants) { this.pants = pants; } public static void main(String[] args) { Cody cody = new Cody(); cody.setTop(new Top()); cody.setPants(new Pants())..
Date api는 멀티스레드 환경에서 안전하지않다. LocalDateTime을 이용하자. LocalDateTime now = LocalDateTime.now(ZoneId.of("Asia/Seoul"));//한국시간 System.out.println(now);//2021-02-23T11:23:45.889 //시간을 -> yyyyMMddHHmmss로 format할 수 있음. DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); System.out.println(now.format(dtf));//20210223115035 //문자를 -> date로 파싱하기 LocalDateTime parse = LocalDateTime.parse("20..
브론즈1 이길래 쉽게 풀줄알았더니 반례를 못찾아서 한참을 찾다가 결국 답코드 보고 케이스 찾음..ㅠ 1. 대각선으로 이동한다 - 직선 2회이동이 빠른경우 - 대각선이 빠른경우 2. 남은 직선을 이동한다. - 대각선이 빠른경우 (여기서 2 * w < s 조건으로 생각을함..) - 짝수인경우 대각선으로 이동 가능 - 1은 직선으로 간 뒤 나머지를 대각선으로 이동 - 직선이 빠른경우 2 * w < s 의 케이스는 대각선으로 이동하는 경우의 대소비교임.. 직선의 경우 짝수는 대각선 2회로 이동하므로, 2 *w < s 로 할 경우,, 2,3으로 들어간다면 직선이 빠른데 3으로들어가게됨,, import java.io.BufferedReader; import java.io.InputStreamReader; impor..
2178번을 먼저 풀고오면 조금만 활용하면 된다. 처음에 LinkedList를 이용해 풀어보려했으나 실패..ㅠ 각각의 Point객체에 몇번째 지나온 육지인지 count를 해주고, 가장 높은수를 반복하는 L마다 체크한다. package backjun.koi.local.ele; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class A2589{ /* 5 7 WLLWWWL LLLWLLL LWLWLWW LWLWLLL WLLWLWW */ static final BufferedReader br = new BufferedReader(new Input..
경우의 수를 생각 못해서 백트래킹을 이용해 처음에 풀음. 시간초과로 실패 [1,2,3] 이라는 배열이 있을때 [1],[2],[3],[1,2],[1,3],[2,3],[1,2,3] 모든 수를 반복해서 느릴수밖에 없음.. public class Camouflage { public static void main(String[] args) { System.out.println(solution(new String[][]{{"yellow_hat", "headgear"}, {"blue_sunglasses", "eyewear"}, {"green_turban", "headgear"}})); System.out.println(solution(new String[][]{{"crow_mask", "face"}, {"blue_s..