일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- DI
- VUE
- cache
- 테스트 코드
- equals
- jwt
- AOP
- hashcode
- 생성자 주입
- java
- StringBuilder
- jpa
- MSA
- 재정의
- SQL
- 인덱스
- 열 속성
- DDL
- static
- 필드 주입
- select_type
- Test
- 조합
- docker
- redis
- KEVISS
- lambda
- stream
- Spring
- 바이너리 카운팅
- Today
- Total
목록Java (39)
백엔드 개발자 블로그
어설프게 설계된 컴포넌트와 잘 설계된 컴포넌트의 가장 큰 차이는 바로 클래스 내부 데이터와 내부 구현 정보를 외부 컴포넌트로부터 얼마나 정보은닉을 잘했느냐입니다. 정보은닉의 장점 시스템 개발 속도를 높인다. 여러 컴포넌트를 병렬로 개발할 수 있기 때문이다. 시스템 관리 비용을 낮춘다. 각 컴포넌트를 더 빨리 파악하여 디버깅할 수 있고, 다른 컴포넌트로 교체하는 부담도 적기 때문이다. 정보 은닉 자체가 성능을 높여 주지는 않지만, 성능 최적화에 도움을 준다. 소프트웨어 재사용성을 높인다. 외부에 거의 의존하지 않고 독자적으로 동작할 수 있는 컴포넌트라면 그 컴포넌트와 함께 개발되지 않은 낯선 환경에서도 유용하게 쓰일 가능성이 크기 때문이다. 큰 시스템을 제작하는 난이도를 낮춰준다. 정보은닉의 기본원칙 가장..
Comparable 인터페이스의 compareTo 메서드를 구현하게 되면 동치성 비교와 순서 비교가 가능해집니다. compareTo 메서드의 일반 규약 동치성 A == A 의 결과는 항상 true 이어야 합니다. 대칭성 A == B와 B == A 결과가 같아야 합니다. 추이성 A > B 이고 B > C 이면 A > C 이어야 합니다. equals vs compareTo 내부적으로 정렬하는 곳(TreeSet, TreeMap, Collections, Arrays)에는 compareTo를 사용하고, 아닌 곳에는 equals를 사용하여 동치성 비교를 합니다. 아래 예시를 봅시다. public static void main(String[] args) { // 스케일이 다른 숫자를 넣는다. BigDecimal bd..
자바에서는 클래스를 복제해도 되는 것을 명시하는 용도인 Cloneable 인터페이스를 제공하고 있습니다. Cloneable 인터페이스를 구현하여 clone()메서드를 재정의한다면 객체의 필드들을 하나씩 복사하여 객체를 반환할 수 있습니다. 하지만 이러한 clone메서드는 Cloneable이 아닌 Object에 선언되어 있어 해당 객체가 clone()을 제공한다는 보장이 없다는 단점이 있습니다. clone() 메서드의 일반 규약 객체의 복사본을 만들어서 반환한다. 그리고 다음을 따른다. x.clone() != x 의 조건은 참이어야 한다, x.clone().getClass() == x.getClass() 위의 조건은 참이겠지만 반드시 그래야 하는 것은 아니다. x.clone().equals(x) 위의 코드..
toString 재정의 해야하는 이유 Object의 기본 toString메서드는 기본적으로 클래스 이름@16진수로 표현한 해시코드를 반환합니다. 실제로 Object.java파일의 toString메서드를 보면 다음과 같습니다. public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } 실제로 Car를 출력하였을 때 Car@6b71769e라는 결과가 나온 것을 확인할 수 있습니다. public class Car { private String name; private int position; } public class Main { public static void main(String[] arg..