CS 공부 & 기초 지식 14

[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..

[자료구조] 트리

트리트리는 그래프 중 하나로 그래프의 특징처럼 정점과 간선으로 이루어져 있고, 트리 구조로 배열된 일종의 계층적 데이터의 집합입니다. 트리로 이루어진 집합을 숲이라고 합니다. 트리의 특징부모-자식 관계로 정의하고, 부모에서 자식으로 간선이 이어져 있는 방향 그래프입니다.트리에서 부모가 없는 노드를 부모 노드라고 합니다.임의의 두 노드 사이의 경로는 '유일무이'하게 '존재'합니다. 즉, 트리 내의 어떤 노드와 어떤 노드까지의 경로는 반드시 있습니다.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 스토리 엔진 아키텍처스토리 엔진: 데이터베이스 관리 시스템이 데..

공유 자원과 임계 영역

공유 자원과 임계 영역우선 공유 자원과 임계 영역에 관해서 자세하게 알기 위해서는 스레드에 대해서 알아야합니다.스레드: 프로세스의 실행 가능한 가장 작은 단위로 프로세스는 멀티스레딩이라는 기술로 여러개의 스레드를 가집니다.이때 코드, 데이터, 스택, 힙을 각각 생성하는 프로세스와는 달리 스레드는 코드, 데이터, 힙을 스레드끼리 서로 공유해서 사용합니다.공유 자원공유 자원(shared resource): 시스템 안에서 각 프로세스, 스레드가 함께 접근할 수 있는 자원이나 변수등을 의미합니다. 공유 자원을 두 개 이상의 프로세스가 동시에 읽거나 쓰는 상황을 경쟁 상태라고 합니다.위 사진과 같이 프로세스 A와 프로세스 A가 동시에 접근하여 타이밍이 서로 꼬이는 경우 300이 정상적인 결과값이지만 200이 출력..

[운영체제] 프로세스와 스레드

프로세스와 스레드프로세스: 컴퓨터에서 실행되고 있느 프로그램을 말하여 CPU스케줄링의 대상이 되는 작업(tesk)아라는 용어와 거의 같은 의미스레드: 프로세스 내 작업의 흐름프로그램이 실행하는 과정: 프로그램이 메모리에 올라가면 프로세스가 되는 인스턴스화가 일어나고, 이후 운영체제의 CPU 스케줄러에 따라 CPU가 프로세스를 실행합니다.프로세스와 컴파일 과정프로세스는 프로그램이 메모리에 올라가 인스턴스화 된 것을 말합니다. 여기서 프로그램은 아직 실행되지 않은 코드들의 모음을 말합니다. 예를 들어 프로그램은 구글 크롬 프로그램(chrome.exe)과 같은 실행 파일이며, 이를 두 번 클릭하면 구글 크롬 프로세스로 변환되는 것입니다. 전처리소스 코드의 주석을 제거하고 #include 등 헤더 파일을 병합하..