ArrayList 는 기본적으로 배열로 구현되어 있습니다.LinkedList 는 연결 리스트로 구성되어 있으며, 배열의 단점을 보안하기 위해 등장 하였습니다.❗ 데이터 조회
ArrayList에서는 찾고자 하는 인덱스로 조회가 가능하여 참조(조회)에는 유리합니다.LinkedList에서는 원하는 인덱스 까지의 노드 까지 순차적으로 접근하기 때문에 참조(조회) 에는 불리합니다.
❗ 데이터 삽입, 삭제
ArrayList에서 데이터의 삽입과 삭제가 발생하면 해당 위치 까지 맞춰야 합니다.
- 예를 들어 위의 사진에서 A를 삭제하게되면 B,C 데이터는 앞으로 한칸씩 이동해야 합니다.
LinkedList에서 데이터의 삽입과 삭제가 발생하면 연결 관계만 수정해주면 됩니다. ( 가르키고 있는 주소값만 변경 )
- 예를 들어 위의 사진에서 B를 삭제하게되면, A,C 데이터의 연결 관계만 수정해주면 됩니다. ( A 노드가 B 노드를 가르키게 하면 됨 )
데이터 조회에는
ArrayList의 성능이 우위에 있지만,
삽입/삭제 시에는LinkedList가 뛰어난 성능을 보여준다.
- 따라서 상황에 따라 필요한것을 사용하면 될것같습니다.
- 메모리 상에 저장된 데이터를 전송 가능한 형태로 바꾸는 작업
( byte 형태로 변환 하는 작업 )- 객체를 해석 가능한 문자열로 표현하는 방식
✔ 직렬화의 반대는 역직렬화 입니다.
( 객체 데이터를 받기 위해서는[,]로 묶어서 작성합니다. )
데이터를 주고받거나 활용할수 있는 데이터 표현 방식이며 많이 활용됩니다.
특징으로는
- 사람이 읽고 쓰기 쉽다
- 기계가 파싱(해석)하고 만들기 편함
- Map 자료구조의
Key-Value쌍
"REST는 화면(HTML)(View)이 아닌 데이터 자체를 리턴한다"
- 저희가 HTTP를 이용한 서버를 구현할 때 지켜야 하는 설계 원칙을 부르는 용어입니다.
@ResponseBody,@RestController,ResponseEntity등 을 자주 사용- HTTP를 이용해 통신을 할때, 서버와 클라이언트 사이의
결합성을 줄임으로서 성능 향상, 확장성 확보, 사용성 증대 등을 위한 목적으로 설계한 제약사항들 입니다.
1. 클라이언트 - 서버 구조
클라이언트와 서버는 독립적이어야 합니다.
- 여기서 독립적이라는 것은
서버는 데이터의 표현(인터페이스)에 대해서 알 필요 없으며,
클라이언트는 서버의 데이터가 어떤식으로 관리되고 전달되는지 알 필요가 없어야 된다는 원칙 입니다.
( 독립적으로 개발 되거나 대체할수 있게 유지, 관심사의 분리 )
2. Statelessness (무상태성)
클라이언트가 보내는 요청에는 서버가 해당 요청을 이해하는데 충분한 정보를 포함하고 있어야합니다.
서버가 이전에 보내진 요청에 대한 정보를 저장할 필요가 없어야 된다는 원칙 입니다.
- 위 사진에서 요청으로 Alex의 정보를 저장했는지 물었을때 No 가 되어야합니다.
3. Cacheability
인터넷에서 클라이언트는 응답을 캐시에 저장해 두는 경우가 존재합니다.
서버에 보내주는 응답은 명시적 또는 암묵적으로 그 응답이 캐싱이 가능한 응답인지를 표현해주어야 하는 원칙 입니다.
- 이는 일반적으로 HTTP에서
Cache-Control헤더를 활용해서 구현합니다.
4. Layered System (다중 계층)
REST는 다중 계층 구조를 가질 수 있도록 허용한다.
API 서버와, DB 서버와 그리고 인증 서버를 따로 둘수 있도록 합니다.
5. Code on Demand (Optional)
서버는 실행 가능한 코드의 형태로 클라이언트의 기능을 일시적으로 클라이언트의 기능을 확장할 수 있어야 합니다.
6. Uniform Interface
📍 URL에 해당 자원에 대한 내용이 명확히 표현되어야 한다는 의미입니다.
// students 중 ID 가 studentId인 자원에 대한 요청
GET/students/{studentId}
📍 자원에 대하여 조작을 할때, 그 자원의 상태의 표현으로 조작이 가능하여야 합니다.
- 어떤 자원을 추가하고 싶다면, 그 자원을 표현한 JSON 이나 XML 등의 형식으로 자원을 표현하여야 하고,
- 서버도 마찬가지로 자원에 대한 정보를 응답할 때 그 자원을 표현한 특정 형식으로 응답하여야 합니다.
📍 각 요청과 응답은 자기 자신을 해석하기 위한 충분한 정보를 포함하여야 합니다
어떤 HTTP 요청을 보낼 때, 그 요청이 담고있는 데이터를 해석하는 방식에 대한 정보를 충분히 공급해야 한다는 의미입니다.
예시 :Content-Type: application/json( JSON 방식 )
이 6가지 원칙을 준수한 인터페이스는 RESTful하다고 표현합니다. 하지만 REST 원칙을 100 퍼센트 지켜가며 큰 서비스를 개발하는 것은 매우 어려운 일이기 때문에 RESTful 한 모습을 목표로 나아가야 합니다.
. 로 연결 연결 하여 값을 할당 할수 있습니다