본문 바로가기

전체 글

(730)
[Spring] Spring 과 SpringBoot의 차이 1) Embed Tomcat을 사용 내장형 톰캣을 사용하기 때문에, 따로 Tomcat을 설치하거나 매번 버전관리를 하지 않아도 된다. 2) starter를 통한 dependency 자동화(의존 라이브러리 버전 관리) Spring Framework에서는 각각의 dependency 들의 호환되는 버전을 일일히 맞추어야 했다. 또한 각 dependency들의 버전을 일일히 맞춰야해서 힘이 들었다. 하지만 이제 starter가 대부분의 dependency를 관리해주기 때문에, 이러한 걱정이 없어졌다. 3) XML 설정을 하지 않고, 자바로 설정이 가능하다. 4) jar file을 이용해 자바 옵션만으로 쉽게 배포가 가능하다 +Spring Actuaor를 이용한 애플리케이션의 모니터링과 관리를 제공한다. 5) A..
[Spring] 스프링의 동작방식 1. 웹 애플리케이션이 실행되면 Tomcat에 의해 web.xml이 loading 된다. 2. web.xml에 등록되어있는 ContextLoaderListener가 생성이 된다. (ServletContextListener 구현) ,ApplicationContext를 생성하는 역할을 수행한다. 3. 생성된 ContextLoaderListener는 root-context.xml 을 로딩한다. 4. root-context.xml에 등록되어있는 Spring Container가 구동된다. 이 때 개발자가 작성한 비즈니스 로직에 대한 부분과 DAO, VO 객체들이 생성된다. 5. 클라이언트에게서 웹 애플리케이션 요청이 온다.(web.xml에 등록한 url 패턴과 맞다면) 6. DispatcherServlet이 생성..
[Spring] Spring 의 정의 및 특징 스프링 프레임워크란? - 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크이다. - 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크이다. - 자바 개발을 위한 프레임워크로 종속 개체를 생성 조립해준다. 스프링 특징 - 경량 컨테이너로서 자바 객체를 직접 관리 * 각각의 개체 생성, 소멸 과 같은 라이프사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다. - 스프링은 POJO방식의 프레임워크 * 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속받을 필요가 없어, 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다. - 스프링은 제어의 역행을 지원 * 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어 필요에 따라 스..
[Java] ConcurrentHashMap,HashTable Map interface를 구현한 3가지 구현체들의 차이는 간략하게 아래와 같다. HashMap : 동기화를 지원하지 않는다 HashTable : 엄청 초반에 만들어졌고, 동기화를 지원한다. ConcurrentHashMap: 동기화를 지원하고 HashTable 보다 성능이 좋다 그러면 ConcurrentHashMap이 왜 성능이 더 좋은지 알아보자 HashTable은 empty체크나 사이즈 체크 등 주요메서드들에 전부 syncronized처리가 되어있고, 한개의 쓰레드만 사용가능하게끔 락을 걸어놨다 예) 예시로, hashTable에서 put을 한다고 가정해보자 HashTable에서는 전체 메소드에 쓰레드 락이 걸려있고 ConcurrentHashTable에는 put 메서드 내, 이미 데이터가 존재하여, 교..
[Java] TreeMap(이진 탐색 트리) 이진 트리를 기반으로한 Map 컬렉션이다. 같은 Tree 구조로 이루어진 TreeSet과의 차이점은 TreeSet은 그냥 값만 저장한다면, TreeMap은 키와 값이 저장된 Map Entry를 저장한다는 것이다. 키는 저장과 동시에 자동 오름차순으로 정렬되고 숫자타입을 경우에는 값, 문자열 타입을 경우에는 유니코드로 정렬한다. 부모키값과 비교해서 키값이 낮은 것은 왼쪽에 저장하는 식이다. HashMap보다 성능이 떨어진다. TreeMap은 데이터를 저장할때 즉시 정렬하기에 추가,삭제가 HashMap보다 오래걸린다. 정렬된 상태로 Map을 유지해야하거나, 정렬된 데이터를 조회하는 범위검색이 필요한 경우 TreeMap을 사용하는 것이 좋다. 이진트리의 문제점을 보완한 레드블랙트리로 이루어져있다. 데이터가 들..
[JAVA] LinkedHashMap 순서를 유지하는 해시맵 LinkedHashMap은 Java의 HashMap을 확장하는 클래스이다. HashMap은 해시함수를 통해, 인덱스를 매핑을 하고 해당 인덱스에 저장을 하는 구조로 이루어져있다. 따라서 순서를 보장하지 않는다 LinkedHashMap을 통하면 순서를 유지할 수 있다. 해당 유지할 수 있는 이유는, doubly linked list로 삽입한 값들을 관리하고, 삽입한 순서대로 값을 가져오고자 할때 사용할 수 있기 때문이다. head와 tail로 데이터들을 관리하고, 신규로 데이터가 들어오면 다음 노드를 이어붙여주는 방식으로 구현이 되어있다.
[Java] HashMap Java 에서 HashMap은 key-value 값으로 이루어져 있고, key를 사용하여, value 값을 얻어낸다. Key는 중복을 허용하지 않고, Value는 중복을 허용한다. HashMap의 내부구조는 배열로 되어있고, Key는 직접 내부의 인덱스가 될 수 있으며 이를 버킷이라고 한다. 인덱스를 구하기 위해서는, 해시함수를 사용하는데 Hashcode % M 으로 산출할 수 있으나, 동일한 key값이 발생할 수 있고, 이를 해시 충돌이라고 한다. 이를 방지하기 위해서는 Open Addressing 방식과 Separate Chaning 방식이 있고, 해시 맵은 후자를 사용한다. Separate Chaning(동일한 해시값이 있을 경우, LinkedList로 관리하고, 8개 이상인 경우 Tree로 변경하..
[JPA] Page 기능 개발 JPA에서 해당 PAGE 기능을 개발하려고하면, 해당 과 같이 사용하면 된다. 좀 더 자세히 공부를 해보도록 하자