전체 글

1. 문제https://www.acmicpc.net/problem/18352  2. 문제풀이 전략해당 문제는 BFS로도 해결 가능하지만,가중치가 있는 그래프의 일반적인 경우를 고려하면 다익스트라 알고리즘이 훨씬 더 범용적인 해결책이 된다.따라서, 다익스트라 알고리즘을 활용해서 이 문제를 풀어보겠다. 3. 다익스트라(Dijkstra) 알고리즘이란?다익스트라(Dijkstra) 알고리즘은 하나의 시작점에서 다른 모든 정점까지의 최단 경로를 찾는 알고리즘이다. 특히 음의 가중치가 없는 그래프에서 사용된다. 참고로, 음의 가중치를 가진 간선이 있는 그래프에서 최단 경로를 찾아야 한다면 벨만-포드(Bellman-Ford) 알고리즘을 사용해야 한다. 4. 우선순위 큐를 사용 - 시간 복잡도 O(E logV)E는 간선..
1. 예외 계층 그림Throwable최상위 예외이다. 하위에 Exception과 Error가 있다. Error메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다.개발자는 Error를 처리하려고 해서는 안된다. Exception : 체크 예외애플리케이션 로직에서 사용할 수 있는 최상위 예외이다.Exception과 그 하위 예외는 모두 컴파일러가 체크하는 체크 예외이다. RuntimeException : 언체크 예외, 런타임 예외Exception의 하위 예외이지만, 컴파일러가 체크하지 않는 언체크 예외이다.RuntimeException과 그 하위 예외는 모두 언체크 예외이다.흔히, 런타임 예외라고 부른다. 2. 자바에서 Checked Exception과 Unchecked..
· MSA
1. API Gateway란?API Gateway는 클라이언트와 백엔드 서비스 사이에서 중재자 역할을 하는 소프트웨어 계층이다. 모든 API 호출을 단일 진입점으로 받아 적절한 백엔드 서비스로 라우팅하고, 필요한 데이터를 집계하여 클라이언트에 통합된 방식으로 전달한다. 주요 기능으로는 요청 라우팅, 요청 필터링, 프로토콜 변환, 인증 및 권한 부여, 로깅, 모니터링, 속도 제한, 로드 밸런싱 등이 있다. API Gateway는 마이크로서비스 아키텍처에서 특히 중요하며, API 관리를 단순화하고 보안을 강화하는 데 도움을 준다. 또한, 클라이언트 인터페이스와 백엔드 구현을 분리하여 개발자가 개별 서비스 구축에 집중할 수 있게 한다. 2. Spring Cloud Gateway란?Spring Cloud Gat..
1. JPA의 N + 1 문제란?N + 1 문제는 연관된 엔티티를 조회할 때 발생하는 성능 이슈를 말한다. 연관 관계가 설정된 엔티티를 조회할 경우에, 조회된 데이터 개수(N)만큼 연관관계의 조회 쿼리가 추가로 발생하는 현상이다. 다시 말하면, 조회시 1개의 쿼리를 생각하고 설계했으나 예상치 못한 쿼리가 N개 더 발생하는 문제이다. 2. 즉시 로딩(Eager)// User.java@OneToMany(mappedBy = "user", fetch = FetchType.EAGER)private Set orders = emptySet();// Order.java@ManyToOne(fetch = FetchType.EAGER)private Order order; 즉시 로딩이란 연관된 엔티티를 조인해서 가져오는 것을..
· MSA
1. Circuit Breaker 란?서킷 브레이커란 마이크로서비스 간에 호출 실패를 감지하고 시스템의 안정성을 관리하는 패턴을 말한다. 이 패턴은 전기 차단 회로기의 개념을 차용하여 서비스 호출 중 장애가 발생할 경우 더이상의 호출을 차단하여 시스템의 리소스를 보호하고 장애 확산을 방지한다. 외부 서비스 호출시 빠른 실패를 감지해서 장애를 격리하고, 시스템의 다른 부분에 영향이 가지 않도록 한다. 특히 Resilience4j 는 Java 애플리케이션에서 CircuitBreaker 패턴을 구현하는 경량화된 라이브러리이다.https://resilience4j.readme.io/docs/getting-started IntroductionResilience4j is a lightweight fault tole..
1. Entity ManagerEntity Manager는 JPA의 핵심 구성 요소로, 엔티티 인스턴스의 생명주기를 관리하는 API이다. Entity Manager는 데이터베이스와 Java 객체 간의 중개자 역할을 한다.JPA에서 엔티티는 Persistence Context에서 관리되어야 하는데,Persistence Context를 도와주는 것이 Entity Manager다. 1 - 1. 주요 기능1 - 1 - 1. 엔티티 생명주기 관리엔티티의 생성, 수정, 삭제 등 생명주기 전반을 관리한다.엔티티는 비영속, 영속, 준영속, 삭제 상태가 될 수 있다.persist, merge, remove, close 메서드를 이용하여 엔티티의 상태를 변경할 수 있다. 1 - 1 - 2. Persistence Conte..
· MSA
1. 로드 밸런싱이란?네트워크 트래픽을 여러 서버에 고르게 분산시켜 서버의 과부하를 방지하고 서비스의 가용성을 높이는 기술을 말한다. 이를 통해 특정 서버에 트래픽이 집중되는 것을 막고, 시스템의 성능과 안정성을 유지할 수 있다. 로드밸런서는 다양한 알고리즘을 사용하여 요청을 적절한 서버로 라우팅한다. 이러한 알고리즘에는 라운드 로빈, 최소 연결, IP 해시, 가중치 기반 등이 포함된다. 2. 클라이언트 사이드 로드 밸런싱로드 밸런싱은 클라이언트 사이드와 서버 사이드로 나뉘며, 두 방식은 각각의 장단점을 가지고 있다. 클라이언트 사이드 로드 밸런싱은 주로 마이크로서비스 아키텍처에서 사용되며, Netflix Ribbon과 같은 라이브러리를 통해 구현할 수 있다. 반면, 서버 사이드 로드 밸런싱은 AWS E..
1. ddl-auto 옵션ddl-auto 옵션은 Spring Boot Application에서 Hibernate와 같은 JPA 구현체를 사용할 때 데이터베이스 스키마 관리를 제어하는 설정이다. 이 옵션은 application.properties, application.yml 같은 설정 파일에서 설정할 수 있다. ddl-auto 옵션에는 none, validate, update, create, create-drop 등이 있다. 2. 각 옵션들 정리2 - 1. none데이터베이스 스키마와 관련된 어떠한 작업도 수행하지 않는다.데이터베이스 스키마를 수동으로 관리하고 싶을 때 유용하다.프로덕션 환경에서 주로 사용된다. 2 - 2. validate애플리케이션이 시작될 때, 엔티티 매핑이 데이터베이스 스키마와 일치..
Griotold
Griotold's Olive Oil