백기선(인프런 강의)
-
인터페이스 기본 메소드와 스태틱 메소드백기선(인프런 강의)/더 자바, Java 8 2020. 7. 8. 23:26
기본 메소드 (Default Methods) 인터페이스에 메소드 선언이 아니라 구현체를 제공하는 방법 해당 인터페이스를 구현한 클래스를 깨트리지 않고 새 기능을 추가할 수 있다. 기본 메소드는 구현체가 모르게 추가된 기능으로 그만큼 리스크가 있다. 컴파일 에러는 아니지만 구현체에 따라 런타임 에러가 발생할 수 있다. 반드시 문서화 할 것. (@implSpec 자바독 태그 사용) Object가 제공하는 기능 (equals, hasCode)는 기본 메소드로 제공할 수 없다. 구현체가 재정의해야 한다. 본인이 수정할 수 있는 인터페이스에만 기본 메소드를 제공할 수 있다. 인터페이스를 상속받는 인터페이스에서 다시 추상 메소드로 변경할 수 있다. 인터페이스 구현체가 재정의 할 수도 있다. 스태틱 메소드 해당 타입..
-
메소드 래퍼런스백기선(인프런 강의)/더 자바, Java 8 2020. 7. 7. 23:47
람다가 하는 일이 기존 메소드 또는 생성자를 호출하는 거라면, 메소드 레퍼런스를 사용해서 매우 간결하게 표현할 수 있다. 메소드 참조하는 방법 스태틱 메소드 참조 타입::스태틱 메소드 특정 객체의 인스턴스 메소드 참조 객체 레퍼런스::인스턴스 메소드 임의 객체의 인스턴스 메소드 참조 타입::인스턴스 메소드 생성자 참조 타입::new 메소드 또는 생성자의 매개변수로 람다의 입력값을 받는다. 리턴값 또는 생성한 객체는 람다의 리턴값이다. 참고 https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html 예제 import java.util.Arrays; import java.util.function.Function; import java...
-
람다 표현식백기선(인프런 강의)/더 자바, Java 8 2020. 7. 7. 22:38
람다 (인자 리스트) -> {바디} 인자 리스트 인자가 없을 때: () 인자가 한개일 때: (one) 또는 one 인자가 여러개 일 때: (one, two) 인자의 타입은 생략 가능, 컴파일러가 추론(infer)하지만 명시할 수도 있다. (Integer one, Integer two) 바디 화상표 오른쪽에 함수 본문을 정의한다. 여러 줄인 경우에 { }를 사용해서 묶는다. 한 줄인 경우에 생략 가능, return도 생략 가능. 변수 캡처 (Variable Capture) 로컬 변수 캡처 final이거나 effective final 인 경우에만 참조할 수 있다. 그렇지 않을 경우 concurrency 문제가 생길 수 있어서 컴파일가 방지한다. effective final 이것도 역시 자바 8부터 지원하는 ..
-
자바에서 제공하는 함수형 인터페이스백기선(인프런 강의)/더 자바, Java 8 2020. 7. 7. 09:15
Java가 기본으로 제공하는 함수형 인터페이스 java.lang.funcation 패키지 자바에서 미리 정의해둔 자주 사용할만한 함수 인터페이스 Function BiFunction Consumer Supplier Predicate UnaryOperator BinaryOperator Function T 타입을 받아서 R 타입을 리턴하는 함수 인터페이스 R apply(T t) 함수 조합용 메소드 andThen compose BiFunction 두 개의 값(T, U)를 받아서 R 타입을 리턴하는 함수 인터페이스 R apply(T t, U u) Consumer T 타입을 받아서 아무값도 리턴하지 않는 함수 인터페이스 void Accept(T t) 함수 조합용 메소드 andThen Supplier T 타입의 값을..
-
함수형 인터페이스와 람다 표현식백기선(인프런 강의)/더 자바, Java 8 2020. 7. 6. 09:02
함수형 인터페이스(Funtional Interface) 추상 메소드를 딱 하나만 가지고 있는 인터페이스 SAM(Single Abstract Method) 인터페이스 @FunctionalInterface 애노테이션을 가지고 있는 인터페이스 람다 표현식(Lambda Expressions) 함수형 인터페이스의 인스턴스를 만드는 방법으로 쓰일 수 있다. 코드를 줄일 수 있다. 메소드 매개변수, 리턴타입, 변수로 만들어 사용할 수 있다. 자바에서 함수형 프로그래밍 함수를 First class object로 사용할 수 있다. 순수함수(Pure function) 사이드 이펙트를 만들 수 없다.(함수 밖에 있는 값을 변경하지 못한다.) 상태가 없다.(함수 밖에 정의되어있는) 고차 함수(High-Order Fucntio..
-
자바 8 소개백기선(인프런 강의)/더 자바, Java 8 2020. 7. 6. 08:38
자바 8 출시일 : 2014년 3월 현재 자바 개발자 중 약 83%가 사용중 https://www.jetbrains.com/lp/devecosystem-2019/java/ LTS(Long_term-Supprot)와 비-LTS 버전의 차이 비-LTS는 업데이트 제공 기간이 짧다. 비-LTS 배포 주기 6개월 비-LTS 지원 기간은 배포 이후 6개월 LTS 배포 주기 3년(매 6번째 배포판이 LTS가 된다.) LTS 지원 기간은 5년이상이므로 JDK를 제공하느 벤더와 이요한느 서비스에 따라 다르다. 실제 서비스 운영환경(production)에서는 LTS 버전을 권장한다. Moving Java Forward Faster-Mark Reinhold 다음 LTS : 자바 17 매년 3월과 9월에 새버전 배포 주요 ..
-
스프링 데이터 - PostgreSQL백기선(인프런 강의)/스프링 부트 개념과 활용 2020. 7. 5. 10:49
2020/07/03 - [백기선/스프링 부트 개념과 활용] - 스프링 데이터 2부: 인메모리 데이터 베이스 2020/07/04 - [백기선/스프링 부트 개념과 활용] - 스프링 데이터 - MySQL 예제 의존성 추가 org.postgresql postgresql PostgreSQL 설치 및 서버 실행 (docker) PostgreSQL 설치 및 서버 실행 (docker) docker run -p 5432:5432 -e POSTGRES_PASSWORD=pass -e POSTGRES_USER=keesun -e POSTGRES_DB=springboot --name postgres_boot -d postgres docker exec -i -t postgres_boot bash su - postgres psql ..
-
스프링 데이터 - MySQL백기선(인프런 강의)/스프링 부트 개념과 활용 2020. 7. 4. 13:09
예제 의존성 추가 mysql mysql-connector-java docker 설치 https://www.docker.com/ 아래 소스 실행 docker run -p 3306:3306 --name mysql_boot -e MYSQL_ROOT_PASSWORD=1 -e MYSQL_DATABASE=springboot -e MYSQL_USER=jinseok -e MYSQL_PASSWORD=pass -d mysql docker exec -i -t mysql_boot bash mysql -u root -p 소스 설치결과 MySQL용 Datasource 설정 spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useSSL=false spring.datasou..