목록항해 (48)
거누의 개발노트
JPA에서는 데이터를 조회할 때 즉시 로딩(EAGER)과 지연 로딩(LAZY) 두 가지 방식이 있다. 이 두 가지 방식을 간단하게 설명하면 즉시 로딩은 데이터를 조회할 때 연관된 데이터까지 한 번에 불러오는 것이고, 지연 로딩은 필요한 시점에 연관된 데이터를 불러오는 것이라고 할 수 있다. 즉시로딩(EAGAL) @Entity public class Member { @Id @GeneratedValue private Long id; private String username; @ManyToOne(fetch = FetchType.EAGER) //Team, 즉시로딩 @JoinColumn(name = "team_id") Team team; } 여기서 Member 객체를 조회한다면, //멤버를 조회하는 쿼리 se..
Spring Boot 셋팅부터 강의까지 많은것들을 배웠다. 먼저 빌드도구에 대해서 정리했다. https://geonoo.tistory.com/145 [Spring] 빌드? 빌드도구? - gradle, maven 빌드? 프로그래머가 작성한 소스 코드를 실행할 수 있는 독립적인 형태(.war, .jar)로 변환하는 과정 및 결과를 말한다. 변환하는 과정에는 컴파일 과정도 포함이 된다. 예를 들어 개발자가 이클립 geonoo.tistory.com 그런다음 Spring Boot 셋팅하는 방법을 배웠고 https://geonoo.tistory.com/146 Spring Boot 셋팅 - IntelliJ IDEA IDE : IntelliJ IDEA Spring Boot 환경 구성하기 1. new Project - ..
Spring 프레임워크로 간단한 웹 서버를 구현해 보고있다. 처음으로 JPA를 사용해봤고 정리해봤다. https://geonoo.tistory.com/147?category=1077864 [Spring] Java Persistence API - JPA Java Persistence API(JPA) JPA는 현재 자바 진영의 ORM 기술 표준으로, 인터페이스의 모음이다. 실제로 구현된것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다. Persistence(영속 geonoo.tistory.com ORM은 RDB의 테이블을 객체로 매핑하는 기술로 해당 기술을 이용한 대표적인 라이브러리가 JPA가 있다. 쉽게 설명해서 웹 서비스를 개발 할 때 SQL문을 필수적으로 작성해야 했다. 데이터베..
DP DP, 즉 다이나믹 프로그래밍(또는 동적 계획법)은 기본적인 아이디어로 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용하는 것으로 특정한 알고리즘이 아닌 하나의 문제해결 패러다임으로 볼 수 있다. 피보나치 수열로 예를 들어 본다면, def fibo(n): if n in [1, 2]: return 1 return fibo(n-1) + fibo(n-2) assert fibo(10) == 55 assert fibo(100) == 354224848179261915075 # 안끝난다. 이런식으로 재귀 함수로 푼다면 100번째 값을 찾을 때는 fibo(1)번째, fibo(2)번째를 찾았던 n번째수를 계속해서 찾아나갈 것이다. 그렇지만 찾아 나간 결과를 저장..
플로이드 워셜(Floyd-Warshall) 알고리즘이란? 모든 최단 경로를 구하는 알고리즘 다익스트라는 하나의 정점에서 다른 모든 정점까지의 최단 거리를 구하는 알고리즘(S.S.S.P - Single Source Shortest Path) 이었다면, 플로이드-워셜 알고리즘은 한 번 실행하여 모든 노드 간 최단 경로를 구할 수 있습니다. 플로이드-워셜 알고리즘은 다익스트라 알고리즘과는 다르게 음의 간선도 사용할 수 있다. 파이썬 코드 INF = int(1e9) def floyd_warshall(graph): N = len(graph) dist = [[INF] * (N + 1) for _ in range(N + 1)] for idx in range(1, N + 1): dist[idx][idx] = 0 for..
이번주도 마찬가지로 시간이 너무 빠르다. ( 매번 시간이 빨라서 이 말 밖에 안나온다...ㅎ ) 어느정도 적응이 된건지 아니면 쉬운 문제를 푸는건지 몰라도 조금씩 늘어가고 있는건 보인다. ( 그래도 다행이다. 사실 첫주차 불안했다. ) 이번주차부터 TIL을 꼬박꼬박 써서 수월하게 적을 수 있을 것 같다. 1일차 1일차는 트리와 이진트리에 대해서 배웠다. https://geonoo.tistory.com/106 자료구조/알고리즘 - 이진트리(1) 트리란? 뿌리와 가지로 구성되어 거꾸로 세워놓은 나무처럼 보이는 계층형 비선형 자료 구조이다. 큐(Queue)와 스택(Stack)은 자료구조에서 선형 구조라고 한다. 선형 구조란 자료를 구성하고 있는 geonoo.tistory.com 2일차 이진 탐색 트리의 검색,..
이진탐색? 배열이 정렬되어있을 경우, 절반씩 줄여나가면서 탐색하는 기법 1억 개 목록을 선형탐색할 때, 1억 번을 연산해야 한다. 이진탐색으로 찾는다면, 27번 안에 찾을 수 있다. import math math.log2(100000000) # 26.575424759098897 파이썬 while로 이진탐색 구현 def binary_search(arr, target, start, end): while start target: end = mid-1 else: start = mid+1 print(binary_search([1,2,3,4,5,6,7,8,9],8,0,8)) # 7 파이썬 이진탐색 내장 함수 bisect import bisect arr1 = [i for i in range(1,100,2)] # [1..
문제 오름차순으로 정렬된 정수 그룹nums가 있습니다. 함수에 전달하기 전에nums는 알 수 없는 축 인덱스 k (1 int: idx_min = sorted([[i, v] for i,v in enumerate(nums)], key=lambda x:x[1])[0][0] nums = nums[idx_min:] + nums[:idx_min] i = bisect.bisect_left(nums, target) if i < len(nums) and nums[i] == target: return (idx_min + i) % len(nums) else: return -1 https://leetcode.com/problems/search-in-rotated-sorted-array/ Search in Rotated Sor..