분류 전체보기
-
HTML, HTTP API, CSR, SSR의 간략한 개념과 정의Web Programming 2022. 3. 11. 17:14
안녕하세요! 이번 포스팅은 HTTP API, CSR, SSR에 대해서 알아보겠습니다. HTML 우선 밑의 사진과 같이 웹 서버는 예전 포스팅에 언급한 것과 같이 js, css, 이미지 파일 등과 같은 정적 리소스를 제공합니다. WAS를 굳이 거치지 않고 웹 서버에서 클라이언트에게 보여주면 속도도 훨씬 빠르고 서버의 부하가 방지되기 때문이죠. 하지만 비즈니스 로직을 처리하고 그 결과를 동적으로 화면에 보여주기 위해서는 WAS를 거쳐서 DB를 조회하고 그 결과를 아래의 사진과 같이 반영해야 합니다. 동적으로 JSP나 타임리프를 통해서 HTML을 생성하게 클라이언트에게 돌려주는 것이죠. 그러면 웹 브라우저는 HTML을 읽어 들여서 보여주기만 하면 됩니다. HTTP API HTTP API는 HTML이 아니라 데..
-
서블릿(Servlet)과 멀티 쓰레드(Multi Thread)의 간략한 개념과 정의Web Programming 2022. 3. 11. 16:58
안녕하세요 이번 포스팅은 Servlet에 대해서 간략하게 알아보겠습니다. 위의 사진과 같이 간단한 HTML FORM이 있다고 가정합시다. input 태그에 내용을 입력하고 전송 버튼을 눌러서 submit 하게 되면 오른쪽의 사진과 같이 요청 HTTP 메시지가 생성됩니다. HTTP 메시지의 first line을 포함해서 http header 그리고 http body가 같이 전송이 되어지는데요, http headers는 데이터에 대한 부가정보, 그리고 http body에는 전송할 데이터가 담겨있습니다. 아무튼, 이런 데이터를 Tomcat과 같은 WAS(Web Application Server)에 전송하게 되면, WAS는 다음과 같은 로직을 수행해야 합니다. HTTP message를 읽어 들여야 하기 때문에,..
-
[Programmers] 메뉴 리뉴얼Algorithm 2022. 3. 11. 14:24
메뉴 리뉴얼 문제 설명 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 새로운 메뉴를 제공하기로 결정했습니다. 어떤 단품메뉴들을 조합해서 코스요리 메뉴로 구성하면 좋을 지 고민하던 "스카피"는 이전에 각 손님들이 주문할 때 가장 많이 함께 주문한 단품메뉴들을 코스요리 메뉴로 구성하기로 했습니다. 단, 코스요리 메뉴는 최소 2가지 이상의 단품메뉴로 구성하려고 합니다. 또한, 최소 2명 이상의 손님으로부터 주문된 단품메뉴 조합에 대해서만 코스요리 메뉴 후보에 포함하기로 했습니다. 예를 들어, 손님 6명이 주문한 단품메뉴들의 조합이 다음과 같다면, (각 손님은 단품메뉴를 2개 이..
-
[Programmers] 폰켓몬Algorithm 2022. 3. 11. 11:44
폰켓몬 문제 설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택 첫 번째(3번), 세 번째(2번) 폰켓몬을 ..
-
[Programmers] 콜라츠 추측Algorithm 2022. 3. 11. 11:43
콜라츠 추측 문제 설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성해 주세요. 단, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요. 제한 사항 입력된 수, num은 1 이상 8000000 미만인 정수입니다..
-
[Programmers] K번째 수Algorithm 2022. 3. 7. 23:18
K번째수 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 100 이하입..
-
[Spring] 빈 스코프(Bean Scope)Back-end/Spring 2022. 3. 7. 17:09
안녕하세요 이번 포스팅은 빈 스코프(Bean Scope)에 대해서 알아보겠습니다!! 빈 스코프(Bean Scope)란? 지금까지 우리는 스프링 빈이 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때까지 유지된다고 학습했습니다. 이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문입니다. 스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻합니다. 스프링은 다음과 같은 다양한 스코프를 지원합니다. 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프입니다. 프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프입니다. 웹 관련 스코프 - request : 웹 요청이 들..
-
[Spring] 빈 생명주기 콜백Back-end/Spring 2022. 3. 7. 15:08
안녕하세요 이번 포스팅은 Bean 생명주기 콜백에 대해서 알아보겠습니다! 빈 생명주기 콜백 시작 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요합니다. 이번 포스팅은 스프링을 통해 이러한 초기화 작업과 종료 작업을 어떻게 진행하는지 예제로 알아보겠습니다. 간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정해봅시다. 실제로 네트워크에 연결하는 것은 아니고 단순히 문자만 출력하도록 했습니다. 이 NetworkClient는 애플리케이션 시작 시점에 connect()를 호출해서 연결을 맺어두어야 하고, 애플리케이션이 종료되면 disConnect(..