남 희 2023. 2. 2. 02:14

오늘 한 일 [DONE]

  • 네트워크 기초, 파트를 복습. 질문에 답하면서 복습하니, 내가 직접 답한 부분은 확실히 기억에 잘 남는다.
  • 프록시 패턴과 프록시 서버 공부
  • 순열 개념 공부 및 실제 문제 풀이

 


📝오늘 배운 내용 간단 요약

1️⃣ 네트워크 기초 복습

  • 네트워크(Network) : 노드(Node), 링크(Link)가 통신 기술로 연결되어 리소스를 공유하는 집합.
  • 처리량 (Throughput) : 실제 데이터 중 전송에 성공한 양, 단위는 bps(bits per seconds)
  • 트래픽 (Traffic) : 특정 시점에 링크 내에 흐르는 데이터의 양
  • 대역폭 (Banthwidth) : 주어진 시간동안 흐를 수 있는 최대 Bit
  • 지연시간 (Latency) : 데이터를 주고 받기 위해 왕복하는 데에 걸리는 시간
  • 토폴로지 (Topology) : 노드와 링크가 연결되어 있는 모양, 형태

2️⃣ 프록시 패턴과 프록시 서버

  • 프록시 패턴 : 특정 객체로의 접근을 제어하는 대리인을 제공하는 디자인 패턴.
    • 원격 프록시(Remote Proxy) : 원격 객체와의 접근을 제어하는 대리인 객체
    • 가상 프록시(Virtual Proxy) : 메모리가 큰 이유 등으로 생성하기 힘든 객체 접근을 제어하는 대리인 객체
    • 보호 프록시(Protection Proxy) : 보안이 중요한 객체 접근을 제어하는 대리인 객체 
  • 프록시 서버 : nginx를 예로 들 수 있으며, 주로 Node.js의 프록시 서버로 사용된다. 보안 강화에 도움이 된다는 장점이 있다.

3️⃣ 순열 (Permutation)

순열은 주어진 숫자를 순서를 고려해서 나열했을 때 경우의 수를 말하며, n개 중 r개를 뽑아 순서를 세울 때 경우의 수를 다음과 같이 나타낼 수 있다.

nPr = n * (n-1) * … * (n-r+1)

특히, 그 중에서 nPn = n!을 Factorial이라고 말한다.

n! = n * (n-1) * … * 2 * 1

 

순열 구현 방법 중 가장 많이 쓰는 방법은 함수 재귀를 활용하는 것.

nPr에 대해 다음과 같이 의사 코드를 작성할 수 있다.

visited[n]
a[n] // 고를 숫자를 저장한 배열
p[r] // 순열 결과를 저장하는 배열

perm(k) {
  if (k == r) 순열 하나완성! 끝!
  else
     for i in 0 ~ n-1
         if (visited[i]) continue
         p[k] = a[i]
         visited[i] = true
         perm (k + 1)
         visited[i] = false
}

 

 

출처

더보기

주홍철, <면접을 위한 cs 전공지식 노트>, 길벗, 2022

에릭 프리먼 외 3인, <헤드퍼스트 디자인 패턴>, 한빛미디어, 2022

https://ko.wikipedia.org/wiki/네트워크_트래픽