TIL 4일차

Steadystudy·2022년 3월 23일
0

TIL

목록 보기
4/6

✏️오늘 배운 것

  • 자료구조와 알고리즘

    자료구조

    • 메모리를 효율적으로 사용하며 빠르고 안정적으로 데이터를 처리하는 것이 궁극적인 목표로 상황에 따라 유용하게 사용될 수 있도록 특정 구조를 이루고 있다. 특정 구조라는 건 잘못 사용하면 메모리를 비효율적으로 사용하고 느리고 불안정적으로 데이터를 처리할 수 있다.
    • 선형 구조: 한 원소 뒤에 하나의 원소만이 존재하는 형태로 자료들이 선형으로 나열(ex.Linked List)
    • 비선형 구조: 계층적 구조나 망형 구조를 표현하기에 적절 (ex.Graph, Tree)
    • 완벽한 자료 구조는 없다. 상황에 맞게 적절한 자료구조를 선택해야 한다.

    알고리즘

    • 특정 문제를 효율적이고 빠르게 해결하는 것이 궁극적인 목표로 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것을 말한다.
    • DIjkstra Algorithm (Shortest Path Algorithm) 오래전에 나온 알고리즘이지만 아직도 사용된다.
  • 시간복잡도

    왜 쓰이는가? 프로그램의 성능을 알기 위해 but 고려해야 할 것이 너무 많아서 정확하게 알 수 없기 때문에 Big-O 표기법 탄생
    * 2가지만 기억하라

    1. 상수항 무시
    2. 가장 큰 항 외엔 무시

  • 쿠키와 세션, 웹 스토리지 + IndexedDB

    쿠키

    • 프론트엔드에서 저장하고 관리

    • 클라이언트에서 저장, 관리하는 데이터들. 브라우저를 닫아도 데이터 유지 가능

    • 서버에서 set-cookie를 응답 헤더로 내려주면 클라이언트는 받아서 저장

    • 클라이언트에서 자체적으로 조작 가능

    • 각 상태에 수명을 정할 수 있다.

      Set-cookie

      응답 헤더에 담으면 브라우저가 알아서 저장하는데 각 데이터엔 여러 옵션이 존재

      • Expires: 쿠키 만료 날짜 지정
      • Secure: HTTPS에서만 쿠키를 전송한다.
      • HttpOnly: JavaScript에서 쿠키에 접근 못하도록 막는다.
      • Max-Age: 쿠키 수명을 정한다. 이 때 Expires는 무시된다.
      • Domain: 도메인이 일치하는 요청만 쿠키가 전송된다.
      • Path: 패스와 일치하는 요청만 쿠키가 전송된다.
    • 취약점
      - XSS 공격을 당할 수 있음
      - 쿠키를 암호화하지 않고 보내면 쿠키값 중간에 탈취 가능성 ⇒ HTTPS로 해결

      세션

    • HTTP Session Id를 식별자로 사용자를 구분한다.

    • 클라이언트는 HTTP Session Id를 쿠키 형태로 저장

    • 서버 자체적으로 기록하고 관리

    • 문제점

      • 세션은 서버에 파일로 저장된다. 만약 사용자가 엄청 많아진다면? ⇒ 저장 공간이 없어서 서버가 정상 작용 하지 못함
      • 서버가 만약 2대라면 세션은 어떻게 관리 해야할까? ⇒ 각 인증 정보가 퍼져있기 때문에 제대로 된 값을 응답 받지 못할 수 있음
    • 해결법
      - 서버와 클라이언트 간 인증은 별도 토큰을 사용한다
      - 쿠키는 클라이언트 자체적인 지속적인 데이터 관리 용도로 많이 사용

      웹 스토리지

    • 클라이언트에 데이터를 저장하기 위한 새로운 방법

    • HTML5부터 등장

    • 쿠키에서 하기 힘든 것들을 지원하기 위해 등장

    • 로컬 스토리지와 세션 스토리지가 있다

      로컬 스토리지
      
      - 로컬 스토리지에 데이터를 저장하면 반영구적으로 데이터가 저장
      - 브라우저를 종료해도 계속해서 데이터가 남음
      - 저장했던 도메인과 이용하는 도메인이 다른 경우엔 접근 불가
      - 쿠키와 마찬가지로 Key-Value 형태로 저장
      
      세션 스토리지
      
      - 새 창을 생성할 때마다 개별적으로 저장되는 데이터를 관리한다.
      - 브라우저를 닫는 순간 사라진다.
      - 같은 도메인이어도 세션이 다르면 데이터에 접근할 수 없다.
      - 쿠키와 마찬가지로 Key-Value 형태로 저장

      IndexedDB

    • Transactional한 로컬 데이터베이스

    • 새로운 웹 브라우저 표준 인터페이스

    • 파일이나 블롭 등 많은 양의 구조화된 데이터를 클라이언트에 저장하기 위한 API

    • 웹 스토리지는 적은 양의 데이터를 저장하는데 유용하지만 많은 양의 구조화된 데이터에는 IndexedDB가 적합

    • 애플리케이션 블록을 방지하기 위해 모두 비동기로 이뤄짐.

👦소감

자료구조와 알고리즘 강의를 들으면서 추가로 선택과제를 내주셨다. DoublyLinkedList, CircularLinkedList를 구현해보는 과제였는데 설명을 잘해주셔서 구현할 만 했다. 최근에 개념 위주의 공부만 해서 오랜만에 vsc켜서 작업했던 것 같다.🙂 알고리즘 문제를 몇 문제 풀었는데 시간이 금방 지나가 오늘 할 일을 미처 다 하지 못했다.😞 시간을 정해서 풀 수 있을 만큼만 해야겠다. 못한 공부는 미루지 말고 자기 전까지는 하자

👊세 줄 요약

  • 자료구조와 알고리즘 공부 시작🔥
  • 알고리즘 문제 풀 때 시간 분배
  • 오늘 할 일 미루지 말고 끝내자👊
profile
꾸준함을 추구하는 개발자

0개의 댓글