전체 글

· DevOps/AWS
AWS EC2 인스턴스는 서버를 중지하고 다시 실행시키면 퍼블릭 IP가 변경되기 때문에 클라이언트가 사용할 수 있는 변하지 않는 IP가 필요하다. 즉, 탄력적 IP란 외부에서 인스턴스에 접근 가능한 고정 IP이다. 탄력적 IP는 만들어놓고 EC2에 연결해두지 않으면 과금으로 이어진다는 점을 주의해야 한다. 현재 생성된 EC2 인스턴스 세부 정보를 확인하면 탄력적 IP 주소란은 비어있으며 퍼블릭 IP 주소만 할당되어 있다. 1. 탄력적 IP 생성 좌측 메뉴바 - 네트워크 및 보안 - 탄력적 IP로 이동하고 탄력적 IP 주소 할당 버튼을 클릭한다. 변경사항 없이 할당 버튼을 클릭한다. 2. 탄력적 IP 연결 방금 생성한 탄력적 IP를 선택하여 탄력적 IP 주소 연결을 시도햔다. 연결할 EC2 인스턴스와 인스..
본 게시글은 김영한 강사님의 [스프링 핵심 원리 - 기본편]을 수강하며 작성한 글입니다. 스프링을 사용하지 않고 순수한 자바로만 개발을 해보자. 이를 통해 왜 스프링이 필요한지 깨달아야 한다. 프로젝트 환경 구성 Language: Java 11 IDE: IntelliJ 비즈니스 요구사항 회원 회원 가입과 조회 기능이 있다. 회원은 일반과 VIP 등급이 있다. 회원 데이터는 자체 DB를 구축하거나 외부 시스템과 연동할 수 있다. (미정) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인하는 고정 금액 할인을 적용해달라. (나중에 변경될 수 있다.) 할인 정책은 변경될 가능성이 높다. 회사의 기본 할인 정책을 아직 ..
순수 JPA에서의 DTO 조회 JPA에서 프로젝션으로 여러 타입의 필드를 조회하기 위한 방법 중 하나이다. new 명령어 사용해야 한다. DTO의 package 이름을 다 적어야 한다. 생성자 방식만 지원한다. List result = em.createQuery( "select new jpql.MemberDTO(m.username, m.age) from Member m", MemberDTO.class ).getResultList(); 위와 같이 패키지명을 작성해야 하는 불편함은 QueryDSL을 사용하여 극복할 수 있다. QueryDSL에서의 DTO 조회 기본적으로 QueryDSL에서는 프로젝션 대상으로 여러 필드를 선택하게 되면 Tuple이라는 타입을 리턴해준다. List fetch = query.se..
· Courses/JPA
본 게시글은 김영한님의 [자바 ORM 표준 JPA 프로그래밍 - 기본편]을 수강하며 작성한 글입니다. 1. 객체와 테이블 매핑 1) 엔티티 매핑 소개 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne, @JoinColumn 2) @Entity @Entity가 붙은 클래스는 JPA가 관리하는 엔티티이다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 한다. 주의 사항 1. 기본 생성자 필수 (파라미터가 없는 public 또는 protected 생성자) public Member() {} // 기본 생성자 문제는 다음과 같이 생성자를 하나 이상 만들면 자바는 기본 생성자를 ..
📚 문제 링크: https://www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net 💡 접근법 BFS를 이용하여 각 노드까지의 거리를 구하고, 이 중 최대 거리를 갖는 노드에서 다시 BFS를 수행한다. 이때 각 노드까지의 거리 중 최대 거리가 바로 트리의 지름이다. 즉, 이 문제의 아이디어는 "임의의 노드에서 가장 긴 경로로 연결돼 있는 노드는 트리의 지름에 해당하는 두 노드 중 하나다." 이다. BFS란? 시작 노드에서 출발해 시작 노드를 기준으..
📚 문제 링크: https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 💡 접근법 미로에서 서로 인접한 칸으로만 이동하여 최단 거리를 구해야 하므로 BFS를 이용해야 한다. BFS란? 시작 노드에서 출발해 시작 노드를 기준으로 가까운 노드를 먼저 방문하면서 탐색하는 알고리즘이다. 해당 문제의 키 포인트는 2가지이다. 1. 미로 문제에서 이동을 조작하고 싶을 때 x, y에 대한 변화량을 나타내는 dx, dy를 선언한다. 문제에서 정의한 움직임은 총 4가지로, 상, 하, 좌, 우이다. ..
📚 문제 링크: https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 💡 접근법 DFS와 BFS를 구현하는 문제이다. DFS란? 그래프의 시작 노드에서 출발하여 탐색할 한 쪽 분기를 정하여 최대 깊이까지 탐색을 마친 후 다른 쪽 분기로 이동하여 다시 탐색을 수행하는 알고리즘이다. BFS란? 시작 노드에서 출발해 시작 노드를 기준으로 가까운 노드를 먼저 방문하면서 탐색하는 알고리즘이다. 💻 코드 1) 전체 코드 i..
📚 문제 링크: https://www.acmicpc.net/problem/13023 13023번: ABCDE 문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다. www.acmicpc.net 💡 접근법 A -> B -> C -> D -> E 와 같이 그래프의 깊이가 5인 경우가 있는지 여부를 확인하는 문제이다. 따라서 DFS를 이용하여 해결한다. 추가로, 재귀에서 탈출할 경우 재탐색이 가능하도록 방문 리스트를 초기화해주어야 하므로 백트래킹 기법도 수행되어야 한다. DFS란? 그래프의 시작 노드에서 출발하여 탐색할 한 쪽 분기를 정하여 최대 깊이까지 탐색을 마친 후 다른 쪽 분기로 이동하여 다시 탐색을 수행하는 알고리즘이다. 💻 코드 1) 전체 코드 import sys sys..
jyjyjy25
기록하는 습관