그래프 탐색, BFS와 DFS
📌 BFS란? Breath-First Search, BFS 는 그래프를 탐색하는 알고리즘이다. 출발 노드로부터 가까운 노드부터 우선적으로 탐색한다. 이는 레벨 단위로 진행된다. 📌 동작 방식 먼저 시작 노드를 선택하고, 거리를 0으로 설정한다. 거리가 d 인 모든 노드들을 확인하며 해당 노드와 연결된 노드들 중 방문하지 않는 노드들을...
📌 BFS란? Breath-First Search, BFS 는 그래프를 탐색하는 알고리즘이다. 출발 노드로부터 가까운 노드부터 우선적으로 탐색한다. 이는 레벨 단위로 진행된다. 📌 동작 방식 먼저 시작 노드를 선택하고, 거리를 0으로 설정한다. 거리가 d 인 모든 노드들을 확인하며 해당 노드와 연결된 노드들 중 방문하지 않는 노드들을...
📌 개요 하나만 짚고 넘어가자. JPA 의 쿼리 언어는 JPQL 이다. JPA 의 구현체 중 하나는 Hibernate 이며, Hibernate의 쿼리 언어는 HQL 이다. 사실 하나가 아니고 세 개다. 내가 ‘구현’이라고 하지 않았는가? JPA라는 인터페이스를 구현한 것이 Hibernate이다. 이는 곧 Hibernate가 독자적인 기능을 가질 수...
📌 개요 Spark에서 자주 사용되는 파일 포맷에 대해 알아보자. 📌 JSON JavaScript Object Notation, JSON 은 key-value 구조를 가진 텍스트 기반 포맷이다. 사람이 쉽게 읽고 쓸 수 있으며, 계층적 구조를 표현할 수 있다는 특징이 있다. 매우 유연한 구조를 가지고 있다. JSON 내부에 객체가 있다면 스파크...
📌 Elastic MapReduce란? AWS Elastic MapReduce(EMR) 는 빅데이터 클러스터 관리 서비스이다. AWS가 알아서 스파크나 하둡 클러스터를 생성한다. 네트워크 설정이나 버전 호환 문제를 알아서 해결하며, 노드에 장애가 발생하면 자동으로 감지하여 대체 노드를 띄운다. 📌 특징 클러스터의 부하를 지속적으로 모니터링하여 부...
📌 개요 Spring Security 는 인증/인가 메커니즘을 filter chain 을 기반으로 처리한다. SecurityBuilder, SecurityConfigurer 는 필터 체인과 관련된 빈들을 빌더 패턴을 사용하여 생성한다. 📌 SecurityBuilder, SecurityConfigurer public interface Securi...
📌 Default Method란? interface MyInterface { void normalMethod(); default void printHello() { System.out.println("Hello World"); } } default 메서드는 Java 8부터 도입된 기능으로, 기존에는 인터페이스...
📌 개요 flyway 는 데이터베이스조차 버전 관리하게 해 주는 놀라운 오픈소스 도구이다. 나는 이 혁명적인 도구에 감탄을 금치 못하며 게시글을 작성해버렸다. 장점이 정말 명확한 flyway는 그만 단점까지 명확해져 버렸다. 먼저 롤백이 안 된다. 실행 도중 오류가 발생하면 이미 실행한 DDL문은 그대로 반영된다. 이를 복구하기 위해 개발자가 수동...
📌 문제 https://www.acmicpc.net/problem/17835 📌 설명 주어진 노드로부터 특정 노드들까지의 최단 거리를 구하고, 최단 거리 중 최댓값을 구하는 문제이다. 다익스트라 알고리즘을 통해 시작 노드로부터 각 노드까지의 최단 경로를 구할 수 있으므로, 각 노드에 대해 다익스트라 알고리즘을 적용한 후, 면접장까지의 거리 중 최...
📌 회고 여태까지 내가 프로퍼티를 주입하기 위해 알고 있던 방법은 @Value 어노테이션을 사용하는 것이었다. 여느 개발자가 그렇듯이 더 나은 방법을 알지 못하면 기존의 방식을 계속 사용하게 되기 마련이다. 그리고 난 최근에서야 ‘더 우아한 대안’의 존재에 대해 알게 되었다. 일단 @Value 어노테이션과 @ConfigurationPropertie...
📌 Record란? 자바의 Record 는 Java 16에서 정식으로 도입된 특별한 종류의 클래스이다. Record의 핵심 목적은 불변 데이터를 담는 객체를 간결하게 작성하는 것이다. Record가 없던 시절 보통 Record는 DTO와 같은 불변 객체를 만들기 위해 사용한다. 이를 Record를 사용하지 않고 작성하면 다음과 같이 작성할 수 있...