Java
-
자바와 코틀린의 차이를 알아보자코틀린 2021. 7. 25. 18:09
코틀린이 무엇인가? 이제 작성한 내용은 위의 작성한글 중 코틀린의 특징과 비슷한점이 많다. 하지만 이번에는 직접 코드를 작성하면서 설명하기 때문에 더 이해하기 쉬울 것이다. 자바와 코틀린의 차이 더적은 타이핑 세미콜론 생략가능 fun test() { print("hello world") print(6 * 2) } 변수타입을 지정 생략 가능 fun testVariable(){ val greet = "hello"; println(greet); println(greet::class) println(greet.javaClass) } 위의 클래스를보게된다면 코틀린의 Stringclass, JavaClass를 가져다가 사용할 수있다. 그 이유는 컴파일 시간에 타입을 체크하기 때문이다. 클래스와 함수는 생략 가능 코..
-
배열 Parallel 정렬백기선(인프런 강의)/더 자바, Java 8 2020. 8. 5. 08:50
Arrays.parallelSort() Fork/Join 프레임워크를 사용해서 배열을 병렬로 정렬하는 기능을 제공한다. 병렬 정렬 알고리즘 배열을 둘로 계속 쪼갠다. 합치면서 정렬한다. sort()와 parallelSort() 비교 알고리즘 효츌성은 같다. O(n logN) 공간 O(n) 단, 정렬하는 배열의 크기에따라 속도가 차이날 수 있다. 코드 import java.util.Arrays; import java.util.Random; import java.util.stream.IntStream; public class App { public static void main(@Chicken String[] args) { int size = 1500; int[] numbers = new int[size];..
-
Callable과 Future백기선(인프런 강의)/더 자바, Java 8 2020. 7. 20. 13:04
Callable Runnable과 유사하지만 작업의 결과를 받을 수 있다. Future 비동기적인 작업의 현재 상태를 조회하거나 결과를 가져올 수 있다. https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html get() - 결과를 가져오기 블록킹 콜 결과를 가져올때까지 기다린다. 타임아웃(최대한으로 기다릴 시간)을 설정 가능 public class App { public static void main(String[] args) throws InterruptedException, ExecutionException { ExecutorService executorService = Executors.newSingleThreadExec..
-
Executors백기선(인프런 강의)/더 자바, Java 8 2020. 7. 16. 13:08
고수준 (High-Level) Concurrency 프로그래밍 쓰레드를 만들고 관리하는 작업을 애플리케이션에서 분리. 그런 기능을 Executors에게 위임. Executors가 하는 일 쓰레드 만들기: 애플리케이션이 사용할 쓰레드 풀을 만들어 관리한다. 쓰레드 관리: 쓰레드 생명 주기를 관리한다. 작업 처리 및 실행: 쓰레드로 실행할 작업을 제공할 수 있는 API를 제공한다. 주요 인터페이스 Executor execute(Runnable) ExecutorService Executor 상속 받은 인터페이스로, Callable도 실행할 수 있으며, Executor를 종료 시키거나, 여러 Callable을 동시에 실행하는 등의 기능을 제공한다. ScheduledExecutorService ExecutorSe..
-
자바 Concurrent 프로그래밍 소개백기선(인프런 강의)/더 자바, Java 8 2020. 7. 16. 00:00
Concurrent 소프트웨어 동시에 여러 작업을 할 수 있는 소프트웨어 예) 웹 브라우저로 유튜브를 보면서 키보드로 문서에 타이핑을 할 수 있다. 예) 녹화를 하면서 인텔리J로 코딩을 하고 워드에 적어둔 문서를 보거나 수정할 수 있다. 자바에서 지원하는 컨커런트 프로그래밍 멀티프로세싱 (ProcessBuilder) 멀티쓰레드 자바 멀티쓰레드 프로그래밍 Thread / Runnable Thread 상속 public class App { public static void main(String[] args) { HelloThread helloThread = new HelloThread(); helloThread.start(); System.out.println("hello : " + Thread.curren..
-
Date와 Time API백기선(인프런 강의)/더 자바, Java 8 2020. 7. 12. 16:36
자바 8에 새로운 날짜와 시간 API가 생긴 이유 그전까지 사용하던 java.util.Date 클래스는 mutable 하기 때문에 thead safe하지 않다. 클래스 이름이 명확하지 않다. Date인데 시간까지 다룬다. 버그 발생할 여지가 많다. (타입 안정성이 없고, 월이 0부터 시작한다거나..) 날짜 시간 처리가 복잡한 애플리케이션에서는 보통 Joda Time을 쓰곤했다. 자바 8에서 제공하는 Date-Time API JSR-310 스팩의 구현체를 제공한다. 디자인 철학 Clear Fluent Immutable Extensible 주요 API 기계용 시간 (machine time)과 인류용 시간(human time)으로 나눌 수 있다. 기계용 시간은 EPOCK (1970년 1월 1일 0시 0분 0초..
-
인터페이스 기본 메소드와 스태틱 메소드백기선(인프런 강의)/더 자바, 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...