반응형
- Hash2021-04-10 20:11:43자바의 컬렉션에서 객체의 해시값을 사용하는 자료구조가 있다. 대표적으로 HashTable을 예로 오늘 설명하겠습니다~ 자,, 우선 해시? 해싱? Hash 해시란 임의의 데이터의 길이를 고정된 데이터의 길이로 변환하는 데이터 변환 기법중에 하나다. 이 변환 과정에서 사용하는 함수를 해시 함수라고 하고 변한하는 과정을 해싱이라고 한다. 그렇다면 왜 임의의 길이를 고정된 데이터의 길이로 변환할 필요가 있을까? 해시 함수의 키로 들어온 값으로 만든 해시 코드는 정수이기 때문에 배열 공간을 고정된 크기만큼 만들어둔 후(해시 버킷) 해시 코드를 배열의 크기로 나머지 연산 후 배열에 나누어 담을 수 있게 되면 이후 검색시 다이렉트로 검색이 가능하기 때문에 O(1)의 시간복잡도로 접근이 가능하다. 그런데 이 경우 객체..
- Listener 와 Adapter2021-04-10 15:50:57한 3달 전쯤인가 코틀린으로 안드로이드 프로그래밍을 간단하게 맛(?)만 봤는데 그 과정에서 프론트의 이벤트를 처리하는 코드가 많아졌고 이러한 이벤트를 처리하기 위한 이벤트 리스너 인터페이스를 구현해야하는데 그 과정에서 Override해야할 메서드가 너무 많아져 Adapter 클래스를 만들었는데 그걸 자바에서 간단하게 예시로 해보며 생각을 정리 해봤다. WebSocket에서 Listener을 사용해야하는 상황에 해당 인터페이스중 내가 사용하는 메서드가 1개일 경우 나머지 모든 메서드에 관해 Dummy값으로 채워 간단하게 사용하는게 Adapter라고 보면된다. 이럴 경우 따로 Listener를 구현하는 클래스를 만들어서 사용하는 메서드만 재정의하고 나머지는 dummy로 채워주자 인텔리제이 IDE가 자동으로 ..
- MultiPartFile 저장시 LocalDateTime 과 for문2021-04-07 18:44:34보통 파일 여러개를 서버에 저장할 때 파일명을 LocalDateTime의 밀리초 단위까지 (SSS) 받아서 지정후에 저장하는데 이 부분은 항상 까먹는다 파일 3개를 리스트로 받아 for문을 돌릴때 "yyyyMMddHHmmss"까지만 지정하게되면 for문 루프 도는 속도가 더 빨라서 받은 파일이 한 개만 저장되는데 "yyyyMMddHHmmssSSS"로 밀리초 단위까지 지정해주는것 잊지 말고 한번에 좀 성공하자,,, 실패하고 경로 string이 틀린줄 알고 10분 날렸다;
- equals는 일반 규약을 지켜 재정의하라2021-03-29 16:07:32우선 필요한 경우가 아니면 equals를 재정의하지 말고 필요하다면 equals와 hashCode는 왠만하면 인텔리제이나 다른 IDE에서 제공해주는 오버라이딩을 사용하자,, 클래스의 equals를 재정의하지 않는 것이 좋은 상황은 언제일까? 각 인스턴스가 본질적으로 고유하다. 인스턴스의 '논리적 동치성'을 검사할 일이 없다. 상위 클래스에서 재정의한 equals가 하위 클래스에도 딱 들어 맞는다. 클래스가 private이거나 package-private이고 eqauls 메서드를 호출할 일이 없다 각 인스턴스가 본질적으로 고유하다는 말은 해당 인스턴스가 어떠한 값을 표현하기 위한 목적이 아니라 동작하는 인스턴스를 표현하는 클래스에 해당한다. '논리적 동치성'이란 어떠한 문장 P와 Q가 존재하며 P가 Q의 ..
반응형