Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 사용자계정 #WSL2
- 피드백
- 공부방식
- 코드스테이츠 #회고록
- 코드스테이츠 #
- 회고록
- jvm
- 글 foramt
- 인터넷 #ISP
- 에러해결
- git #intellij
- 회고록_코드스테이츠
- Git #회고록
- mapstruct
- 몰입학습 #몰입
- WSL2 #권한
- 네트워크 기초
- 코딩테스트
- String
- 롤중독
- 호스트주소 #Host주소
- 정리글 작성법
- 시작 #꾸준히 #과하지않게
- 백엔드로드맵
- 회고
- 회고 #주간회고
- OOP
- WSL #Linux #ubuntu
- JAVA기본
- Java환경
Archives
- Today
- Total
느리더라도 꾸준히
회고록(15) - 애노테이션, 람다, 스트림, I/O 본문
1. 지금 현재, 당신의 기분이나 느낌을 표현해 주세요.
학습이 끝난 후 8시부터 10시까지 잤다. 거기다 그 쌩썡함을 유튜브를 시청했다.
나란 존재 참 환경에 나약하다. 탓하기 보단 시스템을 바꾸려고 해보자. 내일 교육 세션이 끝나고 할일 이다.
- 식후 절대로 침대에 눕지않고, 늦어도 7시 30분에 이어폰 꼽고 스카 가기
- 최소 11시 까지는 유튜브엔 얼씬도 하지 않기
- 유튜브는 목마른 우울의 감정을 없애주지 않는다.
- 울적할땐, 나가서 노래듣고 런닝하고 걷자.
내가 할수 있는건 일단 위 두개 뿐이다. 그 이상 어렵게 생각하지말자.
2. 오늘 무엇을 학습한 내용 중 지금 떠올릴 수 있는 단어를 모두 나열해 주세요.
애노테이션, 표준/메타 애노테이션,
람다식, 익명 클래스(객체), 함수형 인터페이스, 메서드 래퍼런스(정적메서드, 인스턴스 메서드, 생성자 참조)
스트림, 리덕션, 스트림 파이프라인(.), 중간 연산, 최종연산, Optional<T>
FileInputStream, FileOutputStream, BufferInputStream, FileReader, FileWriter
3. 2에서 작성한 단어를 가지고, 오늘의 학습 내용을 설명해 보세요.
애노테이션
주석이 사용자에게 부가정보를 알린다면 애노테이션은 프로그램에게 정보를 알리기 위해 사용한다.
주요역할
- 컴파일러에게 문법에러를 체크하도록 정보를 제공한다.(Override, FuntionalInterface)
- 프로그램을 빌드할때 자동으로 코드를 생성해준다.(Lombok 등)
- 런타임때 특정 기능을 실행하도록 정보를 제공한다.
표준 애노테이션과 표준 애노테이션을 관리하는 메타 애노테이션이 있다.
Lambda
람다식 탄생이유
- Java는 익명 클래스를 선언하여 일회성으로 객체를 선언과 생성을 동시에 할수 있다.
- 이를 좀 더 가독성있고 코드효율(반환 타입, 함수명 제거)을 위해 함수형프로그래밍으로 작성하는 람다식이 탄생하였다.
함수형 인터페이스
- 객체구조에 맞게 람다식(익명클래스)을 사용하기 위해서는 추상메서드를 가진 인터페이스가 필요하여 탄생하였다.
- 람다식의 매개변수와 리턴형은 함수형 인터페이스의 추상메서의 구조와 일치해야한다.(매개변수 개수, 타입 등)
- Java에서 일반적으로 사용할수 있도록 기본적으로 제공하는 함수형 인터페이스가 존재한다.
매서드 참조방식(래퍼런스)
- 람다식안에 메서드를 직접구현하는 것 대신 존재하는 메서드를 참조해서 넣을 수 있다.
- (함수형 프로그래밍의 근본핵심인 함수의 다형성 개념이다.)
- 정적 메서드 : 정적 메서드를 가진 Class::메서드() 로 참조 가능하다.
- 인스턴스 메서드 : new 명령어로 생성한 인스턴스의 참조변수::메서드로 참조 가능하다.
- 생성자 : 클래스::new 로 객체생성 명령을 참조할 수 있다.
Stream
스트림의 탄생이유 : 배열이나 컬렉션들의 요소를 반복자를 이용하여 제공하는 Stream을 사용하면 아래의 기능을 얻을 수 있다.
- 재사용성, 가독성 ( 스프링 파이프라인을 활용하면 가독성이 좋다.)
- 병렬 처리에 유리하다.
- 람다식을 이용하여 요소처리를 더 쉽게 할 수 있다.
스트림의 특징
- 사람의 해석방식 처럼 메서드를 먼저 선언하고 함수를 적는 선언형으로 코드를 작성한다.
- 람다식으로 요소처리가 간편하다.
- 내부 반복자를 이용해 병렬 처리가 쉽다.
- 여러번 사용가능한 중간 연산과 단 한번 사용가능한 최종연산이 존재한다. 그러므로 한번 생성한 Stream은 1회성으로만 사용이 가능하다.
Option<T>
- NullPointException을 피하기 위해 Null을 담을수 있는 래퍼클래스로써 고안되었다
- orElse()를 통해서 null일때 기본값을 지정할 수 있다.
I/O
FileInputStream, FileOutputStream
- 바이트 형식으로 데이터를 읽고, 출력한다.
- 바이트 형식으로 가져오기 때문에 유니코드인 한국어는 읽어오지 못한다.
FileReader, FileWriter
- 문자 형식을 인코딩해서 유니코드로 변환해 읽거나 유니코드를 변환해서 인코딩하여 출력한다.
- 그러므로 여러 영어 외의 언어 사용이 가능하다.
BufferInputStream, BufferReader 등
- 임시 저장소 Buffer에 값을 저장하여 처리하여 입출력의 효율을 높일수 있는 버퍼스트림이다.
4. 설명하기 어려운 단어가 있다면, 그 이유는 무엇인가요?
5. 그 단어를 스스로 설명할 수 있기 위해서 누군가에게 질문을 한다면, 어떤 질문을 해야 할까요?
'(CodeStates)Daily memoir' 카테고리의 다른 글
회고록(16) - 모의 기술 면접 체험 (0) | 2022.11.16 |
---|---|
회고록(16) - Thread, JVM (0) | 2022.11.15 |
회고록(14) - 컬렉션 (0) | 2022.11.10 |
회고록(13) - 다형성, 추상화 (0) | 2022.11.09 |
회고록 (11) - 생성자, 내부클래스 (0) | 2022.11.04 |
Comments