본문 바로가기

전체 글

(21)
서버 createServer() 메서드를 사용해 서버 객체를 만들수 있다. const server = http.createServer((req, res) => { }); 서버를 실제로 구동하려면 listen() 메서드에게 ip와port를 알려주고 실행시켜야 한다. const ip = '127.0.0.1'; const port = 3000; server.listen(port, ip); res.writeHead() 는 응답 header를 클라이언트로 전송한다. 첫 번째 인자로 status code를, 마지막 인자로header의 내용을 담은 객체를 받는다. 이 메서드는 응답 당 한번, res.end()메서드가 호출되기 전에 호출되어야 한다. res.end()는 서버에게 response 헤더와 바디가 전송되었음을 알..
자바스크립트 localeCompare() 프로그래머스 문제를 풀다 재밌는 메소드가 있어서 가져오게 되었다. 그 메서드는 localeCompare()이다. 먼저 mdn의 설명을 가져오겠습니다. 이 메서드를 봤을 때 처음 든 생각은 왜? 이걸 쓰지? -1이나 1이나 0 처럼 수가 나오는데 이걸 언제 사용하는거지? 라는 생각이 들었다. 그러다 문득 sort라는 메서드와 조합해서 사용하면 굉장히 유용하고 간단하게 처리할수 있지 않을까?라는 결론이 나왔다 바로 적용시켜 보자. 엄청나게 간결하게 코딩을 할수 있었다. 물론 srot만 써도 똑같은 결과가 나오긴 하지만 만약, 우리가 ASCII를 고려해야 된다면 이만큼 쉽게 코딩할수 있는 방법은 없을것이다!(아마도...) 똑같은 결과를 얻기위해 sort도 코딩해봤는데 훨신 간단하다는 생각이 든다. 자주 사용할..
Object.create() 자바스크립트에서는 메서드라는 개념은 정확히 없다. 그러나 객체의 속성을 함수로 지정할수 있기 때문에 메서드 역할을 대처할수 있는 것이다. Object.create() 메서드는 지정된 프로토타입 객체 와 속성(property)을 가지는 새로운 객체를 반환한다. 왜? 사용하는가. 자바스크립트 내부에서 생성자로 객체를 생성하면서 연결이 깨지는 것을 원하지 않았기 때문에 만들어진 것이 Object.create 함수다. 즉 연결이 끊어지지 않게 하기 위해서 사용한다고 할수있다. 위 글만 봐서는 도저히 무슨소린지 이해가 가지 않는다. 더 깊숙히 천천히 알아보도록 하자. Object.create는 두가지 인자를 받는다 (prototypeObect,propertyOberct) 두번째(prototype) 옵션이라 없어도..
자바스크립트 프로토타입(js prototype) 자바스크립트는 프로토타입 기반 객체 지향 언어라고 표현한다. 그렇다면 대체 프로토타입이란 무엇을 말하는걸까? 먼저 자바스크립트에서 객체를 만드는 두가지 방법을 보자 var obj = {}; var object = new Object(); obj Literal 방법을 객체를 만들어 내는 단축어 이고 object는 생성자를 이용한 방법이다. 기본적으로 두 방법 모두 Object 생성자의 프로토 타입을 상속 받아 생성되었다. 사진에서 보면 obj.__proto__ 와 object.__proto__가 같은것을 볼수있다. Prototype 자바스크립트는 클래스라는 개념이 없다 참고로 최근의 ES6 표준에스는 Class문법이 추가되었다. 하지만 문법이 추가 되었다는 것이지, 자바스크립트가 클래스 기반으로 바뀌었다는..
자료구조의 시간복잡도 빅오(O(n))표기법은 실제 러닝타임을 데이터나 사용자의 증가율에 따라 알고리즘의 성능을 예측하는 것으로 알고리즘이 시간과 공간을 어마나 차지하는지를 수학적으로 표현한것이다. 왜 사용하는가? 해당 알고리즘이 얼마나 효율적으로 작동하는지를 쉽게 알아볼수 있다 배열이 주어졌을때 두수의 차를 구하는 시간 복잡도 O(n^2) n*n = n^2 n제곱의 연산을 구해야한다. 문제가 커지면 커질수록 매우 느려진다 10*10 = 100 2 5 6 ... 16 2 n/a 3 4 ... 15 5 3 n/a 1 ... 11 6 4 1 n/a ... 10 ... ... ... ... ... ... 16 14 11 10 ... n/a 가장 큰수와 가장 작은수 2 5 6 ... 16 is smallest Y N ... N ls ..
자료구조 그래프(graph)란? 그래프(graph)란? 그래프란 비선형(non-linear) 자료구조이며 노드(node)와 엣지(edge)로 구성되어 있으며 트리도 그래프의 한 형태이다. 트리와 그래프의 차이점은 트리는 root가 있고 사이클이 없는 방향 그래프 이다. 트리는 방향그래프라 방향이 있는데 무방향 그래프로 그려진 이유는 root로 부터 아래로만 방향을 갖기 때문에 그리지 않는다. 이러한 재약들이 그래프에는 없다. 그래프에는 방향이 있는 방향그래프(Directed graph)라고 하고 방향이 없는 그래프를 무방향그래프(Undirected graph) 라고 한다. 그래프의 표현 그래프를 인접행렬(Adjacency Matrix) 또는 인접리스트(Adjacency List)로 표현할수 있다. 인접행렬 인접행렬은 2차원 배열에다 표..
트리구조란? 트리구조란? 우리는 트리구조를 접한적이 있다. 바로 HTML이다. HTML은 우리가 아는 대표적인 트리구조이다. 부모노드가 있고 그 자식노드,부모자식 관계, 형제관계 등 이 트리구조라고 할수 있다. 트리는 반드시 하나의 시작점(RootNode)으로 부터 여러 자식노드가 자신의 자식노드가 연결된 구조, 즉 부모로부터 뻗어나온 여러 자식노드의 집합이라고 볼수있다. 나무를 연상케 하는 데이터 구조이다. 트리구조는 어디에 쓰이는가 트리구조에 저장하면 더 효율적인 자료들이 있다. 회사나 정부의 조직 구조를 예로 들수있다 최 상위 노드 Root부터 밑으로 하나 하나 뻗어나온걸 볼수있다. 일반적인 트리구조에는 자식 노드 수의 제한은 없다. Binary search Tree 보통 그냥Tree자료구조를 쓰는 경우는 많지..
해시 테이블 해시 테이블이란? 해시 테이블은 연관배열 추가에 사용되는 자료구조이다.데이터를 효율적으로 관리 및 유자하는데 사용된다.먼저 연관배열에 대해 알아보자. 일반적으로 숫자를 key로 값을 뽑을 수 있으면 연관배열이라고 한다. 배열의 키를 이용하여 키와 값으로 나누어 키 값의 모음을 사용하는 것, 이것을 연관배열이라고 한다. 해시 테이블의 장점 해시 테이블을 사용하면 속도를 빠르게 O(1) 로 처리할수 있다. 데이터를 횽ㄹ적으로 관리 및 유지할수 있다. 해시 테이블의 해시 함수란? 똑같은 데이터가 들어올때마다 똑같이 분류되야 하는 규칙성의 정의 이다. 해시 함수의 특징 array의 길이 내의 값만 반환시킬수 있어야 한다. 언제든지 값을 넣었을 때 같은 인덱스 값이 나와야한다. 해시함수는 어떠한 저장도 할수없고 ..