개인 공부89 TIL : @CreatedDate, @CreationTimestamp (11) 🌞 Spring 엔티티 클래스에서 시간을 2가지 방법으로 관리한다. 바로 Hibernate에서 제공하는 @CreationTimestamp과 JPA에서 제공하는 @CreatedDate. 둘의 차이를 알아보자!! 1️⃣ @CreatedDate & @LastModifiedDate 사용하기 위해선 2가지 설정이 필요하다! SpringApplication에 @EnableJpaAuditing을 붙인다. 선언한 엔티티에 @EntityListeners(AuditingEntityListener.class)를 붙인다. 설정이 필요한 이유는 다음과 같다. JPA는 JPA 고유 메모리 공간(context)을 이용해서 엔티티 객체들을 관리한다. 관리되는 객체들이 변경되면 데이터에 반영되는 형식이다. 즉, 재사용하는 방식이다. .. 2022. 9. 12. 데이터베이스 개론 : 관계 데이터 연산 (6장) 📌 관계 데이터 연산의 개념 데이터 모델은 데이터 구조, 연산, 제약조건이 3가지로 구성된다. 여기서 연산이란 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것이다. 관계 데이터 연산이라고 불리는 연산은 두 가지로 나뉜다. 관계 대수 : 원하는 결과를 얻기 위해 데이터 처리 과정을 순서대로 기술하는 절차 언어이다. 관계 해석 : 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술하는 비절차 언어이다. 여기서 데이터에 대한 처리 요구를 Query(질의)라고 한다. 📌 관계 대수 ✔️ 관계 대수의 개념과 연산자 처리 과정을 순서대로 기술하는 언어인 관계 대수는 연산자들의 집합으로도 정의할 수 있다. 여기서 피연산자는 릴레이션이 된다. 따라서 결과물도 릴레이션이 될 것이다. 대.. 2022. 9. 7. 데이터베이스 개론 : 관계 데이터 모델 (5장) 📌 관계 데이터 모델의 개념 ✔️ 관계 데이터 모델의 기본 용어 관계 데이터 모델에서는 하나의 개체에 관한 데이터를 릴레이션 하나에 담아 데이터베이스에 저장한다. 릴레이션에 관한 용어를 알아보자. 1️⃣ Attribute 릴레이션의 열을 속성(Attribute)이라고 한다. 각 속성을 서로 다른 이름으로 구분하고 필드에 대응하는 개념이다. 2️⃣ Tuple 릴레이션의 행을 튜플이라고 한다. 개체에 대한 속성들을 모아둔 것이고 레코드에 대응하는 개념이다. 3️⃣ Domain 속성이 가질 수 있는 모든 값의 집합을 말한다. 이 값들은 더 분해될 수 없는 원자 값이다. 보통 데이터 타입을 도메인, 변수를 속성으로 이해하면 된다. 4️⃣ Null 값 속성 값을 모르거나 적합한 값을 모를 때 사용하는 특별한 값이.. 2022. 9. 7. TIL : git 사용하기 (10) 😋 git 1️⃣ 기본 git init : .git 이라는 하위 디렉토리를 만들어 새로운 git 저장소로 만든다. git status : git 저장소의 파일들의 상태를 체크 (Untracked, Unmodified, Modified, Staged) .gitignore : 배제할 요소들을 지정해놓은 파일 2️⃣ 저장 및 복구 git add : 상태가 변경된 파일을 staged 영역에 저장 git commit : add 명령어로 변경된 사항들을 저장 git log : commit 내역들을 확인 git reset --hard (커밋 해시) : 원하는 시점으로 돌아가고 이후 내역 지우기 git revert (커밋 해시) : 되돌릴 시점의 커밋 되돌리기, 내역은 살아있다. 3️⃣ 브랜치 git branch (이.. 2022. 8. 24. TIL : Kruskal(크루스칼) 알고리즘 (9) 💻 알고리즘 📌 크루스칼 알고리즘 프림 알고리즘과 같이 대표적인 최소 신장 트리(MST)를 찾는 알고리즘이다. 이 알고리즘의 특징과 동작 원리는 다음과 같다. ✔️ 특징 확인하는 그래프가 무방향 그래프이고 가중치가 존재한다. 가장 비용이 작은 것부터 확인하기 때문에 그리디 알고리즘의 일종이다. 순환(Cycle)이 있는지 확인하기 위해서 Union-Find 알고리즘을 사용한다. ✔️ 동작 원리 입력받은 간선들을 cost을 기준으로 정렬한다. 가장 작은 비용을 가진 간선을 확인한다. 사이클이 안 만들어지면 추가하고 만들어지면 다음 간선을 확인한다. 간선의 개수가 정점 - 1 개가 될 때까지 반복한다. # find function def find(x): if x != parent[x]: parent[x] = .. 2022. 8. 21. TIL : 플로이드-워샬(Floyd-Warshall) 알고리즘 (8) 💻 알고리즘 📌 플로이드-워샬 알고리즘이란? 그래프 이론 중 하나로 다익스트라 알고리즘과 비슷하게 노드와 노드 사이의 최단거리를 구하는 알고리즘이다. 이 알고리즘의 특징과 동작 원리는 다음과 같다. ✔️ 특징 모든 노드 간의 최단거리를 구한다. 따라서 2차원의 공간이 필요하다. 음의 비용을 가지는 그래프에서도 사용할 수 있다. O(n^3)의 시간복잡도를 가진다. (3중 반복문) 다이나믹 프로그래밍의 성질을 가진다. ✔️ 동작 원리 거쳐 가는 노드를 기준으로 알고리즘이 수행한다. a → b의 비용과 a → k → b의 비용을 비교해서 더 작은 비용으로 최신화한다. INF = int(1e9) # 정점과 간선 개수 입력 vertex, edge = map(int, input().split()) # 그래프 초기화.. 2022. 8. 17. 이전 1 ··· 6 7 8 9 10 11 12 ··· 15 다음