이번에는 취업 준비를 하면서 풀었던 백준 알고리즘 문제 중에서 개인적으로 괜찮았던 문제들을 추천해보고자 합니다. 예전에 풀었던 기록들을 보고 정리한거라 빠진 좋은 문제들도 많이 있을텐데, 댓글 많이 남겨주세요:) 1. 코딩 테스트(알고리즘) 준비 및 간단한 팁 요즘 거의 모든 기업에서 코딩 테스트 전형을 진행하고 있는데, 이번에는 코딩 테스트와 관련된 부분에 대해 이야기해보도록 하겠습니다. [ 빈출 유형 파악 ] 수능에도 자주 출제되는 영역이 있듯이 코딩 테스트도 당연히 자주 출제되는 유형이 있습니다. 그렇기 때문에 전략적으로 빈출 유형을 집중적으로 준비하는 것이 도움이 됩니다. 알고리즘 코딩 테스트에서 자주 출제되는 유형은 크게 다음의 4가지가 있습니다. 구현/시뮬레이션: 문제의 요구사항을 주고 이를 ..
이번에는 디스패처 서블릿(Dispatcher Servlert)이 HTTP 요청을 처리하는 방법에 대해서 알아보도록 하자 1. 디스패처 서블릿(Dispatcher Servlert)이 HTTP 요청을 처리하는 방법과 핸들러 메소드(HandlerMethod) [ 핸들러 메소드(HandlerMethod)란? ] HandlerMethod는 @RequestMapping과 그 하위 어노테이션(@GetMapping, @PostMapping 등)이 붙은 메소드의 정보를 추상화한 객체이다. HandlerMethod는 그 자체가 실행가능한 객체가 아니라 메소드를 실행하기 위해 필요한 참조 정보를 담고 있는 객체로써 다음과 같은 정보들을 가지고 있다. 빈 객체 메소드 메타정보 메소드 파라미터 메타정보 메소드 어노테이션 메타정..
Spring은 캐시 관련 기능을 추상화하여 편리하게 개발할 수 있도록 지원하고 있다. 이번에는 Spring이 제공하는 캐시와 관련된 기능들에 대해 알아보도록 하자. 1. Spring이 제공하는 캐시(Cache) 추상화 [ 캐시의 사용 ] 캐시는 서버의 부담을 줄이고, 성능을 높이기 위해 사용되는 기술이다. 예를 들어 어떤 요청을 처리하는데 계산이 복잡하거나 혹은 DB에서 조회하는게 오래 걸리는 등에 적용하여 결과를 저장해두고 가져옴으로써 빠르게 처리할 수 있다. 캐시는 값을 저장해두고 불러오기 때문에 반복적으로 동일한 결과를 반환하는 경우에 용이하다. 만약 매번 다른 결과를 돌려줘야 하는 상황에 캐시를 적용한다면 오히려 성능이 떨어지게 된다. 오히려 캐시에 저장하거나 캐시를 확인하는 작업 때문에 부하가 ..
개발을 하다 보면 서로 다른 환경을 운영해야 한다. 이번에는 이와 관련되어 Spring이 지원해주는 기술들에 대해 알아보도록 하자. 1. 활성 프로파일과 @Profile, @ActiveProfiles [ 환경의 분리 ] 개발을 하다 보면 여러 개의 환경을 관리해야 한다. 예를 들어 테스트 코드를 위한 테스트 환경, 개발을 하고 테스트를 하기 위한 알파 환경, 실제 운영 환경과 동일하게 맞춰두고 QA 등을 진행하는 스테이지 환경, 실제 서비스가 운영되는 운영 환경 등이 있다. 그렇기 때문에 각각의 환경들에 맞게 서로 다르게 빈 또는 프로퍼티들을 정의해야 할 수 있다. 예를 들어 개발을 위해서는 로컬 또는 내장 캐시를 이용할 수 있지만 실제 운영을 위해서는 외부 캐시를 이용하는 것이 대표적인 경우이다. Sp..
Spring을 이용해 개발을 하다 보면 빈팩토리 후처리기(BeanFactoryPostProcessor)의 구현체를 빈으로 등록해주어야 하는 경우가 있다. 해당 타입의 빈을 등록하기 위해서는 static 메소드로 선언해주어야 하는데, 이번에는 그 이유를 예시와 함께 알아보고자 한다. 1. BeanFactoryPostProcessor 타입의 빈 메소드를 static으로 해야 하는 이유 [ 빈팩토리 후처리기(BeanFactoryPostProcessor)와 PropertySourcesPlaceholderConfigurer ] Spring은 기본적으로 객체로 만들 빈 설정정보(BeanDefinitino)를 만들어둔 다음에 이를 바탕으로 객체를 생성한다. 이때 빈 설정정보(BeanDefinition)를 불러오고 조..