CS기초
-
교착 상태, 경쟁 조건/상태, 세마포어와 뮤텍스, 메모리 관리CS기초/운영체제 2022. 5. 19. 15:02
데드락(=교착 상태)이 발생하는 경우 멀티 프로그래밍 환경에서, 두 프로세스가 서로 원하는 자원이 다른 프로세스에 할당되어 있어서 무한정 기다리고 있을 때 발생한다. 데드락 발생 조건 4가지 모두 성립해야 데드락 발생 (하나라도 성립하지 않으면 데드락 문제 해결 가능) 상호 배제(Mutual exclusion)자원은 한번에 한 프로세스만 사용할 수 있음 점유 대기(Hold and wait)최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재해야 함 비선점(No preemption)다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없음 순환 대기(Circular wait)프로세스의 집합에서 순환 형태로 자원을 ..
-
컴퓨터 구조, 프로세스 (메모리 구조, 상태 전이, 스케줄링)CS기초/운영체제 2022. 5. 17. 14:44
프로그램 작업 수행을 위한 일련의 명령어들의 모음 프로세스 디스크에 적재되어있던 프로그램이 운영체제의 PCB(Process Control Block)를 받아, 메인 메모리에 적재된 상태 운영체제는 프로세스 테이블을 사용해 각 프로세스 PCB를 관리한다. - Stack : 함수 호출 시 관련 지역변수, 매개변수같은 임시 데이터가 저장되는 곳. 컴파일 타임에 크기가 결정되기 때문에 무한히 할당할 수 없고 stack 영역을 초과하면 stack overflow 에러가 발생한다. - Heap : 동적으로 할당되는 데이터가 저장되는 곳으로 런타임에 크기가 결정됩니다. ex) malloc - Data Uninitialized data (bss) - 초기화되지 않은 변수(전역 변수, static 변수)가 저장되는 곳...
-
망분리 환경에서 Spring boot gradle 설정CS기초/웹 2022. 4. 3. 01:54
회사에서 Spring boot 프로젝트를 Spring initializr를 이용해서 초기 세팅을 하고 빌드를 했더니, 스프링 부트 의존성 라이브러리들을 땡겨지 못해서 gradle 빌드 에러가 났다. 플러그인 id 가 org.springframework.boot인 것을 maven central 레포지토리에서 끌고 와야 하는데, 망분리 환경이라 방화벽에 막힌 듯 했다. 이럴 경우 몇 가지의 해결 방법이 있다. 1. 핫스팟을 켜고 dependency 라이브러리들을 받아와 local repository에 넣어놓고 빌드때 이용한다. ( .m2 나 .gradle 같은 cache repository에 넣어놓고 사용 ) 2. 방화벽 설정을 변경하여 maven central 레포지토리에 접근 가능하도록 한다. 3. 자체..
-
React 와 Spring boot 서버CS기초/웹 2022. 3. 31. 16:21
회사에서 개발하면서 삽질한 내용을 적어보고자 한다. 프론트는 React + Typescript 를 사용해서 SPA 구조로 개발했고, Spring boot 로 REST api 를 개발하였다, 내장 톰캣을 사용해, 프론트와 서버를 같이 jar 로 말아서 배포해야했다. 사실, 배포 단위를 나누는 것이, 변화에 대한 수용에 용이하게 해주어서, 프론트와 백을 각각의 웹 어플리케이션 서비스로 띄우고, 웹서버를 앞단에 두어서 리버스 프록시 설정을 하는게 좋다. (보안상으로도 좋다고 한다) 예를들어, 프론트를 3000번 포트에 띄우고, 스프링 서버를 8080포트에 각각 띄운다음에, nginx 설정을 통해서, /api/ 로 요청이 들어오면 8080포트로, 그 외에는 3000번 포트로 요청을 보내주게끔 하면, 포트 번호를..
-
[소프티어] - 교차로 C++CS기초/알고리즘 2022. 2. 7. 17:57
https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=803 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 간단한 구현 문제였다. 처음에는 최소 시간과 최대시간 + 4 만큼 for문을 돌면서 해당 시간에 차가 지나갈 수 있다면 정답배열에 시간을 담아주는 식으로 하려고 했는데, 시간이 최대 10^9 (십억) 이라서 제한시간 2초에 걸려 시간초과가 났었다. 그래서 흠 이렇게 해서는 안되겠군 이라는 생각과 함께, 차가 안들어오는 시간대는 패쓰해야겠다는 생각이 들어 해당 코드를 추가시켜 주었더니 통과했다. 전반적인 로직은 아래와 같다. 1. A, B, C, D 교차로에 들어오는 차들을 큐에 담아주었다. 나중에 정답배열을 입..
-
[부스트코스] Web UI 개발 - FECS기초/웹 2020. 3. 20. 23:49
* 이 글은 부스트코스의 강좌를 듣고 작성되었습니다. https://www.edwith.org/boostcourse-web/lecture/16698/ [LECTURE] 1) window 객체(setTimeout) : edwith 들어가기 전에 전역객체(window)에 속한 메서드에는 경고창을 띄워주는 alert 그리고 setTimeout이라는 메서드등이 있습니다. 이를 어떻게 사용하는지 그리고 다른 함수와... - 부스트코스 www.edwith.org 1. window 객체 (setTimeout 과 비동기) window 는 전역객체라 생략도 가능하다. 디버깅시 자주 쓰는 alert이나 setTimeout 등의 메서드 들이 window 객체에 있다. setTimeout 은 비동기적으로 동작되는 메서드다. ..
-
소마 온라인 코딩테스트 1번 문제 복기CS기초/알고리즘 2020. 3. 15. 01:24
처음에 이렇게 거창하게 dfs 로 풀겠다고 설쳤다.. 아니근데 n 이 2이상 1000이하. 최소 획수를 가진 1만을 가진다 가정하면 최대 500자리가 된다. 이건 직접 숫자를 계산해서 비교하라는게 아닐 꺼라는 생각이 들었다. 잘못 접근하는 중이었다.. #include #include #define MAX 10 using namespace std; int arr[MAX]; // 0~9 까지 숫자의 획 수 int selected[501]; // 만들 수 있는 숫자 조합. n 이 최대 1000이고, 가장 적은 획수로 만들 수 있는 숫자 1의 획 수는 2이므로. 1000/2 = 500 이므로 최대 가능한 자리수는 500자리 long long max_num = 0; //최대 수 = 정답. void dfs(int ..