분류 전체보기
-
Java 8 - 7. Callable과 Future공부일기/Java 8 2020. 12. 25. 16:18
Callable Runnable과 유사하지만 return을 통해 작업의 결과를 받아볼 수 있다. Future 비동기적인 작업의 현재 상태를 조회하거나 결과를 가져올 수 있다. https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html 결과를 가져오기 get() 블록킹 콜이다. 타임아웃(최대한으로 기다릴 시간)을 설정할 수 있다. 아래 예제 같은 경우 started! 출력 후 2초를 기다린다. 그 후 Hello를 꺼내고 출력한 뒤 End!를 출력, 그리고 쓰레드를 종료한다. package Java8; import java.util.concurrent.*; public class Main { public static void main..
-
Java 8 - 6. Concurrent 프로그래밍과 Executors공부일기/Java 8 2020. 12. 24. 21:55
Concurrent 소프트웨어란? 동시에 여러 작업을 할 수 있는 소프트웨어 예) 웹 브라우저로 유튜브를 보면서 키보드로 문서에 타이핑을 할 수 있다. 또는 화면녹화를 하면서 인텔리J로 코딩을 하고 워드에 적어둔 문서를 보거나 수정할 수 있다. 위의 예시처럼 여러가지 프로그램을 사용하는 것도 맞고, 한 프로그램 내에서 여러가지 동시작업이 일어나는 것도 해당한다. 게임을 하는 경우 캐릭터가 이동하거나 시선을 바꿀 때 캐릭터를 이동시키면서 새로운 배경을 불러오는 것을 예로 들 수 있다. 자바에서 지원하는 컨커런트 프로그래밍 멀티프로세싱 (ProcessBuilder) 멀티쓰레드 자바 멀티쓰레드 프로그래밍 Thread / Runnable Thread 상속 package Java8; public class Mai..
-
Java 항해일지 - 6. 상속공부일기/자바 스터디 2020. 12. 24. 11:23
상속이란? 기존의 클래스를 재사용해 새로운 클래스를 작성하는 일이다. 상속을 통해 클래스를 작성하게 되면 보다 적은 양의 코드로 새로운 클래스 작성이 가능하고, 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. 코드의 재사용성을 높이고, 코드의 중복을 제거해 프로그램의 생산성과 유지보수에 크게 기여할 수 있다. 자바 상속의 특징 extends : 새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 extends 키워드와 사용하면 된다. 단일 상속 : 두 개이상의 클래스로부터 상속을 받을 수 없다. 다중 상속을 허용하게 될 경우 여러 클래스로부터 상속받을 수 있어 복합적인 기능을 가진 클래스를 작성하기 쉽지만, 클래스 간의 관계가 매우 복잡해지고 상속받은..
-
Java 항해일지 - 5. 클래스공부일기/자바 스터디 2020. 12. 23. 20:45
클래스란? '객체를 정의해놓은 것.' 클래스는 객체를 생성하는데 사용되며, 객체는 클래스에 정의된 대로 생성되기 때문에 '객체의 설계도 또는 틀'로도 설명할 수 있다. 그렇다면 객체란 무엇일까? 객체의 사전적인 정의는 '실제로 존재하는 것' 이다. 흔히 붕어빵과 붕어빵 틀로 설명하곤 하는데, 붕어빵 틀이 클래스라면 붕어빵은 객체인 것이다. 설계도 하나로 여러 개의 동일한 제품을 만들어 낼 수 있듯이 클래스 하나의 정의로 여러개의 객체를 만들어낼 수 있다. 물론 다른 속성을 가진 제품들을 만들어 낼 수도 있다. 클래스의 구조를 살펴보며 클래스에 대해 좀 더 자세히 알아보자. 클래스 정의하는 방법 필드 : 클래스 객체의 상태 속성을 나타낸다. 멤버 변수라고 불리며 필드에서 초기화하는 것을 필드 초기화 혹은 ..
-
Java 8 - 5. Date & Time공부일기/Java 8 2020. 12. 23. 16:03
자바 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 - 4. Optional공부일기/Java 8 2020. 12. 22. 15:32
1. Optional이란? 비어있을 수도 있고, 뭔가를 담고 있을 수도 있는 컨테이너 인스턴스의 타입! 자바 프로그래밍에서 NullPointerException을 종종 보게 되는 이유 null을 리턴하니까! && null 체크를 깜빡했으니까! 메소드에서 작업 중 특별한 상황에서 값을 제대로 리턴할 수 없는 경우 선택할 수 있는 방법 예외를 던진다. (비싸다, 스택트레이스를 찍어두므로 예외를 던지는거 자체가 리소스에 영향을 줌.) null을 리턴한다. (비용 문제가 없지만 그 코드를 사용하는 클라이언트 코드가 주의해야 한다.) (자바 8부터) Optional을 리턴한다. (클라이언트에 코드에게 명시적으로 빈 값일 수도 있다는 걸 알려주고, 빈 값인 경우에 대한 처리를 강제한다.) 주의할 것 리턴값으로만 쓰..
-
우아한 테크코스 - 3기 3주 차 프리코스 후기생각과 일상/혼자의 생각 2020. 12. 18. 23:35
3주 차답게 가장 오랜 시간 걸리고 어렵게 느껴졌던 3주 차 미션. 처음 미션을 받고 기능 구현 목록만 적어두고 며칠을 고민했다. 어떻게 구현해야 할지 고민하면서 enum에 대해 알게 됐고, 해당 기능을 써서 완성해보자 마음먹었다. 이번 글은 내일 최종 테스트인 관계로 미션에 대한 리뷰는 가볍게 넘어가고 전체적인 프리코스 후기에 대해 적어본다. 1. enum을 활용한 메인화면 구현 package subway.view; import subway.domain.LineRepository; import java.util.Arrays; import java.util.function.Supplier; public enum MainMenu { STATION_MANAGEMENT("1", "역 관리", () -> Sta..
-
우아한 테크코스 - 3기 2주 차 프리코스 후기생각과 일상/혼자의 생각 2020. 12. 18. 01:44
2주 차 미션은 자동차 경주 게임이었다. 2주 차부터는 추가 요구 사항으로 else를 사용하지 않는 것, 객체를 활용해 구현해야 한다는 게 주어졌다. 1. 경주할 자동차 목록을 입력받는다. package racingcar; import java.util.Scanner; public class InputView { private static Scanner input = new Scanner(System.in); private static String ASK_CAR_NAME_MESSAGE = "경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"; private static String ASK_NUMBER_OF_ATTEMPTS = "시도할 회수는 몇회인가요?"; public static St..