분류 전체보기 189

📑 SpringMVC_DB_국비Day84

[ Spring MyBatis환경설정 ] ★ spring이 contextLoaderListener객체를 생성하면, contextLoaderListener이 객체가 ds, factoryBean, sqlSession 빈을 생성하고 의존성 주입까지 해준다. 1. src/main/resources 폴더에 config.spring.context 패키지를 추가한다. spring에서 DB를 사용하기 위해서는 DI를 위해 여러가지 환경설정 xml파일이 필요하다. 이를 하나의 root-context.xml 파일에 모든 DB 환경설정 정보를 만들면 후에 일일히 찾아서 유지보수가 어렵기 때문에 따로 패키지를 만들어서 분류한다. 물론 새로운 환경 설정을 만들것이기 때문에 root-context.xml파일은 삭제할 것이다. s..

📑 BFS_16236_아기상어

https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 문제를 풀기 위한 조건이 많기도 하지만 조건을 맞추기가 굉장히 까다로웠다. 충족해야 하는 조건을 크게 잡아보면 아래와 같다. 최단거리 탐색 방법 최단거리하면 떠오르는 알고리즘은 단연 다익스트라가 먼저일 것이다. 하지만 모든 간선의 가중치가 1인 경우에는 더 효율적인 BFS가 있기 때문에, BFS를 활용해서 풀이해보도록 하자. 거리가 같은 경우 우선순위가 높은 물고기를 잡으러 가는 방법 가장..

📑 SpringMVC_Parameter_국비_Day83

* 일반적인 다이나믹 웹 프로젝트는 contextPath가 프로젝트 이름이 되지만, spring legacy프로젝트는 초기에 프로젝트를 생성하는 경우 설정한 최상위 패키지가 com.ict.myapp이라고 한다면, myapp이 contextPath가 된다. [ Spring MVC Request LifrCycle ] 사용자의 요청 -> Filter -> DispatcherServlet(Main Controller) -> 전처리(파일에 대한 전처리) -> HandlerMapping (요청에 담긴 URL을 보고 작업을 분류한다.) -> HandlerInterceptor(실제 작업 처리를 진행하기 전에 보안 처리, 로그인 여부 확인 등) -> Handler(action controller), buisnesslog..

📑 SpringCollection_국비Day82

[ 스프링으로 Collection을 만들어서 주입해보기 ] 생성자 주입 방법을 사용한다면, 기본 생성자와 오버로드 생성자를 그리고 클래스내의 멤버 변수가 하나라도 있다면 게터/세터 메서드는 반드시 생성해야 한다. 세터 주입방법을 이용한다면 게터/세터메서드를 반드시 생성해야 한다. 필자는 세터 주입 방법을 사용하여 ArrayList를 생성해 주입하는 예시를 보여주겠다. [ ArrayList ] 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 ..

📑 BFS_16234_인구이동

https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 오늘부터는 본격적으로 코딩테스트를 준비하기 위해서 그래프 탐색문제를 집중적으로 풀이해보려 한다. 오늘 풀이해볼 문제는 골드5문제로 너비우선 탐색을 이용해서 구현을 하는 문제이다. 문제만 보면 조금 복잡해 보일 수 있지만, 예시에 친절하게 나와있기 때문에, 인구이동이 일어나는 날에 필요한 작업을 해주고, 최종적으로 인구이동이 일어난 날을 반환하는 것이다. 천천히 단계적으로 풀이를 해보..

📑 Spring학습_Day4_AOP

AOP(Aspect Oriented Programming) 관점지향 프로그래밍 Aspect: 어플리케이션의 핵심 기능은 아니지만 어플리케이션을 구성하는 중요 한 요소이고, 부가적인 기능을 담당하는 요소 쇼핑몰에서 물건을 구매하고, 장바구니에 담는 기능은 핵심 기능이라고 할 수 있다. 특정 사용자가 무슨 물건을 사고, 언제 구매를 했고, 낮 시간에는 어떤 연령대가 많이 접속하는지에 대한 정보는 핵심 기능이 아닌 부가적인 기능이다. 굳이 쇼핑몰이 아니더라도 다른 어플리케이션에서도 사용할 만한 정보 즉, 부가적인 기능은 스프링에서 만들어줄테니 핵심적인 기능만을 집중해서 만들도록 지원해주는 것이다. 어플리케이션의 핵심적인 기능에서 부가적인 기능을 분리해서 Aspect 모듈로 만들어서 설계하고 개발하는 방법 OO..

📑 Spring_국비Day81

프레임워크는 기본 틀을 만들어 놓은 상태에서 이 틀과 나의 코드를 조립하여 완성하는 것이다. 따라서 나의 코드를 Spring에서 준비해준 기본 틀과 알맞게 조립하기 위해서는 기본 틀을 이해할 필요가 있다. [ 스프링의 개요 ] Spring 프레임워크는 JavaEE 기반의 어플리케이션 개발을 쉽게 해주는 오픈소스 어플리케이션 프레임워크로, 간단한 자바 객체(POJO : Plain Old Java Object) 를 Spring의 경량(Lightweight) 컨테이너를 통해 생성 및 관리하는 빈(Bean) 으로 처리해준다. Spring이라는 이름의 기원은 전통적인 J2EE를 “겨울”에 빗대어 “겨울” 후의 “봄”으로 새로운 시작을 의미함 Rod Johnson이 창시한 개발프레임워크 EJB가 제공했던 대부분의 ..

📑 DispatcherServlet

src/main/java에 annotation, controller, filter폴더를 복사 WEB-INF에 web.xml복사 메인 컨트롤러는 DisPatcherServlet(사용자 요청을 최초로 받고, 이를 분석해서 적당한 컨트롤러에게 작업을 지시)이다. 이 컨트롤러가 작업을 지시할 컨트롤러(실제로 일을 하는 컨트롤러)를 초기에 메인 컨트롤러가 생성될 때 함께 생성한다. 이를 자동으로 하게 만드려고 web.xml파일에 init-param을 지정하는 것이다. 원리를 아는 것도 중요하지만 사용방법을 익혀라! 프레임워크 초기 실행 (혹은 restart) DispatcherServlet 생성 DispatcherServlet init() web.xml에 있는 태그에 정의된 값을 읽어옴 DispatcherServ..

📑 MVC_국비Day79

본격적으로 스프링에 대해 학습하기 전에 지금껏 해왔던 Model2 패턴을 정리하고, 스프링에서 사용할 MVC패턴과 비교분석하면서 MVC패턴의 구조를 학습해보자. 모델2 패턴은 사용자 요청사항마다 각각의 서블릿(서버에서 실행되는 서비스 객체)이 존재한다. 사용자의 요청사항에 100가지라고 한다면 100개의 서블릿이 존재해야 하는 비 효율적인 구조가 있을 수 있기 때문에 이를 보완하기 위해서 등장한 것이 MVC패턴이다. MVC패턴은 사용자의 요청 수와는 무관하게 하나의 컨트롤러(Front Controller)만 만들고, 이 컨트롤러가 요청사항을 제어한다. 여기서 말하는 컨트롤러가 Model2패턴에서의 서블릿이라고 생각하면 비교가 수월할 것이다. [ FrontController ] 사용자 요청 접수 사용자 요..

📑 위상정렬_2252_줄세우기

이제 슬슬 그래프에 대한 모든 개념을 정복하기 위해서 위상정렬 문제를 풀이하면서 간단하게 개념을 소개할까 한다. 그래프의 종류에 대해서는 아래 필자의 블로그를 학습하고 오기를 바란다. https://cm-me0410.tistory.com/78 그래프(Graph)의 종류 용어 설명 그래프(Graph) 노드와 간선을 하나로 모아 놓은 자료 구조 정점(Vertex) 노드라고도 하며, 정점에는 데이터가 저장된다. 간선(Edge) 링크라고도 하며, 노드간의 관계를 나타낸다. 인접 정점 cm-me0410.tistory.com 위상정렬(Topology Sort)은 사이클이 없는 방향 그래프에서 노드간의 순서를 찾는 알고리즘이다. 노드의 수를 V, 에지의 수를 E라고 했을 때, 시간 복잡도는 O(V+E)이다. 위상정렬..

📑 2021_KAKAO_BLIND_RECUITMENT_메뉴리뉴얼_HASHMAP

https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 오늘은 오랜만에 카카오 코딩테스트 문제를 풀어보았다. 항상 Eclipse와 같은 IDE로 코드를 쳐보다가 프로그래머스로 제출할 때는 항상 낯선 기분이 든다. 정말 세세하게 어떤것은 괄호를 붙이는지, 함수의 대소문자는 어떤지에 대해 많은 회고의 시간을 갖게 한다. 나중에 간단한 손코딩 문제도 많이 푼다고 하던데,, 종종 연습을 시작해야 겠다는 생각이 들었다. 이런저..

📑 Spring 학습_Day3_IoC_DI

기존 자바 코드에서 사용하던 객체 생성방법(main2)과 스프링에서 사용하는 객체 생성 방법(main)을 비교해보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 package t_tok01; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main2(String[] args) { //기존 자바 코드 HelloWorld hello = new HelloWorld(); hello.setMsg("Hello W..