
public final class Period { private final Date start; private final Date end; /** * @param start 시작 시각 * @param end 종료 시각; 시작 시각보다 뒤여야 한다. * @throws IllegalArgumentException 시작 시각이 종료 시각보다 늦을 때 발생한다. * @throws NullPointerException start나 end가 null이면 발행한다. */ public Period(Date start, Date end) { this.start = new Date(start.getTime()); this.end = new Date(end.getTime()); if(this.start.compareTo(t..

기본 직렬화 형태가 적합한 경우 객체의 물리적 표현과 논리적 내용이 같다면 기본 직렬화 형태라도 무방하다 기본 직렬화 형태가 적합하다고 결정했더라도 불변식 보장과 보안을 위해 readObject 메서드를 제공해야 할 때가 많다 직렬화 형태에 적합한 클래스 public class Name implements Serializable { /** * 성. null이 아니어야함 * @serial */ private final String lastName; /** * 이름. null이 아니어야 함. * @serial */ private final String firstName; /** * 중간이름. 중간이름이 없다면 null. * @serial */ private final String middleName; } 기..

Serializable 구현 클래스 선언에 implements Serializable만 붙이면 된다 Serializable 구현의 문제 Serializable을 구현하면 릴리스한 뒤에는 수정하기 어렵다 직렬화 형태도 하나의 공개 API 가 된다 기본 직렬화 형태에서는 private와 package-private 인스턴스 필드들 마저 api로 공개하는 꼴이 된다(캡슐화 깨짐) 직렬화가 클래스 개선을 방해한다 UID(명시하지 않으면 런타임시 자동으로 생성해줌)를 생성할때 클래스 멤버들이 고려한다 나중에 수정을 한다면 UID 변한다 버그와 보안 구멍이 생길 위험이 높다 생성자를 사용해서 만드는게 기본인데 기본 메커니즘을 우회하는 객체 생성 기법이다 기본 역직렬화를 사용하면 불변식 깨짐과 허가되지 않은 접근에 ..
- Today
- Yesterday
- Spring
- Redis
- Java
- iterable
- gslb
- reactive
- Serializable
- Design Pattern
- strategy
- 디자인패턴
- 부하테스트
- template
- object
- LAMBDA
- observable
- concurrency
- nosql
- template method
- jdk11
- Concurrecy
- 메인보드#asrock b650m #조립pc #후기이벤트
- 영속성
- in-memory
- Effective JAVA
- exception
- reactive stream
- JMeter
- Observer Pattern
- jvm
- Serialize
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |