본문 바로가기

ALL

[Intellij] Git Shelve와 Stash의 차이 1. Git Shelve - 잠시 다른데 다녀올거니까. 작업하던 거 선반에 올려두자!git shelve를 하면 해당 Branch의 임시 저장소에 저장된다.현 branch의 변경사항을 들고, 다른 branch에 놔두는 행위를 못한다.해당 브랜치에 작업 하던 것을 임시 저장하고, 다른 branch에서 일 본 뒤에 다시 돌아와서 unshelved 하면 된다.임시저장한 거 빼내 오려면저걸 눌러서 다시 changes로 들고와야 한다.unshelved 했다고 해서 shelf에 저장된 임시 저장 내역이 사라지지 않는다. 없애고 싶다면 삭제하자.2. git stash / unstash - 현 branch에서 작업한 내역 들고 다른 branch로 갈래. 거기서 작업 계속 이어 갈래Intellij 에서는 git -> un.. 더보기
특화 프로젝트 Spring Security 분석 1. 개요4월 5일부로 특화 프로젝트가 끝났다. 이번 프로젝트에서 보안을 맡았는데, 항상 내가 맡은 파트를 정리해야겠다는 생각을 했다. 벌써 2주 반이 흘렀기에, 더 까먹기 전에 미리 정리해두려한다.해당 프로젝트의 전문을 보고 싶다면, 다음을 확인하자.SSAFY 10기 구미 2반 특화프로젝트 WALK_WALK2. 전개도3. 코드 분석(1) JwtAuthFilter 안에 있는 JwtUtil 분석import io.jsonwebtoken.*;import io.jsonwebtoken.security.Keys;import jakarta.annotation.PostConstruct;import jakarta.servlet.http.HttpServletRequest;import lombok.RequiredArgsCo.. 더보기
💜 백준 2108 통계학 JAVA 1. 문제 설명[문제 링크](https://www.acmicpc.net/problem/2108)산술 평균, 중앙값, 최빈값, 범위를 구하면 된다. 2. 푸는 원리 산술 평균 -> 총합 / 머릿수 중앙값: 중앙에 있는 녀석 계산 최빈값: TreeMap을 사용 Key = 입력 받은 값, value = 해당 값이 나온 횟수, TreeMap은 순서가 보장됨으로, 입력을 한번 정렬한 후에 TreeMap에 넣으면 된다. 범위 : 최대값 - 최소값 3. 코드 분석import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.TreeMap;/* * .. 더보기
JWT에 대하여 1. JWT란 무엇인가?기본적인 토큰 인증 방식을 따르고, 거기서 토큰 자체를 강화한 방식이라 생각하면 된다.원래의 토큰 인증 기반에서 요청자가 보내온 ID/PW 가 DB에 존재하면 (우리 회원이 맞으면) 그 요청자에게 자신들의 API를 쓸 수 있는 허가증인 토큰을 전해줬었다. 여기서 더해 JWT의 경우 토큰을 만들 때, 사용자의 정보(간단한 개인정보 등 +@)를 암호화하여 만든다.이렇게 되면 무엇이 좋을까?아까 토큰 자체가 사용자에 대한 개인 정보라고 하였다. 회원가입을 하여 토큰을 받았다면, 이후 API 요청을 할 때, 토큰을 Header나 Cookie에 넣어서 보낸다. 만약 클라이언트가 원하는 요청이 사용자의 개인정보에 대한 요청이라면, 서버에서는 DB를 조회할 필요없이 토큰을 복호화 하여 그 안의.. 더보기
💜 백준 10250 ACM 호텔 1. 문제 설명 [ACM호텔 문제링크](https://www.acmicpc.net/problem/10250) 2. 푸는 원리 그냥 반복문 돌리면 된다. 자신감을 되찾기 위해서 풀었다. 3. 코드 분석 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; /* * 10250 ACM 호텔 * */ public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamRe.. 더보기
💜 백준 11729번 하노이 탑 이동순서 1. 문제 설명 11729번 하노이 탑 이동 순서 링크 이동 순서를 Log로 찍어야 한다. 2. 푸는 원리 재귀를 이용한다. (0) 재귀함수에는 출발지, 경유지, 도착지, 도착지까지 옮겨야 하는 원판의 번호가 있다. (원판의 번호가 큰 것이 크기가 큰 것이다. 따라서 제일 작은 원판은 번호가 1이다.) (1) 실제로 원판을 옮기는 것이 아니라, 그 이동 순서에 대한 로그만 찍는다. [기저조건] (1)옮겨야하는 원판의 번호가 0이 되면 그냥 return 한다. [계산] (1) 현재 옮겨야할 원판보다 작은 모든 원판을 경유지로 옮기는 Log를 찍는다. (재귀 이용) (2) start와 end를 StringBuilder에 담아서 현재 원판의 이동을 Log로 찍는다. (StringBuilder에 담는 행위 자체.. 더보기
💜 백준 1874번 스택 수열 1. 문제 설명 1874 스택수열 문제 설명 1~N까지 오름차순으로 스택에 하나씩 집어넣는다. 스택에 하나씩 들어올 때, 적절히 POP하여, 문제에서 원하는 수열을 만들 수 있는지 구하라 만들 수 있다면 PUSH = + , POP = - 로 그간 해왔던 명령어를 출력하고, 만들 수 없다면 NO를 출력하라 2. 문제 푸는 방법 A. 첫 번째 방법 (STACK 자료 구조 이용) (1) 답이 되는 수열(이하 ans)과 스택에 입력하는 순서인 오름차순 수열(이하 arr)을 배열에 저장했다. (2) 둘 다 지시자를 가지고 있다. ans의 지시자를 ansIndicator, arr의 지시자를 arrIndicator라고 할 때, ​ a. arrIndicator가 가르키고 있는 것이 ansIndicator보다 작거나 같.. 더보기
💜 백준 7490. 0 만들기 JAVA 1. 문제 설명 0 만들기 문제 링크 3~9까지 수가 주어지는데, 그 사이 사이에 + 혹은 - 혹은 두 수 붙이기를 사용하여, 총 합을 0으로 만들어라. 2. 푸는 원리 이런 문제는 일일히 char로 분할하여 가지고 있는 것보다, String으로 한번에 가지고 있다가 StringTokenizer로 푸는 것이 좋다는 것을 알았다. (1) DFS를 돌린다. (-> String에 다음 depth의 값을 추가하는 식) (2) 한번은 두 수 사이에 +를 넣고, 한번은 두 수 사이에 -를 넣고 한번은 두 수 사이에 공백을 넣고 경우를 진행한다. (3) 마지막 수까지 String 문자열에 쌓이면, cal이란 이름의 함수에 넣어서 계산한다. (4) cal의 역할은 다음과 같다. ​ a. 공백인 부분을 합쳐서 하나의 수.. 더보기