✏️ 2022-08-25 Today I Learn

@mitoconcrete · August 25, 2022 · 2 min read

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
@mitoconcrete
어제보다 조금 더 성장하기 위해 기록합니다.