
상속은 객체 지향 프로그래밍에서 기존 클래스의 속성과 메서드를 새로운 클래스가 재사용할 수 있습니다.
오버라이딩은 상속받은 메서드를 자식 클래스에서 재정의하는 것을 의미합니다.
1.1. 오버라이딩과 오버로딩의 차이점
오버라이딩(Overriding):
오버로딩(Overloading):
-> 추가 질문을 준비
부모 메서드 호출 super
매개변수 다르면 어떻게 되냐 - 오버로딩
오버로딩에서 리턴타입 다를경우 -> 에러발생함
1.2. 추상 클래스와 인터페이스의 차이점
추상 클래스:
토론
동물 먹는것 자는것
추상 클래스는 공통되는 부분을 모아서 추상 클래스에 정의하고, 그 외의 부분을 자식 클래스에서 확장하여 사용하는 개념
인터페이스:
카페 주문 제작 호출
동물 소리
저마다의 방식으로 동작을 정의합니다.
정의 먼저하기!
프로세스는 실행 중인 프로그램의 인스턴스로, 독립된 메모리 공간과 시스템 자원을 할당받습니다.
쓰레드는 프로세스 내에서 실행되는 작업의 단위로, 같은 프로세스 내의 쓰레드들은 메모리 공간과 자원을 공유합니다.
2.1. 컨텍스트 스위칭
컨텍스트 스위칭은 현재 실행 중인 프로세스나 쓰레드를 중단하고 다른 프로세스나 쓰레드를 실행하기 위해 상태를 전환하는 작업입니다.
이 과정에서 다음과 같은 일이 발생합니다:
컨텍스트 스위칭은 멀티태스킹 운영체제에서 필수적이지만, 빈번한 스위칭은 시스템 성능에 부정적인 영향을 줄 수 있습니다.
-> 성늘 줄이는 방법 : 쓰레드 최적화 하고, 적당한 개수를 만들고, 스케 알고리즘, 이것도 있습니다. cpu를 좋은것으로 교체(하드웨어는 교체)
Optional은 Java 8에서 도입된 클래스로, null 처리를 보다 안전하고 명확하게 하기 위해 등장했습니다.
등장 배경:
1. NullPointerException(NPE)은 Java에서 가장 흔한 런타임 에러 중 하나입니다.
2. null 체크 로직이 필요한 경우가 많아 코드가 복잡해지고 가독성이 떨어집니다.
3. 메소드의 반환 값이 null일 수 있다는 것을 명시적으로 표현할 방법이 필요했습니다.
Optional의 주요 메소드와 사용 상황:
of(T value)
null이 아닌 값을 포장할 때 사용합니다.ofNullable(T value)
값이 null일 수도 있는 경우에 사용합니다.empty()
isPresent()
ifPresent(Consumer<? super T> consumer)
get()
orElse(T other) 객체를 반환하기 때문에 / 무조건 연산된 데이터
orElseGet(Supplier<? extends T> other) 권장 람다, 성능에 유리 / 값이 없는상황이 됬을때 람다가 실행
orElseThrow(Supplier<? extends X> exceptionSupplier)
map(Function<? super T, ? extends U> mapper)
flatMap(Function<? super T, Optional> mapper)
NullPointerException을 방지할 수 있습니다. 또한 값의 존재 여부를 명시적으로 표현할 수 있어 코드의 가독성과 안정성을 높일 수 있습니다.
-> 다시 정리해서 이야기하기 보충하기
of, ofNullable , orElse ,orElseGet
단점
매핑 하는거기 때문에 성능저하
남발하면 느려진다
안쓰는게 좋은 측면도 있음
optional을 자제하는게 좋을수도 있음.