목록java (78)
코딩마을방범대
SMTP / POP3 / IMAP란? SMTP 편지를 쓰고 동네에 있는 우체통에 해당 편지를 넣는다. 우체통: SMTP 서버 웹 상에서 메일을 주고 받기 위해 이용되는 프로토콜(규약) 클라이언트 측에서 메일 서버로 메일을 보낼 때 사용 클라이언트가 이메일을 보내면 바로 상대편의 컴퓨터로 메일을 송신하는 것이 아니라, 중간에 메일 서버를 거치게 됨 POP3 집배원이 해당 우체통에 있는 모든 편지를 가져간다. 집배원: POP3 서버 사용자의 기기로 이메일을 다운로드하여 읽는 프로토콜(다운로드한 내용은 서버에서 삭제되기에 동일한 기기에서만 이메일 확인 가능) IMAP 받는이가 사는 동네 우체국으로 편지가 분배 된다. POP3 서버에 의해 해당 이메일이 전송 된다. 서버에서 이메일을 읽는 프로토콜(여러가지의 디..
참고사이트 Date 비교 Date는 안전하지 않은 Null 처리, 불안전한 스레드 처리, 메서드의 부재 등 다양한 문제가 있음 1. compareTo( ) 0: 값이 동일한 경우 0보다 작은 값: 호출한 Date(date1) 객체가 이전 날짜인 경우 0보다 큰 값: 이후 날짜인 경우 // date1이 date2 보다 작으면 0보다 작은값 date1.compareTo(date2); 2. before( ) true: 호출한 Date(date1) 객체가 인수로 전달된 Date(date1) 객체보다 이전 날짜인 경우 false: 호출한 Date(date1) 객체가 이후 날짜이거나 동일한 경우 date1.before(date2); 3. after( ) true: 호출한 Date(date1) 객체가 인수로 전달된 ..
Entity에서 암복호화 하는 방법 @ColumnTransformer 어노테이션 활용 read를 통해서 불러올 데이터를 복호화 write를 통해서 저장할 데이터를 암호화 @ColumnTransformer( read = "AES_DECRYPT(FROM_BASE64(HP), " + key + "," + iv)" // 칼럼 값을 가져올 때 write = "FUNCTION_ENCRYPT(?)") // 칼럼 값을 쓸 때 private String hp; JAVA 비동기 처리(Thread) 1. Config 파일을 이용해 스레드풀 사용하기 Executor 스레드풀을 구현하기 위한 인터페이스 Runnable만 개발자가 만들고 생성, 종료, 없애기 작업(일련의 작업)들은 Executors가 담당 스레드 (Thread)..
메일의 전송과정 danbi@naver.com -> danbi@gmail.com 으로 메일 발송 시 naver 메일 서버를 거친 후 gmail 서버를 거쳐서 전달됨 메일 프로토콜의 종류 1. SMTP Protocol(Simple Mail Transfer Protocol) 전자 메일 전송을 위한 표준 프로토콜. 클라이언트트가 서버에 이메일을 전달하는데 사용된다. 2. POP3 Protocol(Post Office Protocol) 서버에서 이메일을 수신할 수 있도록 한다. 서버의 이메일은 삭제됨. 3. IMAY Protocol(Internet Message Access Protocol) 서버에서 이메일을 수신할 수 있도록 한다. 서버에 이메일을 보관함. (트래픽 증가, CPU 사용 증가) 세팅법 1. 구글 ..
참고 application.yml에서 가져오기 1. yml에 필요한 정보 기입 aes: key: "secreyKey" 2. build.gradle에 dependency 추가 annotationProcessor "org.springframework.boot:spring-boot-configuration-processor" 3. yml 정보를 가져다 쓸 클래스 생성 getter, setter가 필요하므로 Data 어노테이션으로 대체 @Configuration 적용이 필요함 @ConfigurationProperties의 prefix에 그룹변수명 기입 @Configuration @Data @ConfigurationProperties(prefix = "aes") public class ApplicationSett..

해싱(hashing) 이란 해시 함수에 문자열 입력값을 넣어서 특정한 값으로 추출하는 것 해시 함수란? 임의의 데이터를 고정된 길이의 데이터로 매핑하는 단방향 함수 입력값을 해싱했을 때 출력값은 일정하다는 것을 근거로, 사용자의 비밀번호나 중요 정보의 내용을 해싱하여 복호화 할 수 없음 특징 어떤 입력 값에도 항상 고정된 길이의 해시값을 출력한다. 눈사태 효과 : 입력 값의 아주 일부만 변경되어도 전혀 다른 결과 값을 출력한다. 출력된 결과 값을 토대로 입력값을 유추할 수 없다. 해시 테이블 (Hash Table) 해시 함수로 매핑한 키 값을 인덱스로 한 배열 혹은 객체 Java : Hash Map Javascript : 객체 or Map Python : 사전(dictionary) 충돌 (Collisio..

Cipher 암호화, 복호화 기능을 제공 대칭키 알고리즘 암호문의 성질 혼돈(confusion) 암호문으로부터 키를 알아낼 수 없게 하는 성질 키의 비트 하나만 바꿔도 암호문 전체가 바뀌도록 하는 성질 확산(diffusion) 암호문으로부터 원문을 알아낼 수 없게 하는 성질 원문의 비트를 하나만 바꿔도 암호문 전체가 바뀌도록 하는 성질 암호 알고리즘 혼돈과 확산을 달성하기 위해 Substitution과 Permutation을 이용 Substitution - 문자를 다른 문자로 바꾸는 것 Permutation - 문자들의 순서를 바꾸는 것 SPN(Substitution Permutation Network) Substitution-Permutation을 연속하여 수행하도록 이어 놓은 것 데이터를 블록 단위로..
ModelMapper란 서로 다른 클래스의 값을 한번에 복사하게 도와주는 라이브러리 DTO와 Entity를 변환할 때 Getter, Setter을 이용할 경우 번거롭기 때문에 사용 modelmapper는 런타임시점에 리플렉션이 발생하므로 성능 저하가 매우 심함 컴파일 시점에 코드가 생성되는 mapstruct 사용하는 것을 권장 사용법 1. build.gradle // https://mvnrepository.com/artifact/org.modelmapper/modelmapper implementation group: 'org.modelmapper', name: 'modelmapper', version: '3.1.1' 2. Configuration @Configuration public class Cust..