본문 바로가기

전체 글

Spring Boot + Docker 프로젝트 SSL 적용 1. ec2 인바운드 규칙에서 443포트를 열어줍니다. 2. Let's Encrypt 를 사용하여 SSL 인증서를 발급 받습니다. - 호스트 서버가 우분투이기 때문에 apt 를 이용하여 certbot을 install해줍니다.sudo apt-get updatesudo apt-get install certbotsudo certbot certonly --standalone설치를 하면 약관 동의 몇개가 뜹니다.'Y' 입력 해주다 보면, 도메인 이름 쓰라고 나옵니다(완료 후 도메인 이름으로 디렉토리 생성되고 거기에 pem키가 생성됩니다)./etc/letsencrypt/live/[입력한 도메인 이름] 디렉토리에 pem키가 생성 되었습니다.   - 스프링 부트에선 pem키를 인식하지 못하기 때문에 PKCS12 형식의.. 더보기
Docker 를 이용하여 Linux에 Spring Boot 프로젝트 배포하기 Linux 레드햇 기반 배포판을 이용하기때문에 yum을 이용합니다. 우분투는 apt 사용하면 거의 비슷합니다. 각 번호에 (배포서버), (로컬) 이라고 시작하는데, 이는 아래 과정을 수행하는 위치 입니다. 💭 배포서버에 git 깔고 jdk깔고 하는것보다 Docker하나만 설치해서 컨테이너 돌리는게 더 합리적인거 같아서 Docker 사용     기존방식 : 배포서버에서 git  pull -> ./gradlew clean build -> nohup java ... -jar .... &💭 매우 초보적인 방법입니다. 현재는 ci/cd 파이프라인 구축해서 배포하는 방법을 공부중입니다. (업로드 예정) 1. (배포서버) 배포 서버(저의 경우 EC2 인스턴스)에 Docker 설치sudo yum update -ys.. 더보기
[Java 알고리즘] 땅따먹기 (DP - 동적 계획법) 프로그래머스 Lv.2 [땅따먹기] 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없는 특수 규칙이 있습니다. 예를 들면, | 1 | 2 | 3 | 5 | | 5 | 6 | 7 | 8 | | 4 | 3 | 2 | 1 | 로 땅이 주어졌다면, 1행에서 네번째 칸 (5)를 밟았으면, 2행의 네번째 칸 (8)은 밟을 수 없습니다. 마지막 행까지 모두 내려왔을 때, 얻을 수 있는 점수의 최대값을 return하는 solution 함수를 완성해 주세요. 위 예의 경.. 더보기
[Java 알고리즘] 멀리뛰기 (DP - 동적 계획법) 프로그래머스 Lv.2 [멀리뛰기] 효진이는 멀리뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567를 나눈 나머지를 리턴하는 함수, solution을 완성하세요. 예를 들어 4가 입력된다면, 5를 return하면 됩니다. 제한 사항 - n은 1이상, 2000 이하인 정수입니다. 입출력 예 n result 4 5 4 4 DP에 대해 공부하지 않았을 때는 단순히 1.. 더보기
[Java 알고리즘] GCD / LCM (최대공약수, 최소공배수) 프로그래머스 Lv.2 [N개의 최소공배수] 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요. 입출력 예 arr result [2,6,8,14] 168 [1,2,3] 6 Sol) 유클리드 호제법을 재귀함수로 구현해서 원소 두개씩 최소공배수를 구해가면 됨. import java.util.*; class Solution { public int solutio.. 더보기
[Java] StringBuilder 의 메서드 String 끼리 '+' 연산을 하여 새로운 문자열을 만들어 내는 방법은 효율성이 좋지 않다. 왜냐하면 String s = "abc"; s += "def"; 라고 했을 때, s 는 "abc" 였다가 "abcdef" 로 초기화 되는데, 이 과정에서 s 는 기존에 참조하던 "abc"의 참조값을 버리고 새로운 String 객체 ("abcdef") 를 참조하게 되는 것이다. 따라서 잦은 문자열 변경 작업이 필요하다면 StringBuilder를 사용하는 것이 좋다. StringBuilder는 내부 버퍼(데이터를 저장하는 메모리)에 문자열을 저장해두고 그 안에서 추가, 수정, 삭제 잡업을 하도록 설계되어 있다. 따라서 String 처럼 새로운 객체를 만들지 않고도 문자열을 조작할 수 있따. StringBuilder.. 더보기
[Java 알고리즘] 피보나치 수열 프로그래머스 Lv.2 [피보나치 수] 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = 2 + 3 = 5 와 같이 이어집니다. 2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요. 제한 사항 n은 2 이상 100,000 이하인 자연수입니다.Sol) 숫자가 매우매우매우 커지기 때문에 Long으로도 커버가 안되는 듯 함. -.. 더보기
[Java 알고리즘] 투 포인터 (연속된 자연수의 합) 프로그래머스 Lv.2 [숫자의 표현] Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다. 1 + 2 + 3 + 4 + 5 = 15 4 + 5 + 6 = 15 7 + 8 = 15 15 = 15 자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요. 제한사항: n은 10,000 이하의 자연수 입니다. Sol1) 투 포인터 몰랐을 때, 내 풀이 (등차수열 합으로 부분합 할 원소들의 개수를 정해놓고 하나씩 올림) class Solution { public int solution.. 더보기