스프링 시큐리티란?스프링에서 제공해주는 인증, 인가, 보안에 대한 기능을 제공해주는 프레임워크인증, 인가, 보안 처리를 가진 각각의 필터들이 체인 형태를 이루며 순차적으로 처리(서블릿 컨테이너에서 동작, 즉, 스프링 컨텍스트 들어오기 전, 디스패처 서블릿 들어오기 전)스프링 컨텍스트 영역으로 들어오지 않지만 스프링 빈을 사용할 수 있다.(프록시를 통해 처리 가능)인증(Authentication)은 사용자의 신원을 확인하는 절차 인가(Authroization)는 인증된 사용자에게 자원에 대한 접근 권한을 부여하는 절차 스프링 시큐리티의 인증방식Credential 방식 : username, password를 이용한 방식폼 기반 로그인(아이디 비밀번호 입력하여 로그인)토큰 기반 => 다양한 인증방식 있지만 모..
불변 객체는 상태 변경이 불가능한 객체이다.수정자 메서드를 막고 read-only 메서드만 제공하며 참조 속성의 불변성을 지키기 위해 방어적 복사 메서드가 제공되기도 한다. ex) String, 원시타입의 래퍼타입(Boolean, Integer, Float, Long, Double), ResultSet 불변객체 생성1. 접근지정자 private 지정2. final 선언 3. 수정자 메서드 제공 금지 외부에서 접근이 불가하도록 private으로 선언하고, final을 통해 초기화 이후 값 변경이 불가하게 만든다.수정자 메서드를 제공하지 않음으로써 값이 변경되지 않음을 보장한다.public class Member { private final String email; private final Strin..
인터페이스란 구현체들의 동일한 행위를 보장한 추상 자료형으로 일종의 계약서 또는 설계서이다.추상클래스란 하나 이상의 추상 메서드를 포함한 클래스를 추상 클래스라고 하며 복제와 확장의 목적으로 쓰인다.(추상 메서드 없이 추상 클래스 선언 가능하나 구체 클래스와 차이가 없음) 인터페이스와 추상클래스는 모두 인스턴스화가 불가하고 구현체에서 추상 메서드를 반드시 오버라이딩 해야한다는 공통점이 있다.허나, 인터페이스와 추상 클래스는 구조적으로 큰 차이가 있고, 이로인해 그 사용성에도 큰 차이점이 있다. 인터페이스와 추상클래스의 차이점1. 구현부의 존재여부 : 캡슐화인터페이스는 메서드의 구현부가 없는 추상 메서드로만 이루어져있다. 이에 반면 추상 클래스는 메서드의 구현부가 존재한다."추상 클래스"의 구현부는 하위 ..
SOLID 원칙이란?객체지향 프로그래밍 설계의 다섯가지 기본 원칙으로 높은 응집도와 낮은 결합도 확장성 있는 시스템을 갖추도록 함SRP(Single Responsibility Principle) : 단일 책임 원칙OCP(Open/Close Principle) : 개방/폐쇄 원칙LSP(Liskov Substitute Principle) : 리스코프 치환 원칙ISP(Interface Segregation Principle) : 인터페이스 분리 원칙DIP(Dependency Inversion Principle) : 의존성 역전 원칙 1. SRP(Single Responsibility Principle) : 단일 책임 원칙모듈이나 클래스는 하나의 책임을 가져야 한다클래스를 변경해야하는 이유는 오직 하나 뿐이어야..
백준 1003번 - dp난이도 - 실버 3 더보기더보기피보나치 함수시간 제한메모리 제한제출정답맞힌 사람정답 비율 문제다음 소스는 N번째 피보나치 수를 구하는 C++ 함수이다.int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); }}fibonacci(3)을 호출하면 다음과 같은 일이 일어난다.fibonacci(3)은 fibonacci(2)와 fibonacci(1) (첫 번째 호출)을 호출한다.fibonacc..
백준 2579번 - dp난이도 - 실버 3더보기문제계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다.계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다.연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다.마지막 도착 계단은 반드시..
백준 1463 - dp 난이도 - 실버 3 더보기 1로 만들기 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 예제 입력 1 2 예제 출력 1 1 예제 입력 2 10 예제 출력 2 3 정답풀이 : import java.io.*; import java.util.*; public class Main{ public stati..
백준 2839 - dp, dfs, 그리디난이도 - 실버4 더보기더보기설탕 배달 문제상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. 입력첫째 줄에 N이 주어진다. (3 ≤ N ..
