분류 전체보기 512

[LeetCode] Array > Intersection of Two Arrays II

leetcode.com/explore/interview/card/top-interview-questions-easy/92/array/674/ Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com 풀이 처음에는 그냥 set자료형의 intersection 함수를 사용하였지만, 반례로 [1,2,2,1] , [2,2]가 존재하였다. 중복되는 숫자가 사라지기 때문에 ..

[LeetCode] Array > Single Number

leetcode.com/explore/interview/card/top-interview-questions-easy/92/array/549/ Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com 풀이 배열을 오름차순으로 정렬하여 현재의 수와 다음 수를 비교, 같다면 반복횟수를 +1 해줌. 만약 다르고 반복횟수 또한 1이라면 그것은 Single Number 다..

[LeetCode] Array > Contains Duplicate

leetcode.com/explore/interview/card/top-interview-questions-easy/92/array/578/ Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com 풀이 파이썬의 set 자료형을 사용하여 중복 존재 유무 판단 class Solution: def containsDuplicate(self, nums: List[int..

[LeetCode] Array > Best Time to Buy and Sell Stock II

leetcode.com/explore/featured/card/top-interview-questions-easy/92/array/564/ Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com 풀이 Greedy를 사용하여 문제를 해결하였다. 단순하게 오늘의 가격보다 내일의 가격이 높으면 매도하는 방식으로 가장 높은 이익을 구하였다. class Solution..

[LeetCode] Array > Remove Duplicates from Sorted Array

leetcode.com/explore/featured/card/top-interview-questions-easy/92/array/727/ Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com 풀이 정렬된 배열에서 중복을 제거하는 것이 문제이다. 가장 간단한 방법은 set에 담아 중복을 제거하고 list로 변환 후 정렬을 하는 것이 가장 간단할 것이다. 하지..

로깅 간단히 알아보기

보통 println() 같은 시스템 콘솔을 사용하여 디버깅을 진행하였는데, 실무(실제 운영시스템)에서는 별도의 로깅 라이브러리를 사용하여 로그를 출력한다. 로깅 라이브러리 스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리(spring-boot-starter-logging)가 함께 포함된다. 스프링 부트 로깅 라이브러리는 기본으로 다음 로깅 라이브러리를 사용 SLF4J Logback 로그 라이브러리는 Logback, Log4J, Log4J2 등등 수많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이 바로 SLF4J 라이브러리이다. 로그 선언 private Logger log = LoggerFactory.getLogger(getClass()); private static fin..

Spring/Spring MVC 2021.05.03

Spring MVC

스프링이 제공하는 컨트롤러는 애노테이션 기반으로 동작하므로 매우 유연하고 실용적이다. @RequestMapping 스프링은 애노테이션을 활용한 매우 유연하고 실용적인 컨트롤러를 만들었는데 이것이 바로 @RequestMapping을 사용하는 컨트롤러이다. 실무에서도 거의 이 방식의 컨트롤러를 사용 @controller 스프링이 자동으로 스프링 빈으로 등록(내부에 @Component 애노테이션이 있어 컴포넌트 스캔의 대상) 스프링 MVC에서 애노테이션 기반 컨트롤러로 인식 @RequestMapping 요청 정보를 매핑 해당 URL이 호출되면 이 메서드가 호출된다. 메서드의 이름은 임의로 작명 ModelAndView 모델과 뷰 정보를 담아서 반환 application.properties에 prefix와 suf..

Spring/Spring MVC 2021.05.01

ViewResolver

위와 같이 ModelAndView에 논리주소를 담아 반환하여 해당 url로 접속해보면 위와 같은 404페이지가 뜨는데 이는 현재 ViewResolver가 없기 때문에 매칭되는 뷰를 찾지못했다는 오류이다. 뷰 리졸버 : InternalResourceViewResolver 스프링부트는 InternalResourceViewResolver라는 뷰 리졸버를 자동으로 등록하는데, 이때 application.properties에 등록한 spring.mvc.view.prefix (접두사), spring.mvc.view.suffix(접미사)를 사용하여 등록한다. 위와 같이 application.properties에 등록해두면 우리가 ModelAndView에 넣은 논리주소인 new-form과 더해져서 /WEB-INF/vi..

Spring/Spring MVC 2021.05.01

Handler Mapping & Handler Adapter

현재는 @Controller라는 애노테이션을 사용하여 컨트롤러를 사용하지만 과거에는 아래와 같은 딱딱한 방식의 컨트롤러를 제공했었다.(지금은 사용 X) @Component를 통해 해당 컨트롤러는 /springmvc/old-controller라는 이름의 스프링 빈으로 등록 빈의 이름으로 URL을 매핑 http://localhost:8080/springmvc/old-controller 주소로 접속하면 콘솔창에 출력이 찍힐 것이다. HandlerMapping 핸들러 매핑에서 해당 컨트롤러를 찾을 수 있어야함. ex)스프링 빈의 이름으로 핸들러를 찾을 수 있는 핸들러 매핑 HandlerAdapter 핸들러 매핑을 통해 찾은 핸들러를 실행할 수 있는 핸들러 어댑터가 필요 ex) Controller 인터페이스를 실..

Spring/Spring MVC 2021.04.30

Spring MVC 전체 구조

앞서 직접 만들어보았던 MVC 프레임워크와 구조가 굉장히 유사하다. FrontController ==> DispatcherServlet handlerMappingMap ==> HandlerMapping MyHandlerAdapter ==> HandlerAdapter ModelView ==> ModelAndView viewResolver ==> ViewResolver MyView ==> View DispatcherServlet 구조 살펴보기 스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있다. 스프링 MVC의 프론트 컨트롤러가 바로 DispatcherServlet 이것이 스프링 MVC의 핵심이다. 상속관계를 다이어그램으로 살펴보면 DispatcherServlet도 결국 HttpServlet을 상속받아 ..

Spring/Spring MVC 2021.04.30
반응형