왜 도커를 사용하나요? 스프링 애플리케이션의 서버 환경을 구축하기 위한 투두리스트 1. Ubuntu 설치하기 2. Java 11 설치하기 3. MySQL Database 설치하기 4. MySQL Schema 생성하기 5. 80 포트 열기 6. ... 위의 투두리스트를 따라하면서 단일 스프링 애플리케이션 서버를 구축했다고 가정해봅시다. 애플리케이션의 규모가 커지기 시작하면 하나의 서버만 운영하는 모놀리식 아키텍처로는 한계가 느껴지기 시작합니다. 서비스의 규모가 어느 지점에 다다르면 결국 단일 서버를 확장시켜야 합니다. 서버를 확장하기 위해 현재 운영 중인 서버와 똑같은 환경으로 서버를 하나 더 추가한다고 생각해봅시다. 두 번째 스프링 애플리케이션 서버도 투두리스트를 따라 직접 하나 하나 구축하고 있는데....
Item 4. 인스턴스화를 막으려거든 private 생성자를 사용하라. 자바를 사용해봤다면 java.utils.Arrays와 java.lang.Math 라이브러리를 본 적이 있으실 겁니다. 두 라이브러리의 공통점이 무엇일까요? 바로 정적 메서드만 제공하는 유틸리티 클래스라는 점입니다. java.lang.Math 라이브러리 사용 예시 import java.lang.Math; public static void main(String[] args) { int answer = Math.abs(5 - 7); System.out.println(answer); } Math (Java Platform SE 8 ) Returns the value of the first argument raised to the power ..
싱글턴이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말합니다. 사실 만능인 것처럼 보이는 이 싱글턴은 클라이언트 테스트를 더 어렵게 만드는 안티 패턴이기도 합니다. 싱글턴 생성 방식 싱글턴을 생성하는 방식은 두 가지가 존재합니다. 1. public static final 필드 방식의 싱글턴 public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() { ... } ... } 첫 번째 생성 방식에서 private 생성자는 INSTANCE 정적 인스턴스를 생성할 때 단 한 번만 실행이 됩니다. 첫 번째 생성 방식의 장점 1. 해당 클래스가 싱글턴임이 바로 드러난다. 2. 간결하다. 2. 정적 팩터리 방식의 ..
생성자에 선택적인 매개변수가 많을 때, 보통 어떻게 생성자를 작성하시나요? 대부분 매개변수의 개수를 다르게 하여 여러 개의 생성자를 사용하고 계실겁니다. class User { String name; String email; String password; String address; int age; boolean sex; public User(String name, String email, String password) { this.name = name; this.email = email; this.password = password; } public User(String name, String email, String password, String address) { this.name = name; t..
프록시 패턴 프록시 패턴은 특정 객체로의 접근을 제어하는 대리인(객체의 대변인)을 제공합니다. 클라이언트는 대리인인 프록시가 마치 진짜 객체라고 생각하고 데이터를 주고 받습니다. 클라이언트와 진짜 객체가 직접 데이터를 주고받을 수 없는 경우에 둘 사이의 접근을 제어하는 역할을 합니다. 프록시의 종류 1. 원격 프록시: 원격 객체로의 접근을 제어합니다. 2. 가상 프록시: 생성하기 힘든 자원으로의 접근을 제어합니다. 3. 보호 프록시: 접근 권한이 필요한 자원으로의 접근을 제어합니다. 구조 1. ServiceInterface: 프록시와 진짜 서비스 객체 모두 이 인터페이스를 구현해야 합니다. 프록시는 Service와 똑같은 형태로 위장할 수 있습니다. 2. Service: 진짜 작업을 처리하는 객체입니다...
상태 패턴 상태 패턴은 객체의 내부 상태가 바뀔 때마다 객체의 행동을 바꿀 수 있도록 도와주는 패턴입니다. 마치 객체의 클래스가 바뀌는 것처럼 보여줄 수 있습니다. 객체의 상태를 별도 클래스로 캡슐화하여 현재 상태를 나타내는 객체에게 행동을 위임합니다. 즉 내부 상태가 바뀔 때마다 행동이 달라진다는 사실을 쉽게 알 수 있습니다. 구조 Document(=Context): 모든 행동을 자체적으로 구현하는 대신, 현재 상태를 나타내는 상태 객체 하나를 참조해 그 상태 객체에게 행동들을 위임합니다. State: 모든 구상 상태 클래스들이 구현해야 하는 공통 인터페이스입니다. Draft(=ConcreateState): Document로부터 전달된 요청을 상태 별로 구현하여 처리합니다. 예제 책에서는 동전을 넣어 ..
- Total
- Today
- Yesterday
- linuxawk
- 버추억박스에러
- whatis
- 코테
- Baekjoon27219
- GitHubAPIforJava
- 백준
- virtualbox
- GithubAPI
- linuxgedit
- 백준27219
- linuxtouch
- api문서
- cat
- baekjoon
- E_FAIL
- 버추억박스오류
- 백준27211
- 리눅스cron
- Linux
- 쇼미더코드
- 사용자ID
- SELECT #SELECTFROM #WHERE #ORDERBY #GROUPBY #HAVING #EXISTS #NOTEXISTS #UNION #MINUS #INTERSECTION #SQL #SQLPLUS
- awk프로그램
- 리눅스
- Baekjoon27211
- cron시스템
- linux파일
- OnActivityForResult
- atq
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |