전체 글

전체 글

    [백기선님과 함께하는 Live Study] 9주차) 예외 처리

    [백기선님과 함께하는 Live Study] 9주차) 예외 처리

    ✔️ 목표 자바의 예외 처리에 대해 학습하세요. ✔️ 학습할 것 (필수) 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 자바가 제공하는 예외 계층 구조 Exception과 Error의 차이는? RuntimeException과 RE가 아닌 것의 차이는? 커스텀한 예외 만드는 방법 💡 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 예외를 처리하는 가장 기본적인 구조는 try-catch-finally 구조를 가진다. ✏️ try 코드가 실행되는 부분으로, 예외를 잡아내기 위한 부분이다. 예외가 발생한다면, catch 블록으로 예외가 발생하지 않는다면 catch 블록을 실행하지 않고 finally 블록으로 이동해 코드를 실..

    [백준, Java] 9663번 : N-Queen

    [백준, Java] 9663번 : N-Queen

    🔗 문제 링크 https://www.acmicpc.net/problem/9663 😮 문제 해결 방법 첫 번째 행부터 차례로 모든 배치에 퀸을 놓아보는 방식의 완전탐색 문제이다. 퀸을 배치하기 전에 이전 행에 놓인 퀸 들이 움직일 수 없는 위치에 놓아야 하기 때문에 행 마다 퀸을 배치하면서 이전 행의 퀸의 배치와 겹치지 않는지 판단하는 로직을 추가한다. 이전 행의 퀸들과 겹칠 수 있는 경우는 2가지가 있다. 이전 행들에 놓인 퀸의 열과 현재 놓을 퀸의 열이 동일한 경우 이전 행들에 놓인 퀸과 현재 놓을 퀸이 대각선에 존재하는 경우 동일한 행에 퀸이 놓이는 경우도 고려해야하지만, 재귀를 이용해 한 행 (depth)마다 퀸을 배치할 것이기 때문에 동일한 행에 두 개이상의 퀸이 놓이는 경우는 발생하지 않는다. ..

    Request 스코프와 Proxy

    Request 스코프와 Proxy

    빈 스코프란 빈이 존재할 수 있는 범위를 말한다. 기본적으로 빈은 싱글톤 스코프로 생성되며 스프링 컨테이너가 시작할 때 부터 종료할 때까지 유지된다. 싱글톤 : 스프링 컨테이너가 시작되고 종료될 때까지 빈을 유지 프로토타입 : 빈 생성 및 의존성 주입까지만 스프링 컨테이너가 관리를 해준다. 웹 관련 스코프 request : 웹 요청을 받는 순간부터 로직을 처리후 응답할때까지 빈을 유지 session : 웹 세션이 생성되고 종료될 때까지 빈을 유지 application : 서블릿 컨텍스트와 같은 범위로 빈을 유지 Request 스코프 request 스코프를 가진 빈은 HTTP 요청이 들어올 때 생성(@PostConstruct 실행) 되며 로직을 처리한 후 HTTP 응답을 줄 때 소멸(@PreDestory)..

    엔빵 프로젝트 개발 포스팅 로드맵

    엔빵 프로젝트 개발 포스팅 로드맵

    엔빵 프로젝트를 진행하면서 필요한 내용을 공부하고 정리한 포스트들을 한 눈에 보기 쉽게 링크를 걸어놓은 로드맵입니다. ✏️ DevOps 오라클 클라우드에 개발 환경 설치하기 오라클 클라우드 프리티어 인스턴스 생성하기 Jenkins를 이용한 프로젝트 배포 자동화 GitHub Repository Clone하기 Gradle 프로젝트 빌드하기 Jar 파일을 클라우드 서버로 전달하기 Github WebHook을 이용한 자동 배포 Jenkins와 Slack 연동하기 ✏️ Backend Swagger를 이용한 API 문서화 Spring Cloud Config Spring Cloud Config Server/Client 설정 Spring Cloud Config Server를 Private Repository와 연동하기..

    Spring Cloud Bus와 RabbitMQ를 이용해 설정 정보 한번에 최신화하기!

    Spring Cloud Bus와 RabbitMQ를 이용해 설정 정보 한번에 최신화하기!

    기존 Spring Cloud Config Server에서는 설정 정보가 변경될 때 변경된 마이크로 서비스에서 /actuator/refresh 엔드포인트를 호출해 변경했다. 하지만, 매번 설정 정보가 변경될 때마다 엔드포인트를 호출해 변경정보를 반영하는 것은 여간 쉬운 일이 아니다. 이러한 문제를 해결하기 위해 클라이언트에 Spring Cloud Bus와 RabbitMQ를 이용해 설정 정보를 한 번에 변경해보자. RabbitMQ 설치 및 실행 RabbitMQ는 AMQP(Advanced Message Queueing Protocol) 프로토콜을 구현한 메시지 브로커다. 프로젝트를 진행하는 환경에 도커를 이용해 먼저 RabbitMQ를 설치한 후 구동한다. 필자는 오라클 클라우드 인스턴스를 이용해 프로젝트를 진..

    [백준, Java] 18352번 : 특정 거리의 도시 찾기

    [백준, Java] 18352번 : 특정 거리의 도시 찾기

    🔗 문제 링크 https://www.acmicpc.net/problem/18352 😮 문제 해결 방법 문제의 조건에서 최대 300,000개의 도시가 입력으로 주어질 수 있다고 명시했기 때문에, 인접행렬 방식이 아닌 인접 리스트 방식으로 해결해야한다. 시작 도시부터 도달할 수 있는 모든 도시에 대해 최단거리를 구하는 알고리즘은 “다익스트라"를 사용할 수 있다. 물론, 해당 문제에서도 다익스트라 알고리즘을 사용할 수 있지만, 각 도시간 거리가 1로 고정이 되어있기 때문에 BFS를 이용해서도 문제를 해결할 수 있다. 출발 도시를 시작으로 BFS를 구현한다. 연결된 도시 중 방문하지 않고, 현재 도시에서 거리에 +1 한 값보다 연결된 도시 거리가 멀다면 최단 거리로 갱신한다. 시작 도시로 부터 도달할 수 있는 ..

    [백기선님과 함께하는 Live Study] 8주차) 인터페이스

    [백기선님과 함께하는 Live Study] 8주차) 인터페이스

    ✔️ 목표 자바의 인터페이스에 대해 학습하세요. ✔️ 학습할 것 (필수) 인터페이스 정의하는 방법 인터페이스 구현하는 방법 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법 인터페이스 상속 인터페이스의 기본 메소드 (Default Method), 자바 8 인터페이스의 static 메소드, 자바 8 인터페이스의 private 메소드, 자바 9 💡 인터페이스 정의하는 방법 인터페이스(Interface)란 메소드에 대한 선언만 한 상태로 모든 메소드를 추상화로 정의한 상태를 말한다. 인터페이스를 정의하기 위해서는 interface 키워드를 이용하여 선언한다. 인터페이스는 반드시 상수와 추상 메소드만 사용이 가능하다. package com.livestudy.eighth; public interface Phone..

    [백준, Java] 1062번 :  가르침

    [백준, Java] 1062번 : 가르침

    🔗 문제 링크 https://www.acmicpc.net/problem/1062 😮 문제 해결 방법 문제에서 남극 단어의 시작과 끝은 anta, tica로 끝난다고 했기 때문에 a,n,t,i,c는 반드시 배워야 하는 글자이다. a,n,t,i,c를 포함해 남은 알파벳 중 k개를 조합한다. 조합한 알파벳을 남극 단어마다 해당 알파벳을 모두 포함하는지 판단하면서 배울 수 있는 단어를 체크한 후 현재 까지 최대로 배울 수 있는 단어 개수와 현재 배울 수 있는 단어 개수를 비교해서 갱신한다. a,n,t,i,c는 반드시 배워야 하는 글자이므로 K가 5보다 작다면 남극 단어를 배울 수 없기 때문에 0을 리턴한다. K가 5보다 크다면 이미 5개를 배웠기 때문에 a,n,t,i,c를 제외한 (K - 5)개의 글자를 백트래..