가상머신물리적인 컴퓨터 한 대에 하나의 OS를 깔고 여러가지 프로그램을 설치하는 방식이었다.계정을 나눠 여러명의 사용자가 이용할 수 있도록 할 수 있지만 어떤 프로그램을 설치했을 때 다른 앱에도영향을 미치게 된다.\-> 계정간 독립적이지 않은 문제점을 해결하기 위해서가
오프프레미스클라우드 서비스는 내가 아닌 다른 회사의 공급자가 호스팅하고 인터넷을 통해 사용자에게 제공되는 인프라, 플랫폼 또는 소프트웨어를 말한다.이를 이용하면 자체 인프라나 하드웨어 설치 없이도 애플리케이션과 리소스에 쉽고 싸게 이용 가능하다.온프레미스네트워크 선을
IaaS(Infrastructure-as-a-Service)는 인프라형 클라우드 서비스이다.클라우드가 단지 인프라를 제공한다.node.js, MongoDB 등을 개발자가 직접 설치해야 하는 대신 특정 서비스에 종속되지 않는다.Ex. AWS의 EC2, NCP 등PaaS(
클래스란 객체를 만들어 내기 위한 틀이다.만들어 낼 객체의 속성과 메서드의 집합을 담아놓은 것이다.객체란 클래스로부터 만들어지는 실체로써, 클래스로 선언된 변수를 객체라고 한다.인스턴스란 객체가 메모리에 할당이 된 상태이며 런타임에 구동되는 객체를 말한다. 일반적으로
오버로딩은 이름이 같아도 매개변수 개수, 타입, 순서를 다르게 해서 같은 이름으로도 여러 개의 함수를 정의할 수 있는 것을 말한다. 이는 프로그램의 유연성을 높이고 결과적으로 코드를 깔끔하게 하는 효과가 있으며 같은 클래스 내에서 사용한다.상위 클래스가 가지고 있는 메
프로그래밍에서의 추상화는 복잡한 데이터, 구조, 시스템 등으로부터 핵심만을 가려내 덜 자세하게 만드는 것 또는 세부사항, 절차 등을 감추고 인터페이스 등을 만드는 것으로 복잡도를 낮추는 방법을 말한다.추상화는 크게 두 가지로 나뉜다.공통점을 모으고 차이점은 버린다.예를
공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것이다.폴더명, 파일명 등에 대한 규칙이 없고 프레임워크에 비해 자유롭다.ex. axiosaxios 라이브러리에서 설정한 키워드로 기능을 구현하지만 프레임워크에 비해 자유롭다. 또한 라이브러리는 프레임워크 안
싱클톤 패턴(singleton pattern)은 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴이다. 하나의 클래스를 기반으로 여러 개의 개별적인 인스턴스를 만들 수 있지만 그렇게 하지 않고 하나의 클래스를 기반으로 단 하나의 인스턴스를 만들어 이를 기반으로 로직을
팩토리패턴이란 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴이다.상위 클래스에서는 객체 생성방식에 대해 알 필요가 없어져 유연성을 갖게 되며 객체 생성 로직은 하위클래스에서만 관리
MVC는 사용자 인터페이스, 데이터 및 논리제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴이다.이는 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있으며,모델(model), 뷰(view), 컨트롤러(controller)로 이루어진 디자인 패턴이다.모
토폴로지는 병목현상을 해결하는 척도가 된다.병목현상병목(bottleneck) 현상은 트래픽에 의해 데이터 흐름이 제한되는 상황을 말한다.핫스팟이라고도 한다.예를 들어 아래와 같이 회선이 구축되어 있는 경우Traffic이 증가함에 따라 표시된 부분에 traffic이 집중
자료구조는 효율적으로 데이터를 관리하고 수정, 삭제, 탐색, 저장할 수 있는 데이터 집합이다. 어떠한 비즈니스로직을 처리할 때 그 로직에 가장 효과적인 자료구조를 찾아서 쓰는 것이 중요한데 이를 위해 자료구조를 명확히 알아야 한다.복잡도는 시간복잡도와 공간복잡도로 나뉘
위 코드의 시간 복잡도는 주요 로직의 반복 횟수즉, 10 \* n ^ 2 + n 이다.이를 빅오 표기법으로 나타내면 다음과 같다.빅오 표기법(Big-O notation) 이란 복잡도에 가장 영향을 많이 끼치는 항의 상수인자를 빼고 나머지 항을 없애서 복잡도를 나타내는
공간복잡도는 '입력크기에 대해 어떠한 알고리즘이 실행되는데 필요한 메모리 공간의 양'을 가리킨다.이는 정적변수로 선언된 것 말고도 동적으로 재귀적인 함수로 인해 공간을 계속해서 필요로 할 경우도 포함하며 배열이든 맵이든 셋이든 요소들을 담을 공간이면 다 적용된다.다음
클라우드 컴퓨팅은 컴퓨팅 리소스를 인터넷을 통해 서비스로 사용할 수 있는 주문형 서비스이다. 기업에서 직접 리소스를 조달하거나 구성, 관리할 필요가 없으며 사용한 만큼 비용을 지불하면 된다.클라우드 컴퓨팅 서비스 모델에는 3가지 유형이 있다.IaaS(infrastruc
HTTP headerHTTP 헤더http요청 시 : http header, body를 요청하고 응받으로 받는다.예를들어 https://www.naver.com/ 을 요청할 때 받는 리소스 중 하나인 count.nhn을 보면resopnse 탭에 잇는 컨텐츠를 b
스택은 가장 마지막으로 들어간 데이터가 가장 첫 번째로 나오는 후입선출(LIFO, Last In First Out)을 가진 자료구조이다.재귀적인 함수, 알고리즘에 사용되며 웹 브라우저 방문 기록 등에 쓰인다.시간복잡도n 번째 참조 : O(n)가장 앞 부분 참조 : O(
HTTP 상태코드(status code)1xx(정보)서버가 요청을 잘 받았으며 해당 프로세스를 계속 이어가며 처리하는 것을 의미한다.100 ; continue : 요청의 시작 부분 일부가 받아들여졌으며, 클라이언트는 나머지를 계속 이어 보내야 함을 의미2xx(성공)서버
map은 고유한 키를 기반으로 키 - 값 (key - value) 쌍으로 이루어져 있는 정렬된(삽입할 때마다 자동 정렬되는) 자료구조이다.균형잡힌 이진탐색트리인 레드 - 블랙트리로 구현된다.고유한 키를 갖기 때문에 하나의 키에 중복된 값이 들어갈 수 없으며자동으로 오름
장치들이 인터넷 상에서 데이터를 주고받을 때 쓰는 독립적인 프로토콜의 집합을 의미한다.TCP / IP는 TCP(Transmission Control Protocol) / IP(Internet Protocol)이라는 의미인데,인터넷을 통해 데이터를 보낼 때 주로 TCP와
데이터 송수신 시 패킷이 쪼개지면서 데이터를 송수신하며,이 때 패킷은 MTU(Maximum Transmission Unit)를 기반으로 쪼개진다.MTU는 네트워크 통신할 때 할 수 있는 가장 큰 PDU의 크기를 의미한다.이때 통신을 하는 양쪽 끝은 두 장치의 MTU만이
HTTP, SMTP, ssh, FTP가 대표적이며 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 계층이다.HTTP(Hypertext Transfer Protocol)은 서버와 브라우저간에 데이터를 주고 받기 위해 설계된 프로토콜이다.지금은 브라우저 뿐
TCP / IP 4계층 전송계층 : TCP와 UDP 전송계층(transport) > TCP, UDP가 대표적이며 애플리케이션 계층에서 받은 메시지를 기반으로 세그먼트 또는 데이터그램으로 데이터를 쪼개고 데이터가 오류없이 순서대로 전달되도록 도움을 주는 계층이다.
IP, ICMP, ARP가 대표적이며 한 노드에서 다른 노드로 전송 계층에서 받은 세그먼트 또는 데이터그램을 패킷화 하여 전송한다.ICMP(Internet Control Message Protocol)는 노드와 노드 사이에서 통신이 잘 되나 확인할 때 쓰는 프로토콜이다
트랜잭션은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말한다.데이터베이스에 접근하는 방법은 쿼리이므로, 트랜잭션은 여러개의 쿼리들을 하나로 묶는 단위이다.커밋은 여러 쿼리가 성공적으로 처리되었다고 확정하는 명령어이다. 트랜잭션 단위로 수행되며 변
트랜잭션은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말한다.즉, 여러 쿼리를 하나로 묶는 단위이다.트랜잭션의 특징은 원자성, 일관성, 독립성, 지속성이 있으며 이를 한꺼번에 ACID 특징이라 한다.all or nothing원자성(atomicit
격리성에는 여러 단계가 존재하며, 해당 단계에 따라 격리성과 동시성의 정도가 다른다.트랜잭션이 순차적으로 실행이 되면 격리성은 높아지지만 동시성은 너무 낮아져 성능이 안좋아진다.즉, 격리성과 동시성은 반비례관계이다.격리성이 너무 높으면 동시성은 떨어지고, 격리성이 너무
자료구조 해시테이블 (hash table)해시테이블은(해시 맵) 키를 값에 매핑할 수 있는 구조인 연관 배열을 구현하는 자료구조이다.(객체와 같은 키, 값 구조)해시테이블에 30개의 칸이 존재하는 경우,데이터가 31개라면 어떻게 될까?마지막 데이터는 연결 리스트의 형태
힙은 여러 값 중에서 가장 크거나 작은 값을 빠르게 찾기 위해 만든 완전 이진 트리를 말한다.가장 작은 요소가 루트노드에 있는 최소힙, 가장 큰 요소가 루트노드에 있는 최대힙이다.최대힙 : 부모노드의 값은 자식노드의 값보다 항상 큰 규칙을 지키는 힙을 말한다.최소힙 :
객체 지향 프로그래밍 (Object Oriented Programming)은 컴퓨터 프로그래밍의 패러다임 중 하나이다.객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 '객체'들의 모임으로 파악하고자 하는 것이다
운영체제를 공부하기 앞서 운영체의 필요성에 대해 알아보기로 한다.운영체제 또는 오퍼레이팅 시스템(operating system, OS)은 사용자의 하드웨어, 시스템 리소스를 제어하고 프로그램에 대한 일반적 서비스를 지원하는 시스템 소프트웨어이다.그렇다면 운영체제를 왜
운영체제는 앞단의 어떤 인터페이스를 두누냐에 따라 GUI와 CUI로 나눌 수 있다.GUI(Graphical User Interface)는 그래픽을 사용해 컴퓨터와 상호작용하는 인터페이스이다.windowOS, macOS 등 현대의 OS가 대표적CUI(Character U
포스코 x 코딩온 교육 당시 프로젝트를 회고하면서 프로젝트 설계의 단계에서첫 번째 단계로 요구사항의 분석과, 구상 단계에서의 아키텍쳐 설계에 대한 이해와 공부의 필요성을 느끼게 되었다.이러한 이유로 System Design | Learn how to design sys
프로그램은 컴파일러가 컴파일 과정을 거쳐 컴퓨터가 이해할 수 있는 기계어로 번역되어 실행될 수 있는 파일이 된 것을 의미한다.소스코드의 주석제거와 오류처리, 코드최적화 작업을 통해 어셈블리어로 변환한다.어셈블리어는 목적코드(object code)로 변환된다.이때 확장자
웹의 장바구니 같은 경우 특정 사용자만의 데이터를 어떻게 서버에 전달할 수 있는가? 즉, 두 요청이 동일한 브라우저를 통해 전달되었는가를 확인할 방법이 있는가?쉬운 방법으로 페이지 요청 시 토큰을 페이지에 삽입하고,다음 요청 시 해당 토큰을 다시 전달할 수 있을것이다.