BackEnd(Java)(85)
-
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 -
error: Attempt to recreate a file for type study.querydsl.entity.Qxxx
Q-DSL 공부 중 Q객체를 생성하기 위해 compileQuerydsl을 실행하였다. 그런데 아래 오류 현상을 발견하게 되었음 원인 Q 객체 생성시 이미 폴더나 객체가 생성되어 있어 덮어 쓸 수 없을 때 발생하는 에러이다. 해결방법 따라서 build 되었을 때 생성되는 파일 .out으로 생성 되는 파일을 지우고 다시 gradle > other > compileQuerydsl 을 실행하게 되면 정상 작동함. 아래 폴더를 열면 끝까지 내려가면 문제되는 Q 객체를 찾을 수 있음. 그래서 삭제하면 됨 참고자료 https://kangwoojin.github.io/programing/query-dsl-setting-old/
2022.11.28 -
CompletableFuture
✅ 아래 내용들에 대해서 알아보자 - CompletableFutre? - CompletableFutre 사용법 CompletableFuture 비동기 메서드에 대한 결괏값등 많은 연산을 제공해 주는 API이다. Java5에 Future가 추가되면서 비동기 작업에 대한 결괏값을 반환받을 수 있게 되었다. 하지만 Future는 다음과 같은 한계점이 있었다. 외부에서 완료시킬 수 없고, get의 타임아웃 설정으로만 완료 가능 블로킹 코드(get)를 통해서만 이후의 결과를 처리할 수 있음 여러 Future를 조합할 수 없음 ex) 회원 정보를 가져오고, 알림을 발송하는 등 여러 작업을 조합하거나 예외 처리할 수 없음 Future는 외부에서 작업을 완료시킬 수 없고, 작업 완료는 오직 get 호출 시에 타임아웃으..
2022.11.22 -
@Async에 대한 이해
✅ 아래 내용들에 대해서 알아보자 - 비동기/동기, 블로킹/논블로킹 이해 - @Async 개념 및 사용법 - ThreadPoolExecutor 빈 등록 및 옵션 값 설정 @Aysnc를 이해하기 전에 먼저 비동기/동기, 블로킹/논블로킹 개념부터 이해를 해야한다.. 혹시 헷갈리거나 잘 모르시는 분들은 아래 블로그 참고해주시면 됩니다. https://inpa.tistory.com/entry/👩💻-동기비동기-블로킹논블로킹-개념-정리 👩💻 동기 & 비동기 / 블로킹 & 논블로킹 💯 완벽 이해하기 동기 & 비동기 vs 블로킹 & 논블록킹 개념 이 개념들을 처음 접하거나 컴퓨터 공학에 대해 잘 모르는 사람은 이 개념들이 서로 뭔가 연관이 있는 것으로 오해하기 쉽다. 아무래도 동기와 블록킹, inpa.tistory..
2022.11.21 -
전략 패턴
✅ 아래 내용들에 대해서 알아보자 - 전략 패턴이란? - 코드를 보면서 전략 패턴을 이해해보자 - 테스트 코드를 통해 검증하기 - 정리 전략 패턴 전략 패턴은 행위 패턴 중의 하나로써 변하지 않는 부분과 변하는 부분을 구분하여 변하지 않는 부분을 "Context"라는 곳에 두고, 변하는 부분을 "Strategy"라는 인터페이스를 만들고 해당 인터페이스를 구현하도록 해서 문제를 해결하는 방식이다. 전략 패턴에서 context는 변하지 않는 템플릿 역할을 하고, Strategy는 변하는 알고리즘 역할을 한다. 전략 패턴은 상속이 아닌 위임으로 문제를 해결한다. GOF 디자인 패턴에서 정의한 전략 패턴은 의도는 다음과 같다 알고리즘 제품군을 정의하고 각각을 캡슐화하여 상호 교환 가능하게 만들자. 전략을 사용하..
2022.10.10