분류 전체보기

다양한 Dev./기본 정리

2024.01.07 - OOP(Object-Oriented Programming)란?

1. 소프트웨어의 가치 소프트웨어는 시간에 지남에 따라 변화하는 요구사항에 적응할 필요가 있다. 따라서 소프트웨어 개발자는 새로운 가치를 제공할 수 있고, 변환하는 요구사항에 적응할 수 있는 소프트웨어를 만들 필요가 있다. 변화에 적응하는 소프트웨어의 특징 3가지 유연성 확장성 유지 보수성 2. 의존 사전적 정의: 어떠한 일을 자신의 힘으로 하지 못하고 다른 어떤 것의 도움을 받아 의지한다. 코드에서 표현되는 의존 객체 참조에 의한 연관 관계 메서드 리턴타입이나 파라미터로서의 의존 관계 상속에 의한 의존 관계 구현에 의한 의존 관계 /* 1. 객체 참조에 의한 연관 관계 */ class Car { constructor(brand) { this.brand = brand; } startEngine() { c..

다양한 Dev./cs 지식 정리

가상 메모리 관리

1. 페이징과 페이지 테이블 스와핑(swapping) : 프로세스를 보조기억장치의 일부 영역으로 쫓아내고 당장 필요한 프로세스를 적재하는 메모리 관리 기법 스왑 아웃(swap-out) : 프로세스를 보조기억장치의 일부 영역으로 쫓아내는 것 스왑 인(swap-in) : 스왑 아웃된 프로세스를 메모리에 적재하는 것 스왑 영역 : 스왑 아웃된 프로세스가 적재되는 보조기억장치 영영 연속 메모리 할당 : 프로세스를 메모리에 연속적으로 배치하는 방식 ==> 부작용: 외부 단편화 > 프로세스들이 실행되고 종료되길 반복하며 빈 공간이 생기는 메모리 낭비 현상 연속 메모리 할당의 부작용을 극복할 수 있는 방법은? ==> 메모리와 프로세스를 일정 단위로 자르고 잘라진 공간에 프로세스를 할당하기 페이징 : 물리 메모리를 프..

CI CD

컨테이너 가상화 이해

1. 컨테이너 기술이란? 컨테이너 기술이란? 컨테이너는 애플리케이션을 언제든 실행 가능하도록 필요한 모든 요소(소스 코드, 구성 요소, 종속성 등) 하나의 런타임 환경으로 패키징한 논리적 공간을 말한다. - docker에서는 Dockerfile buid를 통해 구현 애플리케이션과 종속 항목을 하나로 묶어, 실행하게 해주는 운영 시스템 가상화한 경량의 격리된 프로세스라고 볼 수 있다. microVM 이라고도 함 운영체제 수준의 가상화 제공 독립성을 갖기 때문에 다른 컨테이너에 영향을 주지 않는 statless 환경 제공 개인 데스크탑 뿐만 아니라 기업 내의 온프레미스 서버에서 AWS와 같은 퍼블릭 클라우드까지 언제 어디서든 빠르고 효율적으로 배포 가능하며, 확장성도 있다. 서버 구성, OS 설치, 네트워크..

JavaScript Dev./Javascript

JavaScript 이진 탐색 알고리즘

순차 탐색 vs. 이진 탐색 예) 값이 12인 원소의 위치를 찾기 > 순차 탐색: 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 하나씩 확인 ==> 탐색을 위한 시간 복잡도: O(N) > 이진 탐색: 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색 ==> 탐색을 위한 시간 복잡도: O(logN) 이진 탐색(Binary Search) 동작 방식 시작점(left) 와 끝점(end)을 기준으로 탐색 범위를 명시 이진 탐색의 시간 복잡도 각 단계마다 탐색 범위를 2로 나누는 것으로 이해할 수 있다. 이상적인 경우 매 단계마다 범위가 반으로 감소하므로, 로그(log) 복잡도를 가진다. 대표적인 예시 매우 넓은(억 단위 이상) 탐색 범위에서 최적의 해를 찾아야 하는 경우 데이터를 정렬한..

다양한 Dev./cs 지식 정리

동기화와 교착상태

1. 프로세스 동기화 운영체제가 제공하는 동기화의 의미 실행 순서 제어: 프로세스를 올바른 순서로 실행하기 상호 배제: 동시에 접근해서는 안되는 자원에 하나만 접근하기 동시에 실행되는 프로세스 예제 1 Book.txt가 없다면 파일을 만들고 값을 쓰고 저장하는 프로세스 Book.txt를 읽어들이는 프로세스 > 2번은 Book.txt가 없을 경우 실행할 수 없다. 따라서 1 => 2번 순서로 넘어가는게 맞다. 동시에 실행되는 프로세스 예제 2 2만원 입금 프로세스 잔액을 읽어들인다. 잔액에 2만원을 더한다. 더한 값을 저장한다. 5만원 입금 프로세스 잔액을 읽어들인다. 잔액에 5만원을 더한다. 더한 값을 저장한다. > 중간에 잔액이란 자원에 접근하는 프로세스를 순차적으로 진행하지 않는다면 원하는 결과인 1..

다양한 Dev./cs 지식 정리

CPU 스케줄링

1. 프로세스 우선순위와 스케줄링 큐 스케줄링 모든 프로세스(및 스레드)는 실행되기 위해 자원을 필요로 한다. 운영체제가 공정하고 합리적으로 자원을 배분하는 방법 ==> CPU 스케줄링 (자원 > CPU) 프로세스마다 우선순위가 다르므로 정해진 시간동안 돌아가면서 CPU를 사용하는 것이 가장 좋은 것은 아니다. $ps -el PRI, NI가 낮을수록 높은 우선순위 $top PR, NI가 낮을수록 높은 우선순위 우선순위의 차이를 보이는 대표적인 프로세스 유형 I/O bound process, CPU bound process CPU 스케줄링 알고리즘 프로세스 우선순위를 토대로 CPU 할당 받는 방법 스케줄링 큐 자원은 한정되어 있고 실행 중인 프로세스는 여러 개 프로세스들의 요구사항을 일목요연하게 관리하는 ..

Yoonsoo
'분류 전체보기' 카테고리의 글 목록 (7 Page)