Skip to content
Bible, Lee, Data

Bible, Lee, Data

Faith, software, data, and everyday life.

JavaAll posts

Engineering/Backend

[Spring] Spring 기반 MVC 웹 프로젝트 구현

Spring은 Controller, View 등을 사용하기 편하도록 MVC 패턴을 모두 구현을 해 두었다.Servlet/JSP에서는 웹 요청 처리와 통제를 Controller 역할로 지정해 주었지만, Spring MVC에서는 Controller라는 이름이 전용으로 있으므로 이를 사용한다. 🌿ControllerEx01Controller.java: jsp 연결package com.test.spring.controller;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springfr..

Engineering/Backend

[Spring] 관점 지향 프로그래밍 AOP: Aspect Oriented Programming

🌿Spring AOPAspect Oriented Programming관점 지향 프로그래밍(AOP)은 애플리케이션의 핵심 비즈니스 로직에서 분리된 관심사(Concern)를 모듈화 하여 코드의 가독성과 유지보수성을 향상하는 기술이다.관점(관심사)은 업무 구현 시 주 업무가 아닌 나머지 보조 업무를 의미한다. 주 업무와 보조 업무게시판 글쓰기를 예로 들어 주 업무와 보조 업무를 구분해 보도록 하자.1. 기존 방식- add.doa. 글쓰기 (주 업무)b. 권한 체크 (보조 업무)기존 방식은 주 업무와 보조 업무를 같은 곳(한 파일)에서 구현한다.단점: 코드 관리가 불편하다. 어디부터 어디까지가 주 업무이고 보조 업무인지 알기 어렵다. 2. AOP 방식- add.do주 업무와 보조 업무를 물리적으로 분리시켜서 ..

Engineering/Backend

[Spring] 의존성 주입 DI: Dependency injection

DI와 AOP는 스프링의 핵심 기술이지만, 스프링의 전용 기술이 아니다.스프링이 있기 훨씬 이전에 있던 기술(아키텍처)인데, 스프링에서 도입한 게 Spring DI, Spring AOP이다.가장 핵심적인 기술인 만큼 현업 면접에서도 많이 물어보는 질문이기도 하다. 🌿Spring DIDependency Injection 디자인 패턴DI를 우리말로 하면 의존(성) 주입이라고 부른다.스프링에서 굉장히 중요한 개념인데, 스프링 내의 모든 객체를 관리할 때 사용하기 때문이다.눈에 보이는 부분, 눈에 보이지 않는 부분에서 모두 사용이 된다.DI의 정의는 프로그래밍에서 구성 요소 간의 의존 관계가 소스 내부가 아닌 외부 환경에서 정의되게 하는 디자인 패턴이다. 의존 관계com.test.spring.di01 패키지M..

Engineering/Backend

[Spring] 개발자 환경 구축: STS 3, Maven

🌿Spring 설치Spring Tools 3full distribution on Eclipse 4.19Spring Tools 3 > Spring Tool Suite 3.9.18 > spring-tool-suite-3.9.18.RELEASE-e4.19.0-win32-x86_64.ziphttps://download.springsource.com/release/STS/3.9.18.RELEASE/dist/e4.19/spring-tool-suite-3.9.18.RELEASE-e4.19.0-win32-x86_64.zip위 링크에서 압축파일을 다운로드한다.이 파일은 이클립스에서 스프링을 개발할 수 있게 배포한 Spring Tool Suite로, 줄여서 STS라고 부른다.Spring을 할 때에는 STS 3를 사용하고..

Archive/Coding Challenges

[Java] Baekjoon Online Judge 11723: 집합

11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 💡문제 비어있는 공집합 S가 주어졌을 때, 아래 연산을 수행하는 프로그램을 작성하시오. add x: S에 x를 추가한다. (1 ≤ x ≤ 20) S에 x가 이미 있는 경우에는 연산을 무시한다. remove x: S에서 x를 제거한다. (1 ≤ x ≤ 20) S에 x가 없는 경우에는 연산을 무시한다. check x: S에 x가 있으면 1을, 없으면 0을 출력한다. (1 ≤ x ≤ 20) toggle x: S에 x가 있으면 x를 제거하고, 없으면 x를 추가한다. (1 ≤ x ≤ 20) all: S를 {..

Archive/Coding Challenges

[Java] Baekjoon Online Judge 28278: 스택 2

28278번: 스택 2 첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다. www.acmicpc.net 💡문제 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 다섯 가지이다. X: 정수 X를 스택에 넣는다. (1 ≤ X ≤ 100,000) 스택에 정수가 있다면 맨 위의 정수를 빼고 출력한다. 없다면 -1을 대신 출력한다. 스택에 들어있는 정수의 개수를 출력한다. 스택이 비어있으면 1, 아니면 0을 출력한다. 스택에 정수가 있다면 맨 위의 정수를 출력한다. 없다면 -1을 대신 출력한다. ✏️입력 첫째 줄에 명령의 수 N이 주어진다. (1..

Archive/Coding Challenges

[Java] Baekjoon Online Judge 1914: 하노이 탑

1914번: 하노이 탑 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 💡문제 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다. 아래 그림은 원판이 5개..

Archive/Coding Challenges

[Java] Baekjoon Online Judge 30642: 아이그루스와 화장실

30642번: 아이그루스와 화장실 IGRUS는 Inha Group of Research for Unix Security의 약자로, 2000년부터 시작된 정통처 산하 컴퓨터 학술 자치회이다. IGRUS의 동아리방은 사실 복층 구조로, 1층부터 N층까지 총 N개의 층이 있다. 홀수 층에는 www.acmicpc.net 💡문제 IGRUS는 Inha Group of Research for Unix Security의 약자로, 2000년부터 시작된 정통처 산하 컴퓨터 학술 자치회이다. IGRUS의 동아리방은 사실 복층 구조로, 1층부터 N층까지 총 N개의 층이 있다. 홀수 층에는 몸집이 큰 동물을 위한 화장실이, 짝수 층에는 몸집이 작은 동물을 위한 화장실이 있다. 인하대학교의 마스코트 안뇽이는 용이고 인덕이는 오리..