전체 글 140

SQL Query 문법 (DDL, DML)

SQL문법에는 데이터정의어, 데이터조작어, 데이터제어어, 트랜젝션 제어어가 있으며 오늘은 데이터 정의어와 데이터 조작어에 대해 알아보고 w3schools의 데모 DB를 이용하여 사용해보았다. (데모DB:https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all) 데이터 정의어(Data Define Language) 데이터 정의어란 CREATE, ALTER, DROP, RENAME등을 이용하여 데이터 구조를 정의하는데 사용되는 명령어 들이다. CREATE, DROP CREATE TABLE EmployeesTest ( EmployeeID uuid, // 유니크 id 타입 LastName VARCHAR(10), // 가변문자 타입으로 최대 10by..

DB 2022.12.14

재귀 함수 3부 (실제 코딩 테스트)

(코딩테스트 출처: https://school.programmers.co.kr/learn/courses/30/lessons/60058?language=javascript) 처음 문제를 봤을때 문제를 이해하기부터 조차 힘들었다. 문제를 요약하자면 괄호열기 '(' 와 괄호닫기 ')'의 쌍이 맞는 괄호들을 입력받으면 일정한 조건들에 충족하는 괄호로 재정립하는 문제이다. 그 조건들이란 입력된 괄호들의 첫번째 문자열부터 추적하여 괄호의 쌍이 맞아 떨어지는 지점을 찾을것 쌍이 맞아떨어지면 그 부분만 잘라내어 문자열을 체크후, 괄호닫힘으로 시작을 한다면 괄호열림으로 시작하도록 문자열 반전을 주어 재배치할것 위의 과정들을 실행후 남은 부분들이 발생할경우 나머지 부분을 이용하여 위의 과정을 반복할것, 남은 부분이 없을수..

Javascript 2022.12.13

재귀함수 2부 (재귀, 꼬리재귀, 반복문 비교)

1부터 n까지의 합 반복문 const iterator = (n) => { let result = 0; for (let i = 1; i { if (n === 0) { return 0; } return n + recursion(n - 1); }; 먼저 조건문으로 base case를 만들어준후 recursive case로 현재 받은 값과 재귀를 통해 받을값을 계속해서 더해준다. 꼬리재귀 const tailRecursion = (n, a = 0) => { if (n === 0) { return a; } return tailRecursion(n - 1, n + a); }; base case는 재귀와 같다. recursive case로 자신의 함수를 부른후 첫번째인자는 반복수와 input값이 되고 두번째인자가 반복..

Javascript 2022.12.12

재귀함수 1부 (재귀함수의 의미)

재귀함수란? mdn에서의 정의는 함수가 자기 자신을 호출하는 행위 이며 더 작은 부분 문제들을 해결하기 위해 사용된다... 란다. 간단히 말해서 어떠한 문제를 해결하기 위해 자기 자신을 호출하는 함수이다. (출처:https://developer.mozilla.org/en-US/docs/Glossary/Recursion) 자기 자신을 반복적으로 호출하는 것이기 때문에 반복문으로도 작성이 가능하다. 고롬 한번 간단하게 작성해보자! 재귀함수를 이용한 factorial 함수 const factorial = (n) => { if (!n) return 1;//base case return n * factorial(n - 1);//recursive case }; factorial(4); 위처럼 재귀함수를 이용하여 f..

Javascript 2022.12.08

자바스크립트와 싱글스레드 그리고 비동기 처리 원리 2부

자자자!! 좀만 더 집중합시다!! 지난 시간 자바스크립트 V8 엔진의 메모리 구조와 데이터 처리방식에 이어서 이번 포스트의 핵심인 Event loop에 대해 알아보겠습니다. (지난 포스트: https://mason-lee.tistory.com/6) Web API 동작 원리 먼저 코드를 실행시키면 크롬의 V8 엔진은 코드의 함수들이 호출될때 Stack에 올리게 됩니다. 하지만 이전 포스트 그리고 위의 그림을 보시면 setTimeout과 같은 WebAPI는 V8 엔진에 존재하지 않습니다. 이러한 WebAPI가 Stack에 올라오게되면 V8은 자바스크립트의 실행환경인 브라우저(여기에서는 크롬)로 WebAPI들을 넘겨준후 다음 함수들을 Stack에 쌓게되고 다음 함수들을 처리합니다. V8이 다른 함수들을 처리하..

Javascript 2022.12.07

자바스크립트와 싱글스레드 그리고 비동기 처리 원리 1부

전포스트에서 동기 비동기에대해 알아보던중 스레드에 관심이 생겨 더 깊게 공부해보기로 했다. 일단 스레드란 무엇인지 알아보자! 스레드란? 사전적으로는 가닥,줄 등을 의미하며 컴퓨터 사이언스에서의 스레드는 프로세스 내에서 시행되는 여러 흐름의 단위 이다. 즉 싱글스레드란 프로세스 내에서 하나의 스레드만으로 직렬적으로 데이터를 처리하며 멀티스레드는 여러개의 스레드를 이용하여 병렬적으로 처리하는것을 뜻한다. 프로세스란? 하나의 프로그램이 실행되고 있는 상태이며 각각 독립된 메모리영역을 할당 받는다. 위의 그림의 경우 운영체제의 런타임을 형상화 한것으로 하나의 프로세스에 heap, static, code, stack과 같은 메모리들을 할당받고 스레드는 그 메모리를 공유하여 사용한다. (사진 출처: https://..

Javascript 2022.12.06

비동기 프로그래밍 (feat. callback, Promise, async/await) 2부

1부에 이어서 비동기프로그래밍의 비교를 포스팅하겠습니다. (1부: https://mason-lee.tistory.com/4) callback const first = (input, callback) => { callback(input); }; const second = (input, callback) => { callback(input + "callback의 "); }; const third = (input, callback) => { callback(input + "예제입니다."); }; first("안녕하세요, ", (firstCallback) => { second(firstCallback, (secondCallback) => { third(secondCallback, (thirdCallback) =..

Javascript 2022.12.01

비동기 프로그래밍 (feat. callback, Promise, async/await) 1부

이번 포스트에서는 비동기 프로그래밍의 정의, 목적에 대해 중점을 두고 이야기 해보고 다음포스트에서는 callback, Promise, async/await의 비교 예제를 중점으로 다루겠습니다. 비동기가 있다면 동기도 있겟지?? 자바스크립트는 싱글스레드를 사용하므로써 프로그램을 위에서 아래 순으로 한줄씩 실행이 된다. 즉, 이전줄의 코드가 완료되기 전까지는 완료되기 전까지는 다음줄의 코드가 실행되지 않는다. 장점으로는 에러 발생시 프로그램은 즉각 작동 중지되며 다음줄의 코드가 실행되지 않으며 에러 발생지를 바로 알수가 있다. (*싱글스레드: 단일 프로세스로 하나의 작업을 위해 순차적으로 처리 진행 [다음 혹은 다다음 포스트 예정]) 비동기 프로그래밍은 다른 데이터들과 상호작용 하지않고 간단한 코드들로만 구..

Javascript 2022.11.30

반복문 forEach()와 map() (feat. Promise를 이용한 병렬처리구조)

지난 포스트(https://mason-lee.tistory.com/2)의 for와 forEach()에 이어서 forEach()와 map()의 차이 그리고 비동기를 이용하여 병렬처리구조를 알아보겠습니다. forEach()와 map()의 차이점 forEach() map() callback 유무 O O return 허용 X O 속도 비교적 높음 비교적 낮음 둘의 차이점중 제일 크게 눈에 띄는것은 map()의 경우 return값을 반환한다는 것이다. map()사용시 새로운 array로 원하는 값들을 반환할 수 있고 그로인한 메모리할당, 속도저하(forEach와 비교시)로 이어진다. 그래서 맵은 언제써??? 사실 map()과 forEach()보단 map()과 filter()의 비교가 더 필요해 보인다. forEa..

Javascript 2022.11.28

반복문 for와 forEach (feat. 반복문의 비동기처리)

알고리즘을 배우기 시작하면서 반복문중 for와 forEach의 속도차이를 찾아보다 문득 둘의 차이점이 궁금해젔다. for와 forEach의 차이점 const arr = [1, 2, 3, 4, 5] for (let i = 0; i { console.log(i) }) 위의 두 결과값은 같다, 그렇다면 둘의 차이점은??? 찾아보니 for문은 동기식, forEach는 비동기식 처리를 하며 for문을 돌리는중 에러발생시 즉각 코드를 중단한다... 란다. (출처:https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=rlaalsdn456456..

Javascript 2022.11.28