devnoong.log
JWT(Json Web Token) 개념 정리 (Java-jwt)
WEB/BACKEND 2024. 7. 13. 18:12

JWT란?토큰 인증 방식으로 기존 세션 인증방식과는 달리 stateless 한 인증 방식이다. 기본적으로 JWT 라이브러리가 다양하게 존재하는데, JAVA에서는 Java-jwt 와 jjwt 라이브러리를 많이 사용한다.(개인적으로  Auth0에서 개발한 java-jwt가 직관적이여서 사용하기 편하다고 느껴진다.) 자세한 내용은 아래 블로그를 참조https://dalichoi.tistory.com/entry/JWT-%ED%86%A0%ED%81%B0-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-java-jwt%EC%99%80-jjwt-%EA%B0%84%EB%8B%A8-%EB%B9%84%EA%B5%90 JWT 토큰 라이브러리 java-jwt와 jjwt 간단 비교경험이 많지 ..

article thumbnail
[JAVA] JAVA 객체 정렬 및 데이터 비교하는 방법 (compareTo 오버라이딩)
JAVA 2023. 7. 7. 14:26

일반적으로 정렬 알고리즘 (Arrays.sort() , Collections.sort() ) 은 'compareTo' 메서드의 반환값을 기준으로 정렬을 수행한다. 객체들간의 비교를 진행 하기 위해서는 Comparable 인터페이스를 구현하여 'compareTo' 메서드를 항상 오버라이딩(Override)하여 재정의 하여 사용한다. 구현되어 있지 않으면, 정렬 알고리즘을 사용 할 수가 없다. compareTo 메서드 반환값 음수 compareTo메서드 반환값이 음수일 경우에는 현재 객체가 실제로 크던 작던 상관하지 않고, 비교 대상 객체보다 작은것으로 판단하여 현재 객체를 정렬시 앞쪽(=유지)에 위치하게 된다. 만약 현재 객체가 비교대상보다 작은 값이고 'compareTo' 메서드의 반환 값이 음수라면 현..

[JAVA] 프로그래머스 Level1 [1차] 비밀지도
코테/프로그래머스 2023. 6. 11. 16:14

[JAVA] 프로그래머스 Level1 [1차] 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. "지도 1"과 "지도 2"는 각각 정수 배열로 암..

[JAVA] 프로그래머스 Level1 삼총사
코테/프로그래머스 2023. 6. 11. 15:19

[JAVA] 프로그래머스 Level1 삼총사 문제 설명 한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다. 한국중학교 학생들의 번호를 나타내는 정수 배열 number가 매개변수로 주어질 때, 학생들 중 삼총사를 만들 수 있는 방법의 수를 ret..

[JAVA] 프로그래머스 Level1 직사각형 별찍기
카테고리 없음 2023. 6. 9. 16:30

[JAVA] 프로그래머스 Level1 직사각형 별찍기 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. 제한 조건 n과 m은 각각 1000 이하인 자연수입니다. 예시 입력 5 3 출력 ***** ***** ***** 문제풀이 StringBuilder sb = new StringBuilder(); IntStream.range(0,a).forEach(s->{sb.append("*");}); IntStream.range(0,b).forEach(s->{System.out.println(sb.toString());});

[JAVA] 프로그래머스 Level1 부족한 금액 계산하기
코테/프로그래머스 2023. 6. 9. 15:17

[JAVA] 프로그래머스 Level1 부족한 금액 계산하기 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다. 놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요. 단, 금액이 부족하지 않으면 0을 return 하세요. 제한사항 놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수 처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,00..

[JAVA] 프로그래머스 Level1 정수 내림차순으로 배치하기
코테/프로그래머스 2023. 6. 8. 17:21

프로그래머스 Level1 정수 내림차순으로 배치하기 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이상 8000000000 이하인 자연수입니다. 입출력 예 n return 118372 873211 문제풀이 long n = 118372; String[] sArray = String.valueOf(n).split(""); // 배열 생성 Arrays.sort(sArray,Collections.reverseOrder()); //내림차순 정렬 StringBuilder sb = new StringBuilder(); //문자열 변환 for(String..

[JAVA] 오름차순/내림 차순 정렬 (INT,LONG,DOUBLE,CHAR,STRING,LIST)
JAVA 2023. 6. 8. 15:22

LONG / INT 변수 LONG타입과 INT타입의 변수에 대한 각 자리수에 대한 값을 정렬된 값으로 변경해 새로 저장할 필요가 있다. 이를 위해 각 자리수에 대한 값을 가지고 있는 배열 객체를 생성한다. int n = 546545348; or long n = 546545348; String[] array = String.valueOf(n).split(""); //배열 생성 오름차순 정렬 Arrays.sort 메서드를 이용해 오름차순 정렬을 수행한다. Arrays.sort(array); //오름차순 정렬 내림차순 정렬 Arrays.sort메서드와 Collections.reverseOrder 메서드를 이용해 내림차순 정렬을 수행한다. Arrays.sort(array,Collections.reverseOrd..

[Java] String vs StringBuilder vs StringBuffer 비교하기
JAVA 2023. 5. 8. 16:14

String vs StringBuilder vs StringBuffer 위의 세 클래스는 모두 문자열을 관리하고 저장하는 클래스입니다. 다만, 약간의 차이와 성능적인 면에서 다른 점을 보입니다. String String 클래스는 불변(immutable)객체라는 큰 특징이 존재합니다. String 클래스는 문자열을 저장하기 위해서 내부적으로 'char' 배열을 사용하여 저장하는데, 저장하는 char [] 를 보면 final 로 선언되어 있는 점을 확인 할 수 있습니다. 즉, String 객체는 불변객체이므로 문자열 연산이 수행될때마다 새로운 'String' 객체가 생성되며 객체의 해시코드 값이 계산됩니다. 이러한 해시코드 값은 최초 한번만 계산되어 캐싱 되어 메모리에 저장하고 있습니다. 단, 새로운 Str..

[이펙티브자바] 생성자 대신 정적 팩터리 메서드를 고려하라
JAVA/이펙티브자바 2023. 4. 17. 17:15

이펙티브 자바 3편의 2장 아이템 1 생성자 대신 정적 팩터리 메서드를 고려하라를 정리한 글이다. 정적 팩터리 메소드란? new를 통한 객체 생성 방법 대신 클래스에 static 정적 메소드(=클래스 메소드) 를 정의하여, 객체 생성이 가능하도록 하는 기법으로 객체 생성을 캡슐화 한 디자인 패턴이다. // public 생성자를 이용한 객체 생성 Car car = new Car("dog"); // 정적 팩토리 메서드를 이용한 객체 생성 // Integer Wrapper 객체를 반환 Integer i = Integer.valueOf(10); // 생성할 클래스가 아닌 다른 클래스에 정의된 정적 팩토리 메소드 BufferReader br = Files.newBufferedReader(path) 위의 코드를 보..