728x90

개발 288

[Java] 생성자 대신 빌더 사용하기

1. 점층적 생성자 패턴 - 정적 팩토리와 생성자는 매개변수가 많을 경우 적절히 대응하기 어렵다. - 과거에는 점층적 생성자 패턴 사용 public class Member { private String name; private String email; private int age; private String address; private String phone; public Member (String name, String email) { this(name, email); } public Member (String name, String email, int age) { this(name, email, age); } public Member (String name, String email, int age,..

디자인 패턴 (3)

1. 프록시 패턴과 프록시 서버 - 프록시 패턴 프록시 패턴은 대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객채 앞단의 인터페이스 역할을 하는 디자인 패턴 객체의 속성, 변환 등을 보완하며 보안, 데이터 검증, 캐싱, 로깅에 사용 이는 프록시 객체로 쓰이기도 하지만 프록시 서버로도 활용 * 프록시 서버에서의 캐싱: 캐시 안에 정보를 담아두고, 캐시 안에 있는 정보를 요구하는 요청에 대해 다시 저 멀리 있는 원격 서버에 요청하지 않고 캐시 안에 있는 데이터를 활용하는 것을 말한다. -> 불필요하게 외부와 연결하지 않기 때문에 트래픽을 줄일 수 있다는 장점이 있다. - 프록시 서버 프록시 서버는 서버와 클라이언트 사이에서 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 ..

개발/ETC 2023.01.04

디자인 패턴 (2)

1. 전략 패턴 - 전략 패턴은 정책 패턴이라고도 한다. - 객체의 행위를 바꾸고 싶은 경우 직접 수정하지 않고 전략이라고 부르는 캡슐화한 알고리즘을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만든느 패턴 - Java의 전략 패턴 예시 public class HelloWord { public static void main(String[] args) { ShoppingCart cart = new ShoppingCart(); Item A = new Item("item1", 100); Item B = new Item("item2", 200); cart.addItem(A); cart.addItem(B); // pay by A Card cart.pay(new ACard("test@email.com", "hi..

개발/ETC 2023.01.03

디자인 패턴 (1)

1. 개념 - 디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것 2. 싱글톤 패턴 - 싱글톤 패턴은 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴 - 하나의 클래스를 기반으로 여러 개의 개별적인 인스턴스를 만들 수 있지만, 그렇게 하지 않고 하나의 클래스를 기반으로 단 하나의 인스턴스를 만들어 이를 기반으로 로직을 만드는 데 쓰이며, 보통 데이터베이스 연결 모듈에 많이 사용 - 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어드는 장점이 있지만, 의존성이 높아진다는 단점이 있음 - JS에서 싱글톤 패턴 예시 const obj ..

개발/ETC 2023.01.02

[Java] 생성자 대신 정적 팩토리 메소드 사용하기

- 예시 코드 public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } - 장점 1. 이름을 가질 수 있다. 생성자와 매개변수만으로는 리턴될 객체의 특성을 제대로 설명하기 어렵다. 예를들면 // 생성자 public class Person { public Person() {} } // 정적 팩토리 메소드 public class Person { private static Person PERSON = new Person(); private Person() {} public static final Person getInstance() { return PERSON; } } 정적 팩토리 메소드는 Person 클래스의 인..

[Docker] 도커 컴포즈(Docker-compose) 작성하기

도커 컴포즈 작성하기 1. docker compose 파일 - docker compose 파일은 도커 애플리케이션의 서비스, 네트워크, 볼륨 등의 설정을 yaml 형식으로 작성하는 파일 - 구성요소 service network volume config secret - Service service는 여러 컨테이너를 정의하는데 사용됨 위 그림처럼 작성 시 'frontend'와 'backend'는 각 컨테이너의 이름이되고 컨테이너를 정의한다. - 컨테이너를 사용할 때 사용되는 키워드 image: 컨테이너의 이미지를 정의 build: 'image'를 활용하는 방식이 아닌 dockerfile의 경로를 지정해 빌드하여 사용하는 방법 dockerfile: 빌드할 dockerfile의 이름이 'Dockerfile'이 ..

개발/Docker 2022.12.31

[Docker] 도커파일(Dockerfile) 작성하기

도커파일(Dockerfile) 작성하기 1. Dockerfile 이란? - Dockerfile은 도커 이미지를 생성하기 위한 스크립트 파일 - 여러 키워드를 사용하여 Dockerfile을 작성하여 빌드를 쉽게 수행할 수 있다. 2. Dockerfile 키워드 - FROM from 키워드를 사용하여 base가 되는 image를 지정 주로 OS 이미지나 런타임 이미지를 지정 - RUN 이미지를 빌드할 때 사용하는 커맨드를 설정 - ADD 이미지를 호스트의 파일이나 폴더를 추가 이미지를 복사하려는 디렉토리가 없을 경우 자동 생성 - COPY 호스트 환경의 파일이나 폴더를 이미지 안으로 복사 'ADD'와 동일하게 동작하지만 URL을 지정하거나 압축파일을 자동으로 풀지 않음 - EXPOSE 이미지가 통신에 사용할..

개발/Docker 2022.12.30

[Docker] 컨테이너 통신하기

컨테이너 통신하기 1. 도커 컨테이너와 통신하기 - 도커 컨테이너는 기본적으로 독릭적인 환경에서 실행되기 때문에 컨테이너 밖에서 접근할 수 없다. - 컨테이너와 통신하기 위해서는 컨테이너를 가동시키면서 'p' 옵션을 사용하여 호스트의 포트와 컨테이너의 포트를 설정해야 한다. -p [host_port]:[container_port] - 이 설정은 호스트에서 사용 중인 포트와 겹치지 않아야 한다. - 예시 docker run --name test1 -d httpd docker run --name test2 -d -p 8080:80 httpd /* * --name test1 : test1이라는 이름으로 컨테이너 생성 * -d : 백그라운드로 동작 * -p 8080:80 : 호스트의 포트는 8080, 컨테이너의..

개발/Docker 2022.12.29

[Spring] 스프링 배치(Spring Batch) 가이드 따라가기 (7)

스프링 배치 가이드 - 지난 포스팅에서 튜토리얼 보고 따라해봤는데, 이번에는 개념부터 천천히 공부해보자. - 책을 보고 공부하려 했으나, 스프링과 부트의 배치 사용 문법이 많이 달라 이동욱님의 블로그를 보고 공부했다. https://devhooney.tistory.com/140 [Spring] 스프링 배치(Spring Batch) 가이드 따라가기 (5) 스프링 배치 가이드 - 지난 포스팅에서 튜토리얼 보고 따라해봤는데, 이번에는 개념부터 천천히 공부해보자. - 책을 보고 공부하려 했으나, 스프링과 부트의 배치 사용 문법이 많이 달라 이동욱 devhooney.tistory.com 1. ItemProcessor - ItemProcessor는 Reader에서 넘겨준 데이터를 개별 건으로 가공하고 처리한다. -..

[Docker] 컨테이너 구조 및 커맨드 사용법

컨테이너 구조 및 커맨드 사용법 1. 도커 컨테이너 구조 - 도커 컨테이너는 컨테이너 레이어와 이미지 레이어로 구성 - 컨테이너 레이어는 읽기/쓰기 모두 가능한 계층으로 최상단 레이어에 추가된다. - 컨테이너를 실행하고 진행하는 변경사항은 이 계층에 저장된다. - 이미지 레이어는 읽기 전용 계층으로 다른 컨테이너와 공유할 수 있다. - 컨테이너 레이어는 다른 컨테이너가 공유하지 않는 계층이기 때문에 위 그림처럼 이미지 레이어를 공유하고 각각 컨테이너 레이어를 공유한다. => 이미지 레이어를 공유하고 있기 때문에, 용량을 절약하고, 컨테이너마다 동일한 성능을 유지할 수 있다. 2. 도커 명령어 구조 - 도커의 모든 명령어는 'docker'로 시작하며 어떤 대상에게 명령어를 실행할 것인지 구분하면 보기 쉽다..

개발/Docker 2022.12.21
728x90