파일 업로드기본적으로, 파일을 업로드하는 방식에는 파일 자체를 받아서 DB에 적재하는 방법이 있고, 파일경로만 저장을 한 후, spring server 에 저장되어있는 파일을 불러와서 사용하는 방식이 있다.DB에 파일을 적재하는 방식은 조회하는데에도 영향이 있고, DB사이즈가 커지는 부담도 있어서 2번째 방식인 파일경로를 저장하는 방식을 택했다.참고)spring의 경우, 기본적으로 파일업로드를 할 수 있는 제한 사이즈는 1MB이다.(spring.servlet.multipart.max-file-size=5MB) application.properties에서 수정 가능함 파일 도메인uploadFile의 이름은 업로드 당시에 사용한 이름storeFileName의 경우 서버에 적재할 파일 이름이다 구분한 이유 :..
Repository 구성Repository로 의존성을 Interface로 두고, Memory 버전과 DB버전을 나누어서 진행Memory 버전으로 빠르게 개발하고, 후에 DB를 연결시켜서 필요한 부분만 Repository로 진행OCP / DI를 지켜가며 개발 구성 AppConfig@Configuration@ComponentScanpublic class AppConfig implements WebMvcConfigurer { @Bean public MemberRepository getMemberRepository() {// return new MemberMemRespository(); return new MemberDBRepository(DataSourceConfig.da..
예외처리 흐름도기본적인 Exception 흐름도Controller에서 Exception 발생Tomcat으로 전달에러 코드 별로, 지정된 Mapping으로 다시 Controller로 전달전달된 페이지를 View 예외처리 방법1. Exception을 직접 구현하여, mapping Controller로 진행2. Spring이 자동으로, 에러코드별 html이 있다면 해당 html로 view 진행3. API형식일 경우, json 형태로 (혹은 다른 방식으로) 에러 코드 및 메시지 전달현재 프로젝트에 적용되어 있는 Exception 방식1번 방법으로, Exception을 직접 구현하여 원하는 Html로 맵핑 작업 예외처리 구현WebServerFactoryCustomizer를 통한 구현 (@Override cust..
로그인 서비스 흐름도로그인 인증)- 로그인 인증의 경우, Filter와 Interceptor를 이용하여 구현할 수 있다- Filter의 경우, spring의 Distpatcher에 들어가기 전에 필터링이 가능하므로 주로 Filter에서 로그인 인증이 일어난다현재 프로젝트 적용1차 로그인 인증 (Filter)Session값의 유무를 통해, Session을 가지고 있으면 Filter 통과2차 로그인 인증 (Interceptor)Session 값 유무 판단 + URL 변경을 통한 사용자 인증을 막고자 정규표현식을 이용한 필터링 진행ex) http://localhost/members/test1 -> http://localhost/members/admin (이동 방지) 로그인 인증 방법1) JWT2) Sessio..
문제트리의 지름이란, 트리에서 임의의 두 점 사이의 거리 중 가장 긴 것을 말한다. 트리의 지름을 구하는 프로그램을 작성하시오.트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 매겨져 있다.먼저 정점 번호가 주어지고, 이어서 연결된 간선의 정보를 의미하는 정수가 두 개씩 주어지는데, 하나는 정점번호, 다른 하나는 그 정점까지의 거리이다. 예를 들어 네 번째 줄의 경우 정점 3은 정점 1과 거리가 2인 간선으로 연결되어 있고, 정점 4와는 거리가 3인 간선으로 연결되어 있는 것을 보여준다. 각 줄의 마지막에는 -1이 입력으로 주어진다. 주어지는 거리..
https://www.acmicpc.net/problem/2178문제N×M크기의 배열로 표현되는 미로가 있다.101111101010101011111011미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다.위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다.(조건)첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수..
문제그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다.첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 문제분석DFS와 BFS를 차례대로 구현하면 된다.주의할점은 정점번호가 작은 것을 먼저 방문하므로, 인접 인덱스를 정렬을 해서 방문할 순서를 정해야..
너비우선탐색(BFS) 이란?그래프를 완전탐색하는 방법 중 하나로,시작 노드에서 시작해 가장 가까운 노드를 먼저 탐색하면서 탐색하는 알고리즘FIFO 구조로 탐색을 하며, 목표 노드에 도착하는 경로가 여러개 일 경우 최단경로를 보장한다.시간복잡도 O(노드 수 + 에지 수)로 이루어져 있다. 너비우선탐색의 핵심이론DFS와 마찬가지로 방문한 노드의 경우 체크하는 배열이 필요.또한, 인접 리스트를 구현하여 에지로 구성되어있는 배열을 구현해야함DFS와 다른점이 있다면, 스택으로 제거하는 것이 아닌 큐의 형태로 먼저 들어온 순서부터 제거하며 삽입 및 삭제를 진행.과정첫번째 노드부터 큐에 삽입하여, 큐를 시작하고 인접해 있는 노드를 차례대로 큐에 삽입한다큐에 먼저 들어간 노드부터 삭제하며, 인접한 노드들이 있다면 차례..
- Total
- Today
- Yesterday
- 티스토리챌린지
- 검증
- 깊이우선탐색
- 게시판
- JSON
- HTML5
- 코딩테스트
- BFS
- 우선순위 큐
- Thymeleaf
- DFS
- Java
- JDBC
- 오블완
- 이진탐색
- stack
- db
- 포트폴리오
- 게시판 프로젝트
- 클래스
- 타입변환
- 예외처리
- Spring
- SQL
- 알고리즘
- 기술면접
- 백준
- 정렬
- 버블정렬
- bean
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |