Java 109

[객체지향][스트림/Stream] - 스트림, 스트림의 특징

https://youtu.be/7Kyf4mMjbTQ?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. [스트림] 다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것이다. 데이터 소스 - 컬렉션, 배열 표준화된 방법 - List, Set, Map 1. 스트림 만들기 --> 2. 중간 연산 --> 3. 최종 연산 [스트림 특징] 스트림은 데이터 소스로부터 데이터를 읽기만할 뿐 변경하지 않는다. 스트림은 Iterator처럼 일회용이다. (필요하다면 다시 스트림을 생성해야 한다.) 최종 연산 전까지 중간연산이 수행되지 않는다. - 지연된 연산 스트림은 작업을 내부 반복으로 처리한다. 스트림의 작..

Java/객체지향 2022.03.15

[객체지향][람다식/Lambda Expression] - 메서드 참조, 생성자의 메서드 참조

https://youtu.be/I55ALQndw50?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. [메서드 참조] 하나의 메서드만 호출하는 람다식은 메서드 참조로 더 간단히 할 수 있다. [static 메소드 참조] Integer method(String s) { return Integer.paraseInt(s); } ↓ Function f = (String s) -> Integer.parseInt(s); 그저 Integer.parseInt(String s)만 호출하는 걸 볼수 있다. 이는 그냥 람다식을 사용해서 간단히 할 수 있다. package javajungsuk; import ja..

Java/객체지향 2022.03.12

[객체지향][람다식/Lambda Expression] - Predicate의 결합. CF와 함수형 인터페이스

https://youtu.be/Kk1ZIrVZnqw?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. [Predicate의 결합] Predicate는 조건식으로 and(), or(), negate()로 두 Predicate를 하나로 결합 가능하다.(default 메서드) 함수형 인터페이스가 가질 수 있는 메서드 default 메서드 static 메서드 추상 메서드(abstract) 등가 비교를 위한 Predicate의 작성에는 isEqual()을 사용한다.(static메서드) [실습] [andThen] 이때 함수의 출력과 입력이 타입이 같아야 andThen 사용이 가능하다. 이때 새로 만들어..

Java/객체지향 2022.03.09

[객체지향][람다식/Lambda Expression] - java.util.function패키지

https://youtu.be/HPxnDM_FkGc?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. [java.util.function패키지] 자주 사용되는 다양함 함수형 인터페이스를 제공한다. 우리가 사용하는 함수의 갯수가 별로 없기 때문에 자바 자체에서 표준으로 만들어 놓은 것을 공통으로 사용하는 구조이다. [매개변수가 2개인 함수형 인터페이스] Bisupplier는 없는 이유가 함수 반환값이 0또는 1이기 때문에 없다. 매개변수 3개를 가진 경우의 함수형 인터페이스는 없지만 우리가 직접 만들어서는 사용이 가능하다. [매개변수의 타입과 반환타입이 일치하는 함수형 인터페이스] [예제] p..

Java/객체지향 2022.03.09

[객체지향][람다식/Lambda Expression] - 함수형 인터페이스

https://youtu.be/0Sp9eFRV8gE?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. [함수형 인터페이스] 함수형 인터페이스 - 단 하나의 추상 메서드만 선언된 인터페이스 함수형 인터페이스 타입의 참조변수로 람다식을 참조할 수 있다. 단 함수형 인터페이스의 메서드와 람다식의 매개변수 개수와 반환타입이 일치해야 한다. [실습] package javajungsuk; public class Java14_0 { public static void main(String[] args) { //Object obj = (a,b) -> a>b ? a:b; //람다식 익명 객체 MyFunctio..

Java/객체지향 2022.03.09

[객체지향][람다식/Lambda Expression] - 람다식

https://youtu.be/3wnmgM4qK30?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. [람다식에 앞서서 함수형 언어에 관해서..] 자바는 OOP(객체지향)언어로 JDK 1.8부터 함수형 언어 기능을 도입했다. [람다식(Lambda Expression)] 함수(메서드)를 간단한 식(expression)으로 표현하는 방법이다. int max(int a, int b){ return a>b ? a:b; } ↓ (a, b) -> a>b ? a:b 람다식은 익명 함수(이름이 없는 함수, anonymous function)라고 한다. 함수와 메서드의 차이는? 함수와 메서드는 근본적으로 동..

Java/객체지향 2022.03.05

[객체지향][쓰레드/thread] - 쓰레드 동기화의 단점을 보완하기 위한 wait()와 notify()

https://youtu.be/O1xo9fnV9kQ?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. [wait()와 notify()] 동기화를 진행할 때 떨어지는 효율성을 높이기 위해서 사용하는 wait( ), notify( ) Object 클래스에 정의되어 있으며, 동기화 블록 내에서만 사용할 수 있다. wait() - 객체의 lock을 풀고 쓰레드를 해당 객체의 waiting pool에 넣는다. notify() - waiting pool에서 대기중인 쓰레드 중 하나를 깨운다. notifyAll() - waiting pool에서 대기중인 모든 쓰레드를 깨운다.

Java/객체지향 2022.03.04

[객체지향][쓰레드/thread] - 쓰레드의 동기화(synchronization)

https://youtu.be/g4vP5wuAoPI?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. [쓰레드의 동기화] 멀티 쓰레드 프로세스에서는 다른 쓰레드의 작업에 영향을 미칠 수 있다. 진행중인 작업이 다른 쓰레드에게 간섭받지 않게 하려면 '동기화'가 필요하다. 동기화하려면 간섭 받지 않아야 하는 문장들을 '임계 영역'으로 설정한다. 임계 영역은 락(lock)을 얻은 단 하나의 쓰레드만 출입이 가능하다. (객체 1개에 락 1개) 쓰레드의 동기화 - 한 쓰레드가 진행죽인 작업을 다른 쓰레드가 간섭하지 못하게 막는 것을 의미한다. [synchronized를 이용한 동기화] synchron..

Java/객체지향 2022.03.04

[객체지향][쓰레드/thread] - join(), yield()

https://youtu.be/uY_xbLi_cSA?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. [join( )] 지정된 시간동안 특정 쓰레드가 작업하는 것을 기다려준다. void join() // 작업이 모두 끝날 때까지 void join(long millis) // 천분의 일초 동안 void join(long millis, int nanos) // 천분의 일초 + 나노초 동안 예외처리를 해야 한다. package javajungsuk; public class Java13_11 { static long startTime = 0; public static void main(String[..

Java/객체지향 2022.03.03

[객체지향][쓰레드/thread] - suspend(), resume(), stop()

https://youtu.be/uY_xbLi_cSA?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다. [suspend(), resume(), stop()] suspend() - 쓰레드의 실행을 일시정지 resume() - 일시정지된 쓰레드를 재개시키는 것 stop() - 완전 정지 시키는 것(소멸로) 위의 세개의 메소드는 사용을 권장하지 않음(좋게 말해서 사용권장하지 않는 것이지 사용하면 안 됨) dead-lock 교착상태를 발생시키기 때문에 사용하지 않을 것을 권장한다. deprecated되었다!! [실습] package javaStandard; public class Java13_10 {..

Java/객체지향 2022.03.02