본문 바로가기

분류 전체보기

(34)
[자료구조] Stack 가장 자주 쓰이는 자료구조 형태인 Stack에 대해 정리해보고자 한다. python을 배웠으니 python 기준으로 서술한다. 📌 Stack 정의 LIFO(Last In, First Out) 구조로써 가장 나중에 들어온 자료가 가장 먼저 나가는 형태이다. 📌 Python에서 Stack 구현 list를 이용하여 Stack을 구현한다. 어떠한 자료를 넣어야 할 때(push)에는 list의 append 함수를, 빼내야 할 때(pop)에는 pop 함수를 이용한다. 📌 그 외의 Stack 기본 연산 - peek(): 스택의 가장 위에 있는 원소를 반환한다. (pop과 달리 삭제하지 않는다.) - empty(): 스택이 비어있다면 1, 비어있지 않다면 0을 반환한다. 📌 시간복잡도 - push: O(1), top에..
TCP와 UDP의 차이 TCP와 UDP는 OSI 7계층에서 4계층인 전송 계층의 대표적인 프로토콜이다. 전송 계층을 다시 한번 리마인드 해보자면 "IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당"한다. 📌 TCP(Transmission Control Protocol) 정의 연결 지향적 프로토콜 - 신뢰성을 보장하는 연결형 서비스이다. - 안정적으로, 순서대로, 에러없이 패킷을 교환할 수 있도록 한다. 특징 - 3-way handshaking 과정을 통해 연결을 설정하고, 4-way handshaking 과정을 통해 연결을 해제한다. - 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지한다. 네트워크 내 패킷 수가 과도하게 증가하지 않도록 방지한다. - 신뢰성이 높은 전송을 하기 때문에 UD..
map 함수, 람다 함수 그리고 iterable/iterator 사실 map 함수는 백준 문제 풀때나 map(int, input().split()) 형태로 자주 썼는데 이게 무슨 의미인지 와닿진 않았다. 이해하고 썼다기 보단 외워서 쓴 개념이 강해서 이 기회에 한번 정리해보고자 한다. 📌 map() 함수의 기본 정의 map(function, iterable) - 첫번째 매개변수: 함수 - 두번째 매개변수: 반복 가능한 자료형(리스트, 튜플 등) 함수의 동작방식은 두번째 인자로 들어온 반복 가능한 자료형을 첫번째 인자로 들어온 함수에 하나씩 집어넣어서 함수를 수행한다. 백준 문제를 풀이하며 자주 쓰던 map(int, input().split())은 결국 사용자로부터 입력받은 값을 input()으로 받아들이고 이 받아들인 값을 split()으로 구분자 스페이스를 이용하여..
MVC(혹은 MTV) 패턴이란? 일전에 정리했던 내용인데 누락된 것 같아 새롭게 정리하고자 한다. 📌 MVC 패턴이란? 디자인 패턴 중 하나이다. 디자인 패턴이란 프로그램이나 어떤 것을 개발하는 중 발생한 문제점을 정리하여 간편하게 적용할 수 있도록 "특정한 규약"을 만든 것을 의미한다. MVC는 Model, View, Controller의 약자이다. python의 경우는 Model, View, Template라고 통칭한다. 📌 MVC 패턴의 동작 방식 사용자가 Controller(python은 template)를 조작하면 Controller는 Model을 통해 데이터를 가져오고 View가 가져온 데이터를 화면에 뿌려주고 사용자의 요청에 응답하게 된다. 📌 Model, View, Controller 정의 1) Model - 데이터를 나..
EAI(Enterprise Application Integration) 시스템 서버라고 보긴 어렵고 시스템 카테고리로 넣어야 할 것 같으나, 서버를 기반으로 동작하는 시스템으로 인지하고 서버 카테고리에 포스팅을 작성한다. 채용 공고를 보다보니 EAI 시스템을 처음 접하게 되어 개념 정리가 필요할듯 하였다. 📌 EAI(Enterprise Application Integration) 시스템이란? 기업 어플리케이션 통합 시스템이다. 쉽게 풀어쓰자면 기업 내의 다양한 어플리케이션들이 상호 작용하기 쉽게 도와주는 솔루션이라고 보면된다. 네트워크 프로토콜이나 DB, OS와 같은 백엔드 소프트웨어에 관계없이 통합한다고 한다. 📌 EAI 시스템이 필요한 이유는? 관리하기 편하려고. 회사를 다니다보면 신규 사업으로 새롭게 시스템을 도입하는 경우가 많다. 또한 고도화 작업으로 기존의 시스템을 활용하..
TCP 3-way handshake 📌 TCP 3-way handshake란? TCP/IP 프로토콜을 이용하여 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다. 📌 역할 서버와 클라이언트 모두 데이터를 전송할 준비가 되었다는 것을 보장한다. 또한 실제로 데이터 전달을 시작하기 전 한 쪽에서 다른쪽이 준비되었다는 것을 알 수 있도록 한다. 📌 3-way handshake 과정 (세션 시작) [Step1] Client > Server: TCP SYN 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보낸다. 이 때 클라이언트는 SYN을 보내고난 후, SYN/ACK 응답을 기다리는 "SYN_SENT" 상태가 된다. [Step2] Client Server:..
HTTP와 HTTPS의 차이 📌 HTTP란 웹을 기반으로 서로 다른 시스템 사이 통신을 주고 받게 해주는 가장 기초적인 프로토콜이다. 인터넷의 초기에 모든 웹사이트에서 기본적으로 사용되었던 프로토콜이기도 하다. 기본 포트는 80 포트를 사용하고 있다. 📌 HTTPS란 HTTP 프로토콜의 문제는 서버와 통신을 할 때 송수신되는 데이터가 암호화되지 않는다는 것이다. 데이터를 인증되지 않은 누군가가 임의로 조회하거나 탈취할 수 있다. 이를 보완하고자 SSL(Secure Sockets Layer)을 사용하여 서버-클라이언트 간 안전하게 암호화 통신을 할 수 있도록 하였다. 이 SSL을 웹에다가 적용한 것이 바로 "인증서"라고 할 수 있다. 이 인증서를 통해서 송수신하는 데이터를 암호화하기도 하고 하기와 같이 "이 연결은 안전합니다."라는 ..
웹 소켓이란? 📌 웹 소켓(Web Socket) 프로그램 간 메시지 교환을 위한 통신 방법 중 하나이다. 왜 웹 소켓이 나오게 되었을까? 과거에 웹에서 새로운 정보를 가져와야 할 때에는 URL 요청이 유일무이 했다. 하지만 웹이 발전함에 따라 사용자가 URL 요청을 새로하지 않아도 데이터를 가져오게 하는 "비동기" 방식이 등장하게 되었다. 하지만 비동기의 방식도 결국은 HTTP를 이용하기 때문에 요청을 보내야 응답이 오게 되는 방식이다. 이러한 문제들을 해결하기 위해 웹 소켓이 등장하게 되었다. 웹 소켓이 나온 목적은 다음과 같다. 웹 소켓은 HTTP와 같이 "프로토콜"의 한 종류로 이해해야 한다. 1) 양방향 통신 - 데이터 송수신을 동시에 처리할 수 있다. - 클라이언트와 서버가 서로 원할 때 데이터를 주고 받을 ..