목록개발 공부 (60)
내 맴
✅ 핵심 정리DB 연결(Connection)을 미리 만들어 풀(Pool)에 보관해두고 재사용함으로써 연결/해제 비용을 줄이는 방식 ✅상세 정리1. 개념DB Connection은 생성과 해제에 비용이 큰 자원요청마다 새로 연결하면 지연과 리소스 낭비 발생Connection Pool은 미리 일정 수의 커넥션을 생성해 풀에 저장요청이 오면 풀에서 꺼내 쓰고, 작업이 끝나면 닫지 않고 다시 반납하여 재사용2. 내부 동작초기 애플리케이션 시작 시 설정된 수만큼 커넥션 생성커넥션 요청 시 유휴 연결이 있다면 바로 반환유휴 커넥션이 없고 최대 커넥션 수 미만이면 새로 생성최대 커넥션 수 도달 시:→ 요청은 대기하거나 예외 발생3. 장점커넥션 생성/해제 비용 절감연결 수 제한을 통한 DB 과부하 방지안정적인 트래픽 처..
✅ 정리 N+1 문제는 하나의 쿼리(N) 실행 후 연관된 데이터를 위해 추가로 N개의 쿼리가 발생하는 현상연관 관계가 있는 엔티티 조회 시, 지연 로딩(fetch = LAZY)으로 인해 반복적으로 추가 쿼리 발생 → 성능 저하 유발 ✅ 상세 정리1. 개념N+1 문제:특정 엔티티 리스트를 조회(N)한 후, 각 엔티티의 연관 객체를 지연 로딩하면서 추가 쿼리(N) 발생 → 총 N+1개의 쿼리 실행됨. 2. 내부 동작JPA에서 연관 관계는 기본적으로 LAZY로 설정됨.루트 엔티티 조회 시에는 1개의 쿼리만 실행됨.연관된 엔티티 접근 시점에 각각 쿼리가 발생하며, 루프를 돌며 연속 접근 시 N개의 추가 쿼리 실행됨. 3. 발생 예시 List teams = teamRepository.findAll(); // 1개..
✅ 정리@OneToMany: 하나의 엔티티가 여러 개를 참조함@ManyToOne: 여러 개의 엔티티가 하나를 참조하며 연관관계 주인으로 동작 ✅ 상세 정리1. 관계 방향성과 주인 개념JPA에서 양방향 관계 설정 시 외래 키를 관리하는 연관관계 주인이 필요@ManyToOne은 외래 키 컬럼을 가지므로 연관관계의 주인 역할 수행@OneToMany는 외래 키를 가지지 않고, mappedBy를 통해 상대방 필드 지정// 연관관계 주인: Member@Entitypublic class Member { @Id @GeneratedValue private Long id; @ManyToOne @JoinColumn(name = "team_id") // 외래 키 private Team team;}..
1. 프록시 서버(Proxy Server)란?프록시 서버는 클라이언트와 서버 사이에서 중개 역할을 수행하는 서버사용자의 요청을 대신 전달하거나 응답을 캐싱하여 성능을 최적화하는 등 여러 가지 용도로 활용 2. 프록시 서버 역할익명성 제공 – 클라이언트의 IP를 숨기고 서버와 직접 연결되지 않도록 보호캐싱 (속도 향상) – 자주 요청되는 데이터 저장 후 빠른 응답 제공접근 제어 - 특정 웹사이트 차단 및 트래픽 관리로드 밸런싱 - 여러 서버로 트래픽을 분산해 성능 최적화보안 강화 – 악성 사이트 차단 및 방화벽 기능 수행 3. 프록시 서버 종류🔹 정방향 프록시(Forward Proxy)클라이언트가 직접 인터넷에 요청하는 대신 프록시 서버를 거쳐 전달기업 내부망에서 외부 인터넷 접속을 제어하는 데 사용..

✅ JWT (Json Web Token) 토큰 기반의 인증 방식으로, 클라이언트가 로그인하면 서버에서 토큰을 발급하고, 이후 요청 시 해당 토큰을 사용하여 인증을 수행 ✅ JWT 인증 프로세스사용자 로그인 요청: 클라이언트가 아이디와 비밀번호를 입력하여 로그인 요청을 보냄.서버에서 인증 후 JWT 발급: 입력된 정보가 올바르면, 서버는 JWT를 생성하여 클라이언트에 반환.클라이언트가 JWT 포함하여 요청: 이후 요청 시 JWT를 HTTP 헤더에 포함하여 서버에 전달.서버에서 JWT 검증: 서버는 JWT의 유효성을 검사하고, 유효하면 요청을 처리. ✅ 프로젝트 설정Spring Boot 프로젝트를 생성하고, Gradle을 사용하여 의존성 추가🔹 Gradle 의존성 추가// build.gradle.ktsim..
문제 ) https://www.acmicpc.net/problem/5972 5972번: 택배 배송 농부 현서는 농부 찬홍이에게 택배를 배달해줘야 합니다. 그리고 지금, 갈 준비를 하고 있습니다. 평화롭게 가려면 가는 길에 만나는 모든 소들에게 맛있는 여물을 줘야 합니다. 물론 현서는 www.acmicpc.net [ 풀이 IDEA ] - 다익스트라(Dijkstra) 알고리즘을 이용해서 문제를 해결하였다. 다익스트라 알고리즘은 최소 힙(heapq) 이용해서 풀어주면 좋다는거!! 꼭 기억하자 1️⃣ 초기화 사항 => 시작점으로 부터의 거리 list(distance), heapq 정의 2️⃣ [시작 점(start) 👉 최소 힙에서 추출한 점(node) 👉 해당 점(node)와 연결된 다른 점(nnode)] 으로..
문제 ) https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net [ 풀이 IDEA ] BFS이용해서 문제를 풀어줄 수 있다 1️⃣ BFS를 통해 열린 국경선을 체크한다. (조건: 두 나라의 인구 차이 L이상, R이하) 2️⃣ 국경이 열린 나라들의 위치를 list에 저장 3️⃣ 국경이 열린 나라들의 인구를 update 4️⃣ 국경이 열리지 않을 때까지 반복 - python code from collections import deque dx..
문제 ) https://www.acmicpc.net/problem/20437 20437번: 문자열 게임 2 첫 번째 문자열에서 3번에서 구한 문자열은 aqua, 4번에서 구한 문자열은 raquator이다. 두 번째 문자열에서는 어떤 문자가 5개 포함된 문자열을 찾을 수 없으므로 -1을 출력한다. www.acmicpc.net [ 풀이 IDEA ] 1. 어떤 문자를 정확히 K개를 포함하는 가장 짧은 연속 문자열의 길이 2. 어떤 문자를 정확히 K개를 포함하고, 문자열의 첫 번째와 마지막 글자가 해당 문자로 같은 가장 긴 연속 문자열의 길이 위의 2가지를 구해야한다. 2번 뿐만 아니라, 1번을 구할 때에도 문자열의 앞뒤가 같은 문자여야만 한다. 그렇기 때문에, 1/2번은 한번에 구해주면 된다! dictiona..