목록2025/02 (24)
개발자공부일기

[알고리즘] 시간 복잡도와 Big O 표기법 Big O 표기법 알고리즘의 효율에서 가장 중요한 부분은 ‘n이 커질 때 알고리즘의 단계가 얼마만큼 증가하는가’이고, 이것을 잘 나타내는 빅 O 표기법을 사용합니다. 빅 O 표기법은 점근 표기법(Asymptotic Notation) 중 하나인데, 점근 표기법이란 ‘점근(漸近): 차츰 점, 가까울 근’이라는 이름에서 알 수 있듯이 알고리즘의 수행 시간을 대략적으로 나타내는 방법을 말합니다. 여기서 말한 ‘대략적으로’는 ‘정확하게’의 반대말이 아니라 ‘자세하게’의 반대말입니다. 소규모 데이터를 다루는 경우 우수한 성능의 알고리즘과 그렇지 않은 알고리즘 사이에 차이가 거의 없습니다. 퀵 정렬이 훨씬 우수한 성능을 갖고 있지만, 오히려 소규모 데이터를 정렬할 때에는 ..
얕은 복사는 객체의 참조값(주소 값)을 복사하고, 깊은 복사는 객체의 실제 값을 복사합니다. 우리는 먼저 원시값과 참조값을 알아야 한다.원시값(Primitive Type): String, Number, Boolean, Null, Undefined, Symbol참조값(Reference Type): Array, Object, Function원시 값(Primitive Type)원시 값은 단순한 데이터이며, 모든 원시 값은 변경이 불가능하다. 원시 값을 변수에 할당하면 변수에 실제 값이 저장된다. 우리가let a=10;이라고 a에 할당을 하면 메모리주소 1000에 10을 할당하고 주소를 저장한다.그리고a= 20;이라고 재할당을 하면 1000주소에 10이 20으로 바뀌는게 아닌 1100주소에 20을 새로 할당하..
Express란?Express는 웹 및 모바일 애플리케이션을 위한 일련의 강력한 기능을 제공하는 간결하고 유연한 Node.js 웹 애플리케이션 프레임워크이다. 사실상 Nodejs의 표준 웹서버 프레임워크로 불려질 만큼 많은 곳에서 사용하고 있다. 그렇다면 Node.js와 Express는 무슨 관계인가? Node.js는 Chrome의 V8엔진을 이용하여 javascript로 브라우저가 아니라 서버를 구축하고, 서버에서 JavaScript가 작동되도록 해주는 런타임 환경(플랫폼)이라고 했다. Express는 이런 Nodejs의 원칙과 방법을 이용하여 웹애플리케이션을 만들기 위한 프레임워크이다. 프레임워크란?이처럼 목적에 필요한 것을 고민할 필요 없이 이용할 수 있도록 일괄로 가져다 쓰도록 만들어 놓은 '구조..
사용법기존에 우리는 Function을 만들때//1function something(){ //로직}//2const something = function(){ //로직}이렇게 만들고 somthing();으로 함수를 호출합니다. 화살표 함수를 사용하면const something = ()=> { //로직}이렇게 간단히 만들 수 있습니다. 그래서 이 친구를 왜 쓰냐 const multiply2 = (x)=> {return x*2}지금은 짧아서 체감이 잘 안 될 수 있지만 보기가 더 좋습니다. 그리고 파라미터가 하나일때 소괄호 생략도 가능합니다.const multiply2 = x => {return x*2} 중괄호 안에도 return 문 하나밖에 없다면 중괄호까지도 생략이 가능합니다.const multiply2 =..
async/await를 쓰는 이유자바스크립트에는 비동기 처리 방식이 3가지가 있는데 콜백 함수와 이를 개선한 Promise객체 그리고 async/await가 있다.콜백 함수를 사용하면 Callback Hell에 빠지기 쉽고 이를 개선한 Promise도 무분별한 then의 사용으로 Promise Hell에 빠지는 상황이 생긴다. Callback Hell step1(function (value1) { step2(function (value2) { step3(function (value3) { step4(function (value4) { step5(function (value5) { step6(functio..

Promise 객체는 비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타냅니다.설명Promise 는 프로미스가 생성된 시점에는 알려지지 않았을 수도 있는 값을 위한 대리자로, 비동기 연산이 종료된 이후에 결과 값과 실패 사유를 처리하기 위한 처리기를 연결할 수 있습니다. 프로미스를 사용하면 비동기 메서드에서 마치 동기 메서드처럼 값을 반환할 수 있습니다. 다만 최종 결과를 반환하는 것이 아니고, 미래의 어떤 시점에 결과를 제공하겠다는 '프로미스(promise)'를 반환합니다. Promise는 다음 중 하나의 상태를 가집니다.대기(pending): 이행하지도, 거부하지도 않은 초기 상태.이행(fulfilled): 연산이 성공적으로 완료됨.거부(rejected): 연산이 실패함.대기 중인 프로..
VarES6의 등장 이전에는 문제점들이 있음에도 불구하고 var로 변수를 선언하는 것이 지배적이었는데요. 따라서 새로운 변수 선언 방식이 등장할 수밖에 없었습니다. 우선, 문제점에 대해 논의하기 전에 var 자체에 대해 더 이해해봅시다.Scope of var범위는 기본적으로 변수를 사용할 수 있는 위치를 의미합니다. var 선언은 전역 범위 혹은 함수 범위로 지정됩니다.var변수가 함수 외부에서 선언될 때의 범위는 전역입니다. 즉, 함수 블록 외부에서 var를 사용하여 선언된 모든 변수를 전체 윈도우 상에서 사용할 수 있는 것이죠.var가 함수 내에서 선언될 때는 함수 범위로 지정됩니다. 즉, 해당 함수 내에서만 사용하고 접근할 수 있습니다.자세한 이해를 돕기위해 아래의 예제를 살펴봅시다. var ..

비트(bit)란 컴퓨터가 데이터를 처리하기 위해 사용하는 데이터의 최소 단위이다.바이트(byte)는 한 문자를 표한할 수 있는 최소 단위로 8비트로 구성되어있다. (1Byte = 1Bit) 컴퓨터는 데이터를 바이트 단위로 저장하고연속되는 바이트를 저장하는 순서가 바로 바이트 배열 순서(Byte Order)이다. 데이터는 낮은 주소에서 높은 주소 차례로 저장되지만이 데이터가 저장되는 순서에 따라 빅 엔디안과 리틀 엔디안이 나뉜다.빅 엔디안 Big-Endian 여러 개의 연속된 데이터를 1차원의 기억장치 최상위 공간(MSB)부터 차례로 배열하는 기법 으로 평소 사람이 숫자를 사용하는 방식과 같은 방식이다. 큰 자리 수부터 저장하기 때문에 숫자 비교에 유리하고 저장된 순서 그래도 읽을 수 있어 이해가 용이하다..