개발 만담8 교착 상태 (deadlock) A 프로세스가 점유한 자원을 B 프로세스의 자원을 점유해야 실행 완료된다고 할 때 B 프로세스는 자원을 얻기 위해 무한정 대기 상태 자원 할당 그래프 (resource allocation graph) 교착 상태 발생 조건 (모두 만족 시켜야 함) 1. 상호 배제 프로세스간 자원을 공유 할 수 없을때 비선점을 보장 2. 비선점 프로세스간 자원을 빼앗을 수 없을때 ※ [임계영역]은 상호 배제 & 비선점 보장 3. 점유와 대기 프로세스가 다른 자원을 할당 받기를 대기하고 있는 상태 4. 원형 대기 프로세스가 서로 자원을 양보하지 않음 ◎ 참고 : starvation & deadlock 차이 starvation : 우선 순위가 낮은 프로세스들이 CPU를 할당 받지 못해 실행이 지연되는 문제 deadlock : .. 2023. 8. 31. Path Variable VS Query Parameter 1. Query Parameter → user id = 123인 사용자를 조회 /users?id=123 @RequestMapping("/users") public String queryParam( @RequestParam int id) { log.info("id={}", id); return "ok"; } → server에서 id 값 얻을 수 있다. 2. Path Variable → user id = 123인 사용자를 가져올 때 /users/123 @GetMapping("/user/{userId}") public String pathVariable(@PathVariable("userId") int id) { log.info("mappingPath userId={}", id); return "ok"; } .. 2023. 8. 31. 동기식, 비동기식 & 블록킹, 논블록킹 동기/ 비동기 : `요청한 작업을 순차적으로 수행할건가...` 에 대한 관점 블록킹/논블록킹 : `실행 중인 작업이 완료될 때까지 다른 작업을 대기시킬 건지... 대기하지 않고 실행할지...` 에 대한 관점 1. 동기(Synchronous) vs 비동기(Asynchronous) Synchronous 작업의 시작과 끝, 그리고 결과 처리가 순차적으로 진행되는 방식 한 작업이 시작되면 해당 작업이 완료될 때까지 다른 작업은 대기 Asynchronous 작업의 시작과 끝, 그리고 결과 처리가 독립적으로 이루어지는 방식 한 작업이 시작되어도 결과를 기다리지 않고 다른 작업을 수행 ex. A, B, C 작업 있을 때 Synchronous : `A → B→ C` 순차 진행 Asynchronous : `C → B→ .. 2023. 8. 30. MDC 를 이용한 로그 추적 MDC (Mapped Diagnostic Context) - Map 형태로 client의 특정 데이터를 저장. ex. 회원의 TraceId 추적 - Key : Value 저장소를 지원, TreadContext에 의존한다. - MDC는 ThreadLocal 사용 사용 함수 get(String key) : key를 주고 Value를 얻음 put(String key, Object value) : key & Object를 저장 remove(String key) : key & Value를 삭제 clear() : MDC의 항목을 지운다 build.gradle implementation 'org.springframework.boot:spring-boot-starter-web' ※ 참고 : https://dev-jwb.. 2023. 8. 30. 이전 1 2 다음