전체 글 35

[데이터베이스] - 데이터베이스 기초

데이터베이스란?일정한 규칙 혹은 규약을 통해 구조화 되어 저장되는 데이터의 모음데이터베이스를 제어, 관리하는 통합 시스템을 DBMS라고 한다. 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있다.데이터베이스는 실시간 접근과 동시 공유가 가능. 위의 그림처럼 데이터베이스 위에 DBMS가 있고 그 위에 응용 프로그램이 있으며, 이러한 구조를 기반으로 데이터를 주고받는다.엔터티엔티티티티 프라잘...엔터티는 사람, 장소, 물건, 사건 개념 등 여러 개의 속성을 지닌 명사를 의미.예를 들어 회원이라는 엔티티가 있으면, 회원은 이름, 아이디, 주소, 전화번호의 속성을 갖는다.약한 엔터티와 강한 엔터티A가 혼자서는 존재하지 못하고 B의 존재 여..

카테고리 없음 2024.11.04

[자료구조] - 선형 자료 구조

선형 자료 구조란 요소가 일렬로 나열되어 있는 자료 구조를 뜻한다. 연결 리스트연결 리스트는 데이터를 감싼 노드를 포인터로 연결해서 공간적인 효율성을 극대화 시킨 자료구조 삽입/삭제: O(1)탐색: O(n)위의 그림처럼 prev 포인터와 next 포인터로 앞과 뒤의 노드를 연결시킨 것이 연결 리스트이다.싱글 연결 리스트: next 포인터만 가짐.이중 연결 리스트: next 포인터와 prev 포인터를 가짐.원형 이중 연결 리스트: 이중 연결 리스트와 같고, 마지막 노드의 next 포인터가 head 노드를 가리킴.#include#include using namespace std;int main() { list a; a.push_front(0); a.push_back(1); a.p..

CS 스터디 2024.10.17

[자료 구조] - 복잡도

자료 구조란,효율적으로 데이터를 관리하고 수정, 삭제, 탐색, 저장할 수 있는 데이터 집합ex) 배열, 스택, 큐, 이중 연결 리스트 등이 있다.복잡도복잡도는 시간 복잡도와 공간 복잡도로 나뉜다. 시간 복잡도시간 복잡도란 '입력 크기에 대해 어떠한 알고리즘이 실행되는 데 걸리는 시간' 주요 로직의 반복 횟수를 중점으로 측정되며, 보통 빅오표기법으로 나타낸다.효율적인 코드로 개선하는 데 쓰이는 척도.빅오표기법입력 범위 n을 기준으로 해서 로직이 몇 번 반복되는 지 나타내는 것.가장 영향을 많이 끼치는 항의 상수 인자를 빼고 나머지 항을 없앤 것이다. => O(n^2) 보단 O(n), O(n) 보단 O(1)를 지향해야 함.  공간 복잡도프로그램을 실행시켰을 때 '필요로 하는 자원 공간의 양' 정적 변수로 선..

CS 스터디 2024.10.16

[네트워크] HTTP/1.0/1.1/2/3

HTTP : Hypertext Transfer Protocol웹에서 데이터를 주고받는 서버-클라이언트 프로토콜(수신자 측에 의해 요청이 초기화 됨). 웹 브라우저와 서버가 통신하는 규칙.HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다. HTTP/1.0HTTP/1.0은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계.서버로부터 파일을 가져올 때마다 TCP 3-way-handshake를 계속해서 열기 때문에 RTT(Round Trip Time: 패킷 왕복 시간) 증가RTT 증가를 해결하기 위한 방법이미지 스플리팅: 이미지가 합쳐 있는 하나의 이미지를 다운로드 받고, background-image의 position을 이용하여 이미지를 표기코드 압축: 코드를 압축해서 개행 문자, 빈칸을..

CS 스터디 2024.10.12

[네트워크] - IP 주소

인터넷 계층에서 쓰이는 IP 주소에 대해 알아보겠습니다 ㄱㄱ ARP (Address Resolution Protocol)=> IP 주소로부터 MAC 주소를 구하는 프로토콜 IP 주소는 가상 주소. MAC 주소는 실제 주소.*RARP: MAC 주소를 IP 주소로 변환 장치 A가 ARP Request 브로드캐스트를 보내면 IP 주소가 120.70.80.3에 해당하는 MAC 주소를 찾는다.그러고 나서 해당 IP 주소인 장치 B가 ARP Reply 유니캐스트를 통해 MAC 주소를 반환해 준다.  - 브로드캐스트: 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식 - 유니캐스트: 고유 주소로 식별된 네트워크 목적지에 1:1로 데이터를 전송하는 방식 Hop By Hop IP 주소를 통해 ..

CS 스터디 2024.10.10

[네트워크] 네트워크의 기초 - 처리량, 지연시간, 네트워크 토폴로지

네트워크란? 노드와 링크가 서로 연결되어 있으며 리소스를 공유하는 집합 노드: 서버, 라우터, 스위치 등 네트워크 장치를 의미링크: 유선 또는 무선을 의미처리량과 지연시간좋은 네트워크란 많은 처리량을 처리하며, 지연 시간이 짧고, 장애 빈도가 적으며, 좋은 보안을 갖춘 네트워크처리량(throughput)링크 내에서 성공적으로 전달된 데이터의 양. 얼만큼의 트래픽을 처리했는지.많은 트래픽을 처리 == 많은 처리량을 가진다 단위는 bps(bits per second)처리량은 트래픽, 네트워크 장치 간의 대역폭, 네트워크 중간의 에러, 장치의 하드웨어 스펙에 영향을 받는다.대역폭: 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수트래픽특정 시점에 링크 내에 '흐르는' 데이터의 양ex. 서버에..

CS 스터디 2024.10.06

[Git] SSH를 통해 GitHub 연결하고 사용하기

항상 HTTPS를 통해 GitHub를 연결하고 사용했었는데, SSH를 이용하는 방법도 알게 되어 소개합니다.GitHub과 같은 원격 저장소에 접근할 때 사용하는 주요 두 가지 방식은 HTTPS와 SSH입니다 HTTPS는 사용자의 GitHub 아이디와 비밀번호를 사용하여 인증하고,SSH는 사용자의 컴퓨터에서 생성된 SSH 키 쌍 (공개 키와 비밀 키)을 사용하여 인증하는 방식입니다이 두 방식은 모두 데이터 전송 시 보안을 제공하지만, 인증 방식과 설정 과정에서 차이가 있습니다HTTPSHTTPS 방식은 Git 저장소에 접근하기 위해 HTTP를 보안(SSL/TLS) 계층으로 감싼 것입니다HTTPS를 사용할 때는 GitHub 계정의 사용자 이름과 비밀번호(또는 토큰)를 사용하여 인증합니다 장점:설치가 간단하고,..

Git 2024.05.08

자바스크립트 프레임워크 동작 원리 - 모듈 번들러(Webpack, Vite), 트랜스파일러/컴파일러(Babel, Polyfill), Typescript

자바스크립트 라이브러리를 종합해서 제공하는 프레임워크는 많은 수의 자바스크립트 파일을 가집니다한 자바스크립트 프레임워크 내에 워낙 다양한 기능을 제공하는 파일들이 많기 때문입니다 여기서 해결해야 하는 문제는,이 많은 모듈들의 순서는 어떻게 처리할 것인가?모듈이 많아질수록 늘어나는 HTTP 요청으로 인한 오버헤드는 어떻게 해결할 것인가?등이 있습니다 유저가 웹 브라우저에서 하나의 웹 페이지를 볼 때 마다  수많은 파일들의 전체를 다 다운 받는다면컴퓨터는 과부하가 오게 되는데, 이럴때 번들러를 사용하면 됩니다  번들러: Bundle - 묶다번들러는 다수의 JS 파일을 하나의 JS 파일로 압축해 줍니다번들러를 사용하면 웹 페이지를 보여줄 때 다수의 JS 라이브러리 파일들을 하나의 JS 파일로 압축해서 보여줄 ..

자바스크립트 2024.05.03

자바스크립트 런타임과 엔진 구성, 자바스크립트 엔진의 비동기 처리

자바스크립트 런타임 = 자바스크립트 엔진 + API 및 기타 라이브러리/바이너리자바스크립트는 웹 브라우저 뿐만이 아니라 다양한 환경에서 실행 될 수 있는데,이때 코드가 실행되는 환경을 런타임이라고 합니다 자바스크립트 런타임은 자바스크립트 엔진에 API 및 기타 라이브러리를 더한 것입니다자바스크립트로는 웹 브라우저, 웹 서버 둘 다 개발이 가능한데, 각각웹 브라우저(ex. Chrome) = 자바스크립트 엔진(V8) + Web APIs웹 서버(ex. Node.js) = 자바스크립트 엔진(V8) + Node APIs + LIBUV(비동기I/O)로 이루어져 있습니다자바스크립트 엔진의 종류V8(Chrome)SpiderMonkey(Mozilla Firefox)JavascriptCore(Apple Safari)Cha..

자바스크립트 2024.05.02

[Web] 웹 개발이란 무엇인가? 웹 개발의 변천사(Javascript, JQuery, React)

웹 개발을 배우는 이유웹 개발은 웹 브라우저와 웹 서버와 관련된 모든 것들을 개발하는 것을 통칭합니다웹은 핸드폰이나 노트북과 같은 머신에 국한되지 않고, 어디에서든지 적용이 가능합니다-> 웹브라우저는 어디든지 설치가 가능한 작은 가상의 머신(VM)이기 때문웹 개발이란?웹 개발이란 웹 페이지에 무엇인가를 보여주는 것입니다 Display things on a web page웹 페이지는 다음의 3가지 요소로 이루어져 있습니다웹 페이지의 구조를 다루는 HTML디자인을 다루는 CSS유저 인터랙션을 다루는 Javascript자바스크립트는 사용자의 입출력 데이터를 처리하고, 화면의 애니메이션을 그리는 등의 동적인 요소를 담당합니다프론트엔드는 이러한 웹 화면을 그리는 Rendering을 다룹니다..

Web 2024.04.24