리소스를 수정하지 않는 메소드들(OPTIONS, GET, HEAD 등)을 Safe하다고 말한다.
대부분의 경우 Idempotent하면 Safe하다.
물론 예외도 있는데 DELETE는 Idempotent 하지만 리소스를 변경하므로 Safe하지 않다.
HEAD 는 Response-Body 없이 Header만 얻기 위해 사용한다.
OPTIONS 는 해당 리소스에 대해 가능한 Operation이 무엇인지 응답을 얻기 위해 사용한다.
만약 OPTIONS에 대한 응답이 온다면 response Allow 에 가능한 Operation을 사용해야한다.
f(x) = f(f(x))
다시 말해 몇 번이고 같은 연산을 반복해도 같은 값이 나온다는 것이다.
예를 들어 클라이언트가 POST /dogs를 요청하였다.
그런데 Time Out(408)발생했다.
이 상황에서 클라이언트는 요청이 전달되었으나 네트워크가 끊어졌는지
아니면 요청조차 전달이 되지 않았는지 알 수 없다.
이 때 클라이언트가 사용한 HTTP 함수가 Idempotent하다면 다시 요청해도 상관 없다.
Whty? 항상 같은 결과를 만들기 때문이다.
그러나 POST는 Idempotent 하지 않다.
동시성은 싱글 코어에서 멀티 쓰레드를 동작시키기 위한 방식이다.
멀티 쓰레드란 멀티 태스킹을 위해 여러 개의 쓰레드가 번갈아가면서 실행되는 성질을 말한다.
동시성을 이용한 싱글 코어의 멀티 태스킹은
각 쓰레드들이 병렬적으로 실행되는 것처럼 보이지만
사실은 번갈아가면서 조금씩 실행되고 있는 것이다.
즉 동시에 실행되는 것처럼 보이는 것이다.
독립적으로 실행하는 프로세스들을 구성한다.
한 번에 여러 개를 다루는 것과 관련있다.
1명이 5개의 작업을 빠른 시간에 이것 저것 실행한다.
I/O Bound
ex) 마우스, 키보드, 디스플레이, 디스크
일반적으로 Blocking은 Sync와 관련이 있고
Non-Blocking은 Async와 관련이 있다고 알고있다.
맞는 개념이다.