분류 전체보기

1. 인터넷이란? 인터넷에 대해 구체적으로 정의하기는 어렵지만, 네트워크 관점에서는 네트워크들의 네트워크, 즉 ISP들이 이루고 있는 네트워크들이 더 큰 네트워크를 이루고 있는 것이라 할 수 있다. 주요 구성요소는 4가지가 존재한다. - 호스트(Host) = 종단 시스템(end system), 인터넷의 가장 자리에서 동작하는 네트워크 앱, 우리가 주로 사용하는 앱을 말한다. - 패킷 스위치(Packet Switches) = 호스트와 다른 호스트들과 통신을 가능하게 하는 라우터를 말한다. - 통신 링크(Communication links) = 유선(Fiber, Copper)과 무선(Radio, Satellite)이며 라우터와 라우터를 연결하는 것이다. - 네트워크 = 장치, 라우터, 링크의 모임이다. 2...
주제 세부 내용 Virtualization CPU 가상화 메모리 가상화 Concurrency Thread Lock Condition Variable Semaphore Deadlock Persistence Limited Direct Execution CPU를 가상화해야 하는 이유를 이전 글에서 알 수 있었다. 여러 개의 프로그램을 작동시키기 위해서 CPU 가상화가 필요했는데, 이는 Time Sharing 기법으로 실행할 수 있다. 그러나, 이러한 방법에 문제점이 있다. 첫 번째로 Performance이다. 시스템에서 가상화를 수행할 때 추가적인 오버헤드 없이 가상화를 실행하는 방법을 생각해야 한다. 두 번재는 Control이다. CPU에 대한 제어를 유지하면서 프로세스를 효율적으로 실행시키는 방법을 생각해..
시작하기 전에 앞서, 이 책에서는 3가지를 다루고 있으며 요약하면 아래와 같다. 주제 세부 내용 Virtualization CPU 가상화 메모리 가상화 Concurrency Thread Lock Condition Variable Semaphore Deadlock Persistence 프로세스(Process) 프로세스(process)란 간단하게 말해 현재 실행 중인 프로그램이다. 그렇다면, 프로그램(program)은 디스크에 저장되어 실행가능한 형태로 존재하는 것을 말한다. 컴퓨터는 이러한 프로그램을 메모리에 load하고 CPU에서 처리한다. Multi Processes OS는 여러 개의 프로그램을 동시에 실행할 수 있도록 CPU를 가상화하는 방법을 사용한다. 실제로 물리적인 CPU는 하나지만, 마치 여러..
2중 for문을 사용해서 sum을 점점 늘려가면서 n과 같은지 확인한다. 처음에는 vector에 1~n까지의 번호를 받아서 인덱스 1부터 n까지 검색해서 더하기를 했는데 굳이 vector을 사용하지 않고도 쉽게 낼 수 있는 코드로 수정했다. #include #include using namespace std; int solution(int n) { int answer = 1; for (int i=1;i
이번 문제는 DFS로 쉽게 풀 수 있는 문제이다. visited[][] 배열에 방문 여부를 기록하고, 탐색하면서 방문하지 않은 다른 네트워크를 탐색한다. DFS를 실행한 횟수가 네트워크의 수가 되므로, DFS 실행할 때마다 answer 값을 증가시켜준다. #include #include using namespace std; int visited[201]={0,}; void dfs(int x, int n, vector computers); int solution(int n, vector computers) { int answer = 0; for (int i = 0;i
· PS/BOJ
문제에서 주어진 조건은 다음과 같다. N이 되기 위한 조건 주어지는 진짜 약수들의 배수이다. N은 주어진 진짜 약수들과 같은 수가 아니다. 진짜 약수들은 1과 N을 제외한 수이다. 예를 들어, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24인데, 문제 조건에 따라 1과 24를 제외하면 진짜 약수인 2, 3, 4, 6, 8, 12가 남는다. 문제에서는 진짜 약수를 보고 N을 찾아야 하는데, 진짜 약수의 최솟값과 최댓값을 곱하면 24가 나온다는 것을 알 수 있다. 따라서 주어지는 약수들을 배열로 먼저 받고 이들을 오름차순 정렬한 다음, 최솟값과 최댓값을 곱하면 된다. #include #include #include #include using namespace std; int main() { int..
· 클라우드
클라우드 네이티브와 도커까지 알았다면 드디어 쿠버네티스에 대해 알아갈 차례이다. 이번 글에서는 쿠버네티스의 등장 배경과 개념, 구성요소와 각각의 특징을 알아볼 것이다. 쿠버네티스는 왜 등장했는가? 앞선 글에서 도커의 개념에 대해 알아보았다. 도커가 등장하면서 컨테이너 기반의 배포 방식이 보편화되고, 많은 서비스들이 이를 사용하기 시작했다. 점점 Image가 많아지면서 관리해야 할 컨테이너와 서버들이 많아지게 되었다. 즉, 엔지니어가 신경써야 할 것들이 너무 많아져서 힘들었다... 엔지니어는 여기서 가만 있을 수는 없었다. 고민 끝에 떠올린 생각, "반복적인 일들을 자동화하자!" 컨테이너들을 자동으로 관리할 도구(컨테이너 오케스트레이션 툴)를 필요로 하게 되었고, 이때 Kubernetes가 등장하게 되었다..
· 클라우드
앞선 글에서 클라우드 네이티브에 대해 알아보았다. 본격적으로 쿠버네티스에 들어가기 전, Docker에 대해 설명하고자 한다.  도커란 무엇인가컨테이너 하면 빼놓을 수 없는 것이 Docker이다. 도커는 쉽게 말해, 컨테이너를 만들고 사용할 수 있도록 하는 컨테이너화 기술이다. 애플리케이션의 실행에 필요한 환경을 하나의 Image(이미지)로 모아두고, 이 이미지를 사용해 다양한 환경에서 애플리케이션 실행 환경을 구축하고 운영하기 위한 오픈소스 가상화 플랫폼이다.     도커 주요 용어  도커 클라이언트도커를 사용하기 위한 커맨드 라인 도구도커 클라이언트를 통해 도커 호스트와 상호작용하고 도커 이미지를 관리, 도커 컨테이너를 실행, 중지, 삭제  도커 호스트 ( = 도커 서버)도커 이미지를 저장하고 도커 컨..
· 클라우드
쿠버네티스를 알기 위해서는 '클라우드 네이티브' 라는 개념을 알아야 한다. '클라우드 네이티브'는 무엇인가? 애플리케이션 개발 환경과 인프라 구조는 생산성과 민첩성을 높이는 방향으로 변화해왔다. 이러한 변화에 따라 업계 주류로 자리 잡은 트렌드가 바로 '클라우드 네이티브'이다. 쉽게 말해서, 클라우드의 장점을 최대한 활용할 수 있도록 애플리케이션을 개발하고 구축하고 실행하는 방식이다. 클라우드 네이티브 구성요소 클라우드 네이티브를 대표하는 것들은 데브옵스(DevOps), 마이크로서비스(MSA), 컨테이너, CI/CD라고 할 수 있다. DevOps 먼저 데브옵스(DevOps)는 여러 도구들을 표준화하하여 효율성, 협력, 속도, 안정성을 개선하는 방식이다. 개발(Development)과 운영(Operatio..
· PS/BOJ
먼저, 출발을 위해서 무조건 첫 주유소에서는 주유를 해야 한다. 지금까지 가장 저렴한 가격을 배열에 저장하는데, min_price[i-1]와 price[i]를 비교해서 더 저렴한 가격을 min_price[i]에 저장한다. 배열 min_price에 저장된 가격과 주유소 간의 거리 배열 len을 각각 곱하면 최솟값이 나온다. #include #include #include #include using namespace std; long long len[100001] = { 0, }, price[100001] = { 0, }, min_price[100001]; int main() { int n; cin >> n; for (int i = 0; i > len[i]; for (int..
소-은
'분류 전체보기' 카테고리의 글 목록 (5 Page)