본문 바로가기

전체 글

(144)
HTTP 서버를 편리하게 만들 수 있는 HttpServlet 이해와 사용법 개요 목적 Java로 직접 구현하는 HTTP Sever 해당 프로젝트에서는 http 관련 클래스 없이 java 코드만으로 HTTP 프로토콜 서버를 구현했다. 그러다보니 Client Request Message를 일일이 분석해서 비지니스 코드에 적용해야 하고 그 결과를 Response 형식에 맞춰서 보내줘야 하는 동작을 반복해야 했다. 이러한 HTTP 서버를 만들 때 반복되는 동작들을 일관적으로 대신 처리해주는 것이 WAS에서 사용하는 서블릿이다. 자바는 HttpServlet 인터페이스를 사용하여 HTTP 서버를 비지니스 로직에만 집중하며 만들 수 있다. 이번 시간에는 Spring에서도 사용하는 서블릿에 대한 이해와 HttpServlet의 기본 사용법을 알아보겠다. 서블릿이란 서블릿은 개발자가 HTTP 스..
Java로 직접 구현하는 HTTP Server 관련 내용 [백엔드/네트워크 지식] - 리퀘스트 메소드와 HTTP 상태 코드 [백엔드/네트워크 지식] - HTTP 프로토콜 이해와 HTTP 버전 별 특징 개요 목적 이번 시간의 목표는 자바에서 제공하는 httpserver 클래스 사용 없이 HTTP 프로토콜을 사용하는 웹서버를 ServerSocket만 사용하여 구현하는 것이다. 그러기 위해서는 client가 보내오는 Request Message 구조를 이해하고 분석하여 원하는 동작을 얻어야 하며 Response Message 구조에 맞춰서 그에 맞는 데이터를 보내줘야 한다. HttpServer 클래스를 사용하는 것보다 불편하지만 HTTP 프로토콜을 직접 구현하면서 해당 프로토콜에 대한 이해를 높이는 좋은 시간이었다. ServerSocket으로 HTTP W..
Java 코딩 테스트 그리디 알고리즘 문제 풀이 개요 목적 미래를 생각하지 않고 각 단계에서 가장 최선의 선택을 하는 기법이다. 이렇게 각 단계에서 최선의 선택을 한 것이 전체적으로도 좋은 결과를 내기를 바라는 풀이법이다. 씨름 선수 5 172 67 183 65 180 70 170 72 181 60 풀이 먼저 키가 큰 선수가 앞으로 오게 내림차순을 한다. 이제 자신 앞 선수들 중 가장 큰 몸무게보다 자신이 더 나가기만 한다면 뒤에 있는 선수들보다는 키가 크고(몸무게 비교 불필요) 앞에 있는 선수들보다는 몸무게가 많이 나가기 때문에 선발이 된다. 선발이 되면 cnt ++ 출전 선수 1명을 추가하고 가장 무거운 몸무게를 해당 선수 몸무게로 변경한다. import java.util.*; class Body implements Comparable{ publi..
Security-JWT 토큰을 이용한 OAuth2(Google) 인가 서비스 구현 개요 목적 이전 글에서는 Security와 JWT 토큰을 사용한 인증, 인가 서비스를 구현해보았다. [백엔드/스프링] - Spring Security와 JWT 토큰을 이용하여 REST API 인증,인가 구현하기 이번 시간에는 OAuth2-Google를 기존의 Security와 연결하여 Google 계정으로 인가 서비스를 제공해보려 한다. 기존의 Security와 JWT 토큰을 사용한 인증, 인가 프론트 - 백엔드 흐름은 아래와 같다. 이번 시간에 추가될 OAuth2-Google 흐름은, 구글 계정으로 로그인 한 후 해당 정보를 DB에 저장 JWT 토큰을 발급 전달하는 과정이다. 이 과정이 끝나고 UI에서 똑같이 JWT 토큰을 획득하면 기존 Security 인가 서비스를 그대로 이용할 수 있게 된다. 하나..
스프링 알림 기능 - Spring Data JPA DB 구현 개요 목적 스프링으로 구현한 서비스에서 알림 기능을 추가하기 위한 데이터 베이스(Spring Data Jpa) 설정 방법에 대해 알아본다. 알림 서비스에서 사용할 예시는, 황대영이라는 유저가 관리하는 유저 문장 그룹이 있고, 해당 문장 그룹을 구독하는 김민우 유저가 존재한다. 문장 그룹을 구독하거나, 구독한 문장 그룹이 입데이트(문장 추가,삭제)되면 각 관련 유저에게 알림이 가는 시스템이다. 실제 사용 동작 예시 확인 1. 구독자 추가 알림 - 문장 그룹 주인 황대영에게 구독자가 늘었다고 알림이 간다. 2. 문장 추가 알림 - 황대영 문장 그룹에 문장이 추가되면 구독한 김민우 유저에게 문장 그룹이 업데이트 되었다고 알림이 간다. 3. 문장 삭제 알림 - 문장 그룹에 문장이 삭제되면 구독한 김민우에게 문장..
웹 브라우저 이해와 데이터 저장소 개요 목적 이번 시간에는 HTTP 프로토콜을 사용하고 다양한 웹 검색을 가능하게 해주는 웹 브라우저에 대해서 알아본다. 먼저 웹 브라우저에 대한 이해와 웹 브라우저가 어떻게 웹페이지를 보여주는 과정에 대해 알아본다. 그리고 브라우저에 데이터를 저장하는 Local Storage, Session, Cookie 데이터 저장소 종류와 특징에 대해서 알아본다. 웹브라우저 이해와 브라우저 렌더링 과정 이해 웹브라우저는 다양한 웹 서버(누구의 블로그, 네이버 웹툰 서버)의 다양한 정보들을 검색하고 조회할 수 있도록 도와주는 프로그램을 뜻한다. 대표적 브라우저는 크롬, 웨일, 마이크로엣지가 있다. 브라우저는 유저가 선택한 자원을 서버로 부터 받아와서 유저에게 보여준다. 이 자원은 페이지 외에도 이미지, 비디오 등의 컨..
코딩 테스트 Java BFS 활용 문제 풀기 개요 목적 Java BFS 기초 이해와 문제 풀이 해당 글에서는 재귀함수와 BFS기초를 알아보았다. 이번 시간에는 BFS 활용 문제를 풀면서 BFS 문제 풀이 실력을 늘려보자. 동전 교환 3 1 2 5 15 풀이 최소 개수를 구하는 문제이기 때문에, BFS를 사용하는 것이 유리하다. DFS의 경우, 1,2,5로 시작할 때, 1+1+1+1+1 1에서 1을 더하는 모든 경우의 수를 구한 후에, 값이 나오지 않으면, 2로 넘어가고 5로 넘어간다. 반면에, BFS는 L=1인경우 동전을 하나 사용했을 경우 합을 구한 후에 답이 없다면, L=2 동전 두개 사용한 경우 합을 구하는 방식으로 메소드가 진행된다. 그래서 동전을 3개 사용했을 때, 5+5+5를 구하는 경우의 수를 빠르게 찾을 수 있다. import jav..
코딩 테스트 Java DFS 활용 문제 풀기 개요 목적 Java DFS 기초 이해와 문제 풀이 해당 글에서는 재귀함수와 DFS 기초를 알아보았다. 이번 시간에는 DFS 활용 문제를 풀면서 DFS 문제 풀이 실력을 늘려보자. 합이 같은 부분집합(DFS : 아마존 인터뷰) 6 1 3 5 6 7 10 풀이1. ch 배열( 해당 숫자 포함될 때, 안될 때 - 사용) import java.util.*; class Main { static int n; static int[] arr; static int[] ch; static int half; static boolean result; public void DFS(int v) { if (v == n+1) { System.out.println(Arrays.toString(ch)); int sum = 0; for ..

반응형