소소한 개발일기
내일 더 나은 개발자가 되기 위해, 오늘을 기록합니다.
-
이펙티브 자바 3/E_동시성
동시성 78. 공유 중인 가변 데이터는 동기화해 사용하라. 핵심 정리 여러 스레드가 가변 데이터를 공유한다면 그 데이터를 읽고 쓰는 동작은 반드시 동기화해야 한다. 동기화하지 않으면 한 스레드가 수행한 변경을 다른 스레드가 보지 못할 수도 있다. 공유되는 가변 데이터를 동기화하는 데 실패하면 응답 불가 상태에 빠지거나 안전 실패로 이어질 수 있다....
-
Gof 디자인패턴_명령(Command) 패턴
명령(command) 패턴 의도 요청 자체를 캡슐화하는 것으로, 요청이 서로 다른 사용자를 매개변수로 만들고 요청을 대기시키거나 로깅하며, 되돌릴 수 있는 연산을 지원한다. 활용성 장점 수행할 동작을 객체로 매개변수화하고자 할 때 절차 지향 프로그램에서는 이를 콜백(callback) 함수, 즉 어딘가 등록되었다가 나중에 호출되는 함수를 사용해서 이러한 매개변수화를 표헌한다. 객체 지향 방식으로 이를 나타낸...
-
이펙티브 자바 3/E_예외
예외 예외를 제대로 활용한다면 프로그램의 가독성, 신뢰성, 유지보수성이 높아지지만, 잘못 사용하면 반대의 효과만 나타난다. 예외를 효과적으로 활용해보자. 69. 예외는 진짜 예외 상황에만 사용하라 핵심 정리 예외는 예외 상황에서 쓸 의도로 설계되었다. 정상적인 제어 흐름에서 사용해서는 안 되며, 이를 프로그래머에게 가용하는 API를 만들어서도 안 된다. 70. 복구할 수 있는 상황에서는 검사...
-
Gof 디자인패턴_책임 연쇄(Chain Of Responsibility) 패턴
책임 연쇄(Chain Of Responsibility) 패턴 의도 메시지를 보내는 객체와 이를 받아 처리하는 객체들 간의 결합도를 없애기 위한 패턴이다. 하나의 요청에 대한 처리가 반드시 한 객체에서만 되지 않고, 여러 객체에게 처리 기회를 줄 수 있다. 활용성 책임 연쇄 패턴은 다음의 경우에 사용한다. 하나 이상의 객체가 요청을 처리해야 하고, 그 요청 처리자...
-
Gof 디자인패턴_프록시(Proxy) 패턴
프록시(Proxy) 패턴 의도 다른 객체에 대한 접근을 제어하기 위한 대리자 역할을 하는 객체를 둔다. 동기 어떤 객체에 대한 접근을 제어하는 한 가지 이유는 실제로 그 객체를 사용할 수 있을 때까지 객체 생성과 초기화에 들어가는 비용 및 시간을 물지 않겠다는 것이다. 그래픽 객체를 문서 안에 넣을 수 있는 문서 편집기를 예로...