자바의신 2

존스노우·2022년 5월 5일
0

자바의신

목록 보기
2/2

19 장

JVM: 자바 프로그램이 수행되는 프로세스
GC: JVM 내 메모리 관리 (사용하고 남아있는 전혀필요없는 객체가 있음)

JVM은 힙이라는 공간에서 객체 관리

가장 왼쪽에 Young 영역
: 젋은 객체들이 존재하며 두개의 슈퍼바이저 영역으로 나뉨

객체를 형성하면 eden 영역에 객체가 생성

eden영역이 꽉차면 살아있는 객체만 슈퍼바이저 영역으로 복사되고
eden 영역을 계속 채움,

한개의 슈퍼바이저 영역이 꽉차면 다른 하나 슈퍼바이저 영역으로 살아 있는 객체가 이동한다.

슈퍼바이저 영역 한곳은 비어져 있어야 한다.

여기까지 Young GC

Old GC 오래 살아있는 객체는 old 영역으로 이동

old 영역이 꽉차면 Major GC , Full GC라 함.

22장

List

ArrayList, vector ,stack , LinkedList 많이 사용

그중 vector , ArrayList 를 자주 사용함.
전자는 Thread safe , 후자는 안전하지 않음

둘이 사용방법은 비슷함

23장

set 순서 상관없이 어떤 데이터가 존재하는지 확인하는 용도

중복을 방지.

hashSet : 순서가 필요없는 데이터 해시 테이블 저장 성능이 가장 우수

Treeset: 저장된 데이터의 값에 따라 정렬 red-black이라는 트리타입으로 값이 저장
hashSet보다 약간 느림
LinkedHashSet : 연결된 목록타입으로 해시 테이블에 데이터 저장 저장도니 ㅅㄴ서에 따라 값 이 저장 성능이 가장 나쁨

LinkedList

List , Queue , Deque

큐는 FIFO 웹서비스기준 사용자 요청 들어오는순서대로 처리하기위해 씀

deque는 queue 모든 기능 사용가능 ..

24장

TreeMAp: sort

25 (thread)

쓰레드는 경량 프로세스라고 말함.

프로세스가 하나 실행하려면 많은 자원이 필요하고 여러개의 프로세스를 실행하려면

각각 메모리에 할당해주어야됨. 그래서 쓰레드를 사용하면 빠른 연산이 가능함

Runalbe interface. Thread Class

Runalalbe 을 임플리먼트하거나 ThreadClass 확장해서

사용할 수 있음..

쓰레드가 수행되는 우리가 구현하는 메소드는 run()메소드 -> 알아서 자바에서 수행함
쓰레드가 시작하는 메소드는 start()

쓰레드라는 것을 start()메소드를 통해서 시작했다는 것은 프로세스가

start() 메소드는 하나의 메소드를 JVM에 추가해서 실행한다는 의미

여러개의 스타트를 실행하면 이전 스타트가 끝나지않아도 다음 쓰레드를 시작함 **

32장 java8 새로운기능

Optinal

데이터가 없는 객체일시 empty()

데이터가 Null경우도 잇을시 OfNullable

데이터가 반드시 필요할시 of

데이터가 존재하는지 체크 ispresent()

데이터를 얻기위해선 ?
get : 데이터가 없을시 Null 이 나올 수 있따.
orElse() : 기본값으 ㄹ지정 가능함
orElseGet
orElseThrow()

Optional 클래스는 Null 처리를 보다 간편하게 하기 위해 만들어짐.

Default method

인터페이스 내 함수 구현 가능

하위 호환성 때문에 만들어짐.

날짜 관련 클래스

LocalDate 등.. 불변객체 dayOfWeek enum 추가 .

병열 배열 정렬

sort vs paraaleSort

5000개 이상이면 후자가 더빠름

StringJoiner !!

매번 스트링 추가해주고 끝에 콤마 제거작업을해줘야되는데 이젠 필요없을듯!

StringJoiner joiner = new StringJoiner(",")

joiner.add(string)

new StringJoiner(구분자 , prifix,suffix)

33장

Lambda

Functional 인터페이스 ( 메소드가 하나만 선언되어있음)

메소드가 하나만 존재하는 인터페이스는 어노테이션으로 설정할수 있으며 람다표현식으로도 사용가능

java.util.functiion 패키지

Predicate

두 객체를 비교할 때 사용하고 boolean 리턴

Supplier

get 메소드가 있어 리턴값은 generic으로..

Consumer

accept()라는 매개 변수 하나를 갖는 메소드가 없으며

리턴값이 존재하지 않음 , 출력을 할때 처럼 작업을 수행하고 받을 때 이용

function

apply() 라는 하나의 매개변수를 갖는 메소드가 있어 리턴값도 존재

Function<T,R> 정의
입력타입 리턴 타입 의미

UnaryOperator

BinaryOperator

Stream

연속된 정보 처리를 하기 위해 사용
주로 컬렉션..

배열 -> 리스트 변환
1. Arrays.asList
2. Arrays.stream(values).collect(Collctors.toList());

list.stream() : 스트림생성
.filter : 중계연산
.count : 종단 연산

map() 데이터를 특정 데이터로 변환.

Ex) student -> student.getName()

메소드 참조

Foreach(System.out::println)

더블 콜론 Method Reference 메소드 참조 의미

static 메소드참조

특정 객체의 인스턴스 메소드 참조

System.out::println

특정 유형의 임의의 객체에 대한 인스턴스 메소드 참조

생성자 참조.

profile
어제의 나보다 한걸음 더

0개의 댓글