ALL 46

OAuth 2.0 개념과 동작 흐름

💡 OAuth 2.0 구글, 페이스북과 같은 다양한 플랫폼의 특정한 사용자 데이터에 접근하기 위해 제 3자 클라이언트(우리의 서비스)가 사용자의 접근 권한을 위임받을 수 있는 표준 프로토콜이다. 프로트콜(protocol) 컴퓨터나 원거리 통신 장비 사이에서 메세지를 주고 받는 양식과 규칙의 체계이다. OAuth 2.0의 주요 구성요소로 Resource Owner, Client, Authorization Server, Resource Server 등이 있다. Resource Owner 사용자를 의미한다. 우리의 서비스를 이용하면서, 구글, 페이스북 등의 플랫폼에서 리소스를 소유하고 있는 사용자이다. Client Resource Server의 자원을 이용하고자 하는 서비스 즉, 우리의 서비스 서버를 의미한다..

보안 및 인증 2023.06.30

JWT(Json Web Token)를 이용한 인증 처리

💡 인증(Authentication)과 인가(Authorization) 인증(Authentication) 사용자의 신원을 확인하는 과정 ex) 로그인 인가(Authorization) 인증된 사용자에 대하여 자원의 접근권한을 확인하는 것 ex) 일반 계정과 관리자 계정의 차이, 일반 계정으로 관리자 기능을 사용할 수 없다. 💡 JWT란 무엇인가? Json 포맷을 통해 사용자에 대한 속성을 저장하는 Web Token이다. JWT 구조는 Header, Payload, Signatre로 이루어진다. Header 토큰의 타입과 암호화 알고리즘 정보를 포함한다. Payload json key-value의 형태로 데이터를 담는다. 각 정보들을 claim이라고 부른다. Signature 헤더와 페이로드를 인코딩하고, ..

보안 및 인증 2023.06.29

구간 합

💡 구간 합 수들의 나열에서 특정 구간의 합을 의미한다. 보통 배열에서 i ~ j 인덱스 사이의 값들의 합을 구하는데 사용한다. 반복문을 사용하여 i ~ j 사이의 값을더하는 알고리즘의 시간복잡도는 O(n)이다. 구간 합 알고리즘을 사용하여 구간 합을 구하는 경우 O(1)의 성능을 갖는다. 합 배열 이용 S[i] = A[0] + A[1] + … + A[i - 1] + A [i] 합 배열 S를 만드는 공식 : S[i] = S[i - 1] + A[i] i ~ j 구간 합을 구하는 공식 : S[j] - S[i - 1] index 0 1 2 3 4 5 기존 배열 A 15 13 10 7 3 12 합 배열 S 15 28 38 45 48 60 ex) A[2] ~ A[4]의 구간 합 구하기 A[0] 부터 A[4] 까지..

배열과 리스트

💡 배열 (Array) 배열은 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조다. 동일 타입의 데이터를 저장하며, 인덱스를 사용하여 값에 바로 접근할 수 있다. 배열을 선언 한 후에는 할당 된 정적 메모리 때문에 크기를 변경할 수 없다. 중간에 특정 요소를 삽입 및 삭제하는 경우, 특정 요소로부터 뒤에 있는 모든 요소들을 이동시켜주어야 한다. 삽입 및 삭제에 비용이 많이 들게된다. 배열의 시간 복잡도 Operation average case worst case read O(1) O(1) insert O(n) O(n) delete O(n) O(n) search O(n) O(n) 💡 연결 리스트 (Linked List) 리스트는 값과 포인터를 묶은 노드를 포인터로 연결한 자료구조다. 포인터로 연결되어..

컴퓨터 일반 요약 1

💡 한글 Windows 10 특징 컴퓨터 시스템의 하드웨어를 효율적으로 관리하고 사용자에게는 더 편리한 컴퓨터 환경을 제공하기 위한 운영체제 GUI 사용 선점형 멀티태스킹 : 하나의 앱에 문제가 발생해도 다른 앱에 영향을 주지 않음 플러그 앤 플레이(PnP) : 하드웨어를 추가할 때 운영체제가 자동으로 인식하고 설치 및 환경 설정을 용이하게 해주는 기능 OLE : 다른 여러 앱에서 작성된 문자, 그림 등 개체를 현재 작성 중인 문서에 자유롭게 연결, 삽입하여 편집할 수 있게하는 기능 255자의 긴 파일 이름 지정 가능 : W / * ? " | 를 제외한 모든 문자 및 공백 사용 가능 64bit 데이터 처리 💡 파일 시스템 보조기억장치에 저장되는 파일에 대해 수정, 삭제, 추가, 검색 등의 작업을 ..

[Eclipse] Workspace 생성시 초기 설정

개인적인 설정입니다. 1. JUnit 추가 (gradle) 프로젝트 우클릭 > Java Bulid Path > Libraries > Classpath 선택 후 Add Library > JUnit 추가 2. 자주 쓰는 코드 템플릿 추가 Preferences > Java > Templates > new > 아래 코드 추가 // test @Test void () { // given // when // then } // sout System.out.println(); 3. intellij처럼 자동 완성 기능 + enter 입력 시에만 자동 완성 Preferences > Java > Content Assist Dissable insertion triggers except 'Enter' > 체크 Au..

카테고리 없음 2022.11.13

[자료구조] 이진 탐색 트리

이진 탐색 트리 이진 트리로 만들어진 탐색을 위한 자료구조로 4가지 조건을 가진다. 왼쪽 자식 노드의 키는 부모 노드의 키보다 작다. 오른쪽 자식 노드의 키는 부모 노드의 키보다 크다. 서브 트리들도 이진 탐색 트리를 유지한다. 중복된 키를 허용하지 않는다. 왼쪽 자식 노드 < 부모노드 < 오른쪽 자식 노드 탐색 찾고자 하는 데이터를 루트 노드부터 비교 시작 대소 비교를 하여 찾는 데이터가 작으면 왼쪽, 크면 오른쪽 노드로 이동 찾는 데이터가 없으면 null 반환 어떤 데이터를 찾더라도 최대 트리 높이 만큼의 탐색이 이루어진다. 삽입 탐색과 마찬가지로 루트부터 비교 시작 (중복 키 발견 시 추가 없이 종료) 삽입키가 현재 노드의 키보다 작으면 왼쪽으로 이동 삽입키가 현재 노드의 키보다 크면 오른쪽으로 이..

[자료구조] 트리

\ 트리(Tree)란? 노드와 링크로 구성된 자료구조(그래프의 일종) 계층적 구조를 나타낼 때 사용한다. 노드(Node): 트리 구조의 자료 값을 담고 있는 단위 에지(Edge): 노드 간의 연결선 (=link, branch) 루트 노드(Root): 부모가 없는 노드, 가장 위의 노드 잎새 노드(Leaf): 자식이 없는 노드 (=단말) 내부 노드(Internal): 잎새 노드를 제외한 모든 노드 부모(Parent): 연결된 두 노드 중 상위의 노드 자식(Child): 연결된 두 노드 중 하위의 노드 형제(Sibling): 같은 부모를 가지는 노드 깊이(Depth): 루트에서 어떤 노드까지의 간선의 수 레벨(Level): 트리의 특정 깊이를 가지는 노드 집합 높이(Height): 트리에서 가장 큰 레벨 값..

[Java] StringBuilder

StringBuilder StringBuffer와 마찬가지로 문자열 변경이 가능하다. StringBuffer vs StringBuilder의 차이는 뭘까? 가장 큰 차이점은 동기화의 유무이다. StringBuffer는 동기화 키워드를 지원하여 멀티쓰레드 환경에서 안전하다는 점이다. 반대로StringBuilder는 동기화를 지원하지 않기때문에 멀티쓰레드 환경에서 사용하는 것은 적합하지 않다. 하지만 동기화를 고려하지 않는 만큼 단일쓰레드에서의 성능은 StringBuffer 보다 뛰어나다. StringBuffer는 메모리에 할당된 공간이 16이다. 그럼 StringBuilder는? 아래 코드를 보면 동일한 공간을 갖는 것을 알 수 있다. public class Main { public static void ..

Java 2022.10.03