[스프링부트] - Controller Advice
·
Spring
Controller Advice란API동작 중에 예외가 발생했을 때, 예외를 바로 사용자에게 반환하는 것은 불필요하고, 심하면 공격까지 받을 수 있다.그래서 이를 적절히 처리해주는 역할을 하는 것이 바로 Controller Advice읻. @Controller Advice이 어노테이션 붙은 클래스 파일은 애플리케이션 내 모든 컨트롤러에서 발생하는 예외를 처리할 수 있다.즉, 매핑 메서드 실행중 발생한 예외를 가로채는 exceptions interceptor라고 생각하면 된다. Controller Advice 사용이유?예외처리를 한 곳에 묶어서 편하게 관리처리가 제대로 되지 못한 부분에 예외발생 시 브라우저에 모든 예측하지 못한 예외도 한꺼번에 처리 가능컨틀롤러의 역할에 집중할 수 있고, 코드 중복 제거,..
[스프링부트] - AOP에 대해서 알아보자
·
Spring
AOPAOP는 관점지향 프로그래밍으로, 관점을 기준으로 다양한 기능을 분리해서 보는 프로그래밍이다.부가기능(공통적으로 적용될 기능)과 그 적용처를 정의하고 합쳐서 모듈로 만든 것이다. AOP의 목적관점지향 프로그래밍은 객체지향 프로그래밍을 보완하기 위해 쓰인다. AOP의 사용분야메소드의 성능 테스트트랜잭션 처리예외 반환로깅, 인증, 권한 처리 등한마디로 말해서 공통에 적용되는 시간 측정로직을 모든 파일에 넣어서 사용하는거보다 하나의 파일을 만들어서 시간측정로직을 적용하면 된다. → 따로 정리해서 일괄적으로 적용이 가능하다. AOP 적용 방식컴파일 시점AspectJ 컴파일러가 일발 .java파일을 컴파일할 때 가기능을 넣어서 .class파일로 컴파일해주는 것을의미한다. 이 동작을 Aspect와 실제 코..
[백준/Python] - 1912 연속합
·
백준[파이썬]
https://www.acmicpc.net/problem/1912 제출코드N = int(input())N_list = list(map(int,input().split()))for i in range(1,N): N_list[i] = max(N_list[i-1] + N_list[i], N_list[i])print(max(N_list)) 일단 이 문제는 진짜 전형적인 DP문제인거 같다. 조건을 주면서 문제를 풀어야한다. → memo 방식을 사용해야됨i번째 데이터 합을 계산했을 때 최대값을 지속적으로 기록한다.i-1(이전까지) 합이 i번째 숫자보다 작은경우 i번째를 최대값으로 한다.위 조건을 만족시켜놓은 것이 N_list[i] = max(N_list[i-1] + N_list[i], N_list[i])해당..
[백준/Python] - 1904 01타일
·
백준[파이썬]
https://www.acmicpc.net/problem/1904 제출코드N = int(input())memo = [1,2,3]if N 요것도 파도반 수열과 비슷하게 문제를 접근하면 쉽게 풀 수 있다. N = 1 → 1개N = 2 → 2개N = 3 → 3개N = 4 → 5개N = 5 → 8개피보나치와 동일하게 점화식을 세우면다음과 같이 점화식을 세울 수 있다.그럼 우리는 그냥 이 값을 memo리스트에다가 append만 해주면 끝!
[내맘대로 토이프로젝트] - 스프링부트 게시판 로그인 기능
·
토이프로젝트
필자는 흐름도만 익히는 아주 기초적인 토이프로젝트를 실시할것이다. JPA를 사용할 것이기 때문에 엔티티 클래스와 레포지토리 클래스를 만들어준다. User.javapackage com.example.board.entity;import jakarta.persistence.Entity;import jakarta.persistence.GeneratedValue;import jakarta.persistence.GenerationType;import jakarta.persistence.Id;import lombok.Data;@Entity@Datapublic class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; pri..
[백준/Python] - 12865 평범한 배낭
·
백준[파이썬]
https://www.acmicpc.net/problem/12865제출코드N, K = map(int, input().split())arr = [[0,0]]for _ in range(N): arr.append(list(map(int ,input().split())))dp = [[0] * (K+1) for _ in range(N+1)]for i in range(1,N+1): for j in range(1,K+1): if j 베낭 문제 DP조건1. 최적 부문 구조: 큰 문제를 작은 문제로 나눌 수 있으며, 작은 문제의 답을 모아서 큰 문제를 해결 할 수 있다.2. 중복 부분 문제: 동일한 작은 문제를 반복적으로 해결한다. 배낭의 부분 문제를 적용하기 위해서 물건을 하나씩 고려하되 배낭..
[스프링부트] - Model 객체
·
Spring
우리는 저번에 Spring MVC를 알아봤다.View Model Controller로 이 세가지 구성요소를 보면 된다. Model 객체컨트롤러의 메서드는 Model이라는 타입의 객체를 파라미터로 받을 수 있다.Model객체는 key와 value로 이루어져있는 HashMap이다. @ModelAttribute와 차이점은?둘 다 메소드의 파라미터로 바인딩할 때 사용되지만 역할과 방식에 차이가 있다. 파라미터 레벨HTTP 요청 파라미터를 객체의 속성에 자동으로 매핑해주는 역할을 한다. 즉, 클라이언트가 보낸 데이터를 서버의 객체로 변환해주는 데이터 바인딩 기능이다.폼 제출 데이터를 객체로 받아서 처리할 때 유용메소드 레벨RequestMapping메소드가 실행되기 전에 특정 메소드를 실행하고, 반환 값을 자동으로..
[스프링부트] - 페이징
·
Spring
페이지네이션(Pagination)웹 사이트 게시판을 둘러볼 때, 게시글 목록 하단에 게시글을 일정 수로 나누어 페이지화 시켜놓은 것을 Pagination이라고 한다. 페이징 구현하기 위해서는?전체 데이터 개수를 가져와서 전체 페이지를 계산스타트 페이지 지정엔드 페이지 지정예상치 못한 페이지 범위 요청 예외처리이렇게 4가지를 생각해야된다. 우리는 Spring-Data-JPA 라이브러리의 Page와 Pageable인터페이스를 이용해서 쉽게 접근이 가능하다. PagePageable을 파라미터로 가져온 결과물은 Page 형태로 변환되면, Page사용시 복수개의 row를 가져오기 때문에Page>형태로 반환한다. PageablePageable은 JPA에서 DB 쿼리에 쉽고 유연하게 limit 쿼리를 사용할 수 있게..
[SWEA/Python] - 4875 미로
·
SWEA
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWTQeET6QlADFAVT SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 제출 코드from collections import dequeT = int(input())#상우하좌dr = [-1,0,1,0]dc = [0,1,0,-1]for a in range(1,T+1): N = int(input()) N_list = [] q = deque() for _ in range(N): N_list.append(list(map(int,input()))) ..
[백준/Python] - 1932번 정수 삼각형
·
백준[파이썬]
https://www.acmicpc.net/problem/1932 제출코드import sysinput = sys.stdin.readlineN = int(input())p = []for _ in range(N): p.append(list(map(int,input().split())))for i in range(1,N): for j in range(len(p[i])): if j == 0: p[i][j] += p[i-1][j] # p의 i번째 행의 길이 -1 ==> 끝 인덱스 elif j == len(p[i])-1: p[i][j] += p[i-1][j-1] else: p[i][j] ..