Java 18

스프링 3.0과 스프링 시큐리티 6에 대한 정보

스프링부트 3.0이상 Spring Security 기본 세팅 (스프링 시큐리티) - Nahwasa 스프링부트 3.0이상 Spring Security 기본 세팅 (스프링 시큐리티) 목차 [수정 사항] 2023-03-29 : 커스텀 어노테이션 적용하는 부분에서 소스코드에 잘못 들어간 코드가 있어서 삭제 1. 시작하기 전에 1.1 설정 이해 보다는 당장 시큐리티 설정 복붙이 필요한 분들에 nahwasa.com 여기 블로그를 참조해보자!

Java/Spring 2023.08.15

[자바 디자인 패턴] 싱글톤 패턴

문제 지금 게임의 환경 설정에 대한 부분을 구현하고 있다. 환경 설정은 그래픽, 소리와 같이 게임의 전반적인 요소에 대한 정보를 가지고 있기 때문에 모든 영역에서 환경 설정에 대한 정보를 제공할 수 있어야 한다. 또한 여러 개의 환경설정이 동시에 존재하면 일관성에 문제가 생기기 때문에 환경 설정은 한 개만 존재해야한다. 이를 해결하려면 어떻게 해야 할까? 싱글톤 패턴이란? 싱글톤 패턴이란 클래스에 인스턴스가 하나만 존재하게 만드는 것이다. 일반적으로 클래스를 생성한다는 것은 여러 개의 인스턴스를 생성하려는 목적으로 만들지만 데이터베이스에 접속하기 위한 클래스를 만든다고 가정했을 때 여러 인스턴스가 동시에 데이터베이스에 접근하도록 한다면 문제가 생길 것이다. 이런 문제를 해결하기 위해 오직 하나의 인스턴스..

[JAVA] 프로그래머스 멀리 뛰기

프로그래머스 멀리 뛰기 문제를 잘 보면 재미있는 규칙이 나온다. k가 1과 2로 이루어진 배열일 때 f(k)는 k 배열 속에 있는 1과 2를 나열하는 함수라고 해보자. 이때 동일한 숫자끼리 자리가 바뀌어도 하나의 경우의 수로 본다. 그러면 n = 1일 때, f([1]) = 1 n = 2일 때, f([2]) + f[1] = 2 n = 3일 때, f([1, 1, 1]) + f[1, 2] = 1 + 2 = 3 n = 4일 때, f([1, 1, 1, 1]) + f[1,1, 2] + f[2, 2] = 1 + 3 + 1 = 5 n = 5일 때, f([1, 1, 1, 1, 1]) + f[1,1, 1, 2] + f[1, 2, 2] = 1 + 4 + 3 = 8 n = 6일 때, f([1, 1, 1, 1, 1, 1]) +..

Java 2023.08.10

[JAVA] 최대 공약수와 최소 공배수 구하기

알고리즘 문제를 풀다보면 최대 공약수와 최소 공배수를 가끔 볼 때가 있는데 이에 대해 정리를 좀 해보려고 한다. 먼저 최대 공약수 자바코드는 다음과 같다. public int GCD(int a, int b) { while(true) { if(a % b == 0) return b; int r = a % b; a = b; b = r; } } 여기서 최대 공약수를 구하기 위해 유클리드 호제법을 사용했는데 위키백과에 따르면 유클리드 호제법은 다음과 같다. 즉 a mod b를 했을 때 나머지를 r이라고 하면 a, b의 최대 공약수는 b와 r의 최대 공약수와 같고 r = 0이면 b가 최대 공약수라는 것이다. 이걸 코드로 표현하면 위와 같은데 여기서 a ≥ b라는 조건때문에 크기를 비교하여 a, b를 설정하는 코드를..

Java 2023.08.09

[JAVA] String과 char

프로그래머스 문제를 풀다 String과 char의 성능에 대한 문제를 발견했다. Char를 이용한 비교 class Solution { boolean solution(String s) { boolean answer = true; int index = 0; char ch = ' '; if(s.charAt(0) == ')') return false; for(int i = 0; i < s.length(); i++) { ch = s.charAt(i); if(ch == '(') index++; else index--; if(index < 0) return false; } if(index == 0) return true; return false; } } String을 이용한 비교 class Solution { boo..

Java 2023.08.07

[JAVA] Comparator와 람다함수를 이용한 정렬

프로그래머스 문제를 풀면서 Comparator, lambda 함수를 이용하여 HashMap을 정렬할 때가 있는데 이때 항상 내림차순으로 정렬하되 값이 같으면 오름차순으로 정렬하는 문제가 나올 때가 있다. 그런 문제는 어김없이 Comparator나 lambda 함수를 이용해 정렬을 시도하는데 정렬하는 내용을 보면 내림차순에 대한 정렬기준은 있지만 오름차순에 대한 정렬기준은 없다. 그래서 어떤 방식으로 정렬되는지 실험을 좀 해보았다. import java.util.*; public class Main { public static void main(String[] args) { Map map = new HashMap(); map.put("A", 10); map.put("C", 10); map.put("B", ..

Java 2023.08.03

[JSP&Servlet] intellij에서 new servlet 문제

대부분 JSP&Servlet 책을 보면 eclipse를 이용해서 하지만 필자는 intellij에서 하고 싶어서 환경 세팅을 하는 중 2일간의 삽질 끝에 재미있는 사실을 알아냈다. 먼저 영상에서는 java enterprise나 web application 등으로 만드는데 필자가 사용하는 버전은 2023.1버전으로 여기서는 jakarta EE로 만들면 우리가 원하는 환경을 만들 수 있다. (jakarta EE로 만드는 법은 검색하면 잘 나옴) 또한 저렇게 한 후 new servlet을 통해 서블릿 파일을 만드는 경우가 많이 있는데 2023.1 버전에서는 지원을 하지 않는다. 그러므로 만약 사용하고 싶다면 내가 메뉴를 만들어 줘야 한다. 그 예시는 아래 링크로 걸어놓는다. Cannot create servle..

Java/JSP&Servlet 2023.06.29

[자바] 패키지에 클래스 생성이 안될 때

자바를 공부하면 패키지로 각 내용을 나누는 과정에서 클래스 생성이 불가한 현상을 발견했다. 그림을 보면 코틀린 클래스만 생성이 가능한 것이 보이는데 이는 자바에서 사용자의 실수를 줄이기 위해 예약어는 패키지 이름으로 지정할 수 없게 해놓았다. 패키지로 사용가능한 경우는 폴더모양에 검은 동그라미 표시가 나오지만 그렇지 않는 폴더는 그냥 폴더로 나온다. 또한 패키지로 사용할 수 없는 경우에는 패키지 이름 지정할 때부터 경고를 해주니 잘 보고 만들자!

Java 2023.03.21