일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 머신러닝
- CRD
- Microservice
- kubernetes
- Spring
- spring microservice
- java
- 헬름
- Algorithm
- Stress test
- Adapter 패턴
- MSA
- MySQL
- 클라우드 네이티브
- nGrinder
- 클라우드 네이티브 자바
- decorator 패턴
- 쿠버네티스
- Semaphore
- 자바
- 동기화
- devops
- 마이크로서비스
- 익명클래스
- ansible
- ingress
- cloud native
- Kotlin
- 코틀린
- cloud native java
- Today
- Total
목록Foundation (12)
카샤의 만개시기
Command 패턴은 명령(command)를 객체화하여 특정 객체에 명령을 내리는 패턴이다. Command 패턴은 Invoker(발동자), Command(명령), Receiver(수신자)로 구성된다. Invoker(발동자): 커멘드을 가지고 있으며 수신자에게 커멘드를 요청한다 Command(명령): 특정 작업 Receiver(수신자): 발동자로부터 수신한 커멘드를 수행한다. 예제 스위치로 전등을 껏다 키는 예제를 살펴보자. 스위치는 Invoker가 되고, Light는 Receiver가 된다. 마지막으로 On/Off 명령은 Command가 된다. public interface Command { void execute(); }// Command (명령) public class LightOffCommand i..
Decorator 패턴은 인터페이스를 바꾸지 않고 책임(기능)만 추가하는 것이다. Adapter 패턴은 인터페이스를 변경해서 클라이언트에서 필요로 하는 인터페이스로 적응시키기 위한 용도로써 호환성을 위해 사용된다. 결론 decorator 패턴은 기존의 객체를 장식하는데 사용하고 adapter 패턴은 새로운 인터페이스를 추가하는 용도 링크 Decorator 패턴 : https://skasha.tistory.com/65 Adapter 패턴 : https://skasha.tistory.com/66
데코레이터 패턴은 인터페이스를 바꾸지 않고 책임(기능)만 추가하여 확장하는 패턴이다. 대표적인 예제로는 Reader와 BufferedReader가 있다. BufferedReader는 Reader 유틸에 버퍼의 기능을 확장한 것이다. 우리는 글자를 꾸미는 예제를 만들어보자. public interface Print { String print(); }public class OriginPrint implements Print { @Override public String print() { return "design pattern"; } }Print 인터페이스를 상속받아 design pattern을 출력하는 print()함수를 만들었다. public class StarPrint implements Print {..
어댑터 패턴은 인터페이스를 변경해서 클라이언트에서 필요로 하는 인터페이스로 적응시키기 위한 용도로 사용됩니다. (호환성) 안드로이드 개발을 할때 어댑터 패턴을 많이 사용하기 때문에 예제를 리스트뷰로 준비하였습니다. 예제의 요구사항은 기존의 ListView를 수직 혹은 평행으로 스크롤이 가능한 리스트뷰로 확장 하는 ListView를 만드는 것입니다. public class ListView { public void printView(String str) { System.out.println(str); } }view를 print하는 기존 기능에 충실한 listview가 있다. public interface Scroller { void scroll(); }그리고 스크롤 기능을 구현하도록 강제하는 인터페이스를 만..
GoF 책에서 퍼사드 패턴에 대하여 다음과 같이 소개합니다. 하위 시스템의 인터페이스 세트에 일관된 인터페이스를 제공하는 것또한 헤드 퍼스트 디자인 책에서는 다음과 같이 소개합니다. 퍼사드 패턴은 하위 시스템의 복잡도를 감추는 동시에 그 전체 기능을 사용하기 쉬운 인터페이스로 제공한다이해를 돕기 위해 예제를 통해 알아보자. 나는 오늘 영화관에서 32만원의 수익을 낸 직원에게서, 좌석이 100여 좌석이 있고 가격은 10000원인 '어벤져스' 영화 티켓을 구입하여 상영관에 입장하여 영화를 보았다.마치 고등학생 때 풀던 영어 지문처럼 필요 이상의 내용들이 들어가 있다. 우리가 알고자 하는건 간단한다. 나는 '어벤져스' 영화를 보았다.퍼사드 패턴은 위의 지문을 아래 지문처럼 만드는것과 같다. 영화를 보는 행동에..
동시성 프로그래밍을 할때 트랜잭션 처리는 반드시 고려해야 할 사항이다. 하지만 데이터베이스 트랜잭션 범위를 넘어가는 문제가 발생하는 경우도 있다. 예를 들어 사용자 A와 B가 동시에 동일한 위키백과 내용을 열람하고 이를 수정할때, A가 먼저 수정완료 버튼을 누르고 그 이후에 B가 수정완료 버튼을 누르는 경우가 있을 수 있다. 그렇게되면 먼저 완료 버튼을 누른 A의 수정사항은 사라지고 나중에 완료한 B의 수정사항만 남는 현상이 일어난다. 이를 Second Lost Updates Problem(두 번의 갱신 분실 문제)라고 한다. 이 문제를 해결하기 위해서는 3가지 선택 방법이 존재한다. 마지막 커밋 인정하기 위에서 설명한것과 같이 A의 수정사항은 무시하고 마지막에 커밋한 B의 내용만 인정하는 방법으로 가장..
HTTP/1.1 1999년 출시 이후 지금까지 가장 많이 사용되고 있는 프로토콜. 기본적으로 Connection당 하나의 요청을 처리 하도록 설계되어 동시 전송이 불가능하고 요청과 응답이 순차적으로 이루어짐. HTTP 문서 안에 포함된 다수의 리소스 (Images, CSS, Script)를 처리하려면 요청할 리소스 개수에 비례해서 Latency(대기 시간)는 길어짐. HTTP/1.1 단점 HOL (Head Of Line) Blocking - 특정 응답의 지연 HTTP/1.1의 connection당 하나의 요청처리를 개선할 수 있는 기법중 pipelining이 존재하는데 이것은 하나의 Connection을 통해서 다수개의 파일을 요청/응답 받을 수 있는 기법을 말하는데 이 기법을 통해서 어느정도의 성능 향..