코드를 짤때 정상응답에 대한 종류를 고려하지 않고 당연히 200이면 되겠지하고 HttpStatus.OK를 사용했었다. 멘토링 코드리뷰때 알게되었는데 정상 응답에서 다양한 종류가 있었다.
@PostMapping
@ResponseStatus(HttpStatus.OK)
public void register(@RequestBody @Valid MemberRequestDto memberRequestDto) {
memberService.signup(memberRequestDto);
}
POST 메서드는 새 리소스를 만드는 경우 HTTP상태코드 201을 반환한다.
이 메서드 일부 처리를 수행하지만 새 리소스를 만들지 않는 경우 메서드는 HTTP 200 상태코드를 반환하고 작업의 결과를 응답 본문에 포함할 수 있다.
반환 내용이 없는 경우 204(내용없음)을 전달할 수 있다.
운영체제는 스케쥴링 큐를 활용하여 각 자원을 사용하고자 하는 프로세스들을 줄세운다. 스케쥴링 큐를 통해 운영체제가 프로세스들의 우선순위를 관리한다.
단, 운영체제는 PCB들이 큐에 들어간 순서대로 실행하되, 그 중 우선순위가 높은 프로세스를 먼저 실행한다.
선입 선처리 스케줄링(First Come First Served Scheduling)
준비 큐에 삽입된 프로세스 순서대로 CPU 할당
최단 작업 우선 스케줄링(Shortest Job First Scheduling)
준비 큐에 삽입된 프로세스들 중 CPU사용 시간의 길이가 가장 짧은 프로세스부터 CPU할당
라운드 로빈 스케줄링(Round Robin Scheduling)
정해진 시간만큼만 돌아가며 CPU할당
최소 잔여 시간 우선 스케줄링(Shortest Remaining Time)
우선순위 스케줄링(Priority Scheduling)
가장 높은 우선순위를 가진 프로세스에 CPU할당
다단계 큐 스케줄링(multilevel queue Scheduling)
다단계 피드백 큐 스케줄링(multilevel feedback queue Scheduling)
프로세스들이 큐 사이를 이동할 수 있는 다단계 큐 스케줄링
람다는 코드 블럭이다.
람다가 나오기 전 코드블럭은 메서드 내에서만 존재해야했다.
메서드 내에 존재하는 코드블럭을 위해 익명객체를 만들어야하기도 했다.
람다를 통해 메서드의 인자나 반환값으로 사용가능해 졌으며, 코드블럭을 변수처럼 사용할 수 있게 되었다.
작업을 수행하는 주체는 2개이상이다.
Sender가 요청한 작업에 대한 Receiver의 응답이 돌아올때까지 대기하는것을 동기라고 한다. 동기는 Receiver로 부터온 응답이 꼭 필요하고 이 응답값으로 Sender의 다음 job을 수행해야한다.
Sender가 Receiver에게 요청을 하고 Receiver의 응답 여부와 상관 없이, 응답을 대기하지 않고 다음 Sender의 job으로 넘어간다.
Sender에 있는 callback 함수로 Receiver가 작업을 완료한 값을 전달
[참고]
https://www.youtube.com/watch?v=U42qWURR6Gw
https://learn.microsoft.com/ko-kr/azure/architecture/best-practices/api-design#post-methods
https://www.oracle.com/technical-resources/articles/java/architect-lambdas-part1.html