1. HTTP API 만들기 API URI(Uniform Resource Identifier)를 설계 시에 중요한 것은 리소스의 식별입니다. 예를 들어, 회원을 등록, 수정, 조회, 삭제하는 기능을 설계한다고 가정해보겠습니다. 회원 목록 조회 /read-member-list 회원 조회 /read-member-by-id 회원 등록 /create-member 회원 수정 /update-member 회원 삭제 /delete-member 여기서 회원을 등록하고 수정하고 조회하는 동작은 리소스가 아닙니다. 여기서의 리소스는 회원이라는 개념입니다. 더 쉽게 예를 들자면 미네랄을 캐라는 명령에서 캐는 행위가 리소스인 것이 아니라 미네랄이 리소스입니다. 그래서 위 예시처럼 URI를 설계한다면 리소스가 명확히 드러나지 않..
분류 전체보기
1. HTTP (HyperText Transfer Protocol) HTTP 메시지를 통해 다양한 종류의 데이터를 전송할 수 있습니다. HTML, 텍스트, 이미지, 음성, 영상, 파일, JSON, XML 등 모든 형태의 데이터를 전송할 수 있습니다. 서버 간에 데이터를 주고받을 때에도 대부분 HTTP를 사용합니다. HTTP는 HTTP/0.9부터 시작하여 HTTP/1.0, HTTP/1.1, HTTP/2, HTTP/3까지 이어집니다. HTTP/0.9 버전에는 GET 메서드만 지원하고 HTTP 헤더X가 없었습니다. 1997년에 등장한 HTTP/1.1은 가장 널리 사용되는 버전으로, 지금 HTTP의 대부분의 기능이 포함되어 있습니다. 이후에 등장한 HTTP/2와 HTTP/3는 성능 개선을 위해 개발되었고, 특히..
URI(Uniform Resourse Identify) URI 란 리소스를 식별하는 방법을 말합니다. 인터넷 상의 어떤 자원이나 정보를 고유하게 식별하는 방법을 제공하는 것입니다. URI를 단어 그대로 파헤쳐보자면,Uniform : 리소스를 식별하는 통일된 방식Resource : 자원, URI로 식별할 수 있는 모든 것Identifier : 다른 항목과 구분하는데 필요한 정보즉 리소스를 식별하는 통일된 방식으로 볼 수 있습니다. 그런데 URI 외에도, URL과 URN이라는 단어도 많이 들어보셨을 겁니다. URI과의 차이가 무엇일까요? (1) URL과 URN 결론부터 말하자면, URI 안에 URL과 URN이 포함되는 개념입니다. URI는 Resource Identifier로 리소스를 식별합니다. 자..
IP(인터넷 프로토콜) 복잡한 인터넷 망에서 멀리 있는 대상에게 정보를 전송해야하는 경우, IP 주소를 통해 이를 가능하게 합니다. IP 주소는 통신 네트워크 상에서 각 장치를 식별하는 주소로, 어떤 데이터를 지정한 IP 주소에 전송합니다. 이때, 데이터는 패킷이라는 작은 통신 단위로 분할되어 전송됩니다. (1) IP 패킷 정보 패킷은 패키지 + 버킷으로 택배를 보내는 상자 정도로 생각할 수 있습니다. 패킷에는 출발지 IP 주소와 목적지 IP 주소를 가지고 있습니다. 전송하면 네트워크 상의 노드를 통해 전달됩니다. 전송 과정에서 각 노드는 패킷을 받아 목적지 주소를 확인하고, 다음에 어디로 전송해야할지를 결정합니다. 이 과정은 라우팅이라고 하는데, 패킷은 이런 라우팅을 통해 최종적인 목적지에 도달합니다..
정렬 알고리즘을 배우며 병합 정렬, 퀵 정렬 등 다양한 종류의 알고리즘에 대해 배웠습니다. 그렇다면 자바에서 자주 사용하는 Arrays.sort() 는 어떤 알고리즘으로 구현되어있는지 궁금해졌습니다. 구글링과 자바 내부코드를 보면, Arrays.sort는 듀얼 피봇 퀵소트를 사용한다라고 나와있습니다. Arrays.sort 메서드 내부를 들여다보면서, 듀얼 피봇 퀵소트란 무엇인지 그리고 범위에 따라 어떤 정렬 방식을 적용하는지를 알 수 있었습니다. Arrays.sort() 내부 들여다보기int[] arr = {1, 3, 4, 2, 1 ,7};Arrays.sort(arr)---result: {1, 1, 2, 3, 4 ,7} 보통 자바에서 배열을 정렬할 때, java.util.Arrays 클래스의 so..
지난 포스팅에서 자바 제너릭의 도입 배경과 기능을 살펴보았습니다. 이번 포스팅에서는 제너릭의 중요한 특징인 PECS에 대해 살펴보겠습니다. PECS PECS(Producer Extends Consumer Super)란, Producer(데이터 생산: 조회) Component에서는 extends 를 사용하고 Consumer (데이터 소비: 저장, 수정 등) Component 에서는 super를 사용한다는 의미입니다. 불공변이란? 이것을 보다 자세히 이해하기 위해서는 제너릭의 불공변이라는 특징을 알아야만 합니다. 불공변이란, 서로 다른 제너릭 타입 간에는 상하위 관계가 없다는 것입니다. public class Vehicle {}//Car 클래스public class Car extends Vehicle {..