분류 전체보기 66

리눅스 서버 정리(중간고사 범위)

멀티부팅 -> 한 번에 하나의 운영체제만 가동가상머신 -> 여러 개의 운영체제 가동 # 프롬프트는 root 사용자$ 프롬프트는 일반 사용자 root 권한 얻으려면? => su 명령 실행명령어 모음시스템 종료 시poweroffshutdown -P nowhalt -pinit 0 시스템 재부팅shutdown -r nowrebootinit 6 shutdown 명령은 뒤에 now가 아니더라도 시간을 지정해줄 수 있음!shutdown -P +10 => 10분 뒤 종료shutdown -r 22:00 => 22시에 종료shutdown -c => 예약된 shutdown 명령을 취소shutdown -k +15 => 현재 접속한 사용자에게 15분 후에 종료된다는 메시지를 보내지만 실제로 종료하지는 않음 로그아웃logoute..

CS/운영체제 2024.10.24

[CS] 멱등성이란 무엇인가?

멱등하다첫 번째 수행을 한 뒤 여러 차례 수행 및 적용해도 결과를 변경시키지 않는 작업 또는 기능의 속성즉, 한 번 수행한 결과와 여러 번 수행한 결과가 같은 것을 말한다. HTTP 메서드의 멱등성해당 HTTP 메서도의 요청을 여러 번 시도했을 때 요청 결과가 계속해서 같은 경우, 멱등성 메서드라고 한다.예를 들어, GET은 여러 번 호출해도 같은 결과를 가져오고, 데이터에 변화를 일으키지 않기 때문에 멱등성이 보장된 메서드이다.메서드특징멱등성 보장GET데이터를 조회할 때 사용같은 요청을 여러 번 보내도 결과가 같음데이터 변경 없음OPOST데이터를 생성 및 제출할 때 사용같은 요청을 여러 번 보내면 중복 생성 가능데이터 변경 발생XPUT데이터를 갱신하거나 대체할 때 사용주어진 데이터가 존재하면 덮어씀같은..

CS/네트워크 2024.10.16

[Algorithm/Python] 다익스트라(Dijkstra) 알고리즘 정리

다익스트라 최단 경로 알고리즘그래프에서 여러 개의 노드가 있을 때, 특정한 노드에서 출발하여 다른 노드로 가는 각각의 최단 경로를 구해주는 알고리즘.음의 간선이 없을 때 정상적으로 동작.기본적으로 그리디 알고리즘으로 분류된다. => 매번 각 노드에 대한 현재까지의 최단 거리를 갱신하기 때문! 알고리즘 원리 과정1. 출발 노드를 설정한다.2. 최단 거리 테이블을 초기화한다.(무한으로)3. 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택한다.4. 해당 노드를 거쳐 다른 노드로 가는 비용을 계산하여 최단 거리 테이블을 갱신한다.5. 위 과정에서 3과 4번을 반복한다. 각 노드에 대한 현재까지의 최단 거리를 1차원 리스트(최단 거리 테이블)에 계속 갱신한다는 특징이 있다. 힙 자료구조의 우선순위 ..

[Package Manager] 패키지 매니저 npm, yarn, yarn berry, pnpm

패키지 매니저란?소프트웨어 개발 과정에서 라이브러리나 프레임워크, 모듈, 플러그인과 같은 외부 패키지의 관리는 필수적이다. 이러한 패키지를 다루는 작업을 편리하고 안전하게 수행하기 위해 사용되는 툴을 패키지 매니저라고 한다.패키지 매니저는 패키지 설치, 업데이트, 수정, 삭제 등을 쉽게 작업할 수 있게 해준다. 예를 들어 JavaScript나 TypeScript에서 require나 import를 사용해서 외부 의존성을 참조하는데 올바르게 참조해줄 수 있도록 보장해준다. 패키지 매니저의 기본적인 기능- 버전 관리- 모든 dependencies 일괄 설치 또는 업데이트dependencies 추가, 업데이트, 삭제- 스크립트 실행- 패키지 퍼블리쉬- 보안 검사 등 패키지 매니저는 위와 같은 기본적인 기능을 제..

Package Manager 2024.10.11

[CS/컴퓨터 네트워크] 네트워크 계층

OSI 7계층국제 표준화 기구(ISO)에서 네트워크 통신이 이뤄지는 과정을 7단계로 나눈 네트워크 표준 모델 데이터 송신: 높은 계층에서 낮은 계층데이터 수신: 낮은 계층에서 높은 계층 각 계층은 독립적이며 데이터를 송신할 때 각 계층에서 필요한 정보를 추가해 데이터 가공=> 이때 제어 정보를 담은 헤더나 트레일러가 붙음 => 데이터 캡슐화 데이터 캡슐화를 하는 이유는?수신부의 같은 계층에서 데이터 호환성을 높이고 오류의 영향을 최소화하기 위해서!  헤더는 데이터 앞에, 트레일러는 데이터 뒤에 붙는다. 송신부에서 데이터 캡슐화를 거친 결과물을 수신부로 보낸다.수신부에서는 물리->응용 계층으로 올라가면서 데이터의 헤더와 트레일러를 분석하고 제거하는 역캡슐화 진행이 과정에서 각 계층은 필요한 제어 정보를 G..

CS/네트워크 2024.10.07

[CS/운영체제] 가상 메모리, 캐시메모리

사용자가 프로그램을 실행하면 OS는 디스크에 저장된 데이터를 메모리로 로드한다. 또한 동시에 여러 프로그램을 사용자들을 실행하고 싶어한다. 하지만? 메모리 공간은 한정적이기에 이를 극복하기 위해 가상 메모리라는 개념이 등장했다. 가상 메모리프로세스의 일부만 메모리에 로드, 나머지는 디스크에 둔 상태로 프로세스를 실행하는 방식사용자에게는 프로세스 전체가 로드된 것처럼 보이지만 실제로는 일부만 로드된 것이어서 가상 메모리라고 한다. 가상 메모리를 사용할 때 장점- 프로그램이 메모리 크기에 대한 제약⬇️- 동시에 많은 프로그램을 실행할 수 있으므로 CPU 이용률과 처리율⬆️- 필요한 영역만 메모리에 로드해 스와핑 횟수⬇️ => 프로그램 실행 속도⬆️ 요구 페이징프로세스에서 필요한 페이지만 메모리에 로드하는 방..

CS/운영체제 2024.10.07

[React/NextJS] React18과 함께 Next.js 13의 변화 알아보기

Next.js 릴리스 역사를 통틀어 가장 큰 변화가 있는 릴리스.특히, 서버 사이드 렌더링의 구조에 많은 변화가 있는 리액트 18을 채택했으며, next.js의 큰 약점이었던 레이아웃 지원을 본격적으로 지원 시작.바벨을 대체할 러스트 기반 SWC를 뒤이어 웹팩을 대체할 Turbopack까지 출시. # app 디렉터리의 등장Next.js의 아쉬운 점 => 레이아웃의 존재 공통 헤더와 공통 사이드바가 대부분의 페이지에 필요하다고 해보자.react-router-dom을 사용한 예시import {Routes, Route, Outlet, Link} from 'react-router-dom'export default function App() { return ( Routes 외부의 공통 영역 ..

NextJS 2024.10.07

[CS/운영체제] 스케줄링, 메모리 관리 정리

한정적인 자원의 CPU 탓에 여러 프로세스를 효율적으로 사용할 수 있도록 해야 한다. 그 방법이 바로 스케줄링 기법이다. # 스케줄링의 주된 목적1. 공평성: 모든 프로세스 공평하게 실행, 특정 프로세스가 실행되지 않는 경우가 없도록2. 효율성 : 자원이 계속 사용될 수 있도록3. 안정성 : 우선순위를 고려하여, 우선순위의 프로세스를 먼저 처리하도록4. 반응 시간 보장 : 프로세스가 오랜 시간 응답이 없을 시, 사용자가 시스템이 멈춘 것으로 보기 때문에 일정 시간 내에 응답할 수 있도록5. 무한 연기 방지 : 특정 프로세스에 대한 처리가 무한히 연기되지 않도록  # 스케줄링의 단계## 장기 스케줄링잡 스케줄링 또는 승인 스케줄링이라고 칭함.준비 큐에 어떤 프로세스를 넣을지 결정해 메모리에 올라가는 프로세..

CS/운영체제 2024.10.02

[Algorithm/Python] 다이나믹 프로그래밍 알고리즘 정리

DP(Dynamic Programming)는 연산 속도와 메모리 공간을 최대한 효율적으로 활용할 수 있게 해주는 알고리즘이다. 대표적인 예시 : 피보나치 수열 피보나치 수열을 점화식으로 표현하면 다음과 같다.프로그래밍에서는 이러한 수열을 배열이나 리스트로 표현(+ dict 자료형)# 피보나치 함수(Fibonacci Function)를 재귀 함수로 구현def fibo(x): if x == 1 or ×= = 2: return 1 return fibo(x - 1) + fibo(x - 2)print(fibo(4)) 하지만 위 코드는 n이 커지면 수행 시간이 기하급수적으로 늘어나는 문제가 발생한다.메모이제이션 기법을 사용해서 한 번 구현한 결과를 메모리 공간에 메모해두고 같은 식을 다시 호출하면 메..