사실 도커의 모든 CLI 명령어는 compose 로 바꿀 수 있다. 개인적으로 도커를 사용할 때는 항상 compose 를 사용할 것 같다. 그만큼 굉장히 편리한 기능이다. 왜냐하면 compose 는 여러개의 컨테이너를 하나로 묶어서 관리할 수 있는 서비스를 제공한다.
직접 깡으로 배포하는 경험이 있는 사람에게 도커의 편안함이 많이 와닿을 것이다. 나는 SSH 에서 node db 를 직접 설치하고, 각각의 환경변수 셋팅하는 과정에서 많은 에러가 발생했다. 또한 해결하는 과정도 역시 쉽지 않았다. 애초에 에러가 많이 발생하는 이유는 환
mysql 사용하는 컨테이너를 만들고, 볼륨을 만들때 아래의 명령어를 수행한다.그런데 윈도우의 경우 리눅스와 경로를 찾는 방법이 달라서 호스트 컴퓨터에서 텅빈 디렉터리가 생성된다. 경로를 제대로 지정해주기 위해서는 아래처럼 "" 를 붙여주면 된다.
상속은 기존 클래스의 필드와 메서드를 새로운 클래스에서 재사용하게 해준다. 이름 그대로 기존 클래스의 속성과 기능을 그대로 물려받은 것이다. 이때 extends 키워드를 사용하면 되고, extends 대상은 하나만 선택할 수 있다. 아래의 예제를 살펴보자.부모가 되는
자바의 메모리 구조는 크게 메서드 영역, 스택 영역, 힙 영역 3개로 나눌 수 있다.메서드 영역: 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 이러한 데이터에는 클래스, static, 상수등이 있으며, 메서드 영역은 모든 영역에서 공유한다.스택 영역: 자바 실
자바는 4가지 종류의 접근 제어자를 제공한다.private: 모든 외부 호출을 막는다.default: 같은 패키지 안에서 호출은 허용한다.protected: 같은 패키지 안에서 호출은 허용한다. 패키지가 달라도 상속 관계 호출은 허용한다.public: 모든 외부 호출을
이 둘의 차이점을 명확하게 구분한다면, 객체지향에 대한 이해가 더욱 쉬워진다. 먼저 절차 지향은 말 그대로 절차를 지향한다. 즉, 프로그램의 흐름을 순차적으로 따르며 처리하는 방식이다. 반면에 객체 지향은 말 그대로 객체를 지향한다. 이는 실제 세계의 사물이나 사건을
만약에 내가 여러명의 학생 정보를 출력하는 프로그램을 작성한다고 해보자. 이때 각 학생은 이름, 나이, 성적을 가지고 있다. 만약에 클래스가 없다면 배열을 이용해서 정보를 표현할 것이다.만약에 정보가 추가된다면, 각 배열에 정보를 기입해주면 된다. 이때 데이터를 변경한
두 변수를 더하는 기능을 여러번 수행한다고 하면 어떻게 효율적으로 프로세스를 수행할 수 있을까? 이때는 메서드 기능을 사용하면 된다. 메서드는 수학에서 함수의 한 종류라고 생각하면 된다.두 수를 더하는 메서드 와 세 수를 더하는 메서드 를 만든다고 해보자. 이때 기능이
자바에서 배열은 같은 타입의 변수를 사용하기 편하게 하나로 묶어둔 것이다. 이는 참조형 데이터 타입으로써 배열은 참조 값을 보관한다.예시로 int\[] students = new int\[5] 를 선언한다면, new int\[5] 만큼 메모리를 확보하며 각 원소를 0으
자바의 변수 데이터 타입을 가장 크게 보면 기본형과 참조형으로 분류할 수 있다. 사용하는 값을 직접 넣을 수 있는 기본형, 그리고 방금 본 배열 변수와 같이 메모리의 참조값을 넣을 수 있는 참조형으로 분류할 수 있다.기본형(Primitive Type): int lon
구간 합 문제는 연속적으로 나열된 N개의 수가 있을 때, 특정 구간의 모든 수를 합한 값을 구하는 문제이다. 예를 들어 (N = 5인) 수열 {10, 20, 30, 40, 50} 이 있다고 해보자. 여기서 두번째 수부터 네번째 수 까지의 합은 20 + 30 + 40 =
투 포인터 알고리즘은 리스트에 순차적으로 접근해야 할 때 2개의 점 위치를 기록하면서 처리하는 알고리즘을 의미한다. 즉, 시작점과 끝점의 2개의 변수를 이용해 리스트 상의 위치를 기록하여 문제를 해결하는 방식이다. 예시로 특정한 합을 가지는 부분 연속 수열 찾기 문제를
소수는 2보다 큰 자연수 중에서 1과 자기 자신을 제외한 자연수로는 나누어 떨어지지 않은 자연수이다. 예를 들어 7은 1과 7을 제외하고는 나누어 떨어지지 않기 때문에 소수이다. 이러한 소수를 구하기 위한 알고리즘은 크게 2가지가 있다.코드를 작성하기 전에 소수의 특징
위상정렬은 정렬 알고리즘의 일종이다. 이는 순서가 정해져 있는 일련의 작업을 차례대로 수행해야 할 때 사용할 수 있는 알고리즘이다. 조금더 구체적으로 위상 정렬은 방향 그래프의 모든 노드를 방향성에 거스르지 않도록 순서대로 나열하는 것이다. 예시로는 선수과목이 있다.
그래프란 노드와 노드 사이에 연결된 간선의 정보를 가지고 있는 자료구조를 의미한다. 예를 들어 여러 개의 도시가 연결되어 있다 와 같은 내용은 그래프 알고리즘을 일 수도 있다. 이러한 그래프 알고리즘의 유형으로는 dfs/bfs 최단 경로 크루스칼 알고리즘 위상 정렬 알
그래프란 노드와 노드 사이에 연결된 간선의 정보를 가지고 있는 자료구조를 의미한다. 예를 들어 여러 개의 도시가 연결되어 있다 와 같은 내용은 그래프 알고리즘을 일 수도 있다. 이러한 그래프 알고리즘의 유형으로는 dfs/bfs 최단 경로 크루스칼 알고리즘 위상 정렬 알
최단거리 알고리즘은 말 그대로 가장 짧은 경로를 찾는 알고리즘이다. 최단거리 알고리즘에는 한 지점에서 다른 특정 지점까지의 최단 경롤르 구해야 하는 경우 (다익스트라) & 모든 지점에서 다른 모든 지점까지의 최단 경로를 모두 구해야 하는 경우(플로이드 워셜) 등이 있다
컴퓨터를 활용해도 해결하기 어려운 문제는 무엇일까? 최적의 해를 구하기에 시간이 매우 많이 필요하거나 메모리 공간이 매우 많이 필요한 문제 등이 컴퓨터로도 해결하기 어려운 문제이다. 따라서 우리는 메모리 공간을 약간 더 사용하여 연산 속도를 비약적으로 증가시키는 다이나