프로젝트를 진행하던 도중 JWT를 이용해 로그인 기능을 구현하였다. 막상 JWT와 같이 거론되는 쿠키,세션에 대해서도 제대로 정리가 되지 않았다. 이 기회에 쿠키,세션,토큰,JWT에 대해 정리해보려한다. 쿠키와 세션,JWT를 사용하는 데에는 HTTP의 특징인 connectionless와 stateless의 성질을 갖고있기 때문이다. connectionless(비연결성) 란 서버가 연결을 맺은 후 , 클라이언트 요청에 대해 서버가 응답을 마지면 연결을 끊는 성질을 말한다. stateless(무상태) 란 connectionless로 인해 서버가 클라이언트를 식별할수 없는 성질을 말한다. 이러한 HTTP의 특징으로 상태를 기억하기위해 쿠키와 세션, JWT를 이용한다. 쿠키 쿠키는 서버에 인증하기 위해 클라이언..
목차 Array vs Linked List Stack and Queue Tree Binary Heap Red Black Tree Hash Table Graph Array vs Linked List Array Array는 논리적 저장순서와 물리적 저장순서가 일치한다. index를 통해 해당 원소에 접근할 수 있다. 그렇기에 찾고자하는 원소의 인덱스 값(탐색)을 알고있으면 O(1)에 해당원소로 접근 가능하다. 삽입/삭제 과정에서는 해당 원소에 접근해 작업을 완료한뒤 , 또 한가지의 작업(삽입/삭제)을 추가적으로 해야하기 때문에 시간이 더 걸린다. 배열의 원소 중 어느 원소를 삭제했다고 했을 때 , 삭제한 원소보다 큰 인덱스르 갖는 원소들을 shift 해줘야 하기에 시간복잡도는 O(n)이 된다. 삽입의 경우도..
목차 좋은 코드란 무엇인가 Object Oriented Programming RESTful API TDD 함수형 프로그래밍 MVC 패턴 Git과 GitHub 좋은 코드란 무엇인가 좋은 코드를 작성하기 위한 결론 - 좋지 않은 코드를 줄이자 좋은 코드란 좋지 않은 코드가 없는 코드로 좋은 코드를 작성하려 노력하는 것 보단 좋지 않은 코드를 줄여본다. - 일관성 있는 코드를 작성하자 최소한의 가독성을 보장하는 방법은 일관성 있는 코드를 작성하는 것이다. 코드에 일관성이 지켜지면 어느 곳에 어떤 코드가 위치하는지 예상할 수 있다. - 복잡한 요구사항을 담고있는 코드는 주석과 함께 분리하자 코드를 작성하다보면 복잡한 요구사항을 담고있는 코드가 작성될때가 있다.이런 코드는 읽기도 어렵도 삭제하기도 어려워변경에 유..