전체 글 190

[Spring Boot] JWT를 이용한 인증/인가 구현하기(Spring Security X)

JWT를 사용하기 위한 파일FilterConfig.java@Configuration@RequiredArgsConstructorpublic class FilterConfig { private final JwtUtil jwtUtil; @Bean public FilterRegistrationBean jwtFilter() { FilterRegistrationBean registrationBean = new FilterRegistrationBean(); registrationBean.setFilter(new JwtFilter(jwtUtil)); registrationBean.addUrlPatterns("/*"); // 필터를 적용할 URL 패턴을 지정합니다. ..

[Spring Boot] 스레드(Thread)

스레드란?스레드란 프로그램에서 실행되는 작업의 최소 단위입니다. 예를 들어 API를 호출하면 Spring에서 스레드가 요청을 처리합니다.여기 한 식당이 있습니다. 그 식당에는 종업원(Thread) 이 있습니다. 각각의 종업원은 손님(Client)들에게 주문(request)을 받고 주방(Spring MVC) 에서 음식(response) 이 완성이되면 음식을 손님에게 음식을 전달해 줍니다.   성능이 좋은 서버란?1. 하나의 스레드를 극한의 효율로 사용하기(싱글 스레드), 비동기 방식과 non-blocking방식을 사용 -> Node.js2. 스레드를 여러개 사용하기(멀티 스레드), 비공기 방식과 non-blocking 방식을 사용 -> Spring  동기와 비동기동기: 동기 방식에서는 작업이 순차적으로 진..

[Spring Boot] Spring Security를 이용하여 인증인가 구현하기

Spring Security란?Spring Security는 인증, 인가를 구현하는 데 도움을 주는 Spring의 프레임워크입니다.Spring Security를 이용하면 전에 구현했던 어노테이션을 만드는 과정도 매우 쉽게 구현할 수 있습니다. 이전에 JWT를 이용한 인증인가 [Spring Boot] JWT를 이용한 인증/인가 구현하기(Spring Security X)JWT를 사용하기 위한 파일FilterConfig.java@Configuration@RequiredArgsConstructorpublic class FilterConfig { private final JwtUtil jwtUtil; @Bean public FilterRegistrationBean jwtFilter() { FilterRegistr..

[Spring Boot] JWT와 세션의 차이

JWT란?JWT(JSON Web Token)란 JSON으로 이루어진 Web 토큰입니다. JWT의 구성요소와 특징헤더: 어떤 알고리즘으로 인코딩을 할 것인지, 어떤 토큰을 사용할 것인지에 관한 정보입니다.페이로드: 전달하고자 하는 정보가 들어갑니다.(ex. 아이디, 이름, 이메일 등), 최소한의 정보만 담아야 합니다.시그니처: 토큰이 변조되지 않았는지 확인하기 위한 부분입니다. JWT의 가장 중요한 점은 JWT는 암호화가 아닌 인코더라는 점입니다.암호화: 키가 없다면 복호화가 불가능인코더: 키가 없더라도 복호과가 가능따라서 JWT는 탈취당하면 다른 사람이 누구나 페이로드의 내용을 볼 수 있습니다.  저희 또한 아래 홈페이지에 들어가서 JWT를 입력한다면 시그니처가 없더라도 JWT의 내용을 확인 할 수 있습..

[Spring Boot] 필터( Filter )

필터란?필터란 쉽게 이야기해서 공통 부분을 한번에 처리함으로써 코드의 중복을 줄이고, 유지보수하기 쉽도록 하는 방법입니다.예를 들어 인증/인가, 인코딩, 권한 등에 사용할 수 있습니다. 이 글은 필터를 가장 쉽게 필터 하나의 기능만 사용하였으며, 추후 로그인 기능을 구현하기 위해 글을 포스팅 하였습니다. 필터 작동 과정요청이 들어오면 요청은 가장 먼저 필터를 타고 들어오게 됩니다. 따라서 로그인 기능을 구현할 때 인증/인가를 모두 확인하기 가장 적합합니다.  필터를 적용한 코드@Component@Slf4jpublic class FilterConfig implements Filter { @Override public void doFilter(ServletRequest request, Servle..

[프로그래머스] 개인정보 수집 유효기간 JAVA

문제[프로그래머스] 개인정보 수집 유효기간 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 고객의 약관 동의를 얻어서 수집된 1~n번으로 분류되는 개인정보 n개가 있습니다. 약관 종류는 여러 가지 있으며 각 약관마다 개인정보 보관 유효기간이 정해져 있습니다. 당신은 각 개인정보가 어떤 약관으로 수집됐는지 알고 있습니다. 수집된 개인정보는 유효기간 전까지만 보관 가능하며, 유효기간이 지났다면 반드시 파기해야 합니다. 예를 들어, A라는 약관의 유효기간이 12 달이고, 2021년 1월 5일에 수집된 개인정보가 A약관으로 수집되었다면 해당 개인정보는 2022년 1월..

[프로그래머스] 바탕화면 정리 JAVA

문제[프로그래머스] 바탕화면 정리 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  코딩테스트를 준비하는 머쓱이는 프로그래머스에서 문제를 풀고 나중에 다시 코드를 보면서 공부하려고 작성한 코드를 컴퓨터 바탕화면에 아무 위치에나 저장해 둡니다. 저장한 코드가 많아지면서 머쓱이는 본인의 컴퓨터 바탕화면이 너무 지저분하다고 생각했습니다. 프로그래머스에서 작성했던 코드는 그 문제에 가서 다시 볼 수 있기 때문에 저장해 둔 파일들을 전부 삭제하기로 했습니다. 컴퓨터 바탕화면은 각 칸이 정사각형인 격자판입니다. 이때 컴퓨터 바탕화면의 상태를 나타낸 문자열 배열 wallp..

[자료구조] 트리

트리트리는 그래프 중 하나로 그래프의 특징처럼 정점과 간선으로 이루어져 있고, 트리 구조로 배열된 일종의 계층적 데이터의 집합입니다. 트리로 이루어진 집합을 숲이라고 합니다. 트리의 특징부모-자식 관계로 정의하고, 부모에서 자식으로 간선이 이어져 있는 방향 그래프입니다.트리에서 부모가 없는 노드를 부모 노드라고 합니다.임의의 두 노드 사이의 경로는 '유일무이'하게 '존재'합니다. 즉, 트리 내의 어떤 노드와 어떤 노드까지의 경로는 반드시 있습니다.V - 1 = E라는 특징이 있습니다. 간선 수는 노드 수 - 1 입니다. 트리의 구성 트리는 루트노드, 내부노드, 리프노드로 이루어져 있습니다. 루트 노드: 가장 위에 있는 노드입니다. ( 트리에서 부모가 없는 최상위 노드, 트리의 시작점 )내부 노드: 루트 ..

ERD와 정규화 과정

ERD와 정규화과정ERD(Entity Relationship Diagram): 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며, 릴레이션 간의 관계들을 정의한 것입니다.만약 서비스를 구축한다면 가장 먼저 신경 써야 할 부분이며 이 부분을 신경쓰지 않고 서비스를 구축한다면 단단하지 않은 골조로 건물을 짓는 것이나 다름없습니다. ERD의 중요성ERD는 시스템의 요구사항을 기반으로 작성되며 이 ERD를 기반으로 데이터베이스를 구축합니다. 데이터베이스를 구축한 이후에도 디버깅 또는 비즈니스 프로세스 재설계가 필요한 경우에 설계도 역할을 담당하기도 합니다.하지만 ERD는 관계형 구조로 표현할 수 있는 데이터를 구성하는 데 유용할 수 있지만 비정형 데이터를 충분히 표현할 수 없다는 단점이 있습니다. 비정형..

데이터베이스의 종류

데이터베이스의 종류 관계형 데이터베이스 관계형 데이터베이스(RDBMS)행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스를 가리키며 SQL이라는 언어를 사용합니다.종류: MySQL, PostgreSQL, 오라클, SQL Server, MSSSQL 등 MySQLMySQL은 대부분의 운영체제와 호환되며 현재 가장 많이 사용하는 데이터베이스C, C++로 만들어졌으며 MyISAM 인덱스 압축 기술, B- 트리 기반의 인덱스, 스레드 기반의 메모리 할당 시스템, 매우 빠른 조인, 최대 64개의 인덱스를 제공대용량 데이터베이스를 위해 설계되어 있고 롤백, 커밋, 이중 암호 지원 보안 등의 기능을 제공하며, 많은 서비스에서 사용됨 MySQL 스토리 엔진 아키텍처스토리 엔진: 데이터베이스 관리 시스템이 데..