목차
에라토스테네스 체
소수를 판별하는 알고리즘
소수들을 대량으로 빠르고 정확하게 구하는 방법
•
소수
◦
1과 자기 자신 이외의 약수를 갖지 않는 1보다 큰 자연수
•
원리
◦
N까지의 수들을 2부터 차례대로 자기 자신을 제외한 배수를 모두 제외시킨다.
◦
이 방법을 통해, 합성수는 모두 제외 되고 소수만 남게 된다.
예시
2의 배수를 제외
2 | 3 | 4 | 5 | 6 |
true | true | false | true | false |
→ 위 예시 처럼, 자기 자신을 제외한 자신의 배수를 모두 제외시킨다.
실습
도커(Docker)
도커란?
리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트
•
기존 가상화(VM) vs 도커(Docker)
◦
게스트 OS의 유무
◦
그러나 도커의 경우, Linux에서만 사용 가능
이미지와 컨테이너
도커의 이미지
- 컨테이너 생성 시, 필요한 요소
- 가상 머신을 생성할 때 사용하는 iso 파일과 유사한 개념
- 여러 개의 계층으로 된 바이너리 파일로 존재, 컨테이너 생성 및 실행할 때 읽기 전용
컨테이너란?
리눅스 + 애플리케이션
필요한 라이브러리나 어플리케이션 등을 하나로 모아 별도의 서버인 것처럼 사용할 수 있게 만든 것
•
도커 이미지의 종류
◦
우분투, CentOS 등 기본적인 리눅스 운영체제
◦
아파치, MySQL, 등의 각종 애플리케이션
◦
하둡, 스파크 등의 빅데이터 분석 도구
도커 볼륨
•
도커 이미지로 컨테이너 생성 시, 이미지는 읽기 전용
◦
컨테이너에서 활동은 컨테이너 내의 컨테이너 레이어에 기록됨
→ 컨테이너 삭제 시, 데이터가 모두 사라짐
→ 해결방안: 볼륨 이용
리눅스와 도커 컨테이너간에 같은 디렉토리를 바라보도록 하는 것
•
도커 생성 시, -v 옵션을 사용하여 공유 가능
◦
[호스트의 공유 디렉토리]:[컨테이너의 공유디렉토리]
-v /root/mysql_data:/var/lib/mysql mysql:5.7
Shell
복사
실습
1. Ubuntu 22.04 이미지 생성 및 컨테이너 생성하여 환경변수 출력하기
docker run -i -t ubuntu:22.04
printenv
Shell
복사
•
docker ps -a 명령어를 통해 컨테이너 목록 확인 가능
•
-i 옵션
◦
표준 입력(stdin)을 활성화하며, 컨테이너와 연결되어 있지 않더라도 표준 입력을 유지
•
-t 옵션
◦
TTY모드 사용
2. -e 옵션을 통해 환경변수 생성
docker run -i -t ubuntu:22.04 -e SPRING_DATASOURCE_URL=jdbc
Shell
복사
3. 컨테이너 삭제
docker kill <container_id>
docker ps -a
docker rm <container_id>
Shell
복사
4. 도커 이미지 지우기
docker rmi <image_name>:<version>
Shell
복사
5. 도커를 사용하여 wordpress 띄우기
docker run -d --name wordpressdb\
-e MYSQL_ROOT_PASSWORD=password \
-e MYSQL_DATABASE=wordpress \
mysql:5.7
Shell
복사
•
mysql 컨테이너를 생성하여 실행
◦
wordpress라는 db 생성
docker run -d\
-e WORDPRESS_DB_HOST=mysql\
-e WORDPRESS_DB_SUER=root\
-e WORDPRESS_DB_PASSWORD=password\
--name wordpress\
--link wordpressdb:mysql\
-p 80\
wordpress
Shell
복사
•
앞에서 생성한 mysql과 연동하여 wordpress 컨테이너 생성 및 실행
-p 옵션
-p [호스트의 포트]:[컨테이너 포트]
→ 호스트의 포트를 컨테이너 포트에 연결한다는 의미
스프링 부트 설정 파일 우선 순위
•
OS 환경 변수가 application.yml의 우선순위보다 높기 때문에 OS 환경변수의 설정 값이 먼저 들어가게 된다.
No | Priority | Property |
1 | Low | 기본 속성(SpringApplication.setDefaultProperties) |
2 | @Configuration 클래스 | |
3 | application.properties 파일 | |
4 | OS 환경 변수 | |
5 | 자바 시스템 변수(System.getProperteis()) | |
6 | JNDI attributes(java:comp/env) | |
7 | ServletContext 초기화를 위한 매개변수 | |
8 | ServletConfig 초기화를 위한 매개변수 | |
9 | SPRING_APPLICATION_JSON(환경 변수 또는 시스템 변수에 포함된 인라인 JSON) | |
10 | Command Line Arguments | |
11 | @SpringBootTest와 함께 사용된 properties | |
12 | @TestPropertySource | |
13 | High | devtools 활성 상태일 때 $HOME/.config/spring-boot 디렉토리 내 devtools 전역 설정 |