분류 전체보기48 [아이템 4] 인스턴스화를 막으려거든 private 생성자를 사용하라 정적 필드나 정적 메서드만 가지고 클래스를 구성한다면 인스턴스를 생성할 필요가 없는 클래스가 된다. 이런 경우 private 생성자를 통해 인스턴스화를 막으면 된다. class UtilityClass { private UtilityClass() { throw new AssertionError("인스턴스 생성 방지"); } } 2021. 9. 30. [아이템 3] private 생성자나 열거 타입으로 싱글턴임을 보증하라 싱글톤(singleton)이란 인스턴스를 하나만 생성할 수 있는 클래스를 말한다. 책에서 소개하는 싱글톤 구현 방법을 간단히 보겠다. 1. public static final 필드 방식의 싱글턴 class Elvis_Field { public static final Elvis_Field INSTANCE = new Elvis_Field(); private Elvis_Field() { } } 2. 정적 팩터리 방식의 싱글턴 class Elvis_Method { private static final Elvis_Method INSTANCE = new Elvis_Method(); private Elvis_Method() { } public static Elvis_Method getInstance() { retur.. 2021. 9. 30. [아이템 2] 생성자에 매개변수가 많다면 빌더를 고려하라 책에서는 선택적 매개변수가 많은 클래스의 인스턴스를 생성하는데 점층적 생성자 패턴(telescoping constructor pattern)과 자바빈즈 패턴(JavaBeans pattern) 그리고 아이템 2의 주제인 빌더 패턴(Builder pattern)을 소개하고 있어 간단히 설명해 보겠다. 1. 점층적 생성자 패턴(telescoping constructor pattern) class NutritionFacts1 { // 필수 private final int servingSize; private final int servings; // 선택 private final int calories; private final int fat; private final int sodium; private fina.. 2021. 9. 28. [아이템 1] 생성자 대신 정적 팩터리 메서드를 고려하라 자바에서 인스턴스를 생성하는 대표적인 방법은 new 키워드를 사용해 생성자를 호출하는 것이다. 기본적으로 파라미터가 없는 디폴트 생성자를 제공하며, 상황에 따라 파라미터를 추가해 다양한 생성자를 만들 수 있다. 이펙티브 자바 1장에서는 정적 팩토리 메서드를 소개한다. 처음 정적 팩토리 메서드란 표현이 낯설었는데 개념은 간단하다. 인스턴스를 반환하는 static method이다. 책에서 소개하는 정적 팩토리 메서드의 장점 1. 이름을 가질 수 있다. 생성자의 이름은 클래스명과 동일하게 만들어야 한다. 하지만 method는 다양하게 작명이 가능하고, 오버로딩을 통해 같은 이름의 메서드도 여러 개 만들 수 있다. 2. 호출될 때마다 인스턴스를 새로 생성하지 않아도 된다. 예로 Boolean.valueOf() .. 2021. 9. 11. Scale-out 환경에서 Session 관리하기 Scale-out으로 서버를 확장하는 환경이라면 Session을 신경 써줘야 합니다. 예를들어 한 유저가 A 서버를 통해 로그인을 했는데, 다음 요청이 B 서버에 전달이 되어 또 다시 로그인을 하는 상황이 오기 때문입니다. Scale-out 환경에서 Session을 관리하는 기법을 간단히 소개하겠습니다. 1. Sticky - 처음 접속한 서버에 계속 요청하는 방식입니다. - 간단한 해결책이지만 단점이 존재합니다. 바로 특정 서버에 업무가 과중될 수 있는데요. 새로운 서버가 추가 되었어도 기존의 클라이언트는 기존의 서버에만 요청을 처리 하기 때문입니다. 또는 기존의 서버가 고장나서 복구 시켰을 때에도 복구된 서버은 요청을 못받고 놀 수 가 있는 것이지요. 2. Cluster - 모든 서버의 세션을 복사하는.. 2021. 7. 29. Scale-Up과 Scale-Out 알아보기 운영 중인 서비스가 확장을 하거나 클라이언트의 수가 대폭 증가하게 된다면 서버의 성능을 향상시킬 필요가 있습니다. 서버의 성능을 향상하는 Scale-Up과 Scale-Out이라는 방법을 알아보겠습니다. Scale-Up 서버의 CPU, RAM, DISK와 같은 H/W를 교체 함으로서 성능을 향상시키는 방법입니다. 수직 스케일로 불리기도 합니다. 장점 H/W 부품만 교체하면 되므로 구축, 설계가 단순합니다. 별도의 운영비용의 변화가 크게 없습니다. 고성능 어플리케이션 구축이 가능합니다. 단점 성능 확장에 한계가 있습니다. 성능 증가 대비 비용이 많이 듭니다. 한대의 서버에 부하가 집중되므로 장애 발생률이 증가됩니다. Scale-Out 서버의 수를 늘려 서버가 처리해야 할 작업을 분산시켜 서버의 성능을 향상시.. 2021. 5. 31. 이전 1 ··· 5 6 7 8 다음 728x90