문제 상황익명 메시지 프로젝트를 진행하는 과정에 access token 재발급 요청이 수십 건 들어오는 문제가 발생 원인코드를 다시 확인해 보니 아래 1~3번 과정이 계속 반복되며 무한 요청 문제가 발생하고 있었다. 1. 서버의 Filter에서 access token을 재발급하라고 return 시킴.2. 클라이언트는 access token 재발급 요청을 서버에게 보냄.3. 서버는 토큰이 만료됐다고 다시 return 시킴. 해결재발급 요청 URI 인 경우 Filter에서 리턴 시키지 않고 통과시키는 방식으로 해결!! Filter에 아래 코드를 추가하여 문제 해결 // 건너뛸 URIprivate final List excludedUris = Arrays.asList("/api/v1/auth..
인코딩, Encocding 암호화, Encryption What is it? 데이터를 한 형식에서 다른 형식으로 변환하는 것 다른 사람으로부터 비밀이 유지되도록 데이터를 변환하는 것 사용 목적 보안을 목적으로 사용되지 않음. 데이터의 무결성, 유용성을 유지하고자 사용 보안을 목적으로 사용 데이터의 기밀성을 유지하고자 사용 key 사용 유무 X 인코딩, 디코딩에 key는 필요하지 않음. O 암, 복호화에 key가 필요 key에 따라 대칭키, 공개키 알고리즘으로 분류 예시 ASCII, UNICODE, URL encoding, Base64 AES, RSA, Blowfish 마무리 민감한 데이터를 보호하기 위해 인코딩을 사용하면 인코딩 된 표현에서 원본 데이터를 쉽게 재구성할 수 있기 때문에 보안성이 떨어진다...
사용한 자료구조 및 개념 : LinkedList, Queue 💡 문제풀이 아이디어 및 어려웠던 점 💫 아이디어 1️⃣ 톱니바퀴를 회전시키기 위해 추가, 삭제할 수 있으면서 index가 있는 LinkedList를 사용하자. ArrayList는 내부적으로 배열로 되어 있기 때문에 추가 삭제 시 N만큼 다시 데이터를 복사, 붙여 넣기 해야 하지만, LinkedList는 추가, 삭제 시 해당하는 노드만 변경해 주면 되기 때문에 좀 더 효율적일 것 같다는 생각에 LinkedList를 사용하였다. 2️⃣ Queue를 사용하자. 왜냐하면 모든 톱니바퀴는 순차적이 아니라 동시에 회전하기 때문에 회전해야 하는 톱니바퀴와 방향을 확인 후, 큐에 담아주고 그 후에 큐에 담긴 톱니바퀴들을 한꺼번에 회전시켰다. 👻 어려웠던 점..
사용한 자료구조 및 개념 : 순열 💡 문제풀이 아이디어 및 어려웠던 점 💫 아이디어 1️⃣ 순열을 이용하자. 2️⃣ A를 이용하여 C를 만들 때 문자열 그대로 가지고 다니자. 왜냐하면 0으로 시작하면 안 되는 C의 조건을 좀 더 쉽게 확인하기 위해 문자열 그대로 사용하였다. 👻 어려웠던 점 🚨처음에는 예제 2번을 이해하지 못했다. A가 1000, B가 5였는데 답이 -1이어서 "0001"도 있지 않나? 생각했다. ❗해결 : 문제를 잘 읽자!!! C는 0으로 시작되면 안 되기 때문에 1000만 될 수 있는데 1000은 5보다 크다. 따라서 조건을 만족하는 수가 없기 때문에 -1을 출력하는 것이었다. Solution Code & 주석 import java.io.BufferedReader; import jav..
생성자 constructor 자바에서 생성자는 클래스가 생성될 때 호출되는 메서드와 유사한 코드 블럭 - 객체를 초기화하는 데 사용됨.(객체의 필드 값을 설정) - 클래스에 생성자가 없으면 Java 컴파일러가 default 생성자를 만듦. 📢 생성자 규칙 1. 생성자의 이름은 Class 이름과 동일해야 함. class Bike{ Bike(){} // 생성자 } 2. return 값이 없음. - void 등 return type을 명시하면 안 됨. 3. abstract, final, static 키워드를 붙일 수 없음. 📔 생성자의 종류 1. 기본 생성자 - 파라미터가 없는 생성자 2. 파라미터가 있는 생성자 기본 생성자 - 객체 인스턴스 변수의 타입에 따른 default 값(0이나 null 등)으로 설정..
자바 실행 과정 1. 자바 컴파일러를 통해 자바 소스 파일(.java)를 바이트코드(.class)로 변환 ➡️ 1차 컴파일 컴파일 명령어 : "javac 파일명.java" 2. JVM에 의해 바이트코드(.class) 파일을 메모리에 로딩하고 그와 동시에 운영체제 플랫폼에 맞게 리소스들을 다시 재컴파일 하여 실행 ➡️ 2차 컴파일 바이트코드 변환 후 실행 명령어 : "java 파일명" JVM(Java Virtual Machine) ❓Java 프로그램을 컴파일하여 만들어지는 바이트코드(.class)를 실행시키기 위한 가상 머신 자바 프로그램을 운영체제에 상관없이 실행할 수 있게 해주고 프로그램 메모리를 관리하고 최적화해줌. 자바는 exe가 아니기 때문에 더블 클릭하여 실행할 수 없음. 자바 소스 파일을 1차..
1436번: 영화감독 숌 666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워 www.acmicpc.net 개요 문제에서 말하는 종말의 수란 숫자 6이 연속으로 3개 이상 들어가는 수를 말한다. 예를 들어 666, 10666, 6666, 6661은 모두 종말의 수이다. 그러나 6616, 62626은 종말의 수가 아니다. 6이 연속으로 3개 이상 나오지 않기 때문이다. 입력으로 N이 주어지고, N번째로 작은 종말의 수를 출력하면 되는 문제이다. (1≤ N ≤ 10,000) N번째로 작은 종말의 수를 예시를 통해 알아보자. if ( N == 3) 1번째로 작은 종말의 ..