분류 전체보기
Strategy 전략 프로젝트에 적용 해보기
문제사항 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) class MemberApiControllerTest { ... } 스프링 부트에서 통합 테스를 위해서 위처럼 랜덤한 포트를 배정하게 하면서 내장 redis를 사용하게 되면 여러 스프링 테스트 컨텍스트가 실행되면 EmbeddedRedis가 포트충돌 이를 위해서 레디스를 실행할때 사용가능한 포트를 찾고 이를 레디스에 할당하게 해야 합니다. 여기서 문제는 저의 컴퓨터는 윈도우이고 서버는 리눅스이기 때문에 포트를 찾는 로직이 달라집니다. window public Process executeGrepProcessCommand(int port) throws IOExcept..
Queue 구현 해보기 (자바)
1. 배열로 구현 public class ArrayQueue { int front; int rear; int capacity; T[] queue; @SuppressWarnings("unchecked") ArrayQueue(int capacity){ this.front = -1; this.rear = -1; this.capacity = capacity; queue = (T[]) new Object[this.capacity]; } public boolean isFull() { return (this.rear == this.capacity-1); } public boolean isEmpty() { if(front == rear) { front = -1; rear = -1; } return this.front ..
Stack 구현 해보기 (자바)
1. 배열을 통한 구현 import java.util.Arrays; public class ArrayStack { private static final int DEFAULT_CAPACITY = 16; private int top; private T[] stackArr; @SuppressWarnings("unchecked") public ArrayStack() { this.top = -1; this.stackArr = (T[]) new Object[DEFAULT_CAPACITY]; } @SuppressWarnings("unchecked") public ArrayStack(int size) { this.top = -1; this.stackArr = (T[]) new Object[size]; } public ..
springboot에서 redis 다루기
스프링 스타터를 통해서 프로젝트를 만들고 사용하지는 IDE에서 열어줍니다. 테스트 환경에서 embedded redis 사용하기 위해서 아래의 의존성을 추가해 줍니다. implementation 'it.ozimov:embedded-redis:0.7.2' redis을 repository로 사용하기 위해서 configuartion 설정을 해줍니다. Jedis, Lettuce만 현재 공식지원 Jedis가 거의 업데이트 되지 않음 두 라이브러리 성능 테스트(https://jojoldu.tistory.com/418) Spring Boot에서는 다음과 같이 기본 의존성인 lettuce - (기본 의존성이 lettuce인 이유: https://github.com/spring-projects/spring-session/..
2. 실습용 카프카 브로커 설치
1. 자바 다운로드 2. 카프카 패키지 다운로드 wget https://archive.apache.org/dist/kafka/2.5.0/kafka_2.12-2.5.0.tgz 3. 패키지 압축 풀기 tar xvf kafka_2.12-2.5.0.tgz 4. 카프카 브로커 힙 메모리 설정 카프카 패키지의 힙 메모리는 브로커가 1G, 주키퍼가 512MB로 기본 설정되어 있습니다. 그런데 AWS EC2 프리티어의 경우 메모리가 1G로 카프카를 실행하면 메모리가 부족하여 에러와 함께 실행되지 않게 됩니다. 이 때문에 힙 머모리 사이즈를 미리 환경 변수로 사이즈를 조절해야 합니다. cd kafka_2.12-2.5.0/ export KAFKA_HEAP_OPTS="-Xmx400m -Xms400m" 위와 같이 터미널에서 ..
1. Kafka 간단 정리
위 그림처럼 애플리케이션 끼리 연결하는 파이프라인 개수가 많아지면서 복잡도가 올라가고 코드 및 버전 관리 등의 이슈가 발생하게 됩니다. 시간이 지나면서 파편화된 데이터 파이프 라인은 서비스를 운영하는데 치명적일 것이기 때문에 이를 개선하기 위해서 등장하게 됩니다. 쉽게 말해서 아래 그림처럼 만들려고 탄생한게 카프카죠. 카프카의 용도 메세지 처리 사용자의 웹 사이트 활동 추적 파이프라인 애플리케이션의 통계 집계 시간순으로 발생하는 이벤트를 저장해 필요한 곳으로 보냄 카프카의 동작 방식과 원리 기본적으로 메시징 서버로 동작 메세징 시스템 Producer, publisher : 데이터 단위를 보내는 부분 Consumer, subscriber : 토픽이라는 메시지 저장소에 저장된 데이터를 가져가는 부분 중앙에 ..
Kafka 공부 시작
네이버, 카카오 등 대기업에서 Kafka를 많이 쓴다고 해서 무슨 툴이지 라는 생각으로 검색을 해보다가 좀더 명확하게 알고싶다는 생각으로 kafka 책을 하나 구매하게 되었습니다. 취업 준비 중이고 클린코드 책도 아직 읽고 있어서 느리지만 책을 읽으면서 정리해 갈려고합니다 .ㅎ
State Pattern
어떤 행위를 수행할 때 상태에 행위를 수행하도록 위임 시스템의 각 상태를 클래스로 분리해 표현 각 클래스에서 수행하는 행위들을 메서드로 구현 외부로부터 캡슐화하기 위해 인터페이스를 생성하여 시스템의 각 상태를 나타나는 클래스로 실체화 시작과 정지라는 상태로 하는 간단한 예제 1. 상태 인터페이스 public interface State { public void doAction(Context context); } 2. 상태별 구현 클래스 public class StartState implements State{ @Override public void doAction(Context context) { System.out.println("start"); context.setState(this); } @Over..