
JavaMail API Add Dependency pom.xml com.sun.mail javax.mail 1.6.2 build.gradle implementation group: 'com.sun.mail', name: 'javax.mail', version: '1.6.2' Set Gmail SMTP Gmail IMAP 액세스 설정{:target="_blank"} 앱 허용 보안 수준 설정{:target="_blank"} 구글 내계정 -> 보안 -> 보안 수준이 낮은 앱의 엑세스 허용 보안 수준이 낮은 앱의 엑세스를 허용하지 않으면 아래 Exception 발생 javax.mail.AuthenticationFailedException: ... Username and Password not accepted. ..

| Lambda Expressions Lambda Expression 을 사용하면 단일 메서드 클래스의 인스턴스를 보다 간결하게 표현할 수 있다. // 단일 매개 변수 parameter -> expression // 둘 이상의 매개 변수 (parameter1, parameter2) -> expression // 반환 사용 (parameter1, parameter2) -> { code } | Lambda Expressions 이상적인 사용 사례 > Person Class public class Person { public enum Sex { MALE, FEMALE } String name; LocalDate birthday; Sex gender; String emailAddress; public int g..
| Templates 만들기 Web Project를 진행하면서 Logger를 자주 사용하게 되는데,매번 타이핑해주기 번거로워서 Templates에 등록해보려고 합니다! PS 할 때,BufferedReader, Stringtokenizer 같은 코드들도미리 Templates에 등록해 놓으면 아주 좋겠군! 먼저 logger 사용에 필요한 코드는import로 아래 코드가 필요하고12import org.slf4j.Logger;import org.slf4j.LoggerFactory;cs Logger 등록을 위해 아래 코드가 필요하다.1private static final Logger logger = LoggerFactory.getLogger(HomeController.class);cs 이 코드를 Templates..
#. JAVA ㅇ 절차지향 (POP) - 실행되는 순서가 위에서부터 아래로 순차적으로 진행되는 형태를 가진 언어 - 프로그램 재사용 시 기존에 만들어진 코드를 복사하여 붙여넣기 하는 방법 사용 => 함수의 등장. ㄴ자주 사용되는 특정한 코드를 하나의 모듈(묶음)로 묶어 놓은 것 ㄴ프로그래머가 사용하고 싶을 때마다 호출하여 코드가 실행되도록 함 ㄴ데이터와 함수 간에 유기적인 관계성을 갖지 못함 ㅇ 객체지향 (OOP : Object-Oriented Programming) - 데이터를 객체로 취급하여 프로그램에 반영, 객체와 객체의 상호작용을 통해 프로그램이 동작 - 코드의 재사용성이 높음, 코드 관리가 용이, 코드의 중복을 제거 - 각각의 객체는 메시지를 주고받고, 데이터를 처리 -> 유지보수성 Good -..
#. HashSet - Hash Table에 의한 동작 - 집단을 반복(iterator)하려면 HashSet 인스턴스의 크기(원소의 수)와 백업 HashMap 인스턴스의 용량(버킷 수)의 합계에 비례하는 시간이 필요. 따라서, 반복 성능이 중요한 경우 초기 용량을 너무 높게 설정하지 않는 것이 매우 중요 12345678910111213141516171819202122232425262728293031323334353637383940414243444546import java.util.*; // HashSet을 사용하기 위해 import public class test { public static void main(String[] args) { HashSet hs = new HashSet(); // HashS..
#. 객체의 형변환 > 형변환(Casting) ㄴ 묵시적 형변환(Promotion) - 형변환 연산자를 사용하지 않아도 자동으로 이루어지는 경우 = 자동 형변환 - ex) 4btye의 int형 데이터를 8byte double 형으로 변환12int age = 25;double avgAge = age; // 25.0, (double)cs ㄴ 명시적 형변환(Demotion) - 더 작은 범위를 나타내는 데이터 타입으로 변환되는 경우 = 축소 형변환 - ex) 8byte의 double형 데이터를 4byte int 형으로 변환 12double avgAge = 23.86;int age = (int)avgAge; // 24, 문장에서 명시적 형변환cs > 객체 형변환 - 객체 참조변수의 경우에도 형변환이 이루어짐 -..
[ 요약 ] - 내부 클래스는 정의되는 위치에 따라 멤버 클래스와 지역 클래스로 나뉜다. - 멤버 클래스는 멤버 변수와 동일한 위치에 선언된 내부 클래스를 의미한다. - 멤버 클래스는 static 예약어가 붙은 static 멤버와 instance 멤버로 나뉜다. - 지역 클래스는 메서드 내에 클래스가 정의되어 있는 경우를 말하며, 이름이 있는 지역 클래스와 이름을 갖지 않는 무명 클래스로 다시 나뉜다. #. 내부 클래스 > 내부 클래스 - 클래스가 다른 클래스를 포함하는 경우, 내부에 포함된 클래스의 명칭 - 파일 크기의 최소화, 보안, 성능 향상, 이벤트 처리 등을 쉽게 하기 위해 사용 - 자바 클래스 구조를 더 조직화하고, 소스코드를 구현시 효율을 높일 수 있음 - 내부 클래스가 생성되기 위해 외부 ..
#. 추상 클래스 > 추상 메서드 - abstract 예약어 ㄴ 메서드와 클래스를 선언할 때 사용하는 Modifier ㄴ 메서드를 선언에 사용 시 추상 메서드로 정의하겠다는 의미 - 추상 메서드12public int sum(int n1, int n2 ..) { ... } // 일반 메서드public abstract int sum(int n1, int n2 ..); // 상 메서드cs ㄴ 메서드의 시그니처(리턴 타입, 메서드명, 매개변수)만 정의 ㄴ 구체적인 행위, 즉 블록({ }) 부분은 정의되지 않은 특수한 메서드 ㄴ 메서드의 시그니처가 선언되어 있기 때문에 메서드의 기본적인 기능 유추 가능 ㄴ 추상 메서드는 의미가 없지만 자식 클래스에서 Overriding 했을 때, 상속을 통해 의미를 가짐 ㄴ 추상..