일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- redis
- 인덱스
- DI
- 조합
- 테스트 코드
- Test
- Spring
- docker
- MSA
- java
- static
- StringBuilder
- 바이너리 카운팅
- KEVISS
- DDL
- AOP
- 생성자 주입
- 열 속성
- equals
- SQL
- lambda
- stream
- select_type
- 필드 주입
- VUE
- 재정의
- jwt
- cache
- jpa
- hashcode
- Today
- Total
목록전체 카테고리 (196)
백엔드 개발자 블로그
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/KC3Qh/btsGsgPdtXV/HbqG5iWQeBEE7IotKuUwlK/img.png)
Scale out을 하기 위해서는 요청 또는 데이터를 N개의 서버에 균등하게 나누는 것이 중요하다. 안정해시는 균등한 분배를 달성하기 위해 보편적으로 사용하는 기술이다. 해시 키 재배치(refresh) 문제 N개의 서버에 부하를 균등하게 나누는 보편적인 방법은 serverIndex = hash(key) % 서버의 개수 N 해시 함수를 사용하는 것이다. 해당 방법은 서버 풀(Server pool)의 크기가 고정되어 있을 때와 데이터 분포가 균등할 때 잘 동작한다. 하지만 서버가 추가되거나 삭제되면 키의 재분배가 필요해진다. 키의 재분배로 기존에 접속하던 서버와 다른 서버에 접속한다는 것은 대규모의 캐시 미스(cache miss)가 발생하게 된다. 안정 해시 안정 해시는 키의 재배치 문재를 효과적으로 해결하..
어설프게 설계된 컴포넌트와 잘 설계된 컴포넌트의 가장 큰 차이는 바로 클래스 내부 데이터와 내부 구현 정보를 외부 컴포넌트로부터 얼마나 정보은닉을 잘했느냐입니다. 정보은닉의 장점 시스템 개발 속도를 높인다. 여러 컴포넌트를 병렬로 개발할 수 있기 때문이다. 시스템 관리 비용을 낮춘다. 각 컴포넌트를 더 빨리 파악하여 디버깅할 수 있고, 다른 컴포넌트로 교체하는 부담도 적기 때문이다. 정보 은닉 자체가 성능을 높여 주지는 않지만, 성능 최적화에 도움을 준다. 소프트웨어 재사용성을 높인다. 외부에 거의 의존하지 않고 독자적으로 동작할 수 있는 컴포넌트라면 그 컴포넌트와 함께 개발되지 않은 낯선 환경에서도 유용하게 쓰일 가능성이 크기 때문이다. 큰 시스템을 제작하는 난이도를 낮춰준다. 정보은닉의 기본원칙 가장..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bj42IV/btsGrfpFxpw/X9tUSjkguyaw2zPcid8tpk/img.png)
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) 위의 코드..