분류 전체보기
-
[JavaScript] async와 await란?Server/NodeJS 2020. 6. 25. 14:22
async와 await는 자바스크립트의 비동기 처리 패턴 중 최근에 나온 문법이다. 자바스크립트는 싱글스레드 기반 언어이기 때문에 비동기 처리가 필수적이다. 비동기 처리는 결과를 예측할 수 없기 때문에 동기식의 처리가 필요하다. 대표적으로 앞에 글에서 작성했던 것처럼 promise, callback이 있다. async와 await는 기존 동기식 처리의 단점을 보완하고 가독성을 높혀주는 코드를 작성할 수 있다. 먼저 다시 한번 자바스크립트의 비동기처리에 대해서 얘기하고 가려 한다. let first = 10; let second = 20; let result = 0; function add(x, y) { return x + y; } setTimeout(() => { result = add(first, se..
-
[JavaScript] Promise란 무엇인가?Server/NodeJS 2020. 6. 25. 01:17
저번 글에서 비동기 처리와 콜백함수에 대하여 간단히라도 공부하였다. 비동기 처리란 "특정 코드의 실행이 완료될 때 까지 기다리지 않고 다음 코드를 먼저 수행하는 자바스크립트의 특성"이다. function task1() { setTimeout( () => { console.log("task1"); }, 0); } function task2() { console.log("task2"); } function task3() { console.log("task3"); } task1(); task2(); task3(); 저번 글에서 setTimeout() 함수가 비동기 처리의 대표적인 예시라고 하였다. 위의 코드를 비동기의 개념을 모르고 출력결과를 예측해보라 한다면 아마도 task1 - task2 - task3 함..
-
최장 공통 부분 수열(LCS : Longest Common Subsequence)란?Computer Science/Algorithm 2020. 6. 21. 02:49
최장 공통 부분순서란? LCS란 Longest Common Subsequence의 약자로 최장 공통 부분 문자열이다. Subsequence는 부분 수열이라는 뜻으로 연속적이지 않아도 되는 부분 문자열이다. 한마디로 두 문자열을 비교할 때 공통적으로 나타나는 부분 순서들 중 가장 긴 것이다. 예를들어 "ABCBDAB"와 "BDCABA"의 LCS를 구하면 "BCBA"가 나오게 된다. 그리고 LCS는 최적화를 해야 하는 문제이기 때문에 동적계획법(DP)를 사용하여야 가장 효율적으로 구할 수 있다. 그러면 간단하게 LCS를 구하는 예시를 보면서 어떤 느낌인지 생각해보자. 문자열 "CAT"와 "CRAB"의 LCS를 구하여 보자. 위의 c[i][j]의 배열의 의미는 예를들어 c[1][2]라면 "CAT"에서는 C까지..
-
레드블랙트리(Red-Black-Tree)란?Computer Science/Data_Structure 2020. 6. 20. 02:45
https://devlog-wjdrbs96.tistory.com/42?category=824010 이진 탐색 트리(binary search tree) 란? 이진 탐색 트리(binary search tree)는 이진 트리 기반의 탐색을 위한 자료 구조이다. 탐색은 내가 생각하기에도 코딩테스트와 같은 곳에서도 자주 출제가 되며 또한 컴퓨터 프로그램에서도 많이 �� devlog-wjdrbs96.tistory.com 기본적으로 레드블랙트리를 알기 위해서는 이진탐색트리가 무엇인지 알고 있어야 한다. 따라서 잘 모른다면 위의 글을 먼저 읽어보는 것을 추천하고, 안다는 가정하에 글을 써보려 한다. 이진 탐색 트리의 분석 위와 같은 이진탐색트리 연산은 트리의 높이가 log2n이기 때문에 평균적인 경우의 시간복잡도는 O..
-
마크다운(MarkDown) 사용법 총정리Github/Github 2020. 6. 17. 23:13
마크다운 이라는 용어는 한번쯤 들어봤을 것이다. 파일 확장자는 .md로 된 파일이다. Github를 이용하면서 README.md 를 많이 봤을 것이다. 이 파일이 마크다운으로 작성된 파일이다. 마크다운은 마크업언어로 간단한 사용법을 통해서 빠르고 읽고 쓰기 편한 문서를 만들 수 있다. 이제 마크다운 사용법을 알아보자. 1. 제목(Header) html과 같이 부터 까지 글씨 크기를 조정해서 사용할 수 있다. 2. 글자 강조(Emphasis) 2-1) Bold 굵은 글자를 사용하고 싶다면, 강조할 단어를 **로 감싸면 된다. 2-2) Italic 옆으로 기운 이탤릭체를 사용하고 싶다면, 강조할 단어를 *로 감싸면 된다. 위의 둘다 * 사이에 공백이 존재하면 안된다는 점을 유의하자! 2-3) 인용구 인용구를..
-
[Java] JSP(Java Server Page)란 무엇인가?DBProgramming/JSP 2020. 5. 26. 14:49
1. JSP(Java Server Page)란? JSP는 Java Server Pages 의 약자이며 HTML 코드에 JAVA 코드를 넣어 동적 웹페이지를 생성하는 웹어플리케이션 도구이다. JSP가 실행되면 자바 서블릿(Servlet)으로 변환되며 웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행하고 그렇게 생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다. JSP 동작 과정 브라우저가 웹 서버에게 JSP에 대한 요청 정보를 전달한다. 브라우저가 요청한 JSP가 최초로 요청했을 경우만 JSP로 작성된 코드가 서블릿 코드로 변환됨(java파일 생성) 서블릿 코드를 컴파일해서 실행가능한 bytecode로 변환한다(class파일 생성) 서블릿이 실행되어 요청을 처리하고 응답 정보를 생성한다. 실제로 ..
-
[JavaScript] 기초 KAKAO Open API 활용하기Language/JavaScript 2020. 4. 11. 13:26
간단한 카카오 책 검색 기능을 구현하는 예제를 해보려 한다. 간단하게 Front-End와 Back-End가 무엇인지는 안다고 가정하고 설명하려 한다. 처음에 Front-End에서 API 서버 주소로 원하는 정보를 요청(Request)하면 서버에서는 DB에 데이터를 담아 다시 Front-End에다 응답(Response)을 해준다. 하지만 요청과 응답을 하기 위해서는 정해진 형식이 필요하다. 그것을 API 가이드 라고 한다. 위와 같이 Request에서는 주소에는 API의 서버 주소를 적어야 하고, 나머지도 상황에 맞게 적어서 요청하면 된다. 응답에는 형식이 JSON이라는 형태로 전달이 된다. (JSON = JavaScript Object Notation의 약자이다) 1 2 3 4 5 6 7 8 9 { "이..
-
[Java] throws와 throw의 차이는?Language/Java 2020. 4. 10. 14:03
throw와 throws의 차이점 throw : 에러를 고의로 발생시킬 때 사용합니다. throws : 자신을 호출한 상위 메소드로 에러를 던지는 역할을 합니다. throw란? 예제 코드를 먼저 보겠습니다. public class File { public File(String pathname) { if (pathname == null) { throw new NullPointerException(); } this.path = fs.normalize(pathname); this.prefixLength = fs.prefixLength(this.path); } } File 클래스의 생성자를 보면 위와 같이 경로가 null 일 때 throw를 통해서 강제로 에러를 발생하는 것을 볼 수 있습니다. 위와 같이 thr..