Spring Boot와 JWT를 이용한 회원 가입(1)
·
혼자하는 프로젝트/나만의 프로젝트
지금 부터 혼자서 하는 토이 프로젝트를 해볼려고 한다. 쇼핑몰을 만들어 볼 생각이다. 첫번째 순서는 JWT를 이용해서 회원 가입을 하는 것이다. JWT란? 지금부터 JWT에 대한 내용은 JWT 이곳을 참고했다. JWT는 Json Web Token의 약자로 인증에 필요한 정보들을 암호화시킨 JSON 토큰이다. JWT 기반 인증은 JWT 토큰(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트를 식별하는 방식이다. JWT는 JSON 데이터를 Base64 URL-safe Encode 를 통해 인코딩하여 직렬화한 것이며, 토큰 내부에는 위변조 방지를 위해 개인키를 통한 전자서명도 들어있다. JWT는 Header, Payload, Signature 3개로 이루어져 있다. Header alg : 서명..
빵집(백준_3109)
·
BackEnd/알고리즘 공부
https://www.acmicpc.net/problem/3109 3109번: 빵집 유명한 제빵사 김원웅은 빵집을 운영하고 있다. 원웅이의 빵집은 글로벌 재정 위기를 피해가지 못했고, 결국 심각한 재정 위기에 빠졌다. 원웅이는 지출을 줄이고자 여기저기 지출을 살펴보던 www.acmicpc.net 문제 설명 문제가 길지만 간단하게 설명하자면 예제 입력에 있는 5 * 5 이차원 배열에서 1열에서 5열까지 파이프를 연결해야 한다. 그 때 X에는 연결 할 수 없고 한 곳에는 하나의 파이프만 지나갈 수 있다. 그리고 파이프를 설치할 수 있는 곳은 현재를 기준으로 오른쪽 위, 오른쪽, 오른쪽 아래 이렇게 3개이다. 이 때 파이프를 설치할 수 있는 최대 개수를 구하는 프로그램이다. 예제를 직접 풀어보면 이렇게 2개 ..
최소 공통 조상 구하기(LCA)
·
BackEnd/알고리즘 공부
코딩테스트에서 나오는 문제 중 하나인 LCS 구하기에 대해 공부해 보았다. 이 글의 내용은 Do it! 알고리즘 코딩테스트를 참고하였다. 최소 공통 조상이란? 트리 그래프에서 임의의 두 노드를 선택했을 때, 두 노드가 각각 자신을 포함해 거슬러 올라고면서 부모 노드를 탐색할 때 처음 공통으로 만나게 되는 부모 노드를 '최소 공통 조상' LCA(Lowest common ancestor) 이라고 한다. 최소 공통조상을 구하는 방법은 2가지가 있다. 일반적으로 구하는 방법과 빠르게 구하는 방법이다. 일반적으로 구하는 방법은 Depth를 하나씩 거슬러 올라가야 해서 모든 Depth를 탐색해야 할 수 도있다. 그래서 시간 복잡도가 크다. 하지만 빠르게 구하는 방법은 2의 K승 씩 올라가서 비교하면서 빠르게 구할 ..
@Configuration과 싱글톤
·
BackEnd/스프링 핵심 원리 - 기본편
@Configuration과 싱글톤 @Configuration public class AppConfig { @Bean public MemberService memberService(){ return new MemberServiceImpl(memberRepository()); } @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPolicy()); } @Bean public DiscountPolicy discountPoli..
싱글톤 컨테이너
·
BackEnd/스프링 핵심 원리 - 기본편
웹 애플리케이션 싱글톤 싱글톤 패턴은 객체가 현재 나의 JVM에 하나만 존재는 것이다. 스프링 애플리케이션은 웹 애플리케이션이다. 물론 웹이 아닌 애플리케이션 개발도 가능하다. 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. 이 그림과 같이 여러 고객이 동시에 요청을 한다. 스프링 없는 순수한 DI 컨테이너 테스트 @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer(){ AppConfig appConfig = new AppConfig(); //1. 조회: 호출할 때 마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); //2. 조회: 호출할 때 마다 객체를 생성 Member..
사다리조작(백준_15684)
·
BackEnd/알고리즘 공부
https://www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net 문제 설명 결론은 가로선을 추가해 세로선의 결과가 자신의 번호가 나오게 해야 한다는 것이다. 그때 추가한 가로선의 개수를 출력하는 문제이다. 단 추가할 수 있는 가로선은 최대 3개이다. 문제에 대한 아이디어 및 구 이렇게 어떤 것을 추가하고 빼는 문제들은 브루트 포스를 사용해서 모든 경우를 검사해 보는 경우가 많다. 그래서 나도 이 문제를 풀 때 2차원 배열로 사다리를 만들고 하나씩 추가해 가면..