Free Lines Arrow
본문 바로가기
728x90

전체 글381

[Algorithm] Shortest Path 3: Dijkstra Dijkstra 다익스트라 알고리즘 역시 최단거리를 찾는 알고리즘이다. Dijkstra 특징 음수가 없다는 전제하에 구현되었다. 노드들 중에서 distance 값이 최소인 노드를 찾고 relax 연산을 수행한다. 벨만포드와 다른점은 벨만포드는 모든 노드를 다익스트라는 최소의 값을 가진 노드에 대해 relax 연산을 한다. 수행단계 1. 시작노드 선택 2. 선택된 노드를 집합 S 에추가 (파랑색) 3. 선택된 노드와 인접한 노드 값 업데이트(빨간색) 4. 선택된 노드들과 인접한 노드중 제일 작은 delta 값을 가진 노드 선택 5, 2~4 번을 반복한다. 모든 노드가 집합 S 에 추가 되면 종료한다. 구현 코드 package algorithm.dijkstra; import java.util.ArrayLis.. 2021. 9. 29.
[MSA] 개념 MSA Micro Service Architecture 이다. 서비스지향 아키텍처이다. 프로그램을 독립적인 작은 서비스로 나누어 구축하는 방법이다. - 다시 말해 작은 서비스 들로 구축하는 방법이다. 하나의 작은 서비스들은 독립적인 모놀리식 아키텍처이다. 경량통신 또는 메시징프로토콜을 사용한다. - 경량통신 프로토콜(HTTP, REST) - 메시지 프로토콜(JMS 또는 AMQP) MSA 의 등장배경 기존 모놀리식의 단점을 해결하려고 등장했다. 모놀리식은 소프트웨어의 모든 요소가 한프로젝트에 통합되어있다. 그렇기 때문에 몸집이 점점커지게 되면 다음과 같은 단점을 가진다. - 빌드, 배포, 구동 시간이 길어진다. - 조금의 수정이 있어도 전체를 다시 빌드해야 된다. - 기능별로 기술, 언어를 분리하지 못한다.. 2021. 9. 29.
[JPA] JPQL Named 쿼리 Named 쿼리 엔티티에 어노테이션으로 쿼리를 등록하여 단축어로 쓸수 있다. 미리 정의 한 후 이름을 부여해두고 사용한다. 정적쿼리이다. 어노테이션, XML 에 정의 할수 있다. - XML 이 우선순위가 더 높다. 장점 어플리케이션 로딩 시점에 초기화 후 재사용 - 로딩시 파싱하여 캐싱하고 있다. 애플리케이션 로딩 시점에 쿼리를 검증 - 실행하는 시점에 쿼리에 에러가 있으면 에러를 발생시킨다. 예제 member class @Entity @NamedQuery( name = "Member.findByUsername", query = "select m from Member m where m.username = :username_ public class Member { ... } 사용부분 List resultL.. 2021. 9. 28.
[JPA] JPQL 엔티티 직접 사용 JPQL 엔티티 직접 사용 엔티티를 JPQL 에서 직접 사용하면 어떻게 될까? 엔티티 기본 키값을 사용한다. 예제1 JQPL 다음 두개는 동일한 결과를 가져온다. select count(m.id) from Member m select count(m) from Member m SQL 실제 수행되는 쿼리는 동일하다. select count(m.id) as cnt from Member m 예제2 엔티티를 파라미터로 전달 String jpql = "select m from Member m where m = :member"; List resultList = em.createQuery(jpql) .setParameter("member" member) .getResultList(); 식별자를 직접 전달 String .. 2021. 9. 28.
728x90
반응형