Application Programming Interface둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법컴퓨터 사이에 데이터를 교환하는데 있어서 중간에 있는 중계 계층프로토콜(HTTP/HTTPS), 메서드(GET,POST), 데이터타입(JSON, XML) 등이 정의된
Javascript Object Notation정의: javascript 객체 문법으로 구조화된 데이터 교환 형식 key와 value로 구성key는 중복 선언 불가JSON 배열(\[])은 여러 JSON 그룹화하는데 사용대표적인 데이터 교환 형식ex) 웹 어플리케이션에서
클라우드를 이해하기 앞서, 클라우드의 기반 기술인 가상 머신에 대해 알아보자클라우드 위에서 제공되는 서비스 예시구글docs, microsoft 365물리적인 컴퓨터 한 대에 하나의 OS를 깔고 여러 가지 프로그램을 설치 => 계정을 나눠 여러 사용자가 이용할 수 있지만
개발자가 코드를 짠 뒤 해야하는 일? 지속적으로 코드를 합치고 코드를 배포해야 함안정성 및 신뢰성코드 변경 사항을 지속적으로 테스트하고 배포빌드, 테스트, 배포 과정을 자동화 -> 효율성 및 비용 절감혼자가 아닌 여러 명의 개발자가 코드를 합치고 배포를 계속해서 시스템
객체를 만들어내기 위한 틀. 만들어 낼 객체의 속성과 매서드의 집합을 담아놓은 것클래스로부터 만들어지는 실체. 클래스로 선언된 변수객체가 메모리에 할당이 된 상태이며 런타임에 구동되는 객체. 객체와 같은 의미로 쓰이기도 한다.cf) AWS의 클라우드의 가상 서버의 이름
프로그램을 설계할 때 발생하는 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 "규약" 형태로 만들어 놓은 것디자인패턴을 기반으로 하여 라이브러리나 프레임워크가 생성된다. 공통점공통으로 사용할 수 있는 특정한 기능들을 모듈화한 것차이점생성 패턴,
DI = Dependency InjectionDIP = Dependency Inversion PrincipleIOC = Inversion Of Control메인 모듈이 직접 다른 하위 모듈에 대한 의존성을 주기보다는, 중간에 의존성 주입자(dependency injec
실제 객체에 대한 대리자 또는 대행자 역할을 하는 객체를 제공하는 패턴객체가 어떤 대상 객체에 접근하기 전, 그 접근에 대한 흐름을 '가로채서' 해당 접근을 필터링하거나 수정하는 등의 역할을 하는 계층이 있는 디자인 패턴구조패턴(객체들이 더 큰 구조를 형성하고, 객체
모델(Model) 뷰(View) 컨트롤러(Controller)로 이루어진 디자인 패턴애플리케이션의 데이터인 데이터베이스, 상수 변수 등을 뜻함뷰에서 데이터를 생성하거나 수정할 때, 컨트롤러를 통해 모델이 생성 혹은 업데이트 된다ex) 사용자가 네모 박스에 글자를 적을
디자인 패턴 중 객체 생성 방법이 들어간 생성 패턴의 대표적인 예시인 싱글톤 패턴과 팩토리 패턴에 대해 알아보자 😀하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴하나의 클래스를 기반으로 여러 개의 개별적인 인스턴스를 만들 수 있지만, 그렇게 하지 않고 하나의 클래
행동 패턴의 예시인 이터레이터, 전략, 옵저버 패턴에 대해 알아보자 🤭이터레이터를 사용하여 컨테이너의 요소들에 접근하는 디자인 패턴. 각기 다른 자료 구조들을 똑같은 인터페이스로 순회할 수 있다는 장점 존재. 여기서 컨테이너란 동일한 요소들을 담아놓는 집합 ex) 배
네트워크란? 노드(node)와 링크(link)가 서로 연결되어 있으며, 리소스를 공유하는 집합트래픽이란? 특정 시점에 링크 내에 "흐르는" 데이터의 양단위 : bps (bits per seconds) 초당 전송 또는 수신되는 비트 수ex) 서버에 저장된 파일(문서, 이
네트워크 토폴로지 > 노드와 링크의 구성 방식 1. 버스 토폴로지 특징 하나의 회선에 여러 개의 노드 노드 추가, 삭제 쉬움 설치 비용 적음 장점 소규모 네트워크를 구축하기 매우 쉬움 한 노드에 장애가 발생해도 다른 노드에 영향 X 단점 메인 링크에 많은
TCP/IP 4게층이란?장치들이 인터넷 상에서 데이터를 주고받을 때 쓰는 독립적인 프로토콜들의 집합으로 각 계층은 독립적으로 동작HTTP, SMTP, SSH, FTP . 웹 서비스, 이메일 등 서비스를 실질적으로 client에게 제공하는 층TCP, UDP애플리케이션 계
HTTP, SMTP, SSH, FTP가 대표적이며 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층Hypertext Transfer Protocol서버와 브라우저 간에 데이터를 주고 받기 위해 설계된 프로토콜브라우저 뿐만 아니라 서버와 서버 간의 통신
TCP의 연결 성립: 3-웨이 핸드쉐이크 > 3단계의 과정을 거쳐 연결 성립 > SYN : synchronization의 약자. 연결 요청 플래그 > ACK: acknowledgement의 약자. 응답 플래그 1. SYN (씬) 단계 (요청) 클라이언트는 서버에
네트워크에서 데이터를 보낼 때 최적의 경로를 선택하는 과정. 라우터가 이를 수행데이터는 보통 출발지에서 목적지로 가는 동안 여러 개의 라우터를 거치며, 여러 번의 라우팅을 수행. (라우팅은 보통 초당 수백만번 발생)라우터: 라우팅을 수행하는 네트워크 장치홉바이홉 통신이
Internet Protocol Address논리적(변하는) 주소로, 컴퓨터 네트워크에서 장치 간 통신을 위해 사용되는 특수한 번호.예시: IPv4 (32비트) 또는 IPv6 (128비트).Media Access Control Address물리적 주소로, 네트워크 인
HTTP Header HTTP에서는 요청 시 header와 body를 주고받음 헤더는 콜론으로 구분되는 key-value 형태로 다양한 정보를 담고 있음 HTTP 헤더의 종류 일반 헤더: 요청한 URL, 요청 메서드, 출처 정책 등의 정보를 포함한다. 보안 수
웹 브라우저의 캐시와 관련된 3가지 개념인 로컬 스토리지, 세션 스토리지, 쿠키에 대해 알아보자브라우저 내에 {key:value} 형태로 오리진에 종속되어 데이터를 저장하는 객체⭐ 오리진 (프로토콜 + hostname + port) 이 같은 브라우저 내에서 로컬 스토리
미들웨어를 활용. 미들웨어: 공통 서비스 및 기능을 어플리케이션에 제공. 서비스의 모든 url 요청에 대하여 공통적인 로그인 미들웨어를 둘 수 있음HTTP 프로토콜은 상태없음(stateless)한 특징을 가지고 있기에, 클라이언트가 서버에 요청 시 서버는 해당 요청에
자주 쓰는 HTTP 상태코드를 정리해보자 🫠🫠100 Continue: 서버가 요청을 성공적으로 수신하였으며 계속해서 처리 중200 OK: 요청이 성공적으로 처리되었습니다201 Created: 요청이 성공적이며, 새로운 리소스가 생성되었습니다301 Moved Perm
시간 복잡도는 알고리즘이 주어진 입력 크기에 대해 실행되는 데 걸리는 시간을 측정하는 방법 중 하나 주로 주요 로직의 반복 횟수를 중점으로 측정되며, 컴퓨터 사양 등 여러 요소에 영향을 받을 수 있다이러한 시간 측정은 컴퓨터의 성능 등에 영향을 받으므로, 알고리즘의 성
정적 배열(array)와 동적 배열(vector) 2가지 선언 시 크기를 지정연속된 메모리 공간에 같은 타입의 요소들이 저장인덱스를 통한 랜덤 접근이 가능하며 중복 허용메서드가 없음런타임 시 동적으로 메모리를 할당하여 요소를 추가할 수 있는 배열요소의 개수를 미리 알
변수 선언 시 메모리에 할당되는 과정?컴퓨터의 메모리는 연속된 메모리 셀로 이루어져 있고, 각 셀은 1바이트 크기를 가지며 고유한 주소를 가짐변수 i의 메모리 주소는 변수가 사용하는 메모리 주소들 중 첫 번째를 가리킨다변수에 값 할당되기 이전과 이후에 변수의 메모리 주
노드로 구성된 선형적인 자료 구조로, 각 노드가 데이터를 담고 있고, 다음 노드를 가리키는 포인터로 연결되어 있음종류: 싱글 연결 리스트(next), 이중 연결 리스트(next, prev), 원형 연결 리스트참조 : O(n), 랜덤 접근이 불가능탐색 : O(n), 배열
그래프 이론은 현실 세계에서의 관계를 표현하는 강력한 도구로, 정점과 간선의 조합으로 구성정점(Vertex, Node): 개별적인 객체나 위치를 나타냄. 사람, 도시, 물체 등이 될 수 있음간선(Edge): 정점을 연결하는 선으로, 정점 간의 관계를 나타냄. 방향이 있
인접 행렬과 인접리스트는 그래프를 표현하는 2가지 주요 방법. 둘 다 그래프의 정점들과 간선을 나타내는데 사용되지만, 방식과 성능 면에서 차이가 존재정점과 정점 사이의 연결 관계를 이차원 배열로 표현O(V^2) 정점의 수 V의 제곱에 비례하는 메모리가 필요각 셀 (i,
다양한 데이터를 효율적으로 관리하기 위해 사용되는 자료구조. 해싱 과정을 통해 데이터를 빠르고 효울적으로 저장하고 검색. 큰 범위를 가진 데이터들을 해싱을 통해 한정된 범위의 정수값을 가진 해시로 만들고, 해시라는 키들에 원본 데이터들을 매핑시켜놓은 테이블해시 : 다양
결론 데이터의 추가와 삭제가 많을 경우 연결 리스트 사용이 유리, 참조가 많을 경우 배열 사용이 유리 REF
LRU 알고리즘의 원리 LRU 알고리즘(Least Recently Used) 캐시에서 가장 오래 전에 참조된 페이지를 교체하는 방식으로 작동. 이를 구현하기 위해 다음 두 가지 주요 작업을 수행: 페이지 확인: 요청된 페이지가 캐시에 있는지 확인. 페이지 교체: 요
운영체제는 크게 GUI(Graphical User Interface)와 CUI(Character User Interface)로 나뉜다. GUI: 그래픽을 기반으로 한 인터페이스로, 대표적으로 Windows OS와 macOS가 여기에 속함CUI: 문자기반 인터페이스로,
프로세스의 메모리 구조 > 운영체제는 프로세스에 적당한 메모리를 할당. 구성 요소: 스택, 힙, 데이터영역, 코드 영역 1. 스택(Stack) 지역변수, 매개변수, 함수 컴파일 시 크기가 결정되지만, 함수 호출 등으로 런타임에 크기가 동적으로 변경 가능 메모리의
시스템 내에서 여러 프로세스나 스레드가 함께 접근할 수 있는 자원. 메모리, 파일, 데이터 등을 포함두 개 이상의 프로세스나 스레드가 동시에 공유자원을 읽거나 쓸 때 발생하는 상태. 접근 타이밍에 따라 결과가 달라질 수 있음공유자원에 접근하는 코드 영역. 한 번에 하나
CPU 사용률이 높고, 단위 시간 당 처리량이 많으며, 프로세스의 대기 시간이 짧게 유지되도록 하는 것이 목표프로세스가 CPU를 스스로 포기할 때까지 CPU를 점유. 따라서 컨텍스트 스위칭에 따른 부담이 적지만, 대기 시간이 길어질 수 있음.도착한 순서대로 프로세스를
빠른 장치와 느린 장치 사이의 속도 차이를 줄이기 위해 사용되는 임시 저장소캐시 히트: 캐시에서 원하는 데이터를 찾음캐시 미스: 캐시에서 찾지 못해 메모리에서 데이터를 가져와야 함데이터 접근 시간을 단축하고, 데이터를 재게산하는 시간 절약 가능캐시 설정 시 자주 사용되
사용가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태정의: 프로그램에 할당된 메모리 "내"에서 사용되지 않는 여분의 공간이 발생발생상황: 주로 고정 크기의 메모리 블록을 할당할 때 발생정의: 메모리에 충분한 총 공간이 있음에도 불구하고, 연속적인 공간이 부족해 특
네트워크 환경은 다양한 장비들로 구성되며, 이들은 계층별로 서로 다른 역할을 수행.각 계층의 장비는 그 아래 계층의 기능을 수행할 수 있으나, 그 반대는 불가능.예를 들어, 애플리케이션 계층의 로드밸런서는 네트워크 분산 처리가 가능하지만, 물리계층의 NIC는 불가능.L
유선 LAN은 안정적이고 빠른 속도의 데이터 전송을 가능하게 하며, 다양한 케이블 유형이 존재. 반면, 무선 LAN은 유연한 연결과 이동성을 제공하지만, 주파수와 환경에 따라 성능이 달라질 수 있음.전이중화 통신: 현대 유선 LAN에서 사용되는 방식으로, 양쪽 장치가
서버 과부하란 서버가 리소스 한계에 도달하여 사용자의 웹 요청을 처리하지 못하는 상태서버의 CPU 사용량, 메모리, 대역폭 등을 지속적으로 모니터링하여 자원을 적절히 할당(서버 대수 증감)클라우드 서비스 이용(AWS 오토 스케일링), 무료 모니터링 서비스(netdata
주소와 행위로 자원을 컨트롤하는 통신규약http uri를 통해 자원을 명시하고, http method를 통해 자원에 대한 CRUD 오퍼레이션을 적용하도록 설계된 아키텍처REST의 설계 규칙을 준수하는 APIUniform Interface각 자원은 독립적인 인터페이스를
리다이렉트: 필요한 경우 리다이렉트를 수행캐싱: 캐시된 정보가 있다면 사용하고, 없으면 새로운 요청을 진행합니다.브라우저 캐시: 쿠키, 로컬 스토리지를 포함. 개인 캐시. 브라우저 자체가 사용자가 HTTP를 통해 다운로드하는 모든 문서를 보유하는 것공유 캐시: 클라이언
데이터베이스 = 체계적으로 데이터를 저장하고 관리하는 시스템. DBMS(데이터베이스 관리 시스템)를 통해 데이터에 대한 접근 및 관리가 가능하며, 실시간 접근성과 동시 공유의 특성을 가짐데이터베이스에서 표현하려는 항목으로, 사람, 장소, 물건 등과 같이 속성을 가지는
트랜잭션 정의데이터베이스의 상태를 변화시키는 작업 단위로, 전부 실행되거나 전부 실행되지 않는 '원자성'을 가짐데이터베이스의 일관성과 무결성을 유지하기 위해 필수적인 조건Commit : 여러 쿼리가 성공적을 처리되었음을 나타내는 명령어Rollback: 트랜잭션으로 처리
관계형 데이터베이스는 정형화된 데이터를 다루는데 유리하며 NoSQL 데이터베이스는 유연한 스키마와 확장성을 필요로 하는 데이터를 다루는데 유용표 형식 데이터를 저장하는 데이터베이스로 SQL 언어를 사용MySQL, PostgreSQL, 오라클, SQL Server각 DB
데이터베이스에서 인덱스는 대용량 데이터에서 빠른 검색을 가능하게 하는 중요한 기능. 책의 목차와 유사한 역할 수행인덱스가 효율적인 이유는 균형 잡힌 B-Tree 구조이기 때문. 탐색, 삽입, 삭제 작업을 평균 O(logN) 시간에 처리할 수 있어 매우 효율적.대수확장성
Java Persistence API자바 어플리케이션에서 관계형 데이터베이스를 조작하기 위한 자바 표준 API.객체와 데이터베이스 간의 매핑을 쉽게 할 수 있으며, 이를 위해 다양한 어노테이션을 제공
Virtual Memory, 컴퓨터의 실제 메모리보다 더 큰 메모리 공간을 사용자에게 제공하기 위한 기술가상 주소는 메모리 관리 장치(MMU)와 페이지 테이블을 통해 실제 주소로 변환된다용어 정리 : 페이지 = 가상 메모리 최소 크기 단위, 프레임 = 실제 디스크나 메
데이터의 중복을 최소화하고 이상 현상을 방지하기 위해 테이블을 쪼개는 것이상현상 : 삽입 이상, 갱신 이상, 삭제 이상데이터의 저장 공간을 효율적으로 사용, 데이터의 무결성 유지릴레이션 내 속성들의 함수적 종속성을 기반으로 동작함수적 종속성: X(결정자) -> Y(종속
클라우드 환경을 최대한 활용하여 애플리케이션을 개발, 배포 및 운영하는 접근 방식. 주요 목표는 확장성, 탄력성, 장애 대응력을 강화하는 것확장 가능한 아키텍처: 자동 확장(auto scaling) 기능을 통해 서버의 수를 수요에 따라 자동으로 조절탄력적 아키텍처:
MSA는 독립적으로 배포 가능한 작은 서비스 단위로, 각각이 특정 비지니스 기능을 수행. 이에 서비스 디스커버리는 필수적. 마이크로 서비스가 시작될 때, 서비스 레지스트리에 자신을 등록하고, 다른 서비스가 필요로 할 때 이 레지스트리를 조회하여 서비스의 위치 (IP,
사용자가 설정한 라우팅 설정에 따라서 각각 엔드포인트로 클라이언트를 대신해서 요청하고, 응답을 받으면 클라이언트에게 전달해주는 proxy 역할클라이언트가 직접적으로 마이크로 서비스를 호출하지 않아도 됨예시: Netfilx Zuul(현재는 deprecated), Spri
systemctl로 관리되는 서비스의 등록 및 실행 방법에 대해 정리하고자 한다\-.service 확장자를 가진 파일 생성 후 /etc/systemd/system 경로에 소프트링크로 등록하면 systemctl 명령어로 해당 서비스를 제어할 수 있다. .service 파
자바 웹 어플리케이션 성능 Test 오픈 소스download 링크: https://jmeter.apache.org/download_jmeter.cgi압축해제 후 apache-jmeter-${jmeter version}\\bin\\jmeter.bat 실행API
자바스크립트는 싱글 스레드 언어로, 동시에 하나의 작업만 실행할 수 있다. 그러나 실제 웹 애플리케이션에서는 다양한 비동기 작업(예: 네트워크 요청, 타이머 등)을 처리해야 한다. => 이 문제를 해결하기 위해 자바스크립트는 이벤트 루프라는 메커니즘을 사용. 호출 스택