본문 바로가기

분류 전체보기

(268)
깃 브랜치 전략 (Git-flow , GitHub-flow) 깃 브랜치 전략 여러 개발자가 하나의 저장소를 사용하는 환경에서 효과적으로 활용하기 위해 나온 work-flow 브랜치의 생성, 삭제 병합 등 git 구조를 이용해서 혼란을 줄이며 관리하는 역할을 한다 > 브랜치 생성에 규칙을 만들어 협업을 유연하게 하는 방법론 브랜치 전략이 없으면? 어떤 브랜치가 최신 브랜치인지? 어디에 push를 해야할지? 배포 버전은 어떤걸 써야 하나? 핫픽스는 어떤 브랜치를 기준으로 해야하나? Git-flow 위 사진과 같이 Git-flow 는 5가지 브랜치가 존재한다 그 중 가장 중심이 되는 메인 브랜치는 master과 develop 브랜치이며, 이 두 브랜치는 무조건 있어야 한다. 나머지 merge시 사라지는 보조 브랜치는 feature, release, hotfix 3가지 ..
Filter, Interceptor, AOP 왜 쓰는가? 이전 글 AOP와 같이 공통적으로 처리할 일들을 따로 빼서 관리하기 위해 사용한다. 이러한 공통 업무를 프로그램 전 후에서 자동으로 처리할수 있는 것 3가지가 Filter, Interceptor, AOP 이다 적용순서 Filter -> Interceptor -> AOP -> Interceptor -> Filter 순으로 1. 서버를 실행시켜 서블릿이 올라오는 동안 (FIlter) init이 실행되고 doFilter 실행 2. Dispatcher Servlet이 실행된 후, 컨트롤러에 들어가기 전에 (Interceptor) preHandler 실행 3. 컨트롤러에서 나와 postHandler, after Completion, doFilter 순으로 진행이된다 4. 종료 시 destroy가 실행..
프록시 패턴 (Proxy Pattern) @Transactional 프록시 패턴이란? (Proxy - 대변자) 객체를 감싸고있는 객체. 누군가를 대신하여 그 역할을 수행하는 존재이다. 누군가에게 어떠한 일을 대신 시켜서 처리하는 것 어떠한 객체를 사용할대 직접 참조하는 것이 아니라, 프록시 객체가 원래 객체를 감싸서 client의 요청을 처리하게 한다. (인터페이스 역할) 프록시 패턴 사용이유 접근 권한을 부여할 수 있다 부가 기능을 추가할 수 있다. 어떤 객체를 사용할 때 직접적으로 참조하지 않고 해당 객체를 대항하는 객체를 통해 접근하면 참조하는 객체가 메모리에 존재하지 않아도 기본적인 정보를 참조하거나 설정 할 수 있다. 프록시 패턴의 장점과 단점 장점 전처리와 후처리 사용에 용의하다 사이즈가 큰 객체가 로딩되기 전에도 프록시를 통해 참조 할 수 있다 단점 객체를 ..
AOP (Aspect Oriented Programming) AOP (관점 지향 프로그래밍) 란? 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법 Aspect를 통해 위 공통 로직들을 모듈화 하고 어디에서 사용할지 정의및 관리한다 반복되거나 중복되는 부분들을 분리하여 각 관점(Aspect) 을 기준으로 모듈화 (즉 AOP : Aspect로 모듈화하고 핵심 비지니스 로직에서 분리하여 재사용 한다) 흩어져 있는 부분을 aspect로 모듈화 시킨 것. 그리고 모듈화 시킨 Aspect를 클래스에 어느 곳에 사용해야 하는지만 정의해주면 된다 AOP 주요 용어 Aspect : 흩어진 관심사를 모듈화 한 것 (AOP의 기본 모듈) Advice : 실질적으로 어떤 일을 할 지 정의한 것 (구현체) Pointcut : 어디에 적용해야 하는지 정의한 것 Target : A..
1024 Java 11 변경점 알아보기 제네릭 spring - filter interceptor aspect
docker - zookeeper - KAFKA 참고 (KAFKA CLI) docker-compose.yml 파일 version: "3" services: zookeeper: image: "bitnami/zookeeper:latest" ports: - "2181:2181" environment: - ALLOW_ANONYMOUS_LOGIN=yes kafka: image: "bitnami/kafka:latest" ports: - "9092:9092" environment: - KAFKA_BROKER_ID=1 - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092 - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092 - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 - ALLOW_PL..
[백준] 4179 - 불! (java) 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문 www.acmicpc.net 풀이 방법 (BFS) 다음과 같은 순서로 문제를 풀었다 1. J가 동서남북으로 이동할 수 있는 경로를 찾아 이동 위치를 찾고 큐에 넣는다 2. J가 전부 한번 이동 후 불이 번진다. (for문으로 이전에 넣은 불만 번지게 하도록 한다) 3. 1에서 넣은 위치가 불이 번진 위치라면 건너뛴다 J가 불을 피해서 미로의 끝에 도달하면 성공으로 처리하여 구현하였다. 문제를 풀면서 주의할 점은 1. J가 먼저 이동하고 그다음 불이 번진다. 2. J가 이동하고..
KAFKA KAFKA 출시 2011년 링크드인 웹 사이트에서 생성되는 로그를 처리하여 웹사이트 활동을 추적하는 것을 목적으로 개발되었다. KAFKA Publish-Subscribe 모델의 메시지 큐이다 대용량 실시간 로그처리에 특화되어 설계된 메시징 시스템으로 분산환경에 특화되어 있다. (분산 이벤트 스트리밍 플랫폼) 메시지 큐 란? 프로세스 또는 프로그램 간 데이터를 교환할때 사용하는 통신 방법중 하나. 메시지 지향 미들웨어를 구현한 시스템을 말한다. 메시지 지향 미들웨어(MOM : Message Oriented Middleware)는 비동기 메시지를 사용하는 다른 응용프로그램 사이의 데이터 송수신을 의미한다. 메시지 큐의 장점 - 비동기(Asynchronous): Queue에 넣기 때문에 나중에 처리할 수 있습..