전체 글 149

[Security] Spring Security의 흐름

사용된 Class1. WebSecurityConfig2. JwtUtil3. JwtAuthenticationFilter4. JwtAuthorizationFilter5. AuthExceptionFilter   1. WebSecurityConfig (Security 설정 로드)@EnableWebSecurity 를 통한 웹 보안 활성화WebSecurityConfig- CorsConfigurationSource: CORS 에서 허용할 오리진, 메서드, 헤더 등을 설정- PasswordEncoder: BCryptPasswordEncoder를 통한 비밀번호 암호화- AuthenticationManager: 로그인 인증을 처리하는 핵심 컴포넌트인 `AuthenticationManager`를 설정 - JwtAuthent..

Springboot 2024.06.22

[Springboot] JWT 0.15.2

이번 프로젝트에서는 최신 기술스택을 사용하기로 하였기에,이전에는 jwt 0.11.5 버전을 사용하였으나 이번에는 2024년 기준 최신 버전인 0.15.2 버전을 사용하기로 했다. maven Repository: https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-api gradle implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.12.5' runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.12.5' runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-ja..

Springboot 2024.06.22

Cannot resolve symbol 'TimeUnit' import java.util.concurrent.TimeUnit;

신규 프로젝트를 진행하던 중, Redis에 RefreshToken의 수명을 저장하기 위해 TimeUnit을 사용하려 했지만,TimeUnit을 import 하지 못하는 에러가 발생했다.  timeunit의 class를 확인했다. 확인해 보니 상단에 수상한 문구가 적혀있었다.   저게 문제이지 않을까 싶어서 찾아보니, 66.0은 JDK 12버전 이상인 경우라는 뜻이었다.에러의 문제가 아니라 아쉽긴 했지만, 혹시나 JDK가 12 이하 버전이지 않을까 싶어 gradle을 조회했다.  버전에는 문제가 없었다. IntelliJ의 문제일수도 있겠다 생각하여 최신버전으로 다시 설치했다.   그래도 에러가 해결되지 않았다.이후, 여러 방법을 시도해본 결과, IntelliJ의 Cache를 지움으로써 해결할 수 있었다   ..

TroubleShooting 2024.06.17

[CS] REST, RESTful API란?

REST는 "Representational State Transfer"의 약자로, 웹의 장점을 최대한 활용하면서 분산 시스템을 설계하기 위한 원칙과 패턴을 제시한다.  REST의 주요 개념1. 자원(Resource)   - REST에서는 해당 소프트웨어가 관리하는 모든 것이 자원이다. 자원은 URI(Uniform Resource Identifier)로 식별한다.    - 예를 들어, 사용자를 나타내는 자원은 `/users`와 같이 표현할 수 있다. 2. 표현(Representation)   - 자원은 다양한 형태로 표현할 수 있다. 일반적으로 JSON, XML, HTML 등을 사용한다.    - 클라이언트는 서버에서 자원의 표현을 받아 상태를 전송받는다. 3. 상태 전이(State Transfer)   ..

CS 2024.05.24

Programmers - 대장균의 크기에 따라 분류하기 2(SQL 함수 2)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 대장균 개체의 크기를 내름차순으로 정렬했을 때 상위 0% ~ 25% 를 'CRITICAL', 26% ~ 50% 를 'HIGH', 51% ~ 75% 를 'MEDIUM', 76% ~ 100% 를 'LOW' 라고 분류합니다. 결과는 개체의 ID 에 대해 오름차순 정렬해주세요 . 총 데이터의 수는 4의 배수이며 같은 사이즈의 대장균 개체가 서로 다른 이름으로 분류되는 경우는 없습니다. 'CASE를 사용하여 해결하면 되겠다' 라는 생각으로 문제를 읽어나갔지만, 백분위로 데이터를 나누는 방법은 몰랐기에, 내가 알고..

카테고리 없음 2024.04.20

Algorithm - 백준 벡터 매칭

1007번: 벡터 매칭 평면 상에 N개의 점이 찍혀있고, 그 점을 집합 P라고 하자. 집합 P의 벡터 매칭은 벡터의 집합인데, 모든 벡터는 집합 P의 한 점에서 시작해서, 또 다른 점에서 끝나는 벡터의 집합이다. 또, P에 속 www.acmicpc.net 문제를 간단히 설명하자면, 임의의 점이 N개 주어진다. 해당 N개의 점을 한 번씩 사용해서 만들 수 있는 벡터들의 합 중 최소값을 찾고, 길이를 구해야 한다. 우선 이 문제를 해결하기 위해 벡터의 성질을 알아야 했다. 점 (x0, y0)에서 점 (x1, y1)을 향하는 벡터: (x1 - x0, y1 - y0) 점 (x2, y2)에서 점 (x3, y3)을 향하는 벡터: (x3 - x2, y3 - y2) 벡터들의 합: (x1 + x3 - x0 - x2, y..

Algorithm 2024.04.16

Algorithm - 백준 도키도키 간식드리미(자료구조, 스택)

12789번: 도키도키 간식드리미 인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두 www.acmicpc.net 오늘도 여러 문제를 풀었다. 위의 문제는 스택과 같은 자료구조를 이용해서 해결하는 문제였다. 나는 Queue와 Stack을 이용하여 문제를 해결하려고 마음먹었다. 최근에 자료구조 문제들을 많이 풀어서 쉬울줄 알았지만, 위의 문제가 생각보다 쉽게 해결되지 않았다. import java.util.*; public class Main { public static void main(String[] args) { ... while (!queue.isEmpty()) { /..

Algorithm 2024.04.04

Algorithm - 프로그래머스 여행경로(DFS)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 오늘은 DFS 알고리즘 문제를 풀었다. DFS DFS는 깊이 우선 탐색(Depth-First Search)의 약어로, 그래프 및 트리의 한 정점에서 모든 정점을 방문하는 알고리즘 중 하나이다. 특징 1. 한 정점에서 시작하여 가장 깊은 곳 (최하위의 자식 노드) 까지 탐색하고, 되돌아와서 다음 가능한 경로를 탐색한다. 2. 스택(Stack) 자료구조를 사용한다. 3. 모든 정점을 방문하여야 할 때 사용된다. 4. 정점의 이웃 정점들을 재귀적으로 방문하여 구현한다. 5. 깊이를 가늠할 수 없을 경우, 스택오버플..

Algorithm 2024.04.02

Algorithm - 프로그래머스 섬 연결하기(Greedy, Minimum Spanning Tree, Union Find)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제를 해결하기 위해 생각했던 방법은 1. 주어진 배열을 다리를 짓는데에 필요한 재화(costs[i][2])로 오름차순 정렬 2. 섬이 직접적으로 연결되어 있는지 확인 3. 직접 연결되어 있지 않다면 간접적으로 연결되어 있는지 확인(dfs, bfs 등 사용) 4. 간접적으로 연결되어 있지 않다면 다리 건설 이렇게 해결하려 하였으나, 3번을 구현하는데에 어려움을 겪어 해결방안을 찾아보았다. Minimum Spanning Tree(최소 신장 트리), Kruskal(크루스칼) 알고리즘, Union Find 이 ..

Algorithm 2024.04.01

Algorithm - 백준 DNA 비밀번호(12891), 슬리이딩 윈도우

12891번: DNA 비밀번호 평소에 문자열을 가지고 노는 것을 좋아하는 민호는 DNA 문자열을 알게 되었다. DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자열을 말한다. 예를 들어 “ACKA” www.acmicpc.net 처음에는 Map을 사용하여 구현하였으나, 시간초과가 발생했다. import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int S = scanner.nextInt(); int P = scanner.nextInt(); String dnaString = scanner.next(); H..

Algorithm 2024.03.26