
이따금 단순히 정적 메서드와 정적 필드만을 담은 클래스를 만들고 싶을 때가 생깁니다. 객체 지향적으로 사고하지 않는 이들이 종종 남용하는 방식이기 때문에 그리 곱게 보이지는 않지만, 분명 나름의 쓰임새가 있습니다. 예를 들어, java.lang.Math와 java.util.Arrays처럼 기본 타입 값이나 배열 관련 메서드들을 모아놓을 수 있습니다. 또한 java.util.Collections처럼 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드(혹은 팩터리)를 모아놓을 수도 있습니다. (자바 8부터는 이런 메서드를 인터페이스에 넣을 수 있습니다.) 마지막으로, final 클래스와 관련한 메서드들을 모아놓을 때도 사용합니다. final 클래스를 상속해서 하위 클래스에 메서드를 넣는 건 불가능하기 ..

싱글턴(singleton)이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말합니다. 싱글턴의 전형적인 예로는 함수(아이템 24)와 같은 무상태(stateless) 객체나 설계상 유일해야 하는 시스템 컴포넌트를 들 수 있습니다. 그런데 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트하기가 어려워질 수 있습니다. 타입을 인터페이스로 정의한 다음 그 인터페이스를 구현해서 만든 싱글턴이 아니라면 싱글턴 인스턴스를 가짜(mock) 구현으로 대체할 수 없기 때문이죠. 싱글턴을 만드는 방식 싱글턴을 만드는 방식은 보통 둘 중 하나입니다. 두 방식 모두 생성자는 private으로 감춰두고, 유일한 인스턴스에 접근할 수 있는 수단으로 public static 멤버를 하나 마련해둡니다. [1]. publ..

정적 패터리와 생성자에는 똑같은 제약이 하나 있습니다. 선택적 매개변수가 많을 때 적절히 대응하기 어렵다는 점입니다. 이런 클래스용 생성자 혹은 정적 팩터리는 어떤 모습일까요? 점층적 생성자(telescoping constructor) 패턴 프로그래머들은 이럴 때 점층적 생성자 패턴을 즐겨 사용했습니다. 필수 매개변수만 받는 생성자, 필수 매개변수와 선택 매개변수 1개를 받는 생성자, 선택 매개변수를 2개까지 받는 생성자 형태로 선택 매개변수를 전부 다 받는 생성자까지 늘려가는 방식입니다. 다음 코드가 그 예입니다. 지면상 선택 매개변수가 4개까지 늘어난 코드를 예로 들었습니다. public class NutritionFacts { private final int servingSize; // 필수 pri..

클라이언트가 클래스의 인스턴스를 얻는 전통적인 수단은 public 생성자다. 다음 코드는 boolean 기본 타입의 박싱 클래스(boxed class)인 Boolean에서 발췌한 간단한 예시 코드다. 이 메서드는 기본 타입인 boolean 값을 받아 Boolean 객체 참조로 변환해준다. package java.lang; public final class Boolean implements java.io.Serializable, Comparable { /** * The {@code Boolean} object corresponding to the primitive * value {@code true}. */ public static final Boolean TRUE = new Boolean(true); /..

보통 new 키워드를 사용해서 클래스 이름을 지정하여 인스턴스를 생성한다. 그러나 클래스 이름을 지정하지 않고 인스턴스를 생성할 때도 있다. 다음과 같은 경우에는 클래스로부터가 아닌 인스턴스를 복사해서 새로운 인스턴스를 만든다. [1]. 종류가 너무 많아 클래스로 정리되지 않는 경우 취급하는 오브젝트의 종류가 너무 많아서 각각을 별도의 클래스로 만들어 다수의 소스 파일로 작성하는 경우 [2]. 클래스로부터 인스턴스 생성이 어려운 경우 생성하고 싶은 인스턴스가 복잡한 작업을 거쳐 만들어지기 때문에 클래스로부터 만들기가 어려운 경우 ex) 그래픽 에디터에서 사용자가 마우스를 조작해서 만든 도형을 나타내는 인스턴스가 있다고 가정해보자. 사용자의 조작으로 인스턴스를 프로그래밍해서 만드는 것은 곤란하다. 사용자의..

Elastic Load Balancing(ELB, 로드 밸런서)은 앞서 나왔던 로드 밸런서의 역할을 하는 AWS 서비스입니다. 클라이언트의 요청을 직접 받고 로드 밸런서가 관리하는 서버들에게 요청을 골고루 전달해줍니다. 로드 밸런서도 일종의 서버지만 AWS에서 로드 밸런서의 기능을 하는 서버를 내부적으로 관리해주기 때문에 우리는 SSH로 직접 접속할수는 없습니다. 로드 밸런서가 받은 요청을 특정 인스턴스들 혹은 Auto Scaling 그룹으로 전달하도록 설정할 수 있습니다. 로드 밸런서는 너무 많은 요청을 처리하거나 정상적으로 동작하지 않는 서버에는 요청을 보내지 않습니다. Pricing 애플리케이션 로드 밸런서의 요금은 월 22$ 정도입니다. 네트워크 트래픽 분산—Elastic Load Balancin..

서버 내부에서 서비스할 수도 있지만 대부분 운영 환경에서는 여러 대의 서버 인스턴스로 서비스합니다. 많은 트래픽에 대응하고 서버에 장애가 생겨도 서비스가 안전하게 돌아갈 수 있게 하기 때문입니다. AWS Auto Scaling 그룹은 AWS에서 제공하는 자동 다중 서버 서비스입니다. 같은 사양, 같은 환경, 같은 코드를 가지고 있는 똑같은 EC2 인스턴스들의 묶음입니다. 똑같은 인스턴스들이 여러 대 존재할 수 있는 이유는 같은 AMI를 이용해서 만들어진 인스턴스들이기 때문입니다. 그리고 이 서비스는 인스턴스들의 수를 자동으로 늘리고 줄여줍니다. CPU 사용량 정책 예를 들어, 평균 CPU 사용량 정책에 따라 평소 EC2 3대로 요청을 처리하다가, 사용량이 많아져 10분동안 평균 CPU 사용량이 80% 이..

EC2(Elastic Compute Cloud)를 생성하기 위해 알아야 할 개념이 세 가지 있습니다. AMI(Amazon Machine Image) : EC2 인스턴스의 기반이 되는 이미지입니다. 보안 그룹(Security Group) : 보안을 위해 IP와 포트 번호를 이용해 정의해두는 서버 접속 규칙입니다. 키 페어(Key Pair) : 서버에 접속하기 위한 열쇠라고 생각하면 됩니다. EC2 인스턴스 생성 1. AWS 로그인 및 AWS 콘솔에 접속 https://ap-northeast-2.console.aws.amazon.com/console/home?region=ap-northeast-2 ap-northeast-2.console.aws.amazon.com 서울 리전을 선택한다. 2. EC2를 검색 ..
- Total
- Today
- Yesterday
- programmers
- Java
- Olympiad
- 클린 아키텍처
- kotest
- BOJ
- 백준
- Algorithm
- Spring
- 코테
- AWS
- BAEKJOON
- Kotlin
- 이팩티브 자바
- 테라폼
- Effective Java
- JPA
- 알고리즘
- C++
- 디자인패턴
- 프로그래머스
- kkoon9
- Spring Boot
- 클린 코드
- node.js
- 객체지향
- 이펙티브 자바
- 디자인 패턴
- 정규표현식
- MSA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |