스프링의 기본적인 실행 구조를 간단한 게시판 서비스를 구성하며 순차적으로 알아보자. 1. 우선 프로젝트를 만들고 나서 요청에 따른 controller를 자동 호출하기 위한 DispatcherServlet을 web.xml 문서에 추가해줘야 한다. ◎WEB-INF.web.xml spring_simple_board board org.springframework.web.servlet.DispatcherServlet board *.do index.jsp 이때, servlet의 이름은 dispatcher가 자동으로 찾기 때문에 위와 같이 이름을 작성했다면, servlet.xml은 반드시 board-servlet.xml 과 같이 생성해야 한다. 2. board-servlet.xml 파일을 생성하고, 해당 문서가 Ha..
JNDI(Java Naming Directory Interface)로 DB 연결의 정보를 Context.xml에 저장하여 이름으로 DB를 검색하여 사용할 수 있는 기법이다. 이 방법을 사용하기 위해서는 우선 MATA-INF 내부에 Context.xml을 새로 생성해야한다. 이후 생성한 xml문서를 다음과 같이 작성한다. 각 속성의 역할은 다음과 같다. 이후 DAO쪽에서 Context.xml을 사용할 수 있도록 작성해야한다. Context.xml을 이용한 Connection은 다음과 같이 구성할 수 있다. package com.choonham.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSe..
요청 사항에 대한 Controller를 반환하기 위한 HandlerMapping을 수행하기 위해서는 해당 역할을 수행하는 xml문서를 따로 작성해야 한다. 그 방법은 다음과 같다. 우선 간단한 게시판 예제를 따라 진행할 것이기 때문에, board-servlet.xml 으로 xml 문서를 새로 생성한다. HandlerMapping은 Beans로 정보를 전달하면서 실행되기 때문에 반드시 전체 내용은 beans 태그로 묶어야 한다. 이후 beans 내부에 spring 을 사용하기 위한 패키지 주소를 작성해준다. 또한 작업에 필요한 객체 생성 및 클래스 등록도 마찬가지로 beans를 사용하여 작성한다. 클래스 등록 방법은 다음과 같다. 1. 해당 xml문서에서 사용할 클래스(dao) 등록 ============..
요청을 처리할 DispatcherServlet을 사용하기 위해서는 우선적으로 web.xml 문서에 Servlet 파일들을 등록해야 한다. 방법은 다음과 같다. spring_simple_board 서블릿 이름 등록할 서블릿 클래스의 전체 경로 및 클래스명 서블릿 이름 웹 주소줄을 통한 요청 index.html web.xml 문서를 건들기 때문에, 위 문서 수정에 조금이라도 오류가 있다면, 무조건 404 에러가 나오니 많은 주의가 필요하다. 또한 동일한 Servlet-name이 맵핑되거나 등록될 경우 에러가 난다. 스프링이 제공해주는 DispatcherServlet을 사용하려면, Servlet Class부분을 다음과 같이 수정해야 한다. org.springframework.web.servlet.Dispatc..
오늘 아침도 기분 좋게...? 문제 풀이로 시작하려 했는데.... 이게 머선 129... LV2 문제가 존재하지 않는다....(뭐야...내 LV2 돌려줘요...) 아직 Greedy 활용 문제들이 많이 어려워서 LV2 문제 딱 하나만 더 풀었으면 좋겠는데... 아쉽지만, 그래도 할건 해야지... 바로 문제로 들어가자 즉, 예제의 입력을 그림으로 나타내면 다음과 같다. 굉장히 익숙한 그림이다. 사실, 어제 이 문제를 풀다가 도저히 안 되겠어서 Union-Finf, Kruskal 알고리즘을 공부하고 왔다... 하하 LV3 문제들은 보통 이런 선행학습이 꼭 필요한 경우들이 많아서...ㅠ 아무튼 오래 생각하지 않아도, 이 문제는 그냥 어제 코드를 짰던 Kruskal알고리즘을 활용하면 어려울 거 하나도 없이 풀린다..
Kruskal? Kruskal 알고리즘은 Greedy 기법을 이용하여 각 가중치를 간선에 할당한 그래프(어떤 비용을 가지고 있는 간선으로 이루어진 그래프)의 모든 정점을 최소 비용으로 연결하는 최적의 해를 구하는 데 사용하는 알고리즘이다. 글로만 설명하면 머리만 아프니, 바로 그림과 함께 예제를 보자. 위와 같이 간선과 노드, 그리고 각 간선이 가지는 비용으로 이루어진 그래프가 주어졌을 때, 우리의 임무는 각 노드들을 최소한의 비용으로 모두 연결하는 것이다. 그러나 여기서 각 연결은 서로가 맞물리는 상황(사이클)이 발생하지 않아야 한다. Kruskal 알고리즘의 기본적인 원리는 다음과 같다. 1. n개의 노드가 모두 연결되는 제일 작은 경우의 수는 n-1이다. 2. 비용 기준으로 오름차순 정렬하여 제일 ..
Union-Find 알고리즘은 합집합을 찾는다는 의미를 가진 그래프 알고리즘이며, Disjoint Set(서로소) 알고리즘이라고도 부른다. 구체적으로 여러 개의 수가 존재할 때, 각 수에 노드를 매긴 후, 현재 선택한 두 노드가 서로 같은 그래프에 속하는지 판별하는 알고리즘이다. Union-Find 알고리즘을 이용하여 다양한 고급 알고리즘을 활용할 수 있으니, 심화적인 그래프 알고리즘을 다루기 전에 반드시 짚고 넘어가야 하는 알고리즘이다. 위와 같이 무작위 순서로 연결되어 있는 수의 집합을 순서대로 연결하기 위해서는 각 숫자들은 자신보다 작은 수를 자식으로 가지고, 큰 수를 부모 노드로 가질 필요가 있다. 이러한 노드의 순서는 두 개의 배열로 나타낼 수 있다. Array1: 각 수의 노드를 가지는 배열 ..
어릴 때 닌텐도 DS로 플레이했던 레이튼 박사 시리즈가 생각이 나는 문제...ㅋㅋ 아마 배열의 첫 인자부터 차례차례 남은 인자들과 합쳐서 limit를 넘는 순간 타고 빠지게끔? 작성하면 풀릴 거 같다. package com.choonham; class Solution { public int solution(int[] people, int limit) { int answer = 0; int sum = 0; int count = 0; for (int i = 0; i < people.length; i++) { if (people[i] != 0) { sum += people[i]; people[i] = 0; if (i != people.length - 1) { for (int j = people.length -..
엥...이거 완전...? 그냥 완전 탐색 기법을 사용해서 숫자 2자리를 제외하고 나머지를 사용하여 수열을 뽑아내면 되는 문제 아닌가..? 그래서 이전에 사용했던 조합을 뽑는 알고리즘을 그대로 가져와 조합을 뽑고, Integer 리스트에 넣어서 정렬하여 가장 큰 수를 뽑아내는 방식으로 코드를 작성했는데, package com.choonham; import java.util.ArrayList; import java.util.Collections; import java.util.List; class Solution { private List strArray = new ArrayList(); public String solution(String number, int k) { String answer = ""; ..
- 이탈리안 레스토랑
- redux-thunk
- 정보보안기사 #실기 #정리
- 인천 구월동 이탈리안 맛집
- 맛집
- react-native
- Promise
- 인천 구월동 맛집
- javascript
- await
- AsyncStorage
- react
- redux
- Async
- 파니노구스토
- Total
- Today
- Yesterday