BackEnd(Java)/Java
-
Equasls, HashCode에 대해서 알아보자BackEnd(Java)/Java 2022. 12. 6. 18:24
✅ 아래 내용들에 대해서 알아보자 - 동일성 & 동등성 - Equals & HashCode 동일성 & 동등성 동일성이란 객체가 메모리에서 고유하게 식별되는 것을 의미한다. 즉, 객체의 참조값(주소값)이 같은 경우 두 객체는 동일한 객체이고 Java에서 == 연산자를 통해 비교할 수 있다. 동등성이란 객체가 가지고 있는 값이 같은 경우 두 객체는 동등한 객체라고 의미한다. 자바에서 equals() 메서드를 재정의하여 동등성을 비교할 수 있다. 동일성과 동등성 차이를 예시 코드를 보면서 이해해 보자. class anyClass{ int value; public anyClass(int value) { this.value = value; } //equals 재정의 @Override public boolean e..
-
Hash에 대해서 알아보자BackEnd(Java)/Java 2022. 12. 6. 18:18
✅ 아래 내용들에 대해서 알아보자 - 해싱(Hashing)이란 - 해쉬 함수 - 해시 테이블 - 해시 값 충돌 해결 방법 - 자바에서 충돌 해결 방법 해싱이란 해싱이란 임의의 길이의 값을 해시함수(Hash Function)를 사용하여 고정된 길이의 데이터로 변환하는 작업을 말한다. 위의 그림처럼 key 값들을 해쉬 알고리즘(hash functio)을 통해 해싱을 하여 그 값들을 해시값, 해시 코드라고 하는데 이 값들은 해시 테이블이라는 자료구조에 사용되며 매우 빠른 데이터 검색을 위해 사용되는 자료구조이다. 해시 함수 해시 함수는 암호학적/비 암호학적 해쉬함수로 구분된다. 암호학적 해시함수는 MD5, SHA계열 해시함수가 있으며, 비암호학적 해시함수로는 CRC32등이 있다. 간단한 해시 함수의 예로 in..
-
CompletableFutureBackEnd(Java)/Java 2022. 11. 22. 09:05
✅ 아래 내용들에 대해서 알아보자 - CompletableFutre? - CompletableFutre 사용법 CompletableFuture 비동기 메서드에 대한 결괏값등 많은 연산을 제공해 주는 API이다. Java5에 Future가 추가되면서 비동기 작업에 대한 결괏값을 반환받을 수 있게 되었다. 하지만 Future는 다음과 같은 한계점이 있었다. 외부에서 완료시킬 수 없고, get의 타임아웃 설정으로만 완료 가능 블로킹 코드(get)를 통해서만 이후의 결과를 처리할 수 있음 여러 Future를 조합할 수 없음 ex) 회원 정보를 가져오고, 알림을 발송하는 등 여러 작업을 조합하거나 예외 처리할 수 없음 Future는 외부에서 작업을 완료시킬 수 없고, 작업 완료는 오직 get 호출 시에 타임아웃으..
-
추상클래스 vs 인터페이스BackEnd(Java)/Java 2022. 9. 1. 12:37
✅ 아래 내용들에 대해서 알아보자 - 추상클래스란? - 추상클래스를 사용하는 이유 - 추상클래스 사용방법 - 인터페이스란? - 인터페이스를 사용하는 이유 - 인터페이스 사용방법 추상클래스란 추상 클래스란 A, B, C 클래스들 간에 비슷한 필드와 메서드를 공통적으로 추출해 만들어진 클래스이다. 자동차 클래스로 예를 들면 자동차 제조사마다 디자인, 모양, 크기 등은 다르겠지만 엑셀, 브레이크, 핸들, 와이퍼 등의 공통적인 기능들이 존재한다. 이러한 공통적인 기능(추상 메서드)을 추상 클래스 안에서 관리하게 된다. 실제 BMW, 기아, 현대자동차들이 실체가 될 것이다. 따라서, 실체클래스는 실제 객체를 생성할 수 있고 구체적이지만 추상클래스는 실체 클래스의 공통적인 부분을 추출해 규격을 잡아놓은 클래스이고 ..
-
call by value? call by reference?BackEnd(Java)/Java 2022. 8. 22. 23:53
✅ 자바의 메서드 매개변수 전달 방식에 대해서 알아보자 자바를 공부하던 도중에 자바에서 메서드 매개변수 전달 방식에 대해서 궁금하게 되었다. 자바는 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..
-
valueOf, parseInt 비교BackEnd(Java)/Java 2022. 4. 7. 16:34
String -> Integer 형변환을 하는 함수(valueOf, parseInt) 차이점을 비교해보자. 두 함수 모두 parseInt를 호출한다는 공통점이 있다. parseInt는 기본형 타입(Primitive Type)을 리턴한다. 기본형 타입을 리턴하므로 산술 연산이 가능하다. valueOf는 참조형 타입(Reference Type)을 리턴한다. int의 Wrapper 클래스인 Interger를 반환하므로 산술 연산이 불가능함. 정리 parseInt valueOf 음수 인식 가능 음수를 인식 불가능 int형 반환(Primitive Type) Integer 객체 반환(Reference Type) 공통점 : paserInt 함수를 호출함 참고자료 https://m.blog.naver.com/PostV..
-
JAVA Optional 잘쓰기BackEnd(Java)/Java 2022. 4. 4. 15:33
자바 Optional에 대해서 찾아보다가 좋은 블로그를 발견하게 되었다.(링크) 깔끔하게 정리되어서 참고하기 좋다. 정리하자면 isPresent()-get() 대신 orElse()/orElseGet()/orElseThrow() orElse(new ...) 대신 orElseGet(() -> new ...) 단지 값을 얻을 목적이라면 Optional 대신 null 비교 Optional 대신 비어있는 컬렉션 반환 Optional을 필드로 사용 금지 Optional을 생성자나 메서드 인자로 사용 금지 Optional을 컬렉션의 원소로 사용 금지 of(), ofNullable() 혼동 주의 Optional 대신 OptionalInt, OptionalLong, OptionalDouble