Computer Science

Computer Science/OS(Operating System)

[Linux] 파일 디스크립터(File Descriptor)

파일 디스크립터(File Descriptor)파일 디스크립터(File Descriptor, FD)는 운영체제가 프로세스가 접근할 수 있는 파일, 소켓, 파이프 등을 구분하기 위해 부여하는 정수 값이다. 리눅스나 유닉스 계열 시스템에서 자주 사용되며, 시스템 콜(system call)을 통해 파일이나 네트워크 자원에 접근할 때 핵심적으로 활용된다. 간단히 말해, 프로세스 입장에서 파일 디스크립터는 파일을 가리키는 핸들(handle) 역할을 한다. 이 정수값을 통해 프로세스는 운영체제에게 어떤 파일에 어떤 작업을 수행할지를 요청할 수 있다. 프로세스가 시작되면, 기본적으로 세 개의 파일 디스크립터가 자동으로 열리게 된다.파일 디스크립터 번호이름설명0stdin표준 입력1stdout표준 출력2stderr표준 오..

Computer Science/Algorithm

[Python] 완전 탐색(Brute Force)

핵심 개념완전 탐색(Brute Force)은 가능한 모든 경우의 수를 전부 탐색하여 정답을 찾는 방법이다. 최적화 없이 모든 경우를 시도하기 때문에 구현이 간단하지만, 경우의 수가 많아지면 비효율적일 수 있다.  시간 복잡도완전 탐색의 시간 복잡도는 일반적으로 \( O(N!) \) 또는 \( O(2^N) \) 등 매우 높은 편이다. 예를 들어, n개의 요소가 있을 때 가능한 모든 순열을 탐색하는 경우 \( O(N!) \)이 된다. 따라서 입력 크기가 커질수록 실행 시간이 급격히 증가한다. 동작방식 & 구현완전 탐색은 보통 다음과 같은 방식으로 동작한다.가능한 모든 경우의 수를 생성한다.각 경우가 문제의 조건을 만족하는지 확인한다.원하는 결과를 찾으면 반환하거나 최적의 해를 갱신한다. 활용 가능한 문제 유..

Computer Science/Algorithm

[Python] 너비 우선 탐색(BFS, Breadth-First Search), 깊이 우선 탐색(DFS, Depth Frist Search)

핵심 개념DFS(Depth-First Search, 깊이 우선 탐색)와 BFS(Breadth-First Search, 너비 우선 탐색)는 그래프 탐색 알고리즘이다. DFS는 한 방향으로 끝까지 탐색한 후 돌아오는 방식이며, BFS는 가까운 노드부터 탐색하는 방식이다.  시간 복잡도두 탐색 방법의 시간 복잡도는 일반적으로 \( O(V + E) \)이다. 여기서 \( V \)는 vertex(or 노드) 개수, \( E \)는 edge(간선) 개수이다. DFS와 BFS 모두 모든 노드를 방문하기 때문에 그래프의 크기에 따라 탐색 시간이 결정된다. 동작방식 & 구현 DFS시작 노드에서 한 방향으로 갈 수 있는 만큼 탐색한다.더 이상 이동할 곳이 없으면 이전 노드로 돌아가 다른 경로를 탐색한다.모든 노드를 방문할..

Computer Science/Algorithm

[Python] 투 포인터(Two Pointer)

핵심 개념투 포인터(Two Pointer)는 배열이나 리스트에서 두 개의 포인터를 활용해 문제를 해결하는 기법이다. 주로 정렬된 배열에서 특정 조건을 만족하는 부분을 찾거나, 두 개의 배열을 병합할 때 사용된다. 탐색 범위를 줄여 효율적으로 동작하기 때문에 많은 알고리즘 문제에서 활용된다.  시간 복잡도Two Pointer 기법의 시간 복잡도는 일반적으로 \( O(N) \)이다. 각 포인터가 배열을 한 번씩만 훑고 지나가기 때문에 불필요한 중복 연산이 줄어든다. 반면, Brute Force 접근법은 \( O(N^2) \)인 경우가 많아 투 포인터를 사용하면 성능을 크게 향상시킬 수 있다. 동작방식 & 구현 투 포인터는 보통 다음과 같은 방식으로 동작한다.시작점과 끝점을 설정: 두 개의 포인터를 배열의 시..

Computer Science/Software Engineering

Status vs State

소프트웨어 개발에서 status와 state는 비슷해 보이지만 사용하는 맥락과 의미가 다르다. Status“What is the current status of this project?” The answer should be “In testing.” Status는 시스템, 프로세스 또는 객체의 외부적이고 정적인 속성을 나타내며, 현재의 상태를 설명하거나 나타낸다. 대표적으로 http 요청을 주고받을 때 response에 status가 포함된다. 여기서 200, 404 등의 status 코드가 함께 반환되고 이러한 상태는 이미 결정된 것이므로 현재의 결과에선 절대 변하지 않는 정적 속성을 지닌다. 특징을 정리해 보면 아래와 같다.외부 정적 상태특정 시점의 상태를 설명시스템의 현재 상태 보고예시: 서버 상태..

Computer Science/Computer Network

[네트워크 실습] 네트워크 구성 - BGP(Border Gateway Protocol)

1. 주요 개념 BGP(Border Gateway Protocol) AS(Autonomous) BGP(Border Gateway Protocol)는 OSPF의 Area라는 개념과 비슷한 AS(Autonomous)라는 개념을 사용해서 통신한다. 서로 다른 AS 간의 BGP Session을 External BGP, 동일 AS내의 BGP Router 간의 BGP Session을 Internal BGP라고 한다. 아래는 미리 구상된 토폴로지의 구조이다. 위 토폴로지를 토대로 네트워크를 구축한다. 2. 구축 BGP의 명령은 아래와 같다. set protocols bgp [as number] neighbor [neighbor network address] remote-as '[neighbor as number]' ..

AlienCoder
'Computer Science' 카테고리의 글 목록
loading