호이스팅은 변수를 끌어올리는 것. var로 선언된 모든 변수 선언을 hoist한다. hoist란 변수의 정의가 그 범위에 따라 선언과 할당으로 분리되는 것을 의미한다. 즉, 함수 내의 선언들을 모두 끌어올려서 해당 함수 유효 범위의 최상단에 선언하는 것 자바스크립트에서 변수의 선언은 끌어올려진다. 다음의 코드를 보자. function getX()...
javascript 이벤트루프
이벤트 루프 javascript를 공부하다보면 아래와 같은 말을 종종 듣는다. 싱글스레드 기반으로 동작하는 자바스크립트 이벤트 루프를 기반으로 하는 싱글스레드 Node.js 정말 싱글 스레드인가? 어떻게 싱글 스레드인가? 이벤트 루프는 무엇인가? 를 간단히 알아보기 위해 자바스크립트가 동작하는 환경과 엔진에 대해 알아보자. Ja...
알고리즘 개요
DP 복잡한 문제를 간단한 여러 하위문제로 나누어 푸는 방법 두가지 구현방식이 존재함 top-down 여러개의 하위문제로 나누고, 하위문제를 푼 다음, 그것들을 결합하여 최종적으로 최적해를 구한다. 이때 하위문제로 나눌때 같은 하위문제를 가지고 있는 경우가 있다. 이때의 최적해를 저장해서 사용하여 같은 하위문제...
singleton
Singleton 패턴 애플리케이션에서 인스턴스를 하나만 만들어 사용하기 위한 패턴이다. 커넥션 풀, 스레드 풀, 디바이스 설정 객체 등의 경우, 인스턴스를 여러 개 만들게하면 자원을 낭비하게 되거나 버그를 발생시킬 수 있으므로 오직 하나만 생성하고 그 인스턴스를 사용하도록 하는 것이 목적이다. 구현 하나의 인스턴스만을 유지하기 위해 인스턴...
데이터베이스 개요
데이터베이스 파일시스템의 문제점 앱과 상호 연동되어있기 때문에 다음과 같은 문제가 발생함. 데이터 종속성 데이터 중복성 데이터 무결성 데이터베이스 특징 데이터 독립성 물리적 독립성 : 데이터베이스를 수정하더라도, 응용 프로그램을 수정할 필요는 없음 ...
React) JS 다운로드 시간 동안의 로딩 화면
최근 프로젝트에서 리액트 앱을 배포하였는데, 인터넷 속도가 느린 환경에서 자바스크립트를 다운로드 받는 시간이 오래 걸린다는 걸 눈치챘다. 눈치챘다는 표현이 어울리는데 왜냐하면 사실 당연한 건데 이제까지 신경쓰지 않았던 부분이기 때문이다. 리액트앱은 매우 큰 자바스크립트 파일 하나로 이루어져있고, 이를 다운로드 받는 것은 당연히 오래 걸리는 일이기 때...
2631 줄세우기
알고리즘 LIS를 구하고, LIS를 구성하지 않는 요소들만 배치해주면 됨 LIS를 구하는 방법으론 n이 최대 200이니 O(n^2)을 써도 충분함 LIS 구하는 코드 O(n^2) 이전 요소들 중에 자기보다 작은 것 중, 가장 큰 LIS를 가진 요...
운영체제 개요
프로세스와 스레드의 차이 프로세스 실행중인 프로그램으로, 메모리에 적재되어 CPU의 할당을 받을 수 있는 것을 말함. OS로부터 주소공간, 파일, 메모리등을 할당받으며, 이것들을 총칭하여 프로세스라고한다. 할당받는 메모리 공간 프로세스 스택 : 함수의 매개변수, 복귀주소, 로컬 변수 같은 임시자료를 저장 데이터 섹션 : 전역변수들을 ...
1522 문자열 교환
알고리즘 문자열에서 a의 개수를 ac 라고 할때, 시작점을 문자열의 맨처음부터 맨 끝까지 이동하면서, 길이가 ac인 문자열을 안에 b가 몇개있는지 검사한다. 이때 검사한 b의 개수 중 최소가 필요한 최소의 교환횟수 쉽게 말해서, 길이가 ac인 문자열 안에 b를 최소로 포함한 문자열을 a로 채우는 문제로 치환한 것이다. 코드 #inc...
network 개요
HTTP의 GET과 POST 비교 GET 데이터가 HTTP Request Message의 헤더부분의 url에 담겨서 전송됨. url의 끝에 ? 뒤에 데이터를 붙여 요청. 데이터의 크기가 제한적임. 데이터가 url에 노출되므로 보안에 약함 POST 데이터가 HTTP Requst Message의 바디부분에 담김 데이터 크기가...