오늘의 기록
![[JPA] 프로젝트 환경설정](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLdh6b%2FbtqWOfORAFQ%2Fh2cVE9hetknfbTq6XpyWH0%2Fimg.png)
[JPA] 프로젝트 환경설정
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 스프링 핵심 원리 - 기본편 - 인프런 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 초급 프레임워크 및 라이브러리 웹 개발 서버 개발 Back-End Spring 객체지향 온 www.inflearn.com 강의를 들으며 생각 정리 + "자바 ORM 표준 JPA 프로그래밍" 책 참고 지금까지는 순수한 자바 환경에서 JPA를 사용했다. 따라서 데이터베이스 커넥션과 트랜잭션 처리도 JPA가 제공하는 기능을 직접 사용했다. 스프링 프레임워크와 JPA를 함께 사용한다는 것은 스프링 컨테이너 위에서 JPA를 사용한다는 의미다. 스프링부트는 스프링 프레임워크 기반의 애플리케이션을 쉽게 만들기..
![H2 데이터베이스 설치](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1YwBB%2FbtqWUpJ6End%2Fjdxnbst6nJeHa3uUkNYDDk%2Fimg.png)
H2 데이터베이스 설치
H2 데이터베이스는 개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면을 제공한다. 현재 1.4.200 버전(2019 -10-14)을 사용한다. 다운로드 및 설치 다운로드 링크 https://www.h2database.com 윈도우 유저는 Windows Installer를 설치해서 쉽게 실행할 수 있다. All Platforms는 윈도우를 포함한 다른 OS에서 H2 데이터베이스를 사용할 때 다운로드한다. 다운받아 압축을 풀고 해당 폴더를 원하는 위치에 둔다. 이제 h2/bin/h2.bat(윈도우) or h2.sh(맥)을 실행하면 된다. 데이터베이스 파일 생성 방법 - jdbc:h2:~/[프로젝트 이름] (최초 한번) ~/jpashop.mv.db 파일 생성 확인 (사용자 폴더에서 ls -arlth 했을 ..
![[Spring] devtools](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEcids%2FbtqWVReHzEK%2F6jibZPrzVY3gkVbdnEHtM1%2Fimg.png)
[Spring] devtools
스프링 웹 환경에서 html 파일을 수정할 때마다 서버를 중지했다 다시 재시작 해줘야 하는 번거로움이 있었는데, spring-boot-devtools 라이브러리를 추가하면, html 파일을 컴파일만 해주면 서버 재시작 없이 View 파일 변경이 가능하다. 이제 서버 실행 중에 html 파일을 수정하고 메뉴 build -> Recompile (Ctrl + Shift + F9)만 해주면 서버 재시작 없이 바뀐 웹 화면을 볼 수 있다.
![IntelliJ에서 Gradle 사용시 자바 직접 실행](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJDxEk%2FbtqWWsFF80k%2F5MA1Y6WY9Rei3iW2lqBkpk%2Fimg.png)
IntelliJ에서 Gradle 사용시 자바 직접 실행
IntelliJ에서 Gradle 프로젝트 사용시 Gradle 대신에 자바 직접 실행 방법 최근 IntelliJ 버전은 Gradle로 실행을 하는 것이 기본 설정이다. 이렇게 하면 실행속도가 느리다. 다음과 같이 변경하면 자바로 바로 실행해서 실행속도가 더 빠르다. Settings -> Build, Execution, Deployment ->Build Tools -> Gradle Build and run using: Gradle -> IntelliJ IDEA Run tests using: Gradle -> IntelliJ IDEA
![스프링 - 롬복(lombok) 라이브러리 설치](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2ODyi%2FbtqWGL0aA4Y%2FPLUQa9HKwWFoHuj8rFP6zK%2Fimg.png)
스프링 - 롬복(lombok) 라이브러리 설치
롬복 라이브러리는 도메인 클래스에서 getter/setter 메서드와 toString, equals, hashCode 등의 메서드를 애노테이션으로 사용할 수 있도록 해주는 라이브러리이다. 이외에도 몇 가지 기능이 존재하지만, 보통 도메인 클래스에 getter/setter 메서드와 생성자를 처리할 때 주로 사용한다. 1. 먼저 라이브러리를 적용한다. gradle 기준 build.gradle에 다음 코드를 포함시킨다. (미리 스프링부트에서 프로젝트를 생성할 때 롬복 라이브러리를 포함시켜도 된다.) plugins { id 'org.springframework.boot' version '2.4.2' id 'io.spring.dependency-management' version '1.0.11.RELEASE' i..
![우선순위 큐](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeelCk%2FbtqWBzSt24G%2FksLRsgFyPQkKJ5kRK40uYk%2Fimg.png)
우선순위 큐
우선순위 큐 우선순위가 가장 높은 데이터를 가장 먼저 삭제하는 자료구조이다. 예를 들어 어러 개의 물건 데이터를 자료구조에 넣었다가 가치가 높은 물건 데이터부터 꺼내서 확인해야 하는 경우에 우선순위 큐를 이용할 수 있다. 우선순위 값을 표현할 때는 일반적으로 정수형 자료형의 변수가 사용된다. 예를 들어, 물건 정보가 있고, 이 물건 정보는 물건의 가치와 물건의 무게로만 구성된다고 가정해보자. 그러면 모든 물건 데이터를 (가치, 물건)으로 묶어서 우선순위 큐 자료구조에 넣을 수 있다. 이후에 우선순위 큐에서 물건을 꺼내게 되면, 항상 가치가 높은 물건이 먼저 나오게 된다.(최대 힙 기준) 대부분의 프로그래밍 언어에서는 우선순위 큐 라이브러리에 데이터의 묶음을 넣으면, 첫 번째 원소를 기준으로 우선순위를 설..
![이진 탐색 트리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCFaAR%2FbtqWc8vLG2B%2FYc4VApA9RxsyyVpojIX9U1%2Fimg.png)
이진 탐색 트리
이진 탐색 트리 트리 자료구조 중에서 이진 탐색이 동작할 수 있도록 고안된, 효율적인 탐색이 가능한 자료구조이다. 이진 탐색 트리는 다음과 같은 특징을 가진다. 부모 노드보다 왼쪽 자식 노드가 작다. 부모 노드보다 오른쪽 자식 노드가 크다. 실제 코딩 테스트에서 이진 탐색 트리 자료구조를 구현하도록 요구하는 문제는 출제 빈도가 낮다. 이진 탐색 트리가 이미 구현되어 있다고 가정하고 이진 탐색 트리에서 탐색하는 과정만 알아도 충분하다. 탐색은 루트 노드에서부터 자식노드로 내려가면서 찾는 원소값과 비교해가면 된다.
그래프
그래프 그래프는 노드(node)와 간선(edge)로 표현되며 이때 노드를 정점(vertex)이라고도 말한다. 또한 두 노드가 간선으로 연결되어 있다면 '두 노드는 인접하다(Adjacent)'라고 표현한다. 프로그래밍에서 그래프는 크게 2가지 방식으로 표현할 수 있다. 인접 행렬(Adjacent Matrix) 인접 리스트(Adjacent Lint) 인접 행렬 2차원 배열에 각 노드가 연결된 형태를 기록하는 방식이다. 파이썬에서는 리스트를 사용한다. 연결되어 있지 않은 노드끼리는 무한의 비용이라고 작성한다. 인접 행렬 방식 예제 INF=999999999 # 무한의 비용 선언 # 2차원 리스트를 이용해 인접 행렬 표현 graph=[ [0,7,5], [7,0,INF], [5,INF,0] ] 인접 리스트 각 노드..