legacy
-
[운영체제] 교착 상태 예방, 회피, 검출 후 회복legacy/Operating System 2024. 5. 6. 18:15
교창 상태를 알고 있다는 가정하에 설명합니다. 여기를 먼저 읽고 와주세요! 교착 상태를 해결하기 위해서 예방, 회피, 검출 후 회복 방법이 존재합니다. 예방 : 애초에 교착 상태가 발생하지 않도록 자원 분배회피 : 교착 상태가 발생하지 않도록 조절하다가, 발생 시에 자원 할당 중지검출 후 회복 : 교착 상태가 발생하면 회복 교착 상태 예방교착 상태가 발생하기 위해서는 아래 4가지 조건을 모두 만족해야 합니다.즉, 1가지라도 만족하지 않으면 교착상태가 발생하지 않습니다.상호 배제점유와 대기비선점원형 대기상호 배제상호 배제란 하나의 자원에 임계구역을 설정하여 하나의 프로세스만 접근할 수 있도록 하는 방법입니다. 상호 배제를 없앤다는 것은 하나의 자원에 대하여 여러 프로세스가 접근할 수 있음을 의미합니다. ..
-
[운영체제] 교착 상태란?legacy/Operating System 2024. 5. 6. 15:42
식사하는 철학자 문제식사하는 철학자 문제는 교착 상태를 설명하기 위해서 사용되는 문제입니다. 5명의 철학자가 존재하고 왼쪽과 오른쪽에 포크가 존재합니다. 앞에 놓인 음식을 먹기 위해서는 양손에 포크를 가지고 있어야 합니다. 단, 조건이 존재합니다.왼쪽 포크를 사용할 수 있다면 집어든다.오른쪽 포크를 사용할 수 있다면 집어든다.왼쪽과 오른쪽 포크 모두 집었다면 앞에 놓인 음식을 먹을 수 있다.식사가 끝나면 오른쪽 포크를 내려놓는다.오른쪽 포크를 놓은 후 왼쪽 포크를 놓는다.단순히 모든 철학자가 양손에 포크를 들어 식사를 하면 될 것 같습니다. 그러나 모든 철학자가 포크를 사용하려고 하면 문제가 발생합니다. 모두가 왼쪽 포크를 집게 된다면 어느 누구도 오른쪽 포크를 집을 수 없게 됩니다. 각자 오른쪽 포..
-
[Docker] 도커로 띄운 MySQL를 스프링부트에서 사용하기legacy/Docker 2024. 5. 4. 19:02
도커로 데이터베이스를 실행하고, 이를 스프링부트에서 사용할 수 있습니다. 그렇다면 왜 굳이 도커로 데이터베이스를 띄울까요? 다양한 이유가 존재하겠지만... 이유를 하나만 뽑자면 다음과 같습니다.팀 구성원이 모두 동일한 환경에서 작업을 진행할 수 있다. A라는 사람은 MySQL 5.7을 사용하고, B는 MySQL 8.0을 사용합니다. 서로가 다른 버전을 사용하기 때문에 호환성 문제가 발생할 수 있습니다. 특히나 배포에 있어서 예상치 못한 문제가 발생할 수 있습니다. 이러한 문제를 사전에 방지하고자 도커를 활용하여 개발 및 배포 환경에서 일관성, 호환성을 확보해야 합니다. 도커 컴포즈를 사용하여 MySQL를 띄어 스프링부트에서 사용해보도록 하겠습니다.도커 컴포즈도커 컴포즈란 여러 컨테이너를 손쉽게 관리할..
-
[Spring] SSE(Server Sent Events)를 사용하여 실시간 알림 기능 사용하기legacy/Spring 2024. 5. 3. 00:09
SSE (Servet Sent Events)란SSE는 Server Sent Events의 줄임말입니다. 서버에서 클라이언트로 실시간 이벤트를 전달하는 기술입니다.위 사진을 보면 클라이언트가 서버와 연결을 먼저 진행합니다. 이를 구독(subscribe)라고 합니다. 이후에 서버에서 클라이언트로 단방향 통신을 진행하며, 클라이언트의 요청이 없이도 서버에서 응답을 내릴 수 있습니다. SSE의 장점은 다음과 같습니다.실시간으로 이벤트를 발생시킬 수 있다.연결이 끊어지면 자동으로 연결을 시도한다.HTTP 통신이다. 실시간 알림의 경우 서버에서 클라이언트 방향으로만 데이터를 전송하면 되기 때문에, 양방향으로 통신을 진행할 필요가 없습니다. 따라서 SSE를 사용하여 실시간 알림을 구현해보도록 하겠습니다. 스프링부트에..
-
[운영체제] 주소 지정 방식 5가지legacy/Operating System 2024. 5. 2. 17:53
명령어는 연산 코드(operation code)와 오퍼랜드(operand)로 이루어져 있습니다. 연산 코드 : 명령어가 수행할 연산오퍼랜드 : 연산이 수행될 데이터 또는 데이터가 저장된 위치 주소 지정 방식이란 연산이 수행될 데이터의 위치를 찾는 방법입니다. 주소 지정 방식에는 5가지 유형으로 나뉩니다.즉시 주소 지정 방식직접 주소 지정 방식간접 주소 지정 방식레지스터 주소 지정 방식레지스터 간접 주소 지정 방식 즉시 주소 지정 방식은 오퍼랜드 필드에 연산에 수행될 데이터를 직접 저장하는 방식입니다. 연산에 수행되는 데이터를 직접 저장하기 때문에 연산 속도가 빠르다는 장점이 있습니다. 그러나 데이터의 크기만큼 공간을 차지하고 있기 때문에, 데이터가 제한적으로 저장된다는 단점이 있습니다. 직접 주소 지정..
-
[Spring] 이미지를 AWS S3로 업로드하는 2가지 방법 (MultipartFile, PresignedUrl)legacy/Spring 2024. 5. 2. 07:36
클라이언트가 이미지를 업로드할 때, 서버에서 처리할 수 있는 방법은 2가지가 존재합니다.서버에서 MultipartFile 형태로 데이터를 받아서 AWS S3로 업로드한다. 서버에서 presignedUrl을 발급하여 AWS S3로 업로드한다.2번에서 presignedUrl이 다소 생소할지라도 이번 글을 통해 이해할 수 있습니다. (AWS S3 생성 및 스프링과 연결 방법에 대해서는 생략합니다) 1. MultipartFile 형태로 서버에서 처리스프링에서는 MultipartFile 인터페이스를 제공합니다. 업로드한 파일의 이름, 크기 등을 제공하는 메서드가 존재합니다.Controllerform-data로 넘어오는 이미지를 MultipartFile로 받습니다.@RestController@RequestMappi..