본문 바로가기

분류 전체보기363

생성자 주입을 사용하면 좋은 이유? spring 생성자 주입을 사용하면 좋은점 테스트 코드 작성 편리. Autowired 를 써버리면, 구현체를 변경하고 싶을 때 까다로움. 그렇기에 생성자 주입을 통해 테스트 코드를 만들면 구현체를 넣어줄 수 있기에 편리 순환참조 방지 A --> B, B --> 에서 서로 Autowired 하고 있다면 순환참조가 발생. 이는 초기 빈 객체 생성 시에 발견할 수가 없음. 비즈니스 로직이 구동될 때, StackOverFlowException 이 나겠지. 아래와 같을 때, 비즈니스 로직 구동할 때, StackOverFlowException 발생. 서로 계속 호출하니 Stack 용량을 초과하는거지. 생성자 주입의 경우 초기 빈 객체 생성 시 빈 순환 참조를 탐지할 수 있기에 이를 권장 public interfac.. 2020. 10. 9.
POJO, Bean, 프레임워크 개념 정리 프레임워크와 라이브러리의 차이점 기술적인 의미로 프레임워크는 라이브러리를 모두 포용하는 역할을 맡는다. 각각의 라이브러리들이 유기적으로 동작할 수 있도록 하는 것이 프레임워크. 업무적인 의미에서 프레임워크는 해당 업무의 공통된 특징을 모듈 화해서 해당 업무를 더욱 효과적으로 개발하고 운영할 수 있게 도와주는 프로그램. 또한, 이런 업무는 이런 방향으로 개발하라는 방향성을 알려주는 역할을 함. 라이브러리는 공통의 로직을 재사용할 수 있도록 모듈화 해놓은 것. POJO 란? 특정 기술에 종속되지 않는 자바 객체 여기서 잠깐 스프링과의 얘기를 하면, Spring 은 POJO 와 POJO 간 의 관계를 기술해놓음. 관계 기술은 @annotation 이나 xml 을 통해 기술 Bean 이란? 빈이란 Spring .. 2020. 10. 8.
Hackerrank The Grid Search 풀이 The Grid Search 문제 : https://www.hackerrank.com/challenges/the-grid-search/problem 풀이 및 시간복잡도 주석에 풀이 및 시간 복잡도 써놓음. public class TheGridSearch { private static final Scanner scanner = new Scanner(System.in); public static void main(String[] args) { Scanner in = new Scanner(System.in); int t = in.nextInt(); for (int i = 0 ; i < t ; i++) { /** grid row */ int R = in.nextInt(); /** grid column */ in.. 2020. 10. 7.
java string contains time complexity (java string contains 시간복잡도) java string contains time complexity 결론만 얘기하면 O(nm) 이다. n 은 string 길이. m 은 찾고자하는 string 길이 증명 아래 내용을 보면 contains 는 indexOf 를 호출하고, IndexOf 는 최악의 경우 O(nm) 인 것을 알 수 있다. 아래 소스는 자바 String 소스이다. public boolean contains(CharSequence s) { return indexOf(s.toString()) > -1; } static int indexOf(char[] source, int sourceOffset, int sourceCount, char[] target, int targetOffset, int targetCount, int fromIn.. 2020. 10. 6.