내가 잘못 알고 있었다는 것을 알게 되었다.. 아무튼 알게 되었으니 좋은 일이다...!! 1. CI/CD란? CI/CD란 Continuous Integeration / Continuous Delivery 또는 Continuous Deployment의 약자로, 지속적 통합, 지속적 전달 또는 지속적 배포를 의미한다. CI/CD가 이루어지는 흐름은 다음과 같다. 우선, 개발자가 코드 병합 요청을 하면 CI/CD Tool이 Build와 Test를 진행하고, 이 때, 문제가 발생하지 않으면 병합한다. 이 과정이 CI이다. 그리고 Delivery 또는 Deployment 중 선택하는 단계에 맞게 서버에 배포한다. CI/CD Tool에는 Jenkins, Travis CI, Github Actions가 있다. 그렇다..
관련 문제 BOJ 가장 긴 증가하는 부분 수열 4 가장 긴 증가하는 부분 수열 (LIS) 가장 긴 증가하는 부분 수열 : 수열의 원소를 순서대로 선택할 때 가장 긴 오름차순인 수열 코드로 구현하기 import java.io.*; import java.util.*; public class Main { static int N; static int[] A; static int[] dp; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); N = Integer.parseInt(br.readLine()); StringTokeni..
Java에서 문자열을 비교하는 방법에는 동일한지 확인할 수 있는 equals(), 사전순 정렬 순위까지 파악할 수 있는 compareTo()가 있다. compareTo()의 결과로 음수, 0, 양수가 나오는데, 어떻게 이런 결과가 나오는지 메소드 구현 방법을 확인해보았다. String.class private final class String implements java.io.Serializable, Comparable, CharSequence { // 생략 private final char value[]; // 생략 public int compareTo(String anotherString) { int len1 = value.length; int len2 = anotherString.value.leng..
이번 알고리즘 스터디에서 DP를 했는데.. 알고리즘 숙제를 하면서 느낀 점.. 나 혹시 탑다운 DP를 모르나..? 그래서 DP에 대해 다시 정리해보았다. (이전글 +a 해서 재업로드) Dynamic Programming 이란? DP의 핵심 컨셉은 한 번 같은 인자를 넣었을 때 동일한 결과가 나오는 경우 이 결과가 필요할 때마다 다시 연산하지 않고 저장해뒀다가 다시 사용한다. 즉, 한 번 푼 것은 다시 풀지 않는다. 재귀를 이용하여도 문제의 결과를 도출할 수 있다. 하지만 재귀는 다음과 같은 문제점이 있다. 반복적으로 동일한 데이터를 계산한다. 스택에 호출 경로 데이터를 계속 쌓아두어서 stack overflow가 발생할 수 있다. DP에서는 Memoization이라는 기법으로 연산한 결과를 저장하고 연산..
Java로 개발을 한다면 Java가 어떻게 실행되는지는 알아야하지 않을까,, 라는 생각으로 정리해보는 JVM의 구조 1. JVM이란? JVM이란 Java Virtual Machine의 약자로, Java Byte Code를 실행하는 주체이다. JVM을 이용하여 (1) Java Byte Code를 OS에 맞게 해석할 수 있고, (2) GC로 자동으로 메모리를 관리 할 수 있다. [참고] Java 개발과 실행을 위한 주요 구성요소에는 JDK, JRE, JVM이 있다. JDK (Java Development Kit) : Java 개발에 필요한 도구 모음으로 JRE와 컴파일러, 디버거와 같은 개발에 필요한 도구들로 구성된다. JRE (Java Runtime Environment) : Java 실행 환경으로, JV..
Gradle이 Maven보다 설정 파일 작성이 간단하고 (Maven을 많이 써보지는 않아서 체감하지는 못했지만) build 속도도 빠르다고 하여 프로젝트에서 자주 사용해왔다. 빌드 도구인 Gradle에 대해 알아보자. 0. 사전 지식 빌드 (Build) 빌드란 소스코드 파일을 컴파일하여 실행할 수 있는 가공물로 변환하는 과정 또는 결과물을 의미한다. 즉, .java와 같은 소스 코드, .xml, .properties와 같이 프로젝트에서 쓰인 각각의 파일 및 자원 등을 JVM이나 Tomcat과 같은 WAS가 인식할 수 있도록 패키징하는 과정과 결과물이다. 빌드 도구 (Build Tool) 빌드 도구란 소프트웨어 개발에서 소스 코드를 실행 가능한 애플리케이션으로 만들어주는 도구이다. 빌드 과정을 자동화하여 ..
자꾸 문법을 헷갈려서 잘 이용하지 못한 윈도우 함수.............. 윈도우 함수에 대해 정리해보자. 그리고 또 시험에 윈도우 함수가 나온다면 그때는 꼭 잘 사용해보자..!!!! 1. 윈도우 함수(Window Function)란? 행의 그룹을 만들고 그룹 내에서 계산을 수행하는 기능을 제공하는 함수이다. 기본 형태는 다음과 같다. 함수(함수_적용_열) OVER (PARTITION BY 그룹열 ORDER BY 순서열) 순위 함수의 경우, 함수의 인자가 필요하지 않다. PARTITION BY를 기준으로 그룹을 생성하며 ORDER BY를 기준으로 정렬해준다. PARTITION BY, ORDER BY에 넣을 값이 없다면 빈 괄호로 두면 된다. 2. 윈도우 함수의 종류 집계 함수 SUM(), MIN(), ..