[TIL] 20231220

Xtraa·2023년 12월 20일
0

TIL

목록 보기
31/99

공부한 내용

프로그래머스 코딩테스트

H-Index

import java.util.*;

class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        
        Arrays.sort(citations);
        for (int i = 0; i < citations.length; i++) {
            int h = citations.length - i;
            // citations[i] : [0, 1, 3, 5, 6]
            // h            : [5, 4, 3, 2, 1]
            
            if (citations[i] >= h) {
                answer = h;
                break;
            }
        }
        
        return answer;
    }
}

문제 해결

H-Index 문제 설명이 이해가 도저히 안돼서 따로 설명을 찾아보고 문제를 풀었다.
H-Index에 대해 이해만 하면 쉬운 문제였다.


Dispatcher-Servlet

디스패처 서블릿의 dispatch는 "보내다"라는 뜻을 가지고 있습니다. 그리고 이러한 단어를 포함하는 디스패처 서블릿은 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller)라고 정의할 수 있습니다.

Client Side Rendering

1. 클라이언트 요청이 디스페쳐 서블릿으로 들어옴
2. Handler Mapping을 통해 어떤 Controller로 매핑할지 확인
3. Handler Adapter를 사용해 Controller로 요청 전달
4. Service단에서 비지니스 로직을 사용 (보통 Database CRUD 진행)
5. 컨트롤러가 ResponseEntity 반환
6. 서버 응답을 클라이언트로 반환
  • 기본적인 HTML구조를 받고 JavaScript가 실행되면서 필요한 데이터를 불러와 화면을 작성
  • 서버에 부하가 적습니다.
  • 네트워크를 많이 사용하기 때문에 초기 로딩 시간이 길어집니다.

Server Side Rendering

  • 모든 HTML을 받아서 렌더링만 하면 됩니다.
  • 서버에 부하가 많이 갑니다.
  • 완성된 페이지를 빠르게 볼 수 있습니다.

RESTful API 설계

  • RESTful API란?

    • REST(Representational State Transfer)는 웹 표준을 기반으로 하는 API 설계 아키텍처입니다.
    • RESTful API는 네트워크 상에서 클라이언트와 서버 간의 통신을 위해 자원(Resource)의 상태를 전달하는 방법을 정의합니다.
    • 클라이언트가 서버의 자원에 접근하고 이를 활용할 수 있도록 하는 역할을 합니다.
  • 자원 중심의 URI 설계

    • 자원의 식별: 각 자원은 명확한 URI로 식별되어야 합니다.
    • URI는 명사를 사용
  • HTTP 메서드를 통한 행위 정의

  • 상태 코드의 적절한 사용

    - 200번대 상태 코드
        - 의미 : 클라이언트의 요청이 성공적으로 수행되었음을 나타냅니다.
        - 예시:
            - 200 OK: 요청이 성공적으로 처리됨. GET, PUT 요청에 대한 표준 응답입니다.
            - 201 Created: 요청이 성공적으로 수행되어 새로운 리소스가 생성됨.
            - 204 No Content: 요청이 성공적이지만, 클라이언트에 보낼 콘텐츠가 없음.
            
    - 300번대 상태 코드 (리다이렉션 메시지)
        - 의미: 요청한 리소스가 다른 URI로 이동되었음을 나타냅니다.
        - 예시:
            - 301 Moved Permanently: 요청한 리소스가 영구적으로 새 위치로 이동됨.
            - 302 Found: 요청한 리소스가 일시적으로 다른 위치로 이동됨.
            - 304 Not Modified: 리소스가 변경되지 않았으므로 클라이언트의 캐시된 버전을 사용할 수 있음.
            
    - 400번대 상태 코드 (클라이언트 오류)
        - 의미: 클라이언트의 잘못된 요청으로 인해 서버가 요청을 처리할 수 없음을 나타냅니다.
        - 예시:
            - 400 Bad Request: 서버가 요청을 이해할 수 없음.
            - 401 Unauthorized: 인증이 필요한 요청임.
            - 403 Forbidden: 서버가 요청을 거부함.
            - 404 Not Found: 요청한 리소스를 찾을 수 없음.
            
    - 500번대 상태 코드 (서버 오류)
        - 의미: 서버 측 문제로 인해 요청을 처리할 수 없음을 나타냅니다.
        - 예시:
            - 500 Internal Server Error: 서버 내부 오류로 요청을 처리할 수 없음.
            - 501 Not Implemented: 서버가 요청 메서드를 지원하지 않음.
            - 503 Service Unavailable: 서버가 일시적으로 요청을 처리할 수 없음 (예: 과부하 또는 유지보수로 인해).
  • 데이터 포맷

    • JSON(JavaScript Object Notation) 형식을 통해 데이터를 교환하는 것이 트렌드 입니다. XML보다 가볍고, 인간이 읽기 쉽습니다.

하루를 돌아보며, TMI

아자아자~

참고자료

포스텍 학술정보매거진 온ː 에어(ON AIR), H-Index

profile
https://xtraa.notion.site/Xtraa-ed48ac432d354d01b5bf5b0da5ec94a9?pvs=4

0개의 댓글