View

Set, Dictionary, hash

hooti 2020. 8. 12. 19:37

 

 

 Set? 

 

출처 : https://joooootopia.tistory.com/13

 

데이터를 비순차적(unordered)으로 저장할 수 있는 순열 자료구조(collection)라는 특징을 가지고 있다. arr와 list랑 비슷하지만 앞 두가지의 요소와 달리 순서가 없다. set은 다양한 특징을 가지고 있는데 이 부분을 아래에 나열하고자 한다.

 

Set의 특징

1. 삽입(insertion) 순서대로 저장되지 않는다. (특정한 순서를 기대할 수 없는 자료구조)

2. 동일한 값을 여러번 삽입하는 것은 불가능하다. 동일한 값이 여러번 삽입 되면 하나의 값만 저장된다.

3. 값의 수정이 가능하다.(mutable)

4. 특정값을 포함하고있는지 확인(Fast Lookup)할때 주로 사용된다.

 

 

Set의 구조,저장순서와 사용처

기본적인 배열인 arr와 달리, set은 요소들을 순차적으로 저장하지 않는다. 해당 자료구조는 순서가 없다라는 특징이 강하기때문에 이부분을 사용하기 좋은 때가 있다. 중복된 값을 골라내야할 때, 빠른 look up을 해야할 때,순서는 상관없을 때 사용하면 좀 더 효율적인 작업이 가능하다. 작업 시 set을 저장하는 순서는 아래와 같다.

 

1. 저장할 요소의 값의 hash 값 구하기
2. hash값에 해당하는 공간에 값 저장하기
- 해시값 기반의 bucket에 저장하여 중복된 값을 저장할 수 없음
- 해시값 기반으로 저장하여 look up이 빠름

 

※ Look up이 빠른 이유?

set의 총 길이와 상관없이 단순히 해시값 계산 후 해당 bycket을 확인하면 되니 더욱 빠른 것이다.

 


 

 Hash? 

 

출처 : 위키백과

단방향(one way) 암호화다. 실제 값의 길이와 상관없이 hash 값을 일정한 길이를 가지며, 그럼으로 Hash는 주로 임의의 길이를 갖는 임의의 데이터에 대해 고정된 길이의 데이터로 매핑할때 사용한다.

 

Set의 특징

1. 삽입(insertion) 순서대로 저장되지 않는다. (특정한 순서를 기대할 수 없는 자료구조)

2. 동일한 값을 여러번 삽입하는 것은 불가능하다. 동일한 값이 여러번 삽입 되면 하나의 값만 저장된다.

3. 값의 수정이 가능하다.(mutable)

4. 특정값을 포함하고있는지 확인(Fast Lookup)할때 주로 사용된다.

 


 

 Dictionary? 

 

 

Set처럼 특정 순서대로 데이터를 리턴하지 않는다. key의 값이 중복될 수 없으며, 만약 중복된 key가 들어가면 먼저 있던 key와 value를 대체할 수 있다. 또한 값을 수정가능(mutable)하다. Dictionary는 데이터 베이스처럼 key-value를 묶어서 데이터를 표현해야할 때,실제 데이터베이스에서 읽어들인 값을 dictionary로 변환하는 곳에 자주 사용한다.

 

Dictionary의 구조

1. set과 비슷하게 key값의 해시값을 구한 후 해시값에 속해있는 bucket에 값을 저장한다.
2. set과 마찬가지로 순서가 없고 중복된 key값은 허용되지 않는다.

 

 


 

JWT(Json Web Token)이란?

Json Web Token의 줄임말로 클레임 기반 토큰이며, 명명 그대로 JSON을 이용한 토큰이고 웹 표준(RFC 7519)를 구현한 것이다.  JWT는 헤더(header), 페이로드(payload), 서명(signature) 세 가지로 나눠져 있으며, Json 형태인 각 부분은 Base64로 인코딩 되어 표현된다.

 

  •  헤더(header) : 토큰의 종류, 해시 정보 알고리즘을 담는 곳이다.
  • 페이로드(payload) : 실질적인 토큰의 내용물을 인코딩하여 담는 곳이다.
  • 서명(signature) : 일련의 문자열로서, 이것을 통해 토큰이 변조되었는지를 확인한다.

 

※ 시그니처는 헤더와 페이로드를 비밀키로 암호화한 부분이다. 따라서 우리는 비밀키를 잘 숨겨야한다.

 

자세한 부분은 해당 공식사이트에서 확인하자!

 

 


 

 

 

 토큰 기반 시스템의 원리 

 

참고 : https://velog.io/@dnjscksdn98/JWT-%ED%86%A0%ED%81%B0-%EA%B8%B0%EB%B0%98-%EC%9D%B8%EC%A6%9D%EC%9D%B4%EB%9E%80

 

토큰 기반 인증 시스템은 인증받은 사용자들에게 토큰을 발급하고, 서버에 요청을 할 때 헤더에 토큰을 함께 보내도록 하여 유효성을 검사를 한다. 또한 http와 동일하게 상태를 유지하지 않는다(stateless).하다. 이러한 특징때문에 어떤 request가 들어와도 모두 처음 요청된 request 처럼 인식한다. 토큰기반시스템에서는 유저의 인증 정보를 서버나 세션 DB에 보관하지 않으며, 유저 인증 정보를 서버 측에 담아둠으로써 발생했던 모든 문제들이 해결 가능하다. 인증시스템의 순서는 아래와 같다.

 

  • 유저가 아이디와 비밀번호로 로그인한다.
  • 서버측에서 해당 계정정보를 검증한다.
  • 계정정보가 정확하면, 서버측에서 유저에게 signed 토큰을 발급한다.
  • 클라이언트 측에서는 전달받은 토큰을 저장하고, 서버에 요청할때마다 저장한 토큰을 함께 서버에 전달한다.
  • 서버는 토큰을 검증하고, 요청에 응답한다.

 

 

토큰 기반 시스템의 장점

1. 무상태성(Stateless) & 확장성(Scalability)

토큰은 클라이언트 측에 저장되기 때문에 서버는 무상태성이며, 이러한 특징 덕분에 클라이언트와의 연결고리가 없어 확장에 적합하다.

 

2. 보안성

클라이언트가 서버로 요청을 보낼 때 더 이상 쿠키를 전달하지 않기때문에 쿠키에 대한 취약점이 제거된다.

 

3. 확장성(Extensibility)

Extensibility는 로그인 정보가 사용되는 분야의 확장성을 의미한다. 토큰 기반의 인증 시스템에서는 토큰에 선택적인 권한만 부여하여 발급할 수 있으며, 소셜계정을 연동하여 다른 웹사이트에 로그인도 가능하다.

 

4. 여러 플랫폼 및 도메인

다양한 디바이스, 다양한 도메인에서도 토큰의 유효성 검사를 진행한 후에 요청을 처리할 수 있다.

 

 

 

 

 

 

참고문서 : https://velog.io/@2cong/Set-Dictionary-Hash

 

Set, Dictionary, Hash

Set Set의 특징 데이터를 비순차적(unordered)으로 저장할 수 있는 순열 자료구조 (collection) 삽입(insertion) 순서대로 저장되지 않음 (특정한 순서를 기대할 수 없는 자료구조) 동일한 값을 여러번 삽입

velog.io

참고문서 : https://velog.io/@eodyd6564/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-Set-Dictionary-Hash

 

자료구조 Set, Dictionary, Hash

Set은 array나 list처럼 순열 자료구조 (collection) 입니다.하지만, set은 순서라는 개념이 존재하지 않습니다. Set의 특징은 다음과 같습니다.데이터를 비순차적(unordered)으로 저장할 수 있는 순열 자료�

velog.io

참고문서 : https://kim-mj.tistory.com/256?category=879202

 

자료 구조(Data Structure) (4) - Dictionary / HashMap / HashTable

Dictionary(혹은 HashMap, HashTable)는 Key-Value 형태의 값을 저장할 수 있는 자료구조이다. 자바스크립트의 객체와 같다. Dictionary 특징 - Set처럼 특정 순서대로 데이터를 리턴하지 않음 - Key의 값이 중복..

kim-mj.tistory.com

참고문서 : https://velog.io/@cyranocoding/Hash-Hashing-Hash-Table%ED%95%B4%EC%8B%9C-%ED%95%B4%EC%8B%B1-%ED%95%B4%EC%8B%9C%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0%EC%9D%98-%EC%9D%B4%ED%95%B4-6ijyonph6o

 

Hash, Hashing, Hash Table(해시, 해싱 해시테이블) 자료구조의 이해

0_HJVxQPQ-eW0Exx7M.jpeg DATA들이 사용하기 쉽게 정리되어 있다. 자료구조는 도대체 무엇일까? 자료구조(Data-Structure)는 데이터들의 모임, 관계, 함수, 명령 등의 집합을 의미한다. 더 쉽게 표현하자면, 1)

velog.io

참고문서 : https://velog.io/@jiwon/JWT-%EA%B0%9C%EB%85%90

 

JWT 개념과 실습

1. JWT 이란? JWT란, Json Web Token의 약어로서, JSON 형식의 데이터를 저장하는 토큰입니다. JWT는 특히 3가지 부분으로 구성되어 있습니다. 헤더(HEADER) : 토큰의 종류, 해시 정보 알고리즘을 담는 곳 페��

velog.io

참고문서 : https://velog.io/@dnjscksdn98/JWT-%ED%86%A0%ED%81%B0-%EA%B8%B0%EB%B0%98-%EC%9D%B8%EC%A6%9D%EC%9D%B4%EB%9E%80

 

[JWT] 토큰 기반 인증이란

1) 서버 기반 인증 시스템 기존의 인증 시스템은 서버 기반의 인증 방식으로, 서버 측에서 사용자들의 정보를 기억하고 있어야 한다. 사용자들의 정보를 기억하기 위해서는 세션을 유지해야 하��

velog.io

 

'Review' 카테고리의 다른 글

Unit Test  (0) 2020.08.20
ESLint, Prettier 적용  (0) 2020.08.17
인증과 인가  (0) 2020.08.11
React 복습과 Fetch & Map  (0) 2020.08.10
Database(데이터베이스)  (0) 2020.08.06
Share Link
reply
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31