목록CS 스터디 (35)
Welcome! Everything is fine.
스택(Stack)스택은 한쪽 끝에서만 데이터를 넣고 뺄 수 있는 자료구조이다. 다시 말해 후입선출(LIFO, Last-In-First-Out) 구조로, 왼쪽 그림과 같이 가장 마지막에 들어간 데이터가 가장 먼저 나오는 자료구조이다. 쌓아올려진 팬케이크를 생각하면 쉽다. 가장 위에 있는 팬케이크 먼저 없어질 것이다. 이 외에도 웹 페이지에서 뒤로가기 버튼을 눌렀을 때, 문서를 작성하다가 Ctrl+Z를 눌렀을 때 등 스택이 활용되는 상황이 많다. 스택에서 데이터가 추가/제거되는 곳을 top이라고 한다.스택 메서드 Object pop() : 맨 위에 저장된 객체를 꺼내서 반환한다. Object push(Object item) : 새로운 객체를 맨 위에 저장한다. Object peek() : 맨 위에 있는 데이..
하드 드라이브에 보관되어있던 프로그램을 실행시키면 프로그램이 메모리에 올라온다. 이때 프로그램은 실행 중인 프로그램, 즉 프로세스가 된다. 이렇게 메모리에 올라온 프로세스를 CPU에서 가져다가 사용하는 것이다. 다시 말하자면, 프로세스들이 메모리에 저장되어있다가 하나씩 CPU로 가서 실행된다는 것이다. 이때, 어떤 프로세스에 CPU와 메모리를 할당할지 결정해주는 것이 스케줄러의 역할이다. 스케줄러의 종류에는 장기 스케줄러, 단기 스케줄러, 중기 스케줄러 3가지가 있다. 장기 스케줄러(Long-term Scheduler) = 작업 스케줄러(Job Scheduler) 디스크와 메모리 사이의 스케줄링을 관리함. 현대 운영체제에서는 장기 스케줄러 없이 바로 준비큐에 넣어줌. 어떤 프로세스를 준비큐에 삽입할지 결..
이번주 질문 중 하나인 RESTful API. 과연 RESTful API란 무엇일까? RESTful API를 검색해보면 가장 상단에 있는 AWS 사이트에서 다음과 같이 설명하고 있다. 하지만 너무 간단한 설명이다. RESTful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스입니다. 스크롤을 좀 더 내려 들어간 IBM 사이트에서는 다음과 같이 설명하고 있다. 그러니까 REST가 뭔지 알려줘야지... REST API는 REST(REpresentational State Transfer) 아키텍처 스타일의 디자인 원칙을 준수하는 API입니다. 이러한 이유로 REST API를 RESTful API라고도 합니다. REST의 뜻도 모르고, 심지어는 API의 개념도 머릿속..
TCP(Transmission Control Protocol) TCP는 패킷 전송을 제어해(패킷의 순서가 올바르게 전달되는지, 패킷이 유실되지는 않는지 등) 신뢰성을 보장하며 데이터를 전송할 때 사용하는 프로토콜이다. 통신을 시작하거나 종료할 때도 수신측에 미리 물어본 후에 패킷의 전송 순서를 정해 통신을 시작한다. 이러한 과정을 3-way handshaking과 4-way handshaking이라고 한다. 자세한 특징은 다음 설명과 같다. 1. 3-way handshaking을 통해 연결 설정, 4-way handshaking을 통해 연결 해제 TCP 연결을 생성하면 SYN과 ACK(Positive Acknowledge) 혹은 NAK(Negative Acknowlede)라는 패킷을 주고받는다. SYN은..
OSI 7 Layer OSI(Open System Interconnection) 7 계층이란 1977년에 국제표준화기구(ISO)가 정의한 국제 통신 표준 규약이다. 통신의 접속에서부터 완료까지의 과정을 7단계로 구분한 것을 말한다. 그러나 실제로 인터넷에서 흔히 사용되는 모델은 TCP/IP 4계층이다. OSI 7계층은 서로 다른 컴퓨터들이 데이터를 주고받을 수 있도록 표준화된 규칙을 말하며, 이를 통해 통신이 일어나는 과정을 단계별로 파악할 수 있다. 다음은 OSI 7계층과 TCP/IP 4계층의 순서를 비교한 그림이다. OSI 7계층의 송수신 과정을 간단하게 그림으로 보면 다음과 같이 진행된다.보낼 때는 각 계층을 지나면서 헤더가 붙고, 받을 때는 다시 각 계층을 거치며 헤더가 제거된다. 각 계층에 대한..
절차 지향 프로그래밍 (Procedural Programming) 프로시저(Procedure) 또는 함수 중심. 코드가 순차적으로 실행되며, 제어 흐름은 주로 조건문과 반복문을 통해 구현. 코드의 가독성 Good, 실행속도 빠름. 실행 순서가 정해져있으므로 상대적으로 유지보수 및 디버깅이 어려움. ex. c언어 // 절차 지향 프로그래밍 public class ProceduralExample { public static void main(String[] args) { // 데이터 String animalName = "고양이"; int animalAge = 3; // 함수 호출 makeAnimalSound(animalName); showAnimalAge(animalAge); } // 함수 정의 public..
객체 지향 프로그래밍(Object-Oriented Programming, OOP)이란? 구글에 '객체 지향 프로그래밍'이라고 검색 하면 다음과 같은 정의가 나온다. 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 여기서 객체는 현실 세계에 있는 모든 독립된 사물을 객체라고 보고, 그 객체에서 필요한 속성을 가져와 프로그래밍하는 것을 말한다. 객체 지향 개념에서 자주 나오는 붕어빵 예시로 말하자면, 붕어빵을 하나하나 모양잡아 구워내는 것보다 붕어빵 틀을 사용해 빠르고 편리하게..
동기(Synchronous) '동시에 일어나는' → 요청과 결과가 동시에 일어남. 코드가 순차적으로 실행되며, 한 작업이 시작되면 그 작업이 완료될 때까지 다음 작업이 기다리게 된다. 간단하고 직관적으로 코드 작성이 가능하지만, 결과가 나올 때까지 무작정 대기해야한다. 비동기(Asynchronous) '동시에 일어나지 않는' → 요청과 결과가 동시에 일어나지 않음. 코드가 순차적으로 일어나지 않으며, 한 작업이 완료될 때까지 기다리지 않고 다음 작업을 시작한다. 상대적으로 코드 설계 및 이해가 어렵지만 태스크가 실행 중이어도 그 시간동안 다른 작업이 가능하다. 동기와 비동기의 차이