개발공부 CS 5

camel·2023년 3월 5일
0
post-thumbnail

브라우저 주소창에 www.google.com 입력하면 어떤 일이 일어나나요?

1 브라우저는 캐싱된 DNS 기록들을 통해 google.com과 대응되는 IP 주소가 있는지 확인합니다.

2 요청한 URL이 캐시에 없으면, ISP의 DNS 서버가 google.com을 호스팅하고 있는 서버의 IP 주소를 찾기 위해 DNS query를 날립니다.

3 브라우저가 서버와 TCP connection을 합니다.

4. 브라우저가 웹 서버에 HTTP 요청을 합니다.

5. 서버가 요청을 처리하고 response를 생성합니다.

6. 서버가 HTTP response를 보냅니다.

7. 브라우저가 HTML content를 보여줍니다.

DNS에 대해 설명해주세요

DNS는 도메인 이름 시스템을 의미하며, 기본적으로 웹에서 도메인을 정리하고 확인하는 전화번호부와 같은 역할을 합니다. '도미노 피자'와 같은 이름이 전화번호부를 통해 전화번호로 변환되는 것처럼 'www.google.com'과 같은 웹 주소는 DNS를 통해 '74.125.19.147'과 같이 사이트(이 경우 Google 홈페이지)를 호스팅하는 컴퓨터의 실제 IP 주소로 변환됩니다.

Google Cloud 서비스를 사용하는 경우 주기적으로 DNS 설정을 변경하여 다양한 도구와 서비스를 설정해야 합니다. 이는 여러 유형의 DNS 레코드를 변경하여 수행할 수 있습니다. 예를 들어 도메인의 MX 레코드를 변경하여 도메인으로 전송되는 이메일을 Google 메일 서버로 전달합니다.

키워드 :

도메인, 이름, 실제 IP

GET과 POST의 차이는 무엇인가요?

Get은 가져온다는 개념이고, Post는 수행한다는 개념으로 받아들이면 쉽습니다.
즉, Get은 서버에서 어떤 데이터를 가져와서 보여줄 때 사용합니다. 어떤 값이나 내용, 상태 등을 바꾸지 않는 경우에 사용을 하는 것입니다.
이에 비해, Post는 서버상의 데이터 값이나 상태를 바꾸기 위해서 사용합니다.

게시판으로 예를 들자면, 글의 내용에 대한 목록을 보여주는 경우나, 글의 내용을 보는 경우는 Get에 해당합니다.
그리고 글의 내용을 저장하고, 수정할 때에 Post를 사용하는 것이죠.

멱등성 : 👉 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질 👈

키워드 :

멱등성, 리소스, 전달방식

https://whales.tistory.com/120

REST API에 대해 설명해주세요

  • REST
    • 자원의 이름을 이용하여 자원의 상태를 주고 받는 것
  • REST API
    • REST를 기반으로 서비스 API를 제공하는 것
    • 리소스 - URI로 표현 / 행위 - HTTP Method로 표현

REST의 정의
“Representational State Transfer” 의 약자
자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.
즉, 자원(resource)의 표현(representation) 에 의한 상태 전달

REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.

REST의 구체적인 개념
HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

즉, REST는 자원 기반의 구조(ROA, Resource Oriented Architecture) 설계의 중심에 Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐를 의미한다.
웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID인 HTTP URI를 부여한다.

CRUD Operation
Create : 생성(POST)
Read : 조회(GET)
Update : 수정(PUT)
Delete : 삭제(DELETE)
HEAD: header 정보 조회(HEAD)

API(Application Programming Interface)란
데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것

REST API의 정의
REST 기반으로 서비스 API를 구현한 것

REST API의 특징
사내 시스템들도 REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.

REST는 HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.
즉, REST API를 제작하면 델파이 클라이언트 뿐 아니라, 자바, C#, 웹 등을 이용해 클라이언트를 제작할 수 있다.
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

장점
HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구출할 필요가 없다.
HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해준다.
HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
여러가지 서비스 디자인에서 생길 수 있는 문제를 최소화한다.
서버와 클라이언트의 역할을 명확하게 분리한다.

단점
표준이 존재하지 않는다.
사용할 수 있는 메소드가 4가지 밖에 없다.
HTTP Method 형태가 제한적이다.
브라우저를 통해 테스트할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 Header 값이 왠지 더 어렵게 느껴진다.
구형 브라우저가 아직 제대로 지원해주지 못하는 부분이 존재한다.
PUT, DELETE를 사용하지 못하는 점

키워드 :

리소스(자원), HTTP Method, url, REST

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

객체 지향 프로그래밍이란 무엇인가요?

객체 지향 프로그래밍 (Object-Oriented Programming, OOP)은 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고, 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.

객체란?
객체는 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며 값을 저장 할 변수와 작업을 수행 할 메소드를 서로 연관된 것들끼리 묶어서 만든 것이다.

객체지향 프로그래밍을 레고에 빗대 표현 할 수 있는데, 객체가 레고의 조각이 될 것이고 레고의 조각을 조립해서 무언가를 만드는 방식이 객체지향 프로그래밍이라고 할 수 있다.

객체는 또한 레고 조각과도 비슷하게 여러군데에서 재사용 할 수 있는데 이는 부품화 와 재사용성 이라는 객체 지향 프로그래밍의 특징을 보여주기도 한다.

객체 지향 프로그래밍의 특징
객체 지향 프로그래밍은 크게 추상화 , 캡슐화 , 상속 , 다형성 의 네가지 특징을 가진다.

추상화
객체에서 공통된 속성과 행위를 추출 하는 것
공통의 속성과 행위를 찾아서 타입을 정의하는 과정
추상화는 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단하게 만드는 것

캡슐화
데이터 구조와 데이터를 다루는 방법들을 결합 시켜 묶는 것 (변수와 함수를 하나로 묶는 것을 뜻함)
낮은 결합도를 유지할 수 있도록 설계하는 것

속성과 기능을 정의하는 변수와 메소드를 클래스라는 캡슐에 넣어서 분류하는 것으로 재활용이 원활하다는 장점이 있고 캡슐화를 통해서 정보은닉 을 활용 할 수도 있다. (접근제어자의 활용)

상속
클래스의 속성과 행위를 하위 클래스에 물려주거나 하위 클래스가 상위 클래스의 속성과 행위를 물려받는 것을 말한다
새로운 클래스가 기존의 클래스의 데이터와 연산을 이용할 수 있게 하는 기능

다형성
이제 객체 지향 프로그래밍의 꽃이라 할 수 있는 다형성에 대해 간략히 살펴보도록 하겠습니다. 다형성(多形性)이란 한자 이름 그대로 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질을 의미합니다.

객체 지향 프로그래밍의 장단점

장점
클래스 단위로 모듈화시켜서 개발하기 때문에 업무 분담이 편리하고 대규모 소프트웨어 개발에 적합하다.
클래스 단위로 수정이 가능하기 때문에 유지 보수가 편리하다.
클래스를 재사용하거나 상속을 통해 확장함으로써 코드 재사용이 용이하다.

단점
처리속도가 상대적으로 느리다.
객체의 수가 많아짐에 따라 용량이 커질 수 있다.
설계시 많은 시간과 노력이 필요하게 될 수 있다.

https://jongminfire.dev/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%B4%EB%9E%80

키워드 :

객체, 상호작용, 재사용, 추상화 , 캡슐화, 상속, 다형성

자료구조 stack과 queue에 대해 설명해주세요

스택(Stack) 자료구조는, 책을 쌓는 것처럼 차곡차곡 쌓아 올린 형태의 자료구조를 의미한다.
즉, 후입선출(LIFO, Last In First Out) 방식의 자료구조이다.

스택의 활용 예시

웹 브라우저 방문기록 (뒤로 가기)
가장 마지막에 열린 페이지부터 다시 보여준다.
실행 취소 (undo)
가장 마지막에 실행된 것부터 실행을 취소한다.
역순 문자열 만들기
가장 마지막에 입력된 문자부터 출력한다.
후위 표기법 계산
수식의 괄호 검사
연산자 우선순위 표현을 위한 괄호 검사

큐(Queue) 는 "줄을 서서 기다린다."라는 사전적 의미를 가지고 있다.
따라서, 큐 (Queue) 자료구조는, 먼저 들어온게 먼저 나가는 선입선출(FIFO, First In FirstOut) 방식의 자료구조이다

큐의 활용 예시

큐는 주로, 데이터가 입력된 순서에 따라 처리되어야 할 때 사용된다.
일상생활에서, 줄을 서서 기다려야하는 모든 행동
은행 업무
콜센터 고객 대기시간
놀이동산
프로세스 관리
너비 우선 탐색(BFS, Breadth-First Search) 구현
캐시(Cache) 구현

https://wooono.tistory.com/395

프로세스와 스레드에 대해 설명해주세요

프로그램
파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태이며,
어떠한 작업을 위해 실행할 수 있는 파일을 뜻합니다.

프로세스

프로그램이 메모리에 올라와 운영체제로부터 CPU를 할당받고 프로그램이 실행되고 있는 상태.
즉, 일을 처리하는 일련의 과정을 뜻합니다.

운영체제로부터 시스템 자원을 할당받는 작업의 단위
메모리에서 올라와 실행되고 있는 프로그램 인스턴스
컴퓨터에서 연속적으로 실행되고 있는 프로그램
각 프로세스는 별도의 주소 공간에서 실행되고 프로세스끼리는 자원을 공유하지 않음
하나의 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신 필요
(IPC, inter-process communication) Ex. 메일 슬롯, 파이프, 소켓, 시그널, 공유 메모리

  • 할당받는 시스템 자원

Code, Data, Stack, Heap 구조로 되어있는 독립된 메모리 영역
주소 공간
CPU 시간

키워드 :

프로그램, 인스턴스, OS, 작업

스레드

프로세스 내에서 실행되는 흐름의 단위로, 프로세스 하나에 자원을 공유하면서
일련의 과정을 여러 개 동시에 실행 시킬 수 있는 것을 말합니다.

하나의 프로세스 내의 주소 공간이나 자원들 공유
하나의 프로세스가 생성되면 하나의 스레드(메인 스레드)가 생성됨
하나의 프로세스는 여러 개의 스레드를 가질 수 있음
스레드는 프로세스 내에서 Stack만 따로 할당받고 Code, Data, Heap 영역은 공유

키워드 :

프로세스, 자원, 실행

https://velog.io/@nowhhk/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C

https://overcome-the-limits.tistory.com/517

profile
화이팅~ 가보자구

0개의 댓글