Study 104

Docker란?

요즘 도커가 핫하다는데.....도커....컨테이너... 애매하게는 들었지만 확실하게는 몰라서 개념을 정리하기로 한다. https://youtu.be/IiNI6XAYtrs 오늘도 테코톡의 도움을 받아봅니다^^~ Docker 컨테이너 기반 가상화 도구 서버 가상화 하나의 물리적 서버 호스트에서 여러 개의 서버 운영 체제를 게스트로 실행할 수 있게 해주는 소프트웨어 아키텍쳐 = 하나의 서버의 자원을 여러 서버들이 할당받아서 성능을 분산시키고, 분산 서버는 다른 서비스를 수행 가능. 각 가상머신에는 여러 운영체제가 설치되어 있고, 하이퍼바이저에 의해 생성되고 관리되는 운영체제를 게스트 운영체제라고 부른다. 하이퍼바이저 OS들에게 자원을 나누어주며 조율한다. OS들의 커널을 번역해서 하드웨어에게 전달한다. 대표적..

백준 1037번 - 약수 JAVA

이 문제를 보니 예전에 자바로 약수구하기 문제를 풀었던게 생각난다. https://dsdsds.tistory.com/10?category=1002335 약수가 뭔지 잊었던..슬픈 추억^_^ 아무튼 문제를 봤는데 이 문제는 예제를 보면 답을 알 수 있을 것 같았다. 예제를 보면 약수 중 가장 작은 수와 가장 큰 수를 곱하면 N이 나온다는 것을 알 수 있다. (예제 3에서 3x12 = 24) 그렇다면 가장 작은 수와 가장 큰 수를 어떻게 구하느냐가 문제인데... Arrays.sort() 를 하면 배열을 오름차순 정렬할 수 있다. 그러면 배열[0] 과 배열[n-1](0번부터 시작하기 때문에 가장 마지막 숫자는 n-1번 방에 있다) 을 곱하면 N이 나올 것이다. import java.util.Arrays; im..

Study/알고리즘 2022.07.25

백준 1100번 - 하얀 칸 JAVA

(0.0)이 나온걸 보면 배열 문제다. for문을 두번 돌리면 될 것 같은데 하얀 칸을 어떻게 구하면 좋을까? 하얀 칸은 (0.0) (0,2) (0.4) .... 두번째 줄은 (1,1) (1,3) (1,5)... 이다. 이 배열들의 공통점은 두 수를 더하면 짝수라서 2로 나누면 나머지가 0이 된다. 첫번째 줄 - 앞의 숫자가 짝수, 뒤의 숫자가 짝수 두번째 줄 - 앞의 숫자가 홀수, 뒤의 숫자도 홀수 .... 인 경우가 흰 칸이다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public ..

Study/알고리즘 2022.07.24

백준 1009번 - 분산처리 JAVA

코딩 문제들을 풀면서 컴퓨팅 사고를 길러야겠다는 생각이 들어서 무작정 백준에 들어가서 일단 브론즈 문제부터 풀어보기로 했다. 그런데 처음부터 막히고 마는데... 만약 a가 3 b가 4라면? 3x3x3x3 =27 이라서 7번 컴퓨터가 되겠다. 그런데 b의 조건에 있는 숫자가 너무 커져서 조치를 취하지 않고는 int로 계산할 수가 없다... 그래서 고민을 했는데.... 어차피 필요한 것은 a^b의 1의 자리수뿐이라는 생각이 들었다. 이 1의 자리수만 구할 방법이 없을까 생각했는데, StringTokenizer 을 사용하면 된다는 것을 알게 되었다. StringTokenizer이란? 사용자가 지정하는 구분자를 경계로 하여 문자열을 나눠주는 Class이다. 만약 사용자가 구분자 지정을 생략하면 공백이나 탭이 기..

Study/알고리즘 2022.07.23

Spring과 Spring Boot의 개념과 차이

https://www.youtube.com/watch?v=6h9qmKWK6Io [10분 테코톡] 🦊닉의 Spring vs Spring Boot https://velog.io/@h000/Spring-Framework 영상과 블로그를 보고 정리해봤다. Spring 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 특징 POJO(Plain Old Java Object) 특정 기술에 의존적이지 않은 순수한, 객체 지향 원리에 충실한 자바 객체를 의미한다.스프링은 POJO 방식의 프레임워크로, 특정 기술에 의존적이지 않은 자바 객체를 사용해서 프로그래밍한다. IoC/DI(Inversion of Control) 제어의 역전이라는 의미로, 원..

용어정리 - JSP / 서블릿

내가 사용했고 사용하고 있음에도 ~가 뭐예요? 라고 물어보면 바로 대답하기가 어려운 것들에 대해 정리하기로 한다. 오늘은 JSP와 서블릿의 개념과 차이를 정리했다. JSP(JavaServer Pages) Java 언어를 기반으로 하는 Server Side 스크립트 언어 HTML 코드에 JAVA 코드를 넣어 동적 웹페이지를 생성하는 웹 어플리케이션 도구이다. JSP가 실행되면 서블릿으로 변환되며 웹 어플리케이션 서버에서 동작되며 필요한 기능을 수행하고 그렇게 생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다. ASP와 비교해서 JSP는 안정적이고, 유지보수가 쉽다. 반면 PHP는 개발 속도가 빠르다. (요즘 대세는 Node.js인듯...) 웹(web) 웹이란 인터넷 기반의 정보기술로 World Wide..

정렬 개념 정리 - 퀵 정렬(Quick Sort), 합병 정렬(Merge Sort)

퀵 정렬(Quick Sort) 분할 정복(divide and conquer) 방법 을 통해 주어진 배열을 정렬한다. 배열 가운데서 하나의 원소를 고른다. 이를 피벗(pivot) 이라고 한다. 가장 왼쪽에 있는 수에 left마커, 오른쪽에 있는 수에 right마커를 표시한다. 마커를 사용하여 일련의 작업을 재귀적으로 반복한다. left 마커를 오른쪽으로 이동 - 피벗 수 이상인 수에 도착하면 멈춤 right 마커를 왼쪽으로 이동 - 피벗보다 작은 숫자에 도달하면 멈춤 좌우 마커가 멈춘 시점에서 마커의 숫자를 교체함 (right 마커가 움직여서 두 마커가 만날 때는 해당 원소와 피벗을 교체) 두 마커가 있는 원소를 정렬 완료 상태로 둠 피벗양쪽으로 같은 작업을 반복 퀵 정렬은 다음의 단계들로 이루어진다. 정..

정렬 개념 정리 - 거품 정렬(Bubble Sort), 선택 정렬(Selection Sort), 삽입 정렬(Insertion Sort)

거품 정렬(Bubble Sort) 서로 인접한 두 원소의 대소를 비교하고, 조건에 맞지 않다면 자리를 교환하며 정렬하는 알고리즘 void bubbleSort(int[] arr) { int temp = 0; for(int i = 0; i arr[j]) { // 3. // swap(arr[j-1], arr[j]) temp = arr[j-1]; arr[j-1] = arr[j]; arr[j] = temp; } } } System.out.println(Arrays.toString(arr)); } 제외될 원소의 개수를 의미한다. 1회전이 끝난 후, 배열의 마지막..

Web Server와 WAS의 차이

WS(Web Server) Http 프로토콜을 기반으로, 클라이언트의 요청을 서비스하는 기능을 담당 비즈니스 로직을 넣을 수 없음 정적 컨텐츠 제공 - was를 거치지 않고 바로 제공 동적 컨텐츠 제공을 위한 요청 전달 - 클라이언트 요청을 WAS에 보내고, WAS에서 처리한 결과를 클라이언트에게 전달 Nginx, Apache 등 WAS(Web Application Server) DB 조회 및 다양한 로직 처리 요구시 동적인 컨텐츠를 제공하기 위해 만들어진 애플리케이션 서버 비즈니스 로직을 넣을 수 있음 HTTP를 통해 애플리케이션을 수행해주는 미들웨어 WAS는 웹 컨테이너 혹은 서블릿 컨테이너라고도 불림 (컨테이너 : JSP, Servlet을 실행시킬 수 있는 소프트웨어. WAS는 JSP, Servle..

프로세스 관련 용어 정리

기본적인 이론을 알아야 할 것 같아서 공부하던 도중, 개발 관련 모르는 용어들이 보여 공부하며 정리했다. 프로세스와 스레드 프로세스는 실행 중에 있는 프로그램을 의미하며, 작업(Job) 또는 태스크(Task)라고도 한다. 프로그램이 메모리에 적재(Load)되는 순간 프로세스가 된다. 스레드는 프로세스 내부에서 프로세스의 자원을 공유하거나 공유하지 않고 실행되는 작업의 단위이다. 프로세스 제어 블록(Process Control Block) 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳이며, 프로세스의 상태 정보를 저장하는 자료구조 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB도 함께 제거된다. 프로세스 상태 관리와 문맥 교환(Context switch)을 위해서..