Home
Younghwani
Cancel

[Effective Java] Item89. 인스턴스 수를 통제해야 한다면 readResolve보다는 열거 타입을 사용하라!

Item89. 인스턴스 수를 통제해야 한다면 readResolve보다는 열거 타입을 사용하라! 싱글턴 직렬화의 문제점 싱글턴 패턴을 사용해 바깥에서 생성자를 호출하지 못하도록 하여 인스턴스가 오직 하나만 만들어짐을 보장할 수 있다. 하지만 아이템 3에서 이야기했든 선언에 implements Serializable을 추가하는 순간 싱글턴이 ...

[Effective Java] Item88. readObject 메서드는 방어적으로 작성하라!

Item88. readObject 메서드는 방어적으로 작성하라! 불변클래스의 직렬화 문제 아이템 50에서 불변인 날짜 범위 클래스를 만드는 데 가변인 Date 필드를 이용해서, 불변식을 지키고 유지하기 위해 생성자와 접근자에서 Date 객체를 방어적으로 복사하느라 코드가 상당히 길어졌다. public final class P...

[Effective Java] Item87. 커스텀 직렬화 형태를 고려해보라!

Item87. 커스텀 직렬화 형태를 고려해보라! Intro 개발 일정에 쫓기는 상황에서는 현재 릴리즈에서는 API 설계에 노력을 집중하여 동작만 하면 되도록 만들어 놓는 것이 나을 것이다. 하지만 클래스가 Serializable을 구현하고, 기본 직렬화 형태를 사용한다면 얘기가 다르다. 현재의 릴리즈에 영원히 발을 묶이게 되기 때문이다. ...

[Effective Java] Item86. Serializable을 구현할지는 신중히 결정하라!

Item86. Serializable을 구현할지는 신중히 결정하라! Intro 어떤 클래스의 인스턴스를 직렬화 하려면 클래스 선언에 implements Serializable만 덧붙이면 된다. 너무나도 쉽게 적용 가능하다. 직렬화 적용이 쉽기에 직렬화를 지원하기란 손쉬워 보인다. 하지만 그렇지 않다. 아주...

[Env] 사용중인 포트 찾아서 죽이기

[Env] 사용중인 포트 찾아서 죽이기 포트번호를 사용하는 프로세스 찾기 lsof -i:PORT_NUM 프로세스 죽이기 kill -9 PID

[Effective Java] Item85. 자바 직렬화의 대안을 찾으라!

Item85. 자바 직렬화의 대안을 찾으라! 객체 직렬화 자바가 객체를 바이트 스트림으로 인코딩하고(직렬화) 그 바이트 스트림으로부터 다시 객체를 재구성하는(역직렬화) 매커니즘이다. 직렬화된 객체는 다른 VM에 전송하거나 디스크에 저장한 후 나중에 역직렬화가 가능하다. 직렬화는 여러 위험을 품고 있고, 이러한 위험을 알아두고, 그 위험...

[Effective Java] Item84. 프로그램의 동작을 스레드 스케줄러에 기대지 말라!

Item84. 프로그램의 동작을 스레드 스케줄러에 기대지 말라! Intro 여러 스레드가 실행 중이면 운영체제의 스레드 스케줄러가 어떤 스레드를 얼마나 오래 실행할지 정한다. 정상적인 운영체제라면 이 작업을 공정하게 수행한다. 다만 구체적인 스케줄링 정책은 운영체제마다 다를 수 있다. 따라서, 잘 작성된 프로그램이라면 이 정책에 좌지우...