[12.04] 내일배움캠프[Spring] WIL-4

박상훈·2022년 12월 4일
0

내일배움캠프[WIL]

목록 보기
4/12

[12.04] 내일배움캠프[Spring] WIL-4

1. 지난 일주일

  • 순수 Java를 이용한 은행관리 미니 프로젝트를 끝냈다.
  • 이번 주차는 프로젝트가 끝나고 CS개념 위주로 학습했다.
  • JVM( Java Virtaul Machine )
  • Java Interface, Abstract, Optional, Stream, Lamda, Process, THread, Test Code

2. 어려웠던 점

  • CS상식들에 대한 개념이 모호하게 자리 잡혀 있어 아직은 명확하게 대답하기 어렵다.
  • 프로젝트를 진행하면서 패키징을 세분화 하는 습관들 들이는 것이 중요하다.
  • 특히, Thread 개념과 Optional 개념에 대해 많이 와닿지 않았던 점.
  • 그래서 이번주 WIL은 위에 배웠던 개념들을 훑어 보면서 배웠던 점 3. 에서 간단하게 정리하려고 한다.

3. 배운점

인터페이스, 추상클레스

  • 인터페이스 -> 다중구현 / 추상클레스 -> 단일 상속
  • 인터페이스 -> 어떤 속성,기능을 공통적으로 가지고 있다(구현)
  • 추상클레스 -> 원래 있던 속성에서 더 추가하여 확장하자(상속)

자동형변환, 캐스팅

  • Person person = new Man(); -> Person의 클레스를 상속 받은 Man클레스가 있다고 가정했을 때,
    이러한 형식으로 사용하게 된다면, Person클레스 타입으로 Man클레스가 자동 형변환 된다.
  • Float test1 = 3.3 -> (int)test1 -> 이런식으로 강제로 자료형을 변환하는게 캐스팅

함수형 인터페이스

  • @FunctionalInterface의 테그가 붙고, 함수 하나로 이루어진 인터페이스를 칭한다.
@FunctionalInterface
public interface Sum {
    int intSum(int x, int y);
}

람다표현식, 스트림

  • 내가 학습했던 람다와 스트림을 묶어 놓은 이유는, 보통 스트림을 사용할 때 람다식을 거의 사용하기 때문!
  • Stream은 보통 Collection객체로 선언한 자료에 조건을 걸어 어떤 작업을 할 때 사용한다.
  • For ~ if 쓰면 되는거 아니야? -> Stream은 조건에 따른 작업을 수행하지만 원래 자료를 변경하지 않고 진행 될 뿐더러, 코드의 길이를 확 줄여준다.
  • 중간연산자 + 종료연산자로 보통 이루어지는데, 종류에 대해서는 기존 포스팅을 참조.
  • 스트림에서 map()이라는 중간연산자는 보통 특정 필드만 가져오거나 형태를 변환할 때 사용되는데, 정말 빈번하게 사용되지만 이해가 잘 되지 않아서 적절한 예제를 첨부.
  • 출처 :https://jamie95.tistory.com/54
fileStream.map(File::getName)             // Stream<File> -> Stream<String>(파일명가져옴)
  .filter(s -> s.indexOf('.')!= -1)       // 확장자가 없는 것은 제외
  .map(s -> s.substring(s.indexOf('.')+1) // Stream<String> -> Stream<String>(.뒤로만)
  .map(String::toUpperCase)               // 모두 대문자로 변환
  .distinct()                             // 중복 제거
  .forEach(System.out::print);            // JAVABAKTXT

Optional

  • 자바에서 발생하는 NPE( Null Point Exception )을 간단하게 회피하는 방법!
  • 저번 포스팅에서 Optional에 대한 개념을 쉽게 정리한 블로그를 첨부했다 참고하기!
    ( TIL - 23 )
  • 만약 지금 같이 데이터가 무조건 있는 상황에서는 상관 없겠지만, 만약 예를 들어 'Park'이라는 회원이 현재 User DB에 있는지 Select 했을 때, 없다면 Null일 것 이다. 이 때 이 부분을 잡아주기 위한 부분이라고 생각한다.

JVM

  • 자바 컴파일리가 바이트 코드로 변환 한 후 후속 작업을 담당하는 JVM은 이 그림으로 간단하게 설명이 가능.
  • 각 부분 별로 상세 기능은 TIL - 22포스팅 참조.

멀티 프로세스, 멀티 스레드

  • 프로세스 : 어플리케이션등 에서 작업의 한 단위 -> 각 프로세스는 자원을 공유하지 않는다.
    ( 따라서 멀티프로세싱 중 다른 하나의 프로세스 이상 시 또 다른 프로세스에는 영향을 주지 않는다. )
  • 스레드 : 프로세스 안에서 각 작업을 나누어 수행하는 작업의 단위로써, Stack을 각각 가지며 한 프로세스 내에서 자원을 공유한다.

4. 느낀점⭐

1) 각 개념들에 대해 물어보면 남에게 설명할 수 있을 정도로 학습하자.
2) 코드로 쳐보면서 개념을 학습하면 더 이해가 빠르다.

profile
기록하는 습관

0개의 댓글