목록CS (33)
Welcome! Everything is fine.
이번주 질문 중 하나인 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) '동시에 일어나지 않는' → 요청과 결과가 동시에 일어나지 않음. 코드가 순차적으로 일어나지 않으며, 한 작업이 완료될 때까지 기다리지 않고 다음 작업을 시작한다. 상대적으로 코드 설계 및 이해가 어렵지만 태스크가 실행 중이어도 그 시간동안 다른 작업이 가능하다. 동기와 비동기의 차이
쿠키와 세션은 왜 사용하는가? HTTP 프로토콜의 특성(Connectionless / Stateless)을 보완하기 위해 사용한다. Connectionless : 클라이언트가 서버에 request를 보낸 후, 서버가 response를 보내면 연결을 끊는 특징 Stateless : 통신이 끝나면 상태를 유지하지 않는 특징 만약 쿠키와 세션이 없다면 새 페이지를 열 때마다 팝업창이 뜰 것이고, 로그인 정보는 매번 사용자가 입력해야 할 것이다. 사용자 식별이나 상태 유지, 혹은 광고 타겟팅에도 쿠키와 세션이 사용될 수 있다. 쿠키 쿠키(Cookie)란 클라이언트(브라우저)에 저장되는 데이터 파일로, 브라우저를 종료해도 설정된 만료 날짜까지 남아있게 된다. 모든 HTTP 요청에 쿠키가 자동으로 첨부되어 서버로 ..
프로세스(Process)란?프로세스란 실행중에 있는 프로그램을 의미하며, 메모리에 적재되어 CPU의 할당을 받을 수 있는 것을 말한다. 프로세스는 최소 하나의 스레드를 가진다. 프로그램이 실행되면 메모리가 할당되고, 할당된 메모리 공간으로 바이너리 코드가 올라가면 그것을 프로세스라고 부른다. 프로세스마다 고유한 가상 메모리 공간 제공하는 이 공간은 다음과 같이 4개로 나눌 수 있다. code 작성한 코드가 저장되는 공간 data코드에서 전역변수, 정적변수, 상수 등 저장heap코드에서 동적으로 생성되는 데이터 구조나 객체들을 저장stack작성한 함수에서 지역변수, 매개변수, return 주소 등을 저장스레드(Thread)란?프로세스의 실행단위로, 프로세스 내의 공유된 자원(코드, 데이터, 파일 등)을..