목록분류 전체보기 (435)
보라코딩

import java.util.*; public class Main{ static int N; public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); // 일의 자리 소수는 2, 3, 5, 7 이므로 여기서 부터 시작! (한자리수 시작) DFS(2, 1); DFS(3, 1); DFS(5, 1); DFS(7, 1); } static void DFS(int num, int jarisu){ if(jaris..

import java.util.*;import java.io.*;public class Main { static ArrayList[] A; static boolean[] visited ; public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int n = Integer.parseInt(st.nextToken()); // 정점의 개수 int m ..
240624- watcher 서비스 (FTP Data 20000건, DB 30000건 : 46분 53초) ㄴ CQRS 도입...?- feignClient와 xml 생성 부분 구현 240625- 기초부터 배우는 AWS핵심 서비스로 웹 애플리케이션 구축하기 하루 수강 AWS TechCamp Online - 100 HoLAWS TechCamp Online - 100 HoL (EC2, Serverless)catalog.us-east-1.prod.workshops.aws AWS TechCamp Online - 100 HoLAWS TechCamp Online - 100 HoL (EC2, Serverless)catalog.us-east-1.prod.workshops.aws 240626 - xml 구조..
드라이빙 테이블 드라이빙 테이블(Driving Table)은 SQL 조인(query join)에서 쿼리 최적화를 위해 중요한 개념입니다. 드라이빙 테이블은 조인에서 가장 먼저 읽히는 테이블을 의미하며, 이를 기반으로 다른 테이블들과의 조인이 이루어집니다. 드라이빙 테이블을 잘 선택하면 쿼리 성능을 크게 향상시킬 수 있습니다. MySQL에서 드라이빙 테이블 선택하기MySQL의 쿼리 최적화는 주로 쿼리 옵티마이저(Query Optimizer)에 의해 자동으로 수행됩니다. 하지만 때로는 쿼리 힌트를 사용하여 드라이빙 테이블을 명시적으로 지정할 수 있습니다. 성능 최적화 예시예를 들어, 두 개의 테이블 orders와 customers가 있다고 가정해봅시다. orders 테이블이 크고, customers 테이블이..

DFS 공부하기 좋았던 비교적 간단한 문제! 네트워크 class Solution { public int solution(int n, int[][] computers) { int answer = 0; boolean[] visited = new boolean[computers.length]; for (int i = 0; i if(visited[i] == false){ answer++; dfs(i, visited, computers); } } return answer; } ..
MinIO는 고성능 객체 저장소로서, S3 호환 API를 제공합니다. MinIO 서버는 기본적으로 두 개의 포트를 사용합니다:9000 포트: 이 포트는 MinIO 서버의 기본 포트로, HTTP 요청을 처리합니다. 주로 클라이언트가 S3 호환 API를 통해 MinIO 서버와 상호작용할 때 사용됩니다. 즉, 데이터를 업로드하거나 다운로드할 때, 버킷을 생성하거나 삭제할 때, 객체를 나열할 때 등 대부분의 작업이 이 포트를 통해 이루어집니다.9001 포트: 이 포트는 MinIO 서버의 관리 포트로, 웹 기반의 관리 콘솔에 접근할 때 사용됩니다. 이 관리 콘솔을 통해 서버의 상태를 모니터링하고, 설정을 변경하며, 사용량 통계를 확인할 수 있습니다.따라서, 요약하자면:9000 포트: 데이터 작업을 위한 S3 호환..
- RabbitMQ(Message Broker) : exactly once delivery가 기본 정책으로 4번의 핸드 쉐이크로 성능 떨어지는 편(변경가능하나 성능 떨어지지). 소비 개념!! - KafKa(Event Broker) : at most once delivery가 기본정책으로 중복 발생하나 처리량이 높아! 소비가 아니라 토픽 저장소! (위에꼬 강의내용이라 정확) - 래빗엠큐는 ack 3번 날아가고 at least once랑 at most once 두개만 존재함 - 카프카는 consume과 producer의 각각의 delivery 정책(semantic)이 존재하는데 디폴트가 at most once임 - 카프카 스트림즈는 exactly once가 존재하는데 카프카는 없어서 우리는 at least ..

도메인(Domain): 문제 해결을 위해 소프트웨어가 구현하는 특정 비즈니스 영역입니다. 바운디드 컨텍스트(Bounded Context): 특정 도메인의 경계를 정의하는 개념입니다. 바운디드 컨텍스트는 명확한 경계를 가지며, 다른 바운디드 컨텍스트와는 독립적으로 동작합니다. 컨텍스트 맵(Context Map): 시스템 내 여러 바운디드 컨텍스트 간의 관계를 시각적으로 표현한 것입니다. 컨텍스트 맵은 바운디드 컨텍스트 간의 통합, 상호작용 방식을 명확하게 이해하는 데 도움이 됩니다. 애그리게이트(Aggregate): 일관성을 유지하기 위해 함께 관리되어야 하는 도메인 객체들의 그룹입니다. 애그리게이트는 하나의 루트 엔티티(애그리게이트 루트)를 가지며, 이를 통해서만 외부에서 접근할 수 있습..
Lazy 로딩을 사용할 때 N+1 문제가 발생하지 않는 이유 Lazy Loading (지연 로딩) 동작 원리지연 로딩 설정: JPA에서는 연관 관계를 지연 로딩으로 설정할 수 있습니다. 이는 연관된 엔티티를 실제로 사용할 때까지 데이터베이스에서 가져오지 않고, 필요할 때 로딩하는 방식입니다.Proxy 객체 생성: Lazy 로딩이 설정된 연관 관계는 실제 엔티티 대신 프록시(proxy) 객체를 반환합니다. 프록시 객체는 실제 엔티티를 대신하여 필요한 시점에 데이터베이스에서 엔티티를 로딩하는 역할을 합니다.첫 번째 쿼리 실행: 예를 들어, 부모 엔티티를 조회할 때 연관된 자식 엔티티는 초기에 로딩되지 않고, 대신에 해당 자식 엔티티들에 대한 데이터베이스 쿼리가 발생하지 않습니다. 대신, 부모 엔티티의 필드..
Two-Phase Commit Two-Phase Commit (2PC) 프로토콜은 분산 시스템에서 트랜잭션의 원자성을 보장하기 위해 사용되는 기법이 프로토콜은 트랜잭션이 모든 관련된 참여자(Participant)들에 의해 성공적으로 수행되거나, 그렇지 않으면 전혀 수행되지 않도록 합니다. 2PC는 주로 데이터베이스 시스템에서 사용되며, 특히 분산 데이터베이스 환경에서 중요합니다. Two-Phase Commit 프로토콜2PC 프로토콜은 두 단계로 이루어집니다: 준비 단계(Prepare Phase)와 커밋 단계(Commit Phase).1. 준비 단계 (Prepare Phase)코디네이터(Coordinator)는 트랜잭션을 시작하고, 모든 참여자에게 트랜잭션 준비 여부를 묻는 메시지(prepare requ..