JAVA(8)
-
Runtime Data Area
Runtime Data Area 란? Process 로서, JVM 이 프로그램을 수행하기 위해 OS 로부터 할당 받는 메모리 영역 각각의 목적에 따라 5개의 영역으로 나뉜다 PC Register JVM Stack Native Method Stack Method Area Heap Register, JVM Stack, Native Method Stack 은 스레드별로 생성되고 Method Area와 Heap 영역은 모든 스레드에게 공유된다 PC Register 레지스터란, CPU가 1+2 라는 연산을 수행할 때, 연산을 수행하기 위해 1, +, 2 라는 데이터를 잠깐 저장해놔야하는데 이 때 사용되는 저장공간이다. 하지만 PC Register 는 저런 레지스터와 다르다. JVM은 CPU에 직접 연산을 수행하지..
2023.02.03 -
로그 찍을 때, 값을 파라미터로 넘겨야하는 이유
로그를 찍을 때, 두 가지 방법이 있다. 1. 문자열에 값을 더하는 경우. 예) logger.debug("my name is "+name); 2. 값을 파라미터로 넘기는 경우. 예) logger.debug("my name is {}", name); 우리는 무조건 2번째 방법인 파라미터로 넘기는 방법으로 사용해야한다. 만약 첫번째 방법을 사용하게 되면,, logger.debug("my name is "+name); 이렇게 사용해서 운영서버로 배포 됐다고 가정하면 해당 코드는 "my name is "와 name을 더해 새로운 문자열 객체를 생성하는 연산이 이루어지고, 결과로 만들어진 문자열이 debug 메서드의 인자로 들어가게 된다. 여기서 연산을 한다는 것이 핵심이다. 운영서버는 해당 로그를 찍을 필요가 ..
2021.04.05 -
JAVA Collection - List 시간 복잡도
List 상속도 List는 ArrayList, LinkedList, Vector와 Vector를 상속받는 Stack이 있다 Stack은 따로 다루도록 한다. ArrayList 시간 복잡도 기능 시간복잡도 설명 add O(1) 마지막 배열 공간을 찾아 삽입해주면 된다.(get이 O(1)이기 때문) set O(n) 배열 중간에 공간을 만들기 위해 뒤에 있는 데이터들은 전부 뒤로 한칸씩 이동해야한다. remove O(n) 배열 중간에 요소를 삭제할 경우 삭제한 공간을 채우기 위해 뒤에 데이터를 앞으로 한칸씩 이동한다. get O(1) 배열 인덱스로 RAM에서 random access가 가능하기 때문에 성능이 좋다. (random access의 원리에 대해서는 잘 모른다... 아시는분 댓글좀 달아주세요) con..
2021.02.17 -
parseInt와 valueOf의 차이점
parseInt는 primitive타입인 int형을 리턴하고 valueOf는 래퍼객체인 Integer타입으로 리턴한다. 쓸데없는 boxing, unboxing을 피하기 위해서 각각 맞는 API를 호출하여 사용하도록 하자.
2021.01.16 -
Optional이란?
Optional이란? Null값을 참조하여 NullPointException이 나는 것을 방지하기 위해 Null Check를 했던 예전코드를 보안하기 위해 자바8에서 지원하는 Class. 객체를 Optional로 한번 감싸 준다. -> 쉽게 null safe하게 만들 수 있다. 기존코드 Member member = new Member("빙구", 33); if(member.getAddress() != null) { System.out.println(member.getAddress()); } 저렇게 null check를 해줘야 한다. Optional 목적 NullPointException이 나지않게 방어해주며, 해당 객체가 null일 경우에 대한 방안을 유도한다. Optional 사용법 1. Optional..
2021.01.16 -
자바8, 스트림
futurecreator.github.io/2018/08/26/java-8-streams/ Java 스트림 Stream (1) 총정리 이번 포스트에서는 Java 8의 스트림(Stream)을 살펴봅니다. 총 두 개의 포스트로, 기본적인 내용을 총정리하는 이번 포스트와 좀 더 고급 내용을 다루는 다음 포스트로 나뉘어져 있습니다. Java 스트 futurecreator.github.io futurecreator.github.io/2018/08/26/java-8-streams-advanced/ Java 스트림 Stream (2) 고급 이전 포스트에 이어서 Java 8의 스트림(Stream)을 살펴봅니다. 자바 8 스트림은 총 두 개의 포스트로, 기본적인 내용을 총정리하는 이전 포스트와 좀 더 고급 내용을 다루는..
2021.01.15