Nulog
article thumbnail
[JAVA] JVM이란?
JAVA 2023. 7. 18. 10:32

JVM(JAVA Virtual Machine)? 자바로 작성한 소스 코드를 해석해 실행하는 별도의 프로그램이다. 요약하면, 자바 프로그램을 실행시키는 도구라고 할 수 있다. 프로그램 실행을 위해서는 CPU와 메모리 등 각종 컴퓨터 자원이 필요하다. 운영체제는 실행을 위한 가용 자원을 확인한 후 할당한다. 이 때, 프로그램이 실행을 위해 컴퓨터에 자원을 요청하는 방식이 운영체제마다 다르다. JVM은 프로그램이 운영체제와 관계없이 소통할 수 있도록 중간에서 통역가 역할을 한다. JVM의 구조 소스 코드 작성 후 실행 시, 컴파일러 실행 컴파일의 결과: Source Code -> Byte Code 이후 JVM은 운영체제로부터 소스 코드 실행에 필요한 메모리(Runtime Data Area)를 할당받는다. 클래..

article thumbnail
[JAVA] Thread(2) 동기화
JAVA 2023. 7. 18. 02:33

Thread(1) 스레드의 정의와 생성 방법 Thread(2) 동기화 Thread(3) 스레드의 상태와 실행 제어, 그리고 메서드 스레드 동기화 만약 멀티 스레드로 진행될 경우, 두 스레드가 병렬로 데이터에 접근한다. 즉 스레드의 작업을 통해 데이터가 변경됐을 때, 다른 스레드는 변경사항을 반영하지 않은 상태로 다시 데이터를 변경한다. 이러한 방식은 데이터 처리에 문제가 발생할 수 있다. 이러한 문제를 해결하기 위해 스레드 동기화가 필요하다 임계영역과 락 임계영역으로 설정된 코드 영역에서는 오로지 하나의 스레드만 코드를 실행할 수 있다. 락은 임계영역을 포함하고 있는 객체에 접근할 수 있는 권한을 가진다. 즉, 임계 영역으로 설정된 객체가 다른 스레드에 의해 작업이 이루어지고 있지 않다면, 어떤 스레드 ..

article thumbnail
[JAVA] Thread(1) 스레드의 정의와 생성 방법
JAVA 2023. 7. 18. 02:01

Thread(1) 스레드의 정의와 생성 방법 Thread(2) 동기화 Thread(3) 스레드의 상태와 실행 제어 프로세스와 스레드 (Process & Thread) 프로세스란? CPU에 의해 메모리에 올려져 실행중인 프로그램 프로그램은 자신만의 메모리 공간을 포함한 독립적인 실행 환경을 가지고 있다. 우리가 사용하는 프로그램 중 일부는 여러 프로세스 간 상호작용을 하는 것일수도 있다. 자바 JVM(Java Virtual Machine)은 주로 하나의 프로세스로 실행되며, 동시에 여러 작업을 수행하기 위해서 멀티 스레드를 지원하고 있다. 2) 스레드란? 프로세스 안에서 실질적으로 작업을 실행하기 위해 필요한 명령의 흐름을 말한다. 즉, 스레드는 하나의 코드 실행 흐름이다. 프로그램이 실행되기 위해 일하는..

article thumbnail
[JAVA] Stream (3) 최종 연산
JAVA 2023. 7. 17. 22:13

Stream이란? 배열, 컬렉션의 저장 요소를 하나씩 참조하여 람다식으로 처리할 수 있도록 해주는 반복자. List, Set, Map, 배열 등 다양한 데이터 소스로부터 Stream을 생성할 수 있다. 생성된 Stream은 풍부한 메서드를 이용해 데이터 소스를 표준화된 방법으로 처리할 수 있다. 특징 스트림 처리과정은 생성-중간 연산-최종 연산의 세 단계 파이프라인으로 구성될 수 있다. 원본 데이터 소스를 변경하지 않는다. (Read-only) 일회용이다. (Onetime-only) 스트림은 내부 반복자이다. Stream(1) Stream 생성 Stream(2) 중간 연산 Stream(3) 최종 연산 Stream 최종 연산 기본 집계 count() 모든 Stream에서 사용할 수 있다. import ja..

article thumbnail
[JAVA] Stream(2) 중간연산
JAVA 2023. 7. 17. 22:09

Stream이란? 배열, 컬렉션의 저장 요소를 하나씩 참조하여 람다식으로 처리할 수 있도록 해주는 반복자. List, Set, Map, 배열 등 다양한 데이터 소스로부터 Stream을 생성할 수 있다. 생성된 Stream은 풍부한 메서드를 이용해 데이터 소스를 표준화된 방법으로 처리할 수 있다. 특징 스트림 처리과정은 생성-중간 연산-최종 연산의 세 단계 파이프라인으로 구성될 수 있다. 원본 데이터 소스를 변경하지 않는다. (Read-only) 일회용이다. (Onetime-only) 스트림은 내부 반복자이다. Stream(1) Stream 생성 Stream(2) 중간 연산 Stream(3) 최종 연산 Steram 중간 연산 중간연산을 여러 번 수행 할 수 있다. Filtering filter() 특정 조..

article thumbnail
[JAVA] Stream(1) Stream 생성하기
JAVA 2023. 7. 17. 22:07

Stream이란? 배열, 컬렉션의 저장 요소를 하나씩 참조하여 람다식으로 처리할 수 있도록 해주는 반복자. List, Set, Map, 배열 등 다양한 데이터 소스로부터 Stream을 생성할 수 있다. 생성된 Stream은 풍부한 메서드를 이용해 데이터 소스를 표준화된 방법으로 처리할 수 있다. 특징 스트림 처리과정은 생성-중간 연산-최종 연산의 세 단계 파이프라인으로 구성될 수 있다. 원본 데이터 소스를 변경하지 않는다. (Read-only) 일회용이다. (Onetime-only) 스트림은 내부 반복자이다. Stream(1) Stream 생성 Stream(2) 중간 연산 Stream(3) 최종 연산 Stream 생성 배열 Stream 생성 Arrays.stream(배열명), Stream.of(배열명) ..

article thumbnail
[JAVA] Lambda
JAVA 2023. 7. 15. 00:26

람다함수란? 람다 함수는 프로그래밍 언어에서 사용되는 개념으로익명 함수(Anonymous functions)를 지칭하는 용어이다 함수형 프로그래밍 기법을 지원하는 자바의 문법 요소이다. 객체지향보다는 함수지향 기법에 가깝다. 메서드를 수식(expression)과 같이 표현한다. 익명함수? 이름이 없는 함수이다. 메서드의 반환타입이나 이름을 생략하여 사용한다. 익명함수는 다른 객체들에 일반적으로 적용가능한 모든 연산을 지원한다. 이는 익명함수가 일급객체(First-class Object)이기 때문이다. 장점 코드가 간결해진다. 지연연산을 통해 불필요한을 연산 최소화한다. 멀티스레드를 활용해 병렬처리를 할 수 있다. 단점 재사용이 불가능하다. 필요 이상으로 남용하게 되면 가독성이 떨어질 수 있다. 람다 st..

article thumbnail
[JAVA] Annotation
JAVA 2023. 7. 14. 23:50

JAVA 및 여러 프레임워크에서 쓰이는 애너테이션의 개념에 대해 소개하려 한다. Annotation 소스 코드가 컴파일되거나 실행될 때, 컴파일러 및 다른 프로그램에 필요한 정보를 전달해주는 문법 요소 표준 애너테이션 : JDK에 내장된 일반 애너테이션 @로 시작하며, 클래스/인터페이스/필드/메서드 등에 붙여 사용한다. 애너테이션 설명 @Override 컴파일러에게 오버라이드한 메서드라는 것을 알린다. 컴파일러는 이 애너테이션을 입력받으면, 상위클래스의 동일한 이름의 메서드가 존재하는지 검사한다. 만약 없다면, 컴파일 에러가 발생한다. @Deprecated 다른 코드와의 호환성 문제로 삭제하기 곤란해 남겨두어야 하지만, 더 이상 사용을 권장하지 않을 때 사용한다. @SuppressWarnings 컴파일러..