개발 블로깅
-
[2019.04.06] this, setTimeout Check point정리개발 블로깅 2019. 4. 7. 14:06
# 11234567891011var name = "Window";var alice = { name:"Alice", sayHi:function(){ alert(this.name + "say hi"; }};var bob = {name : "Bob"};setTimeout(function(){ alice.sayHi();}, 1000);cs 9번째 줄에서 function() {} 으로 감싸주고 실행시키기 때문에 1초뒤에 실행됨. 1초 뒤에 alice의 속성인 sayHi 함수를 실행시키므로 this는 Alice.# 2123456789var name = "Window";var alice = { name: "Alice", sayHi: function() { alert(this.name + " says hi"); }};..
-
[2019.04.03] 자료구조- Graph의 개념개발 블로깅 2019. 4. 4. 09:39
단순히 노드와 그 노드를 연결하는 선들을 하나로 모아 놓은 구조이다. # 그래프 종류 무방향 그래프 : 방향이 없는 간선 사용, 양방향 이동가능 방향 그래프 : 방향 간선 사용, 한쪽으로만 이동가능 가중치 그래프 : 선에 가중치(우선순위? 순서?)가 할당된 그래프 # 그래프 표현방법 인접행렬 : 노드의 인접여부를 2차원 배열로 구분 노드의 개수만큼 행 열을 만든다. 각 행열에 맞게, 선이 존재하면 해당 행열 자리의 값은 1이 들어가고 없으면 0이 들어간다. 인접 리스트 : 각 정점에 인접한 정점을 연결 리스트로 표현 각 노드가 연결된 선을 링크드리스트로 연결한다. 연결된 노드들을 한번씩 접근하여 해당 노드의 가중치를 자신의 노드 리스트에 노드를 추가한다. # 그래프 탐색 깊이 우선 탐색(DFS) : 자기..
-
[2019.04.03] 자료구조-해시테이블개발 블로깅 2019. 4. 3. 23:54
해시함수란 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 이때 매핑 전 원래 데이터의 값을 키, 매핑 후 데이터의 값을 해시값, 매핑하는 과정 자체를 해싱 이라고 한다. 만약 두개의 키가 동일한 해시값을 가지게 되면, 해시충돌이 일어난다. # 해시 테이블의 장점 적은 리소스로 많은 데이터를 효율적으로 관리가 가능하다. 모든 데이터를 살피지 않고도 검색, 삽입, 삭제가 빠르게 수행가능하다. hash테이블게 key값을 넣으면 hash에 저장된 index값이 반환된다. bucket영역에서 index값에 매칭되는 value값을 찾아낸다. 이렇게 key값으로 인해서 value값을 가져올 수 있다. hashTable에서는 인덱스값을 고유하게 만드는 것이 중요하다. 데이터를 삽입 중에 특정 키가 ..
-
[2019.04.03]자료구조- B-tree개발 블로깅 2019. 4. 3. 21:15
B-tree는 일반적인 이진트리와 다르게 하나의 노드에 다수의 키를 가지고 있다. 자식을 두개만 가질 수 있는 이진트리를 확장하여 더 많은 수의 자식을 가질 수 있게 만든 방식이다. b-tree의 조건 모든 단말노드는 동일한 높이를 가진다. 각 내부노드의 자식노드는 M/2 이상 M 이하이다. 루트의 자식 수는 2 이상이다. B-tree 탐색 위 노드에서 40인 값을 찾을 시, 최상위 노드부터 탐색을 한다. 50보다 작으므로 왼쪽 노드로 이동한다. 왼쪽 노드로 가니 10, 25가 있다. 둘 중 큰 숫자인 25보다 크므로 오른쪽 자식 노드로 내려간다. 30,35,40,45값 중 40을 찾게 된다. B-tree 삽입 25라는 값을 추가하기 위해 트리를 탐색한다. 삽입을 할 위치를 찾아보니, 해당 노드에는 더이..
-
[2019.04.03] 자료구조-Tree개발 블로깅 2019. 4. 3. 19:26
# Tree 트리는 부모와 자식들 간의 관계를 가지는 노드들의 연결구조를 말한다. 위 그림 중 동그라미는 각 노드이고, 노드들간의 선은 관계선이다. 부모는 여러 자식을 가질 수 있고, 자식은 하나의 부모만을 가지는 계층 구조이다. 대표적으로 이진트리가 있다. 이진트리란, 부모노드가 두개 이하의 자식 노드만을 갖는 트리를 말한다. 전 이진 트리 : 위 그림과 같이 순서 상관없이 구조를 이루는 트리 완전 이진 트리 : 자식노드가 왼쪽부터 차례대로 노드가 채워진 구조를 이루는 트리 포화 이진 트리 : 마지막 레벨의 자식노드들이 하나도 자식 노드를 가지고 있지 않고, 그 외 노드들이 전부 두개의 자식노드를 가지고 있는 트리 트리의 순위 방법 전위순회 : root노드부터 시작하여, 왼쪽으로 노드를 계속 검색한다..
-
[2019.04.03] 자료구조-Stack, Queue, Linked List 개념개발 블로깅 2019. 4. 3. 15:21
자료구조는 크게 두 가지로 나뉜다. 선형구조 : 스택, 큐, 링크드 리스트 등 비선형 구조 : 트리, 그래프, 해시 테이블 # Stack 스택은 저장공간에 맨 처음 들어온 데이터가 맨 아래쪽에 놓이며, 그다음에 들어온 데이터가 차례대로 위로 쌓인다. 그리고 해당 저장공간에서 맨 위에 쌓여있는 데이터부터 하나씩 차례대로 꺼내 사용하게 된다. 현재 저장할 수 있는 곳을 가리키는 인덱스 변수인 top을 사용하여, 데이터가 들어오면 top이 가리키는 위치에 저장 후, top +1을 하여 다음 주소를 가리키게 한다. 맨 마지막에 들어온 데이터가 제일 처음으로 꺼내 사용 가능하기 때문에 Last in First out 방식이라 한다. 용도 : 함수를 호출하는 순서 저장, 인터럽트가 발생하여 복귀주소 저장, 컴파일러..
-
[2019.03.27] Rest파라미터 개념개발 블로깅/Modern script 2019. 3. 28. 01:04
ES6 문법에서 또 중요한 부분인 Rest파라미터, 이부분은 파라미터를 받아올 때에 대한 새로운 방식이다12345function sum(...arg){ return arg.reduce((acc, el) => {return acc + el});} sum(1, 2, 3) // 6Colored by Color Scriptercs 위 코드와 같이 파라미터를 받아올 때, 정해지지 않은 파라미터 개수를 배열 형식으로 자유롭게 가져올 수 있다. 마치 arguments와 같다.(사실 MDN문서에 Rest파라미터와 arguments의 차이점을 설명하고는 있지만..그냥 똑같이 생각해도 상관 없을 듯 하다..) 1234567function test(a, b, ...arg){ console.log(a); // 1 consol..
-
[2019.03.27] 전개 연산자 개념개발 블로깅/Modern script 2019. 3. 27. 11:50
배열을 조금 더 직관적으로 사용할 수 있는 방식인 전개 연산자라는 개념이 있다. # 전개연산자123456const add = (a, b, c) => { return a + b + c;} var arr = [1, 2, 3];console.log(add(...arr)); // 6cs위와 같이 배열 변수를 분해하지 않고 그냥 할당해버리는 방식이다. 1234var arr1 = [3, 4, 5];var arr2 = [1, 2, ...arr1, 6, 7]; console.log(arr2); // [1,2,3,4,5,6,7]cs이렇게 값을 순차적으로 하나씩 넣는 작업을 쉽게 할 수도 있다. 그냥 괄호 [] 껍데기를 벗겨서 넣어버린다는 개념으로 생각하면 이해가 쉽다. ... 키워드가 구조분해할당 방식에서도 쓰이므로 헷..