Study 썸네일형 리스트형 [백엔드TIL] REST API 설계 시 고려사항 API란 Application Programming Interface의 약자로 프로그램을 실행하는 인터페이스입니다. API를 통해 프로그램에 요청을 전달하기위한 통로 혹은 방법 RESTful API에서 HTTP Method GET: 조회 (받겠다) POST: 리소스 생성 (보내겠다) PUT: 리소스 전체 갱신(놓겠다/넣겠다) DELETE: 리소스 삭제 (지정한 서버의 파일을 삭제하겠다) 설계 예 :id와 같이 변하는 값은 하나의 특정 resource를 나타내는 고유값이어야 합니다. REST API 디자인 가이드 REST API 설계 시 가장 중요한 항목은 다음의 2가지로 요약할 수 있습니다. 첫 번째, URI는 정보의 자원을 표현해야 한다. 두 번째, 자원에 대한 행위는 HTTP Method(GET, P.. 더보기 [백엔드TIL] JSP와 Servlet 개념 Server Side Applet인 Servlet에 대해여 정의하고 Servlet클래스를 만들기 위한 방법을 기술하시오 -JAVA Servlet은 JAVA를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿" 이라 불린다. 서블릿은 JAVA EE 사양의 일부분으로, 주로 이 기능을 이용하여 쇼핑몰이나 온라인 뱅킹 등의 다양한 웹 시스엠이 구현되고 있다. 서블릿은 외부 요청마다 프로세스보다 가벼운 쓰레드로써 응답하므로 보다 가볍다. 또한 , 서블릿은 JAVA로 구현되므로 다양한 플랫폼에서 동작한다. Servlet과 JSP의 차이점에 대하여 말해주세요 -servlet은 java 소스에 HTML코드가 삽입된다 -JSP는 반대로 HTML코드에 java코드가 삽입된다. .. 더보기 [백엔드TIL] DFS 개념 및 부분집합 문제 DFS · DFS(Depth-First Search)는 깊이 우선 탐색이라고 부르며, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 알고리즘 동작 방식 · 스택 자료구조를 이용한다. 1. 탐색 시작 노드를 스택에 삽입하고, 방문 처리한다. 2. 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문 처리하고, 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼낸다. 3. 위의 1번과 2번 과정을 더 이상 수행할 수 없을 때까지 반복한다. * ‘방문 처리': 스택에 한 번 삽입되어 처리된 노드가 다시 삽입되지 않게 체크하는 것을 의미한다. 이를 통해 각 노드를 한 번씩만 처리할 수 있다. 부분집합 문제 설명 N개의 원소로 구성된 자연수 집합이 주어지면, 이 .. 더보기 [백엔드TIL] IOC 와 DI 개념 IoC (Invesion of Control) 1. '제어' 와 '역전' 의 의미 제어: 어떠한 클래스 내부에서 다른 객체를 생성하고 이용할 때, 직접 코드를 생성하여 '제어' 한다고 한다. 역전: 객체를 클래스 내부에서 직접 생성하고 제어하는 것이 아니라, 외부에서부터 인자로 받아 초기화 하는 것 2. IoC (제어의 역전) 가 필요한 이유 영상에서 서브웨이를 예시로 이해하기 편하게 설명해주었다. 서브웨이에서 샌드위치를 주문한다고 하자. IoC 가 적용되지 않은 경우: 클래스 내부에서 다른 객체를 제어하고, 외부에서 인자를 받지 않기 때문에, 커스텀 없는 기본 레시피의 샌드위치라고 생각할 수 있다. IoC 가 적용된 경우: 외부에서 인자를 받아 객체를 생성하고 초기화하므로 샌드위치의 속 재료를 커스텀 .. 더보기 [백엔드TIL] BFS 너비 우선 탐색(JAVA) BFS 너비 우선 탐색(Breadth First Search) "꼼꼼하게 좌우를 살피며 다니자"와 같이 시작 정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하는 알고리즘이다. 시작 정점을 지나고 나면 깊이가 1인 모든 정점을 방문하고, 그다음에는 깊이가 2인 모든 정점을 방문한다. 이런 식으로 한 단계씩 깊이를 더해가며 해당 깊이에 있는 모든 정점들을 방문해 나가다가 나중에는 더 이상 방문할 곳이 없을 때 탐색을 종료한다. * 루트 노드(혹은 다른 임의의 노드)에서 시작해서 인접한 노드를 먼저 탐색하는 방법 * 사용하는 경우: 두 노드 사이의 최단 경로 혹은 임의의 경로를 찾고 싶을 때 이 방법을 선택한다. BFS의 특징 BFS는 시작 정점으로부터 거리가 가까운 정점의 순서.. 더보기 [백엔드TIL] DFS와 BFS란? 작동 방식과 구현 방법 이 글은 DFS와 BFS 개념에 대해 설명하고, 작동 방식을 그림으로 보여주며, 이러한 작동 방식을 자바 소스 코드로 구현합니다. 학습 목표 ㆍDFS ㆍBFS ㆍ정리 DFS · DFS(Depth-First Search)는 깊이 우선 탐색이라고 부르며, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 알고리즘 동작 방식 · 스택 자료구조를 이용한다. 1. 탐색 시작 노드를 스택에 삽입하고, 방문 처리한다. 2. 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문 처리하고, 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼낸다. 3. 위의 1번과 2번 과정을 더 이상 수행할 수 없을 때까지 반복한다. * ‘방문 처리': 스택에 한 번 삽입되어 처리된 노드가.. 더보기 [백엔드TIL] TCP, UDP 특징과 차이점 오늘은 네트워크의 계층들 중 전송 계층에서 사용하는 프로토콜에 대해서 알아보려고 합니다. 전송계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층으로, 쉽게 말해 데이터의 전달을 담당합니다. 그리고 데이터를 보내기 위해 사용하는 프로토콜이 있는데, 그 프로콜들이 바로 오늘의 주인공 TCP와 UDP입니다. 원래 TCP와 UDP에 대한 글을 포스팅 할 생각은 1도 없었는데, UDP 채팅 서버를 구현해야하는 과제를 하는 과정에서 부족함을 느끼고 공부의 목적으로 포스팅을 결심했습니다. 많이들 알고 계실텐데 그래도 확실히 집고 넘어가면 좋을 것 같습니다 전송계층이 어디있나 헷갈리시는 분들을 위해 OSI 7layer와 TCP/IP 4layer에 대한 사진도 첨부합니다~ 1. TCP(Transmission C.. 더보기 [백엔드TIL] AWS serverless 개발 -cognito 개념 AWS cognito란? - 유저 계정 관리, 자격증명(토큰 관리)를 따로 DB사용과, Security 구현 없이 사용할 수 있게 하는 AWS 기능. User pool(사용자풀) - 사용자 가입 및 로그인 기능 담당 Identity Pool (자격 증명 풀) - AWS 엑세스에 필요한 임시자격증명 - AWS 내의 서비스(S3 등)에 접근하기 위한 토큰 생성 가능 - 토큰은 jwt기반 자격 증명 토큰(jwt) 구조 - "iss": https://cognito-idp.{지역}.amazonaws.com/{유저풀id} - 유저 풀 id는 aws에서 조작 - "username" : 필수 입력해야함. AWS cognito 아키텍처 방안 1. 프론드엔드단에서 가입, 자격 증명하기 - 장점: 구성 쉬움(백엔드 없음) .. 더보기 [백엔드 TIL] WEB 과 WAS 개념 웹(Web)의 개념 WWW(World Wide Web)이란 인터넷에 연결된 전세계 사용자들이 서로의 정보를 공유할 수 있는 장소를 의미한다. 웹에는 수많은 '웹사이트(Website)'들이 있고, 각각의 웹사이트는 '웹 페이지(Web Page)'로 구성된다. 즉, 서로 연관된 내용으로 작성된 웹 페이지들의 집합을 웹 사이트라고 부른다. 웹이란 온라인 상에 다양한 정보(웹 페이지)가 서로 연결(링크)되어 있는 것이라고 볼 수 있다. 서버(Server) 네트워크를 통해 클라이언트에게 정보나 서비스를 제공하는 컴퓨터 시스템 웹 서버 ( Web Server ) - 클라이언트의 요청을 받아 HTML이나 Object를 HTTP 프로토콜을 기반으로 이용해서 전송하는 것 (정적 컨텐츠를 제공하는 서버) - 사용자가 클라.. 더보기 [백엔드TIL] TDD (Test Driven Develpment) 원리 TDD (Test Driven Develpment) 테스트 주도 개발 -> 성공 테스트뿐만 아니라 실패 테스트까지 작성해야한다 반복 테스트를 이용한 소프트웨어 방법론 작은 단위의 테스트 먼저 설계 및 구축 후 테스트를 통과할 수 있는 코드를 짜는 것 애자일 개발 방식 중 하나 -> 코드 설계시 원하는 단계적 목표에 대해 설정하여 진행하고자 하는 것에 대한 결정 방향의 갭을 줄이고자 함 테스트 코드 작성 목적 코드의 안정성 높일 수 있음 기능을 추가하거나 변경하는 과정에서 발생할 수 있는 side-effect를 줄일 수 있음 -> A기능을 수정하기위해 어떤 메소드를 수정하는데, 이 메소드를 B기능에서도 사용하고있었을 때. B기능이 동작이 제대로 되지않을 수 있는데 이와 관련된 테스트코드 미리 작성해뒀다면 .. 더보기 이전 1 2 3 4 5 6 7 ··· 17 다음