Programming 85

Docker study - 도커 엔진 (3)

목차 도커 이미지 도커는 기본적으로 도커 허브(Docker Hub)라는 중앙 이미지 저장소에서 이미지를 내려받습니다. 단, 도커 허브는 공식 라벨이 없는 이미지를 사용할 경우 사용법을 찾을 수 없거나 제대로 동작하지 않을 수 있습니다. 또한 비공개로 저장소를 사용하려면 비공개 저장소에 따라 요금을 지불해야 합니다. 도커 허브의 이미지를 찾으려면 search 명령어로 찾아볼 수 있습니다. 도커 이미지 생성 먼저 이미지를 만들기 위한 컨테이너를 생성한 후 commit 명령어를 통해 컨테이너를 이미지로 만듭니다. docker run -i -t --name container_test ubuntu:14.04 docker commit [option] container [repository[:tag]] 이미지 생성 ..

Programming/Docker 2023.02.14

Docker study - 도커 엔진 (2)

목차 컨테이너 애플리케이션 구축 먼저 컨테이너를 구축하는 것에 있어서 권장하는 건 하나의 컨테이너에는 하나의 애플리케이션만 동작하도록 구성하는 것이 컨테이너간의 독립성을 보장함과 동시에 애플리케이션의 버전 관리, 소스코드 모듈화 등 다양한 이점을 얻을 수 있으며 도커의 철학이 한 컨테이너에 한 프로세스만 실행하는 것입니다. docker run -d \\ # 옵션 -d 는 background 로 실행시킴 --name wordpressdb \\ -e MYSQL_ROOT_PASSWORD=password \\ -e MYSQL_DATABASE=wordpress \\ # \\(역슬래시) 는 가동성을 위해 명령어의 옵션을 구분할 때 쓰며, 안써도 상관없음 기본 옵션은 컨테이너 내부로 진입하도록 attach 가능한 상..

Programming/Docker 2023.02.13

Docker Study - 도커 엔진 (1)

목차 도커 엔진에서 사용하는 기본 단위는 이미지와 컨테이너 입니다. 도커 이미지 도커 이미지란 컨테이너를 생성할 때 필요한 요소이며, 여러 계층으로 된 바이너리 파일로 존재하고, 컨테이너의 생성과 실행에서 읽기 전용으로 사용됩니다. 이미지의 이름은 기본적으로 [저장소 이름]/[이미지 이름]:[태그]로 구성되어 있습니다. 예제 : (저장소 이름)ailcek106 / (이미지 이름)ubuntu:(태그)14.04 도커 컨테이너 도커 이미지로 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일이 들어 있는 파일시스템과 격리도니 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성되고, 이것이 바로 도커 컨테이너가 됩니다. 대부분의 도커 컨테이너는 생성될 때 사용된 도커 이미지의 종류에 따라 알맞은 설정..

Programming/Docker 2023.02.05

이것이 코딩 테스트다 (JAVA 코드) - Greedy

개요 그리디 (greedy) 알고리즘이란 현재 상황에서 지금 당장 좋은 방법으로만 풀이를 해나가는 것을 그리디 알고리즘이라고 합니다. 그리디 알고리즘의 핵심은 정당성 분석을 통한 풀이 입니다. 단순히 가장 좋아보이는 것만을 반복해도 최적의 해가 나올 수 있는지 검토해야 합니다. 출처 이것이 코딩테스트다 예시 루트 노드부터 시작하여 거쳐가는 노드의 값들의 합을 최대값으로 구하고 싶을 때 최적의 해를 구하려면 어떻게 해야할까요? 최적의 해는 5 - 7 - 9 노드일겁니다. 하지만 그리디 알고리즘은 현재 상황에서 가장 큰 값만 선택하게 되는 경우입니다. 그러므로 보통은 5 - 10 - 4노드를 선택합니다 그렇다면 이 경우 최적의 해가 아니게 됩니다. 일반적인 상황에서 그리디 알고리즘은 최적의 해가 보장받을 수..

Docker Study - 도커란 ?

목차 도커 개요 도커는 리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트입니다. 1-1 가상머신과 도커 컨테이너 가상머신 : 기존의 가상화 머신들은 하이퍼바이저(hyperVisor)를 이용해 여러개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식으로 각각의 운영체제들을 게스트라 하며 게스트 운영체제들은 다른 게스트들과는 독립된 공간과 자원을 할당받아 사용합니다. 다만 시스템 자원을 가상화하고 생성하는등의 관리를 하는 작업들은 하이퍼바이저의 관리를 통해 이루어지면서 성능의 손실이 발생합니다. 그리고 운영체제를 사용하기 위해 필요한 리소스들때문에 이미지의 크기가 커지며 애플리케이션으로 배포하기에 부담스럽다는 단점이 있습니다. 도커..

Programming/Docker 2023.01.22

JPA - 영속성 컨텍스트(persistence context) 파헤쳐보기

목차 개요 지난 포스팅에선 JPA의 큰 개념과 이론에 대해 알아보았습니다. 이번엔 JPA에서 가장 중요한 패러다임인 영속성 컨텍스트 (Persistence Context) 에 대해 알아보겠습니다. JPA를 공부하다 보면 자주 마주하는 단어가 영속성 컨텍스트인데, 저는 아무리 봐도 잘 머리에 남지가 않았습니다. 애매모호하게 알고만 있던 개념이다 보니 그런거 같아서 한번 정리하고 가면 좋을거 같습니다. Persistence Context JPA가 데이터를 관리하기 위해 엔티티를 사용해서 데이터베이스에서 데이터를 매핑하고 이를 저장해야하며, 이때 필요한 환경을 영속성 컨텍스트라고 합니다. 좀 더 간단하게 말하자면 "엔티티를 영구히 저장하기 위한 환경" 이라 하며 엔티티를 조작하기 위해 EntityManager..

Programming/JAVA 2022.12.28

JAVA - Lambda Capturing

목차 Lambda Capturing 먼저 람다식(Lambda Expressions)은 JDK 8 버전에서 추가된 기능으로 함수형 프로그래밍에서 보이는 arrow(화살표) 식으로 표현되는 문법으로 함수의 흐름을 명확하고 간결하게 표현하는 특징이 있습니다. 보통 데이터를 추출할 때 반복되거나 필터링이 필요할 경우 자주 사용됩니다. Java 에서 람다식은 함수로 취급되기 때문에 컴파일러가 .class 파일을 생성하지 않는다는 특징이 있습니다. 기본적으로 자바에서 람다식을 표현할 땐 (Parameter) -> function 의 구조로 이루어져 있으며, 파라미터로 넘긴 변수를 활용하여 작업을 수행합니다. 이때 람다 캡처링(lambda capturing) 은 파라미터로 넘겨받은 데이터가 람다식 내부에서 받은 변수..

Programming/JAVA 2022.12.06

JPA - JPA의 정의, 개요

목차 개요 요새 자바언어를 공부하시거나 사용하고 계시는 많은 개발자분들은 모를 수 없는 게 있습니다. 바로 JPA 저도 자바 개발자로서 JPA를 사용해보았고 대략 어떤개념인지는 알고 있었으나, 제대로 공부했다는 아니었어서 이번에 JPA관련 강의를 들으며 배운점과 추가적으로 공부한점을 모아 포스팅을 해보겠습니다. JPA와 ORM JPA란 Java Persistence API 의 약자로 자바 진영의 ORM(Object Relational Mapping) 기술의 표준입니다. 이렇게 이름만 들어서는 정확히 어떤기능을 하는건지 잘 모르겠습니다. 먼저 ORM에 대해 알아보자면 객체와 관계형 데이터베이스사이에서 매핑해주는 기술이며, 이를 통해 객체는 객체답게 설계하고 관계형 데이터베이스는 데이터베이스대로 설계할 수 ..

Programming/JAVA 2022.12.04

프로그래머스 - 기사단원의 무기(JAVA)

문제 설명 숫자나라 기사단의 각 기사에게는 1번부터 number까지 번호가 지정되어 있습니다. 기사들은 무기점에서 무기를 구매하려고 합니다. 각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려 합니다. 단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제한수치보다 큰 공격력을 가진 무기를 구매해야 하는 기사는 협약기관에서 정한 공격력을 가지는 무기를 구매해야 합니다. 예를 들어, 15번으로 지정된 기사단원은 15의 약수가 1, 3, 5, 15로 4개 이므로, 공격력이 4인 무기를 구매합니다. 만약, 이웃나라와의 협약으로 정해진 공격력의 제한수치가 3이고 제한수치를 초과한 기사가 사용할 무기의 공격력이 2라면, 15번으로 지정된 기사단원은 무기점에서 공격력이 2인 무..

JAVA - Priority Queue(우선순위 큐) 알아보기

개요 오늘은 코딩테스트 문제를 풀이하다가 알게된, Queue 종류중 하나인 Priority Queue 에 대해 알아보겠습니다. 먼저 Queue 는 데이터를 일시적으로 쌓아두기 위한 자료구조 중 하나로 First In First Out (FIFO)의 구조로 이루어져 있고 이는 말 그대로 먼저 적재된 데이터가 먼저 나가게 됩니다. 그 예로 가장 적절한 건 아마 대기표일겁니다. 은행이나 식당에서 먼저 대기표를 뽑은 사람이 먼저 들어가는 방식과 동일합니다. 하지만 오늘 알아볼 우선순위 큐 는 순서대로 데이터를 적재하고 관리하는게 아닌 선언할때 우선순위를 먼저 정한 후 그 우선순위에 따라 자동 정렬되어 데이터가 나갈 때 우선순위가 높은 순서대로 추출되게 됩니다. 특징 높은 우선순위의 요소를 먼저 꺼내서 처리하는 ..

Programming/JAVA 2022.11.30