BackEnd(Java)/Java(10)
-
volatile
volatile 키워드는 자바에서 멀티스레드 환경에서 안전하게 값을 공유하기 위해 사용된다.주로 변수의 값이 여러 스레드 간에 일관성 있게 공유되어야 할 때 사용되는데 volatile을 사용하면 변수의 값을 메인 메모리에서 직업 읽고 쓰도록 보장하여 스레드 간 가시성 문제를 해결한다. volatile과 이중 검사 잠금 방식(Double Check Locking, DCL)이중 검사 잠금 방식에서는 singletonClass 변수를 volatile로 선언하여 스레드 간에 객체의 초기화 상태를 일관성 있게 공유할 수 있다. 자바 메모리 모델에서 객체가 초기화되는 과정은 여러 단계로 이루어지며, volatile 없이 사용할 경우 객체의 완전한 초기화가 끝나지 않았음에도 다른 스레드가 그 객체를 참조하는 문제가 ..
2024.10.01 -
Equasls, HashCode에 대해서 알아보자
✅ 아래 내용들에 대해서 알아보자 - 동일성 & 동등성 - Equals & HashCode 동일성 & 동등성 동일성이란 객체가 메모리에서 고유하게 식별되는 것을 의미한다. 즉, 객체의 참조값(주소값)이 같은 경우 두 객체는 동일한 객체이고 Java에서 == 연산자를 통해 비교할 수 있다. 동등성이란 객체가 가지고 있는 값이 같은 경우 두 객체는 동등한 객체라고 의미한다. 자바에서 equals() 메서드를 재정의하여 동등성을 비교할 수 있다. 동일성과 동등성 차이를 예시 코드를 보면서 이해해 보자. class anyClass{ int value; public anyClass(int value) { this.value = value; } //equals 재정의 @Override public boolean e..
2022.12.06 -
Hash에 대해서 알아보자
✅ 아래 내용들에 대해서 알아보자 - 해싱(Hashing)이란 - 해쉬 함수 - 해시 테이블 - 해시 값 충돌 해결 방법 - 자바에서 충돌 해결 방법 해싱이란 해싱이란 임의의 길이의 값을 해시함수(Hash Function)를 사용하여 고정된 길이의 데이터로 변환하는 작업을 말한다. 위의 그림처럼 key 값들을 해쉬 알고리즘(hash functio)을 통해 해싱을 하여 그 값들을 해시값, 해시 코드라고 하는데 이 값들은 해시 테이블이라는 자료구조에 사용되며 매우 빠른 데이터 검색을 위해 사용되는 자료구조이다. 해시 함수 해시 함수는 암호학적/비 암호학적 해쉬함수로 구분된다. 암호학적 해시함수는 MD5, SHA계열 해시함수가 있으며, 비암호학적 해시함수로는 CRC32등이 있다. 간단한 해시 함수의 예로 in..
2022.12.06 -
CompletableFuture
✅ 아래 내용들에 대해서 알아보자 - CompletableFutre? - CompletableFutre 사용법 CompletableFuture 비동기 메서드에 대한 결괏값등 많은 연산을 제공해 주는 API이다. Java5에 Future가 추가되면서 비동기 작업에 대한 결괏값을 반환받을 수 있게 되었다. 하지만 Future는 다음과 같은 한계점이 있었다. 외부에서 완료시킬 수 없고, get의 타임아웃 설정으로만 완료 가능 블로킹 코드(get)를 통해서만 이후의 결과를 처리할 수 있음 여러 Future를 조합할 수 없음 ex) 회원 정보를 가져오고, 알림을 발송하는 등 여러 작업을 조합하거나 예외 처리할 수 없음 Future는 외부에서 작업을 완료시킬 수 없고, 작업 완료는 오직 get 호출 시에 타임아웃으..
2022.11.22 -
추상클래스 vs 인터페이스
✅ 아래 내용들에 대해서 알아보자 - 추상클래스란? - 추상클래스를 사용하는 이유 - 추상클래스 사용방법 - 인터페이스란? - 인터페이스를 사용하는 이유 - 인터페이스 사용방법 추상클래스란 추상 클래스란 A, B, C 클래스들 간에 비슷한 필드와 메서드를 공통적으로 추출해 만들어진 클래스이다. 자동차 클래스로 예를 들면 자동차 제조사마다 디자인, 모양, 크기 등은 다르겠지만 엑셀, 브레이크, 핸들, 와이퍼 등의 공통적인 기능들이 존재한다. 이러한 공통적인 기능(추상 메서드)을 추상 클래스 안에서 관리하게 된다. 실제 BMW, 기아, 현대자동차들이 실체가 될 것이다. 따라서, 실체클래스는 실제 객체를 생성할 수 있고 구체적이지만 추상클래스는 실체 클래스의 공통적인 부분을 추출해 규격을 잡아놓은 클래스이고 ..
2022.09.01 -
call by value? call by reference?
✅ 자바의 메서드 매개변수 전달 방식에 대해서 알아보자 자바를 공부하던 도중에 자바에서 메서드 매개변수 전달 방식에 대해서 궁금하게 되었다. 자바는 call by value인가 아니면 call by reference인가? 먼저 call by value에 대해서 부터 알아보자! 위키피디아 정의에 따르면 Call-by-value In call-by-value, the argument expression is evaluated, and the resulting value is bound to the corresponding variable in the function (frequently by copying the value into a new memory region). If the function or p..
2022.08.22