1. 퍼사드 패턴퍼사드 패턴의 목적은 클라이언트가 사용해야 하는 복잡한 서브 시스템 의존성을 간단한 인터페이스로 추상화하는 구조적 패턴이다. 코드 작업을 위해서는 객체 초기화, 종속성 관계 추적, 메서드 실행 순서에 관한 내용에 관해 이해해야 한다. 여러 비즈니스 로직들의 세부 구현 사항을 알고 있다면 코드를 이해하고 유지 관리하기 어려워 추상화가 필요하다. 이를 해결하기 위한 방법이 퍼사드 패턴이다. 퍼사드를 사용하는 이유는 loosely coupling 이다. tight coupling 은 해당 코드를 변경하기 어렵고, 변경 이유도 많고, 테스트도 어렵다. 이를 loosely coupling 을 통해 변경에 유연하고, 테스트하기 쉬운 코드로 작성하기 위함이다. 추상화 또한 이와 관련된 내용이며 세부 ..
java
1. 커맨드 패턴(command pattern)커맨드 패턴은 호출자(클라이언트 또는 호출자) 와 수신자(작업 수행 개체)에서 분리(decoupling) 하여 유연성과 확장성을 제공하는 패턴이다. 즉, 호출자의 코드를 변경하지 않고 다양한 매개변수를 사용해 다양한 명령을 생성할 수 있다. 요청을 캡슐화해서 해당 요청 안에서 수행할 동작을 설정하고 수신자를 호출할 때 호출할 행동과 필요한 파라미터에 관한 모든 정보들을 커맨드(command) 라는 인터페이스 안으로 캡슐화하기 때문에 기능을 재사용할 수 있다. 커맨드 패턴의 OCP 을 실현할 수 있는 장점이 있다. 호출자 쪽의 코드가 변경되지 않으며 기능(command) 캡슐화 및 추가할 수 있기 때문이다. 하지만, 기능(command) 가 증가할수록 복잡도..
1. 책임 연쇄 패턴(Chain of Responsibility pattern)책임 연쇄 패턴은 핸들러들의 체인(사슬)을 따라 요청을 전달할 수 있게 해주는 행동 디자인 패턴이다. 각 핸들러는 요청을 받으면 요청을 처리할지 또는 체인의 다음 핸들러로 전달할지 결정한다. 책임 연쇄 패턴을 사용하면 SRP 를 지킬 수 있다. SRP 는 객체는 단 하나의 책임을 가져야 한다는 원칙이다. 즉, 변경되어야 할 이유 또한 한가지여야 한다는 의미이다. 책임 연쇄 패턴을 사용하면 각 핸들러에게 책임을 맡기고 핸들러 책임 외에는 다른 핸들러에게 위임하기 때문에 SRP 를 지킬 수 있다. 책임 연쇄 패턴은 요청을 보내는 주체와 요청을 처리하는 주체를 분리하는 패턴으로 요청을 보내는 주체가 요청을 처리하는 핸들러가 구체적인..
1. 싱글톤 패턴??인스턴스를 오직 한 개만 제공하기 위한 객체 생성을 위한 디자인 패턴이다. 2. 멀티쓰레드 환경에서의 동시성 문제 멀티쓰레드 환경에서는 경합 조건(race condition) 을 고려해야 한다. 특히 싱글톤의 경우에는 경합 조건에 의해 객체가 두 개 생성될 수 있다. 이를 방지하기 위해서는 동기화 메커니즘을 사용해야 하며 모니터(monitor) 기반의 synchronized 키워드를 사용해 임계 영역(critical section) 에 대해 접근을 제어할 수 있다. synchronized 을 사용 시에는 성능을 위해 임계 영역 범위를 최소화하는 것이 중요하다. double checked locking 은 멀티스레드 환경에서 객체 생성을 최적화하는 데 사용되는 소프트웨어 디자인 패턴이다..

컴퓨터는 실수를 표현하기 위한 방법은 다양하지만 대표적으로 고정 소수점(fixed point) 과 부동 소수점(floating point) 이다. 고정 소수점은 10진수를 2진수의 거듭 제곱 합으로 표현해 그대로 비트에 담아 사용하고, 부동 소수점은 2진수의 표현 방식과 비트를 사용하는 체계가 다르며 가장 널리 쓰이는 표준은 IEEE754 이다. IEEE754 는 normalization, 지수부 bias 추가 과정이 포함된다. 자바의 float 는 IEEE754 방식으로 관리되며, 1bit는 부호(sign), 8bit는 정수부(exponent), 23bit는 가수부(mantissa) 로 실수를 관리한다. 하지만 이 방식에는 단점이 존재한다. 고정 소수점, 부동 소수점 실수 부분에 관한 비..

이전에 GC 를 학습하면서 간단히 정리했던 내용1. Garbage Collector ??Garbage Collector 는 JVM 의 구성 요소 중 하나로 참조하고 있지 않는 객체를 메모리로 반환하는 역할을 하는 컴포넌트이다. 즉, 사용하지 않는 객체를 찾아 지우는 역할을 한다. Java 의 패러다임 중 하나인 "메모리를 자동으로 할당하고 할당 해제하므로 프로그램이 해당 작업에 부담을 느끼지 않는다." 는 취지에서 Garbage Collector 가 도입되었다. (3) Automatic Garbage Collection - Java automatically allocates and deallocates memory so programs are not burdened with that task. 2. 가..