Servlet만을 사용해서 회원 관리 구현 요청과 응답을 서블릿을 이용해서 처리할 수 있다. 이를 이용해서 구현해본다. 서블릿으로 요청 메시지, 응답 메시지, 조회 결과 등을 구현한다. 모든 요청/응답 HTTP 메시지의 Header 정보 및 Body 값을 자바 코드로 세팅해줘야 한다. 회원 저장 요청 FORM 서블릿 저장한 회원의 정보를 받는 HTML FORM을 만들어야 한다. 이를 위한 서블릿을 생성한다. HTML로 POST 형식의 Form을 만들 것이므로 ContentType은 text/html 로 하고 인코딩은 utf-8로 한다. Form은 HTML 코드를 문자열로 생성한다. @WebServlet(name = "memberFormServlet", urlPatterns = "/servlet/membe..
SYN Flooding Attack란? SYN ACK는 4 Layer 계층에서 TCP의 3-way hadnshake를 맺을 때 교환하는 비트 정보이다. 기본적인 TCP 3-way handshake 클라이언트가 서버에 SYN을 보낸다. 서버가 SYN 응답으로 ACK를 보내고 연결을 위해 SYN을 보낸다. 클라이언트가 SYN 응답으로 ACK를 보낸다. SYN Flooding Attack 방식의 경우 공격자가 서버에 SYN을 보낸다. 서버가 SYN 응답으로 ACK를 보내고 연결을 위해 SYN을 보낸다. (ACK를 기다리며 대기한다.) 공격자는 ACK를 보내지 않고 대량의 SYN을 보낸다. (이때 패킷은 내용은 없고 헤더에 SYN 비트만 체크되어있다) 서버는 SYN에 대응하기 위해 사용하지 않는 포트를 계속 할..
https://www.acmicpc.net/problem/19845 🐢 설명 넴모넴모들이 왼쪽아래에 모여있다는 조건이 있으므로 쉽게 풀 수 있다. 우리가 구해야할 값은 레이저의 설치 좌표가 주어졌을 때 오른쪽에서 지울수 있는 넴모의 개수와 자신의 위 행에서 지울 수 있는 넴모의 개수의 합을 구하기만 하면 된다. 오른쪽에서 지울 수 있는 넴모 개수 구하기 이때 오른쪽은 비교적 쉽게 구할 수 있는데 각 층마다 알려준 넴모의 개수가 있으므로 이를 이용해서 계산하면 된다. (y, x) 레이저 설치 시 지울 오른쪽 넴모의 개수 = 층에 존재하는 넴모 개수 - x (레이저 열 위치) + 1 (자기위치) 를 통해 구할 수 있다. floorInfo[row - 1] - col + 1 만약 음수라면 0으로 치환해주는걸 잊..
서블릿 응답 클라이언트로 부터 온 요청을 담당하는 서블릿이 request를 처리하고 response를 보낸다. 이 response도 HTTP 프로토콜로서 형식을 만들어줘야 한다. 직접 문자열을 만들어서 반환해도 되지만 상상만해도 머리가 아프다. 이거를 서블릿이 필요한 값만 전달해주면 알아서 응답 메시지로 만들어서 반환해 준다. 응답코드, 응답 형식, 인코딩 설정, 캐시 설정 등을 할 수 있다. 응답 헤더 작성 Response Header의 구성요건을 직접 문자열로 작성하는 방법 @WebServlet(name = "responseHeaderServlet", urlPatterns = "/response-header") public class ResponseHeaderServlet extends HttpSer..
Servlet Java는 서블릿을 이용해서 HTTP 요청을 처리하게 된다. 서블릿은 개발자가 HTTP 요청을 쉽게 처리할 수 있도록 만들어진 기술로, 서블릿 대신 직접 문자열 파싱으로 프로토콜과 주어진 매개변수, 인코딩 형식 등 다양한 옵션 및 값을 처리해도된다. 하지만 이것이 너무 힘드니깐 만들어진 존재이다. 서블릿 정리 글 ----> [Web/정리글] - 자바 웹 역사 정리 서블릿 응답 처리 @WebServlet(name = "requestParamServlet", urlPatterns = "/request-param") public class RequestParamServlet extends HttpServlet { @Override protected void service(HttpServletRe..
https://www.acmicpc.net/problem/1477 🐢 설명 처음에는 휴게소를 세울 때 기존 휴게소 사이에 (중간)에 세우면 되는게 아닌가 생각했다. 하지만 이부분은 거리가 300일 때 150으로 나눌순 있지만 100, 100, 100으로 나누는 방법은 제공하지 못한다. 새로운 접근 방법은 이분탐색이다. 휴게소간 사이 거리 S를 정하고 S일 때 휴게소를 몇개 세울 수 있나 확인한다. 이때 세운 휴게소의 수가 세워야 하는 휴게소 M개보다 크다면 -> 간격이 너무 좁으므로 간격을 늘려서 휴게소를 덜 짓는다. 세워야 하는 휴게소 M개보다 작거나 같다면 -> 간격을 더 줄일 수 있다는 의미이므로 간격을 줄여서 휴게소를 더 짓는다. 위와 같이 이분탐색을 통해 적절한 휴게소 사이 거리를 탐색하고,..
https://www.acmicpc.net/problem/13397 🐢 설명 처음에는 좀 막막하게 다가온 문제이다. N개의 수가 주어졌을 때 어느 구간으로 나눴을 때 구간 내 최대값의 차이가 최소인 수를 구하는 문제이다. 구간의 크기를 동적으로 바꿔줘야 하는 문제인가 했지만 이분탐색으로 풀 수 있는 문제였다. 그럼 뭘 이분탐색할지가 중요한데 바로 구간 내 값의 차이를 이분탐색하면 된다. 주어진 수는 1 ~ 10000의 수가 주어진다 하였으므로 해당 수를 이분탐색해서 mid값으로 분할을 할 수 있는지 본다. 즉 정리하면 1. 0 ~ 10001 범위에서 mid를 잡는다. 해당 mid는 구간 내 차이의 값을 의미한다. 2. 해당 mid값으로 구간을 나눠보고 전부 나눴을 때 구간의 개수를 반환받는다. 3 -1...
서블릿 서블릿은 클라이언트의 요청에 대해 멀티 쓰레드로 처리가 가능하도록 한 기술이다. 쓰레드가 서블릿을 할당받아서 수행하게 되고, 개발자는 쓰레드에 관해 신경쓰지 않아도 되게됐다. 문제는 HTML 생성이 어려웠다. 요청에 대해 동적으로 HTML 웹 뷰를 생성하는게 너무 힘들었다는 것. JSP HTML 화면을 쉽게 작성할 수 있고 + Java code도 작성할 수 있게 됐다. 결국 서블릿으로 변환되어 처리되지만 해당 부분은 개발자가 신경쓰지 않아도 되는 부분이다. 문제는 HTML 생성은 편리한데 비지니스 로직까지 담당하게 된다. 서블릿, JSP 조합 MVC 패턴 사용 모델, 뷰, 컨트롤러로 역할을 나누어 개발하게 된다. 화면을 담당하는 뷰에 너무 많은 부담을 주지 않도록 하기위해 나왔다. 이 패턴이 비슷..
자바 웹 서버에서 요청들이 오면 해당 요청들을 처리하는 것이 서블렛이다. 이 서블렛들은 싱글톤으로 관리된다 했는데 서블렛을 부르는 존재는 누구일까? 쓰레드 애플리케이션 코드를 하나하나 순차적으로 실행하는 것이 쓰레드이다. 프로그램의 수행단위가 쓰레드. 자바 메인 메서드를 처음 실행하면 main이라는 이름을 가진 쓰레드가 실행된다. 쓰레드가 없다면 자바 애플리케이션 실행 조차 불가능하다. 쓰레드는 한번에 하나의 코드라인만 수행한다. 이를 위해 각 쓰레드는 PC라는 프로그램 카운터를 갖는다. 동시 처리가 필요하면 쓰레드를 추가 생성한다. WAS에 클라이언트로부터 요청이 들어오고 -> 해당 요청에 쓰레드가 할당된다 -> 쓰레드에 요청에 맞는 서블렛을 불러와서 코드를 실행을 하게 된다. Q. 만약 쓰레드가 할당..
https://www.acmicpc.net/problem/17490 🐢 설명 원형의 호수를 둘러싼 건물들에 대해 최소 스패닝 트리를 만들어야 한다. 이때 중요한 점은 건물군(동일한 부모를 갖는 건물들)이 하나라면, 즉 건물 사이를 막는 공사가 없거나 하나라면, 아무리 다리를 만드는 비용이 비싸도 모든 다리를 만들 필요없이 모든건물들을 갈 수 있으므로 무조건 YES 이다. 위 예외 사항을 제외하면 일반적인 유니온 파인드로 문제를 풀 수 있다. 1. 각 건물들의 부모를 자신의 번호로 지정하고, 건물 사이의 공사 여부를 체크해준다. 2. 각 건물들을 돌면서 같은 건물군인지 확인하고 & 사이에 공사구간이 없다면 같은 건물군으로 묶어준다. 이때 마지막 건물은 첫번째 건물까지 확인하게 해준다. 3. 건물번호와 부모..
Caching 한정된 빠른 공간(Cache)에 요청된 데이터를 저장해 두었다가 후속 요청시 캐쉬로부터 직접 서비스하는 방식 program system외에도 cache memory, buffer caching, web caching등 다양한 분야에서 사용하고 있다. 캐쉬 운영의 시간 제약 교체 알고리즘에서 삭제할 항목을 결정하는 일에 지나치게 많은 시간이 걸리는 경우 실제 시스템에 적용하기가 어렵다. 마지노선 (log N) 빠르게 데이터를 가져오기 위해 사용하는 것인데, 메모리에 올리기위해 공간확보에 시간을 오래쓰게 되면 비효율적이다. Buffer caching & Web caching의 경우 → O(1) ~ O (log N) 정도까지 허용한다. 여기서 LRU, LFU 알고리즘이 사용된다. Paging S..
https://www.acmicpc.net/problem/12764 🐢 설명 싸지방 컴퓨터를 사용하는 순서가 주어졌을 때 최소 몇개의 컴퓨터가 있어야 대기없이 컴퓨터를 사용할 수 있는지 구하는 문제이다. 이때 사용가능한 컴퓨터 중에서 번호가 가장 빠른 컴퓨터 사용한다는 점이 중요하다. 1. 모든 컴퓨터의 이용시간을 시작 시간을 기준으로 user_우선순위큐에 넣는다. 2. 사용하는 컴퓨터를 담는 usingCom_우선순위큐에는 끝나는 시간을 기준으로 담는다. 2-1. 만약 usingCom이 없다면 컴퓨터 자리를 새로 만들어서 추가한다. 2-2. 만약 usingCom이 있다면 자신의 시작 시간과 컴퓨터의 사용가능한 시간대를 확인하고 가능한 컴퓨터의 자리는 좌석순서_우선순위큐에 담는다. 2-2-1. 좌석순서_우..
- Total
- Today
- Yesterday