1. [Javascript] 구조분해할당을 통해 Swap을 구현 할 수 있다.
ES6 문법이므로 이하 지원브라우저에서는 사용할 수 없음.
let [a, b] = 1, 2
console.log(a) // 1
console.log(b) // 2
[b, a] = [a, b]
console.log(a) // 2
console.log(b) // 1
2. [Javascript] shift() 를 이용한 큐 구현은 효율적이지 못하다.
shift를 이용하게 되면, 빈 첫번째 메모리를 메우는 동작을 하기 때문에 n의 속도가 보장된다. 따라서, 1의 속도를 보장해야하는 큐에서 적절하지 못하다. 아래와 같이 delete 를 이용하여 사용하면된다.
class Node {
constructor(location, priority) {
this.location = location
this.priority = priority
}
}
class Queue {
constructor() {
this.queue = []
this.head = 0
this.rear = 0
}
enqueue(location, priority) {
// 추가 시 길이를 1늘려준다.
this.queue[this.rear++] = new Node(location, priority)
}
dequeue() {
// 삭제시 앞에 빈칸을 하나 추가하고, head의 인덱스를 1증가시킨다.
const value = this.queue[this.head]
delete this.queue[this.head++] // delete를 이용했기 때문에, 1의 속도를 보장한다.
return value
}
}
3. [HTTP] 상태코드의 종류
1xx : 요청이 수신되어 처리중 (거의사용하지않음) 2xx : 정상처리 3xx : 요청을 완료하기 위해 추가적인 행동이 필요 4xx : 클라이언트 오류 5xx : 서버 오류
4. [HTTP] 상태코드 추론
클라이언트가 인식할 수 없는 상태코드를 서버가 반환하면 클라이언트는 상위 상태코드로 해석해서 처리한다.
따라서, 미래에 새로운 상태코드가 추가되어도 클라이언트를 변경하지 않아도 된다.
388 -> 3xx
499 -> 4xx