본문 바로가기

전체 글

(97)
브라우저 렌더링 원리 브라우저의 기본 구조 1. 사용자 인터페이스 사용자가 접근할 수 있는 영역 URI를 입력할 수 있는 주소 표시줄, 뒤로가기 버튼 등 페이지를 보여주는 창을 제외한 나머지 부분 2. 브라우저 엔진 사용자 인터페이스와 렌더링 엔진 사이의 동작 제어 3. 렌더링 엔진 렌더링 엔진에서 요청한 콘텐츠를 표시하는데 HTML를 요청하면 HTML과 CSS를 파싱하여 화면에 표시 4. 통신 HTTP 요청과 같은 네트워크 호출에 사용 플랫폼 독립적인 인터페이스이고 각 플랫폼 하부에서 실행 5. UI 백엔드 플랫폼에서 명시하지 않은 일반적인 인터페이스, OS 사용자 인터페이스 체계 사용 6. 자바스크립트 파서 자바스크립트 코드를 해석하고 실행 7. 자료 저장소 cookie, local storage 등 local에 data..
[자료구조] 5.1 복잡도 복잡도는 시간 복잡도와 공간 복잡도로 나뉜다. 5.1.1 시간 복잡도 빅오 표기법 시간 복잡도란 문제를 해결하는 데 걸리는 시간과 입력의 함수 관계를 가르킨다. 알고리즘의 로직이 얼마나 오랜 시간이 걸리는지를 나타내는 데 쓰임 시간 복잡도 존재 이유 효율적인 코드 개선을 위한 척도 시간 복잡도의 속도 비교 5.1.2 공간 복잡도 공간 복잡도는 프로그램을 실행시켰을 때 필요로 하는 자원 공간의 양을 말한다. 정적 변수로 선언된 것 말고도 동적으로 재귀적인 함수로 인해 공간을 계속해서 필요로 할 경우도 포함된다. int a[1004]; 1004 *4바이트의 크기를 가짐 5.1.3 자료 구조에서의 시간 복잡도 자료 구조를 쓸 때는 이러한 시간 복잡도를 잘 생각해야한다.
4.7 조인의 원리 조인의 원리인 중첩 루프 조인, 정렬 병합 조인, 해시 조인에 대해 알아보자 앞의 글에서 조인의 종류는 이 원리를 기반으로 조인을 하는 것이다. 4.7.1 중첩 루프 조인 중첩 루프 조인은 중첩 for 문과 같은 원리로 조건에 맞는 조인을 하는 방법이며, 랜덤 접근에 대한 비용이 많이 증가하므로 대용량의 테이블에서는 사용하지 않는다. 예를 들어 "t1, t2 테이블을 조인한다" 라고 하면, 첫 번째 테이블에서 행을 한 번에 하나씩 읽고 그다음 테이블에서도 행을 하나씩 읽어 조건에 맞는 레코드를 찾아 결괏값을 반환 4.7.2 정렬 병합 조인 각각의 테이블을 조인할 필드 기준으로 정렬하고 정렬이 끝난 이후에 조인 작업을 수행하는 조인 조인할 때 쓸 적절한 인덱스가 없고 대용량의 테이블들을 조인하고 조인 조건..
4.6 조인의 종류 조인이란 하나의 테이블이 아닌 두 개 이상의 테이블로 묶어서 하나의 결과물을 만드는 것을 말한다. MySQL에서는 JOIN이라는 쿼리로, MongoDB에서는 lookup이라는 쿼리로 이를 처리할 수 있다. 참고로 MongoDB를 사용할 때 lookup은 되도록 사용하지 말아야한다. (MongoDB는 조인 연산에 대해 관계형 데이터베이스보다 성능이 떨어짐) 조인의 종류 INNER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN CROSS JOIN SELF JOIN INNER JOIN 가장 많이 사용하는 조인 두 테이블 간에 교집합을 나타낸다. SELECT table1.col1, table2.col1 FROM table1 JOIN table2 ON table1..
[백준 node.js] 15649번 N과 M(1) (JavaScript) https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net const input = require("fs") .readFileSync("/dev/stdin") .toString() .trim() .split(" ") .map((v) => parseInt(v)); [n, m] = input; const visit = new Array(n).fill(0); const dfs = (result) => { if (result.length === m) { con..
4.5 인덱스 4.5.1 인덱스의 필요성 인덱스는 데이터를 빠르게 찾을 수 있는 하나의 장치 4.5.2 B-트리 인덱스는 보통 B-트리라는 자료 구조로 이루어져 있다. 이는 루트 노드, 리프 노드, 그리고 루트 노드와 리프 노드 사이에 있는 브랜치 노드로 나뉜다. B-트리 설명된 게시글 인덱스가 효율적인 이유와 대수 확장성 인덱스가 효율적인 이유는 효율적인 단계를 거쳐 모든 요소에 접근할 수 있는 균형 잡힌 트리 구조와 트리 깊이의 대수 확장성 때문 대수확장성이란 트리 깊이가 리프 노드 수에 비해 매우 느리게 성장하는 것을 의미 인덱스가 한 깊이씩 증가할 때마다 최대 인덱스 항목의 수는 4배씩 증가 4.5.3 인덱스 만드는 방법 인덱스를 만드는 방법은 데이터베이스마다 다르며 MySQL과 MongoDB를 기준으로 설명한..
4.4 데이터베이스의 종류 4.4.1 관계형 데이터 베이스 관계형 데이터베이스(RDBMS)는 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스를 가르키며 SQL이라는 언어를 써서 조작한다. MySQL, PostgreSQL, 오라클, SQL server, MSSQL 등이 있다. RDBMS의 경우 표준 SQL은 지키기는 하지만 각각의 제품에 특화시킨 SQL을 사용한다. 오라클의 경우 PL/SQL, SQL server는 T-SQL, MySQL은 SQL을 쓴다. MySQL 대부분의 운영체제와 호환되며 가장 많이 사용하는 데이터베이스 C, C++로 만들어졌으며 myISAM 인덱스 압축기술, B-트리 기반의 인덱스, 스레드 기반의 메모리 할당 시스템, 매우 빠른 조인, 최대 64개의 인덱스 제공 대용량 데이터베이스를 위해 설계..
OAuth2 사용을 위해 구글에 서비스 등록하기 Google API 및 서비스 Google 클라우드 플랫폼 로그인 Google 클라우드 플랫폼으로 이동 accounts.google.com 1. 새 프로젝트 만들기 google cloud 옆에 클릭 후 새 프로젝트 프로젝트 이름 적은 후 만들기 API 및 서비스 OAuth 동의 화면 선택 후 만들기 범위는 앱에서 원하는 정보 추가 테스트 사용자는 테스트할 사용자입니다. (자기 자신 넣어서 테스트하면 자신만 로그인 가능합니다) OAuth 동의화면은 나중에 수정이 가능해요. 저장이 다 끝났으면 사용자 인증정보로 들어갑니다. 사용자 인증 정보 만들기 -> OAuth 클라이언트 ID 클릭 유형 선택 후 자바스크립트 원본과 리디렉션할 URI 추가하고 만들기 하면 됩니다. 끝