분류 전체보기 (90) 썸네일형 리스트형 Spring Security jwt 적용, 커스터마이징 Spring Security, jwt를 사용하기 위해서 build.gradle의 dependencies에 다음을 추가한다. implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'io.jsonwebtoken:jjwt-api:0.11.5' implementation 'io.jsonwebtoken:jjwt-impl:0.11.5' implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5' 그 다음, SecurityConfig 를 작성한다. SecurityConfig는 Spring Security의 보안 설정을 정의하는 역할을 한다. 보안 구성 및 규칙, 세션 및 로그인 , C.. Spring Security 구조와 동작 원리 Spring Security Spring Security란, Http Request가 DispatcherServlet으로 도달하기 전 Servlet의 Filter를 기반으로 Request에 대한 인증과 인가를 적용시켜주는 프레임워크이다. 일반적으로 클라이언트에서 서버로 요청을 보내면, DispatcherServlet이 하나의 HttpServeletRequest를 받아서 요청을 처리하고 HttpServletResponse 응답을 클라이언트로 보낸다. 그런데, 하나 이상의 Filter가 포함된다면, 클라이언트에서 보낸 요청이 Servlet으로 전달되기 전에 Filter를 거치게 된다. 클라이언트가 애플리케이션에 하나의 요청을 보내면, 컨테이너는 하나의 FilterChain을 생성한다. FilterChain .. Deque(C++) Deque Deque는 데이터를 담는 자료구조로, Stack, Queue와 다르게 데이터를 양방향으로 저장하는 자료구조이다. Deque는 데이터를 가장 앞(front)에 저장할 수 있고, 데이터를 가장 뒤(back)에 저장할 수 있다. Stack과 Queue를 합쳐 놓았다고 생각하면 쉽다. Queue는 다음과 같은 연산을 가진다. 1. pushFront() - 맨 앞(Front)에 데이터를 넣는다. 2. pushBack() - 맨 뒤(back)에 데이터를 넣는다. 3. popFront() - 맨 앞(Front)에서 데이터를 pop 한다. 4. popBack() - 맨 뒤(Back)에서 데이터를 pop 한다. 5. peekFront() - 맨 앞(Front)의 데이터를 확인한다. 6. peekBack() .. 2230번: 수 고르기(Java) 투 포인터를 사용해 해결할 수 있다. 우선, 필요한 변수들을 선언한다. int N, M; Scanner scanner = new Scanner(System.in); N = scanner.nextInt(); M = scanner.nextInt(); int[] arr = new int[N]; int p1 = 0; int p2 = 0; int result = 2000000000; |A[i]|의 범위가 0~1000000000 이므로, 두 수의 차이는 최대 2000000000까지 될 수 있다. 따라서 result를 우선 2000000000로 설정했다. arr에 데이터를 넣어 주고, 투 포인터를 사용해야 하기 때문에 arr를 정렬해준다. Arrays.setAll(arr, i -> scanner.nextInt());.. Queue(C언어) Queue Queue는 데이터를 담는 자료구조로, Stack과 다르게 데이터를 순서대로 저장하는 자료구조이다. Queue는 가장 먼저 저장한 데이터를 가장 앞(front)에 저장하고, 가장 나중에 받은 데이터를 가장 뒤(rear)에 저장하는 FIFO(First In First Out) 구조이다. Queue는 다음과 같은 연산을 가진다. 1. enqueue() - Queue에 데이터를 넣는다 2. dequeue() - Queue의 front에 있는 데이터를 제거, 반환한다 3. peek() - Queue의 front에 있는 데이터를 제거하지 않고 반환한다 4. isEmpty() - Queue가 비어있는지 여부를 반환한다 5. size() - Queue의 크기를 반환한다 상황에 따라 추가적인 연산을 구현할 .. 2022 KAKAO BLIND RECRUITMENT - 신고 결과 받기(Java) Hash를 사용하는 문제였다. LinkedHashMap, HashSet을 사용해 풀었다. int[] answer = {}; answer = new int[id_list.length]; HashMap reportLog = new HashMap(); Arrays.stream(id_list).forEach(id -> reportLog.put(id, new HashSet())); 우선, answer를 초기화하고, 신고 기록을 담을 HashMap을 만들었다. reportLog는 key로 id를 가지고, value로 해당 id를 신고한 id들을 가진다. value를 HashSet으로 한 이유는, 중복 신고가 없기 때문이다. Arrays.stream(report).forEach(log -> { reportLog.ge.. Stack(C언어) Stack Stack은 데이터를 담는 자료구조로, 데이터를 역순으로 저장할 수 있는 자료구조이다. Stack은 나중에 받은 데이터를 제일 처음(Top)에 저장하고, 마지막으로 받은 데이터부터 반환하는 Last In First Out(LIFO) 구조이다. Stack은 다음과 같은 기본적인 연산을 가진다. 1. push() - Stack에 데이터를 넣는다 2. pop() - Stack의 Top에 있는 데이터를 제거, 반환한다 3. peek() - Stack의 Top에 있는 데이터를 제거하지 않고 반환한다 4. isEmpty() - Stack이 비어있는지 여부를 반환한다 5. size() - Stack의 크기를 반환한다 상황에 따라 추가적인 연산을 구현할 수 있다. 그림을 통해 Stack을 이해해 보자. 비어.. LinkedList(C언어) LinkedList LinkedList는 자료구조의 일종으로, 배열과 같이 여러 개의 자료를 저장할 수 있는 새로운 자료형이라고 이해하면 된다. 여러 개의 정수, 심지어 여러 개의 구조체도 저장할 수 있다. LinkedList의 개념은 다음과 같다. 우선, LinkedList 구조체부터 선언한다. struct LinkedList { int data;//Linked List가 가지는 데이터 LinkedList* next;//다음 Linked List의 주소 } typedef LinkedList; 그림으로 보면 다음과 같다. 이제, next에 다른 LinkedList*를 넣어 다음(next) LinkedList에 연결해 주자 이렇게 하면 두 개의 LinkedList가 연결되었다. a의 next가 b의 주소를.. 2023 2학기 C/자료구조 튜터링 2023년 1학기부터 학교에서 튜터링 프로그램에 참여하여 후배들에게 프로그래밍 기초를 가르치고 있었다. 방학 동안에도 밴드 동아리 후배들에게 C언어를 가르쳐주고, 작은 해커톤을 진행했다. 이번 학기에는 가르치는 내용을 정리하려고 이 카테고리를 개설했다. 필자도 아직 공부 중이라 미숙하고 많은 부분을 이해하지 못하지만, 지식을 나누고 소통하는 즐거움을 경험하고자 한다. 이번 학기에는 C언어를 사용한 기초 자료구조와 C++의 클래스를 가르칠 예정이다. HTTP status 401과 403의 차이점 401(Unauthorized) 뜻 그대로 권한이 없는, 인증되지 않은 클라이언트라는 의미이다. 인증되지 않은 클라이언트는 다양한 경우가 있겠지만, 로그인을 하지 않은 사용자를 예시로 들 수 있다. 로그인을 하지 않은 사용자가 로그인이 필요한 기능에 대한 요청을 했을 때 throw 하기 적절한 응답이다. 403(Forbidden) Unauthorized와 비슷하지만 명확하게 다른 점이 있다. Forbidden은 클라이언트가 보낸 요청에 대해서 해당 클라이언트에게 권한이 없음을 나타내는 status code이다. 일반적인 유저가 관리자 페이지에 접근하는 경우(관리자 권한이 없는 유저가 관리자 권한이 필요한 기능에 대한 요청을 한 경우) throw하기 적절한 응답이다. 이 차이점만 두고 보면 권한이 없으면 .. 이전 1 2 3 4 5 6 ··· 9 다음