전체보기 128

SPRING 파헤치기 #2 - SOLID

★ 이 글은 김영한 님의 스프링 핵심 원리 - 기본편을 학습하면서 작성하였습니다. SOLID란? 로버트 마틴의 좋은 객체 지향 설계의 5가지 원칙을 정리한 것 SRP - 단일 책임 원칙(Single Responsibility Principle) OCP - 개방-폐쇄 원칙(Open/Closed Principle) LSP - 리스코프 치환 원칙(Liskov Substitution Principle) ISP - 인터페이스 분리 원칙(Interface Segregation Principle) DIP - 의존관계 역전 원칙(Dependency Inversion Principle) SRP 단일 책임 원칙(Single Responsibility Principle) 한 클래스는 하나의 책임만 가져야 한다. 변경이 있을..

SPRING 파헤치기 #1 - SPRING FRAMEWORK

★ 이 글은 김영한 님의 스프링 핵심 원리 - 기본편을 학습하면서 작성하였습니다. SPRING FRAMEWORK 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타 웹 기술 : 스프링 MVC, 스프링 WebFlux 데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원 기술통합 : 캐시, 이메일, 원격접근, 스케줄링 테스트 : 스프링 기반 테스트 지원 언어 : 코틀린, 그루비 핵심 컨셉 자바 언어(객체 지향 언어) 기반의 프레임워크 좋은 객체 지향 어플리케이션을 개발할 수 있도록 도와주는 프레임워크 스프링은 다형성을 극대화해서 이용할 수..

AWS 구축 - EC2

EC2(Elastic Compute Cloud)란? EC2는 AWS에서 제공하는 클라우드 컴퓨팅 서비스다. 아마존이 각 지역에 구축한 데이터 센터의 컴퓨터들의 자원을 원격으로 사용할 수 있다. EC2의 장점 - 용량을 늘리거나 줄일 수 있다. - 사용한만큼 지불하므로 저렴하다. - 사용자가 인스턴스를 완전히 제어할 수 있다. - 보안 및 네트워크 구성, 스토리지 관리 효과적이다. EC2 구축 1. REGION 설정 현재 내 위치와 가까운 REGION을 설정하여 트래픽 속도를 최대한으로 조정할 수 있다. ✓ 서울이라면 서울 REGION을 선택하면 되지만 데이터 센터가 없는 지역일 경우 https://cloudping.info/ 를 통해 가장 가까운 데이터 센터를 찾을 수 있다. AWS 로그인 후 우측 상단..

Etc/AWS 2023.09.20

[백준] 4948번 : 베르트랑 공준 - JAVA

문제 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다. 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23) 자연수 n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하는 한 줄로 이루어져 있다. 입력의 마지막에는 0이 주어진다. 출력 각 테스트 케이스에 대해서, n보다 크고..

백준 2023.09.12

[백준] 1929번 : 소수 구하기 - JAVA

문제 M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. 출력 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다. 풀이 이전 글에서 사용했던 제곱근을 이용한 풀이는 시간 초과가 발생했다. 따라서 수학 공식인 에라토스테네스의 체를 이용한 풀이를 작성했다. 에라토스테네스의 체 가장 먼저 소수를 판별할 범위만큼 배열을 할당하여, 해당하는 값을 넣어주고, 이후에 하나씩 지워나가는 방법이다. 2부터 시작해서 특정 수의 배수를 모두 지운다.(자기자신은 지우지 않고, 이미 지워진 수는 건너뛴다.) import java.io.BufferedRe..

백준 2023.09.12

[백준] 4134번 : 다음 소수 - JAVA

문제 정수 n(0 ≤ n ≤ 4*109)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. 출력 각각의 테스트 케이스에 대해서 n보다 크거나 같은 소수 중 가장 작은 소수를 한 줄에 하나씩 출력한다. 풀이 가장 간단한 소수 구하는 방법으로 수를 2부터 그 수의 제곱근까지로 나누는 방법을 사용했다. 수를 수로 나누어 떨어진다면 그때의 몫은 반드시 그 수의 제곱근보다 작기 때문이다. 입력받은 수가 0, 1, 2일 경우 가장 첫번째 소수는 무조건 2이기 때문에 2를 출력한다. 정수의 범위가 크기 때문에 long으로 입력받아 처리한다. import java...

백준 2023.09.12

어노테이션 @Valid와 @Validated

신규 프로젝트를 수행하면서 @Validated 어노테이션을 접하게 되었다. if문을 사용하지 않고 간단하게 유효성 검증을 할 수 있는 좋은 기능이었고, 완벽하게 짚고 넘어가기 위해 정리글을 작성하게 되었다. @Valid 자바 표준 스펙으로, Controller 계층에서 사용이 가능하다. 주로 request body를 검증하는 데 많이 사용된다. MethodArgumentNotValidException 예외를 발생시킨다. 예제 사용자 정보에 대한 데이터가 들어올 때에 대한 검증예시를 작성해봤다. 이름, 전화번호, 이메일을 body로 전달받을 때 @Valid 어노테이션을 통한 검증이다. Controller package com.doomole.stockproject.controller; import com.d..

[백준] 2485번 : 가로수

문제 직선으로 되어있는 도로의 한 편에 가로수가 임의의 간격으로 심어져있다. KOI 시에서는 가로수들이 모두 같은 간격이 되도록 가로수를 추가로 심는 사업을 추진하고 있다. KOI 시에서는 예산문제로 가능한 한 가장 적은 수의 나무를 심고 싶다. 편의상 가로수의 위치는 기준점으로 부터 떨어져 있는 거리로 표현되며, 가로수의 위치는 모두 양의 정수이다. 예를 들어, 가로수가 (1, 3, 7, 13)의 위치에 있다면 (5, 9, 11)의 위치에 가로수를 더 심으면 모든 가로수들의 간격이 같게 된다. 또한, 가로수가 (2, 6, 12, 18)에 있다면 (4, 8, 10, 14, 16)에 가로수를 더 심어야 한다. 심어져 있는 가로수의 위치가 주어질 때, 모든 가로수가 같은 간격이 되도록 새로 심어야 하는 가로..

백준 2023.09.07

[백준] 1735번 : 분수 합

문제 분수 A/B는 분자가 A, 분모가 B인 분수를 의미한다. A와 B는 모두 자연수라고 하자. 두 분수의 합 또한 분수로 표현할 수 있다. 두 분수가 주어졌을 때, 그 합을 기약분수의 형태로 구하는 프로그램을 작성하시오. 기약분수란 더 이상 약분되지 않는 분수를 의미한다. 입력 첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다. 출력 첫째 줄에 구하고자 하는 기약분수의 분자와 분모를 뜻하는 두 개의 자연수를 빈 칸을 사이에 두고 순서대로 출력한다. 풀이 수행 순서는 다음과 같다. 1. 주어진 두 분수의 합을 구한다. 2. 분자와 분모의 최대공약수를 구한다. 3. 분자와 분모를 최대공약수로 나눈 후 출력한다. im..

백준 2023.09.07

[백준] 13241 : 최소공배수

문제 정수 B에 0보다 큰 정수인 N을 곱해 정수 A를 만들 수 있다면, A는 B의 배수이다. 예: 10은 5의 배수이다 (5*2 = 10) 10은 10의 배수이다(10*1 = 10) 6은 1의 배수이다(1*6 = 6) 20은 1, 2, 4,5,10,20의 배수이다. 다른 예: 2와 5의 최소공배수는 10이고, 그 이유는 2와 5보다 작은 공배수가 없기 때문이다. 10과 20의 최소공배수는 20이다. 5와 3의 최소공배수는 15이다. 당신은 두 수에 대하여 최소공배수를 구하는 프로그램을 작성 하는 것이 목표이다. 입력 한 줄에 두 정수 A와 B가 공백으로 분리되어 주어진다. 50%의 입력 중 A와 B는 1000(103)보다 작다. 다른 50%의 입력은 1000보다 크고 100000000(108)보다 작다..

백준 2023.09.07