전체 글 78

멀리뛰기(DP:Dynamic Programming)

class Solution { static int answer = 0; public long solution(int n) { int[] dp=new int[n+2]; dp[1]=1; dp[2]=2; for (int i = 3; i 총 칸방법 수방법 예시11(1)22(1 + 1), (2)33(1 + 1 + 1), (1 + 2), (2 + 1)45(1 + 1 + 1 + 1), (1 + 1 + 2),(2 + 2), (2 + 1 + 1), (1 + 2 + 1)표의 규칙성을 따라서 dp[i]=dp[i-1]+dp[i-2]임을 알 수 있다. 참고: https://hstory0208.tistory.com/entry/Java자바-프로그래머스-Lv2-멀리-뛰기D..

[Spring] filter, servlet filter

[ 목차 ]공통 관심사로그인 여부를 확인하는 로직을 모든 메서드마다 작성해놓아야 하는 경우, 로그인 여부를 확인하는 로직을 공통 관심사라고 한다.공통 관심사는 Servlet Filter, Spring Intercepter를 사용한다.Servlet Filter공통 관심사 로직 처리공통된 로직을 중앙 집중적으로 구현하여 재사용성이 높고 유지보수가 쉽다.모든 요청이 하나의 입구를 통해 처리되어 일관성을 유지한다.filter는 개발자가 순서를 지정하여 자유롭게 추가할 수 있다.HTTP 요청 및 응답 필터링Filter Chain여러 개의 필터가 순차적으로 적용될 수 있다.filterChain.doFilter(request, response); 다음 필터로 제어를 전달한다. doFilter()실제 필터링 작업을 수..

코딩/자바 2025.02.05

[Spring] Token, JWT

[ 목차 ]Token사용자의 권한을 증명하고 요청의 유효성을 검증하는데 사용되는 디지털 문자열Token은 서버가 아닌 클라이언트에 저장되어 서버의 부담을 덜 수 있다.Cookie는 웹 브라우저에만 존재하여 모바일 앱 등의 다양한 클라이언트에서 인증을 처리할 수 없다.Token 방식은 Stateless를 기반으로 하여 확장성이 뛰어나다.인증된 사용자임을 확인하기 위한 고유한 서명을 포함하여 위조된 요청인지 확인할 수 있다.JWT(JSON Web Token)인증에 필요한 정보들을 암호화시킨 JSON 형태의 Token을 의미한다. JSON 데이터 포맷을 사용하여 정보를 효율적으로 저장하고 암호화로 서버의 보안성을 높였다. JWT 구조XXXXXX.YYYYYY.ZZZZZZ(Header).(Payload).(Sig..

코딩/자바 2025.02.05

[Spring] Session

[ 목차 ]Cookie를 사용한 방식은 여러가지 보안 문제가 있다. 결국 보안 문제를 해결하려면 중요한 정보는 모두 서버에서 저장해야한다. Client와 서버는 예측이 불가능한 임의의 값으로 연결해야 한다.Session서버에서 중요한 정보를 보관하며 로그인 연결을 유지하는 방법을 Session 이라고 한다. 앞서 배운 Cookie는 중요한 정보를 Client측에서 보관하고 있는것이다.session 생성 순서로그인에 성공하면 Server에서 임의로 만든 Session ID를 생성한다.Session ID는 예측이 불가능해야 한다.UUID와 같은 값을 활용한다.생성된 Session ID와 조회한 User 인스턴스를 서버의 Session 저장소에 저장한다.서버에 유저와 관련된 중요한 정보를 저장한다.sessio..

코딩/자바 2025.02.05

[Spring] Cookie

[ 목차 ]Cookie사용자의 웹 브라우저에 저장되는 정보로 사용자의 상태 혹은 세션을 유지하거나 사용자 경험을 개선하기 위해 사용된다.브라우저를 완전히 종료하고 다시 열어도 사용자 정보가 유지되어야 한다. 로그인과 같은 기능에서 사용.set-cookie: sessionId=abcd; expires=Sat, 11-Dec-2024 00:00:00 GMT; path=/; domain=spartacodingclub.kr; Secure Cookie HeaderSet-CookieServer에서 Client로 Cookie 전달(Response Header)CookieClient가 Cookie를 저장하고 HTTP 요청시 Server로 전달(Request Header)만료 날짜를 입력하면 해당 날짜까지 유지한다.exp..

코딩/자바 2025.02.05

[Spring] Validation

[ 목차 ]✏️Validation특정 데이터의 값이 유효한지 확인하는 단계🔍Validation의 역할검증을 통해 적절한 메세지를 유저에게 보여주어야 한다.검증 오류로 인해 정상적인 동작을 하지 못하는 경우는 없어야 한다.사용자가 입력한 데이터는 유지된 상태여야 한다.🔍검증의 종류프론트 검증해당 검증은 유저가 조작할 수 있음으로 보안에 취약하다.보안에 취약하지만 그럼에도 꼭 필요하다ex) 비밀번호에 특수문자가 포함되어야 한다면 즉각적인 alert 가능 → 유저 사용성 증가서버 검증프론트 검증없이 서버에서만 검증한다면 유저 사용성이 떨어진다.API Spec을 정의해서 Validation 오류를 Response 예시에 남겨주어야 한다.API 명세서를 잘 만들어야 그에 맞는 대응을 할 수 있다.서버 검증은 ..

코딩/자바 2025.02.05

[Spring] IOC/DI, 싱글톤 패턴

[ 목차 ]IOC(제어의 역전, Inversion Of Control)객체 관리를 개발자가 아닌 컨테이너가 담당하는 것을 말한다.DI(의존성 주입, Dependency Injection)Spring이 객체 간의 의존성을 자동으로 주입해주는 것을 말한다. 객체를 생성할 필요 없이 Spring이 주입해주는 방식.의존성 주입 방법@Autowired 는 의존성을 자동으로 주입할 때 사용하는 Annotation 이다.기본적으로 주입할 대상이 없으면 오류가 발생한다.(required = true)생성자 주입대부분의 framework가 생성자 주입 방식을 권장한다.생성자를 통해 의존성을 주입하는 방법.최초에 한번 생성된 후 값이 수정되지 못한다.[불변, 필수]생성자가 하나인 경우 생략이 가능하다.// 생성자 주입 방..

코딩/자바 2025.02.05

[Spring] Spring Bean

[ 목차 ][Spring container]객체(Bean)을 생성 및 관리하고 의존성을 주입하는 역할 담당[Spring Bean]Spring Container가 관리하는 객체. Bean을 new 키워드 대신 사용한다.Spring Bean의 특징Spring 컨테이너에 의해 생성되고 관리된다.기본적으로 Singleton으로 설정된다.의존성 주입(DI)을 통해 다른 객체들과 의존 관계를 맺을 수 있다.생성, 초기화, 사용, 소멸의 생명주기를 가진다.Bean 등록 방법1. 자동 빈 등록어노테이션을 통해 Bean으로 등록@Component: bean으로 등록하려는 클래스 위에 사용. @ComponentScan(basePackages = "com.example"): com.example 패키지를 스캔해서 compo..

코딩/자바 2025.02.04

[Spring] SOLID 원칙

SOLID 원칙객체 지향 설계의 5가지 기본 원칙. 유지보수성, 확장성, 유연성을 높이기 위함이다.1. Single Responsibility Principle하나의 클래스는 하나의 책임만 가져야 한다. 한 가지 기능 이외의 다른 기능을 담당하지 않아야 한다. 2. Open Closed Principle새로운 기능을 추가할 때 기존 코드를 수정하지 않고(closed) 확장할 수 있도록(open) 설계해야 한다.다형성을 활용해서 해결한다. ex) 새로운 도형이 추가되는 경우 shape 인터페이스만 구현하면 된다.public interface Shape { double calculateArea();}public class Circle implements Shape { public double ca..

코딩/자바 2025.02.04