알고리즘에서 '그래프(Graph)' 는 굉장히 중요한 자료구조이다. 실제 코딩 테스트에서도 그래프 관련 문제가 자주 나오기 때문에 알고리즘 공부를 한다면 꼭 알아야 한다. 그래프란 노트(Node) 와 에지(Edge) 로 구성된 집합이다. 노드는 데이터의 표현 단위이며 에지는 이를 연결한다. 가장 잘 알려진 그래프 알고리즘인 DFS, BFS, Dijkstra 등 모두 그래프를 알아야 이해할 수 있다. 오늘은 그래프를 표현하는 여러 방법 중 몇 가지를 알아보고자 한다. 코딩 테스트를 준비한다면 꼭 꼭 개념을 공부하고 넘어가도록 하자. 1️⃣ 에지 리스트(Edge List) 에지 리스트는 말 그대로 에지를 중심으로 그래프를 표현하는 방법이다. 보통 2차원 배열을 사용하며 배열에 출발, 도착 노드와 가중치를 저..
1️⃣ 개요요즘 캡스톤 디자인 발표 전 막바지 작업을 한다고 블로그 관리를 거의 못했다.대신 그동안 프로젝트를 하며 공부한 내용, 알게된 내용이 굉장히 많았고, 모두 블로그에 올릴 생각이다. 우선 현재 하고 있는 프로젝트의 경우 DB 테이블이 세 개밖에 나오지 않는다.user, reservation, room 으로 간단하게 구성했다. 만약 테이블이 많아져 DB가 복잡해진다면, 생각보다 column이 중복되는 경우가 많다고 한다.이를 방지하기 위해 등록 날짜 (create_date), 업데이트 날짜 (update_date)를 자동으로 추가할 수 있는 방법이 있다.2️⃣ BaseTimeEntity가장 먼저 'BaseTimeEntity' 라는 추상 클래스를 생성해야 한다.그리고 다음과 같은 어노테이션을 추가한..
1️⃣ 개요 JPA 에 대한 기본 개념을 익히기 전에 ORM, JPA, Hibernate 가 무엇인지 알고 공부하는 것이 좋다. https://jnsodevelop.tistory.com/41 [JPA] ORM, JPA, Hibernate 개념 ORM ORM (Object-Relational Mapping) 은 말 그대로 객체와 관계형 데이터베이스가 매핑(Mapping)되는 것을 줄여서 표현한 것이다. 객체와 데이터베이스 테이블간의 연결을 도와준다. SQL 쿼리문이 아닌 프로 jnsodevelop.tistory.com 오늘은 JPA 구동 방식, 영속성, 영속성 컨텍스트 등에 대해 공부해보았다. 2️⃣ JPA 구동 방식 JPA 구동 방식에 대한 큰 틀은 위 그림과 같다. 'Persistence' 는 영속성이..
1️⃣ 개요 요즘 Spring 공부를 하면서 김영한님의 JPA 강의도 듣고 있다. 데이터베이스에는 MySQL, Oracle, MongoDB 등 종류가 정말 많지만, 공부를 할 때에는 H2 데이터베이스를 사용한다. Maven 으로 프로젝트를 생성할 때와 Gradle 로 생성할 때 DB 연결 설정이 조금 다르다. 둘 다 사용해본 결과 Gradle 이 좀 더 편했고, 실제로 요즘 Gradle 을 더 많이 사용한다고 들었다. 매번 설정 방법을 찾아보기 귀찮아서 두 가지 방법을 모두 포스팅하겠다. 2️⃣ Maven Maven 에서는 'pom.xml' 과 'persistence.xml' 파일에서 설정을 한다. 우선 기본적으로 생성되어있는 'pom.xml' 파일에 의존성을 추가해준다. 다음과 같은 코드를 넣어주자. ..
1️⃣ 개요 현재 대학교 4학년인 만큼 졸업을 하기 위해선 '캡스톤 디자인'을 해야 한다. 이에 나는 4인 1팀을 꾸려 Flutter 와 Firebase, Spring 을 활용한 학교 시설 예약 관리 앱 (서비스) 제작을 주제로 선정했다. 그 중 나의 역할은 팀장 및 백엔드를 맡았다. 2️⃣ Why ? 우리 학교엔 도서관 내 스터디 룸, 개방형 학습 공간, 학생 쉼터, 이외 체육 공간 등 다양한 편의 시설이 존재한다. 물론 축구장, 체육관, 스터디 룸 등은 이미 학교 웹사이트를 통해 예약하여 사용할 수 있는 시스템이 마련되어있다. 그러나 일부 시설의 경우 온라인으로 예약할 수 있는 시스템이 없어 직접 가서 수기로 명단을 작성해야 한다. 만약 학교 내 편의 시설을 모아 한번에 예약할 수 있는 애플리케이션이..
1️⃣ ORM ORM (Object-Relational Mapping) 은 말 그대로 객체와 관계형 데이터베이스가 매핑(Mapping)되는 것을 줄여서 표현한 것이다. 객체와 데이터베이스 테이블간의 연결을 도와준다. SQL 쿼리문이 아닌 프로그래밍 언어의 코드로 데이터를 다룬다는 관점에서 ORM 프레임워크는 객체와 데이터베이스 중간에서 매개체 역할을 한다. 즉, 객체와 쿼리를 나눠 ORM 을 통해 CRUD, 트랜잭션 처리 등 데이터베이스 관련 작업들을 훨씬 수월하게 해주는 방법이다. 2️⃣ JPA JPA (Java Persistence API) 는 Java ORM 기술에 대한 API 표준 명세이다. JPA는 ORM을 사용할 수 있도록 인터페이스를 모아둔 것으로, Java 언어를 통해 관계형 데이터베이스에..
1️⃣ HTTP Message 'HTTP Message' 는 서버와 클라이언트 간 데이터가 교환되는 방식이다. 메시지 타입엔 두 가지가 있다. 요청 (Request) : 클라이언트가 서버로 데이터를 전달하여 필요한 동작을 요청한다. 응답 (Response) : 클라이언트의 요청에 대한 서버의 답변이다. HTTP 메시지 는 ASCII 로 인코딩된 텍스트 정보이며, 각각의 정보가 그 역할에 맞게 구분되어 구성된다. 예전 HTTP/1.1 에서는 클라이언트와 서버와의 연결을 통해 공개적으로 전달되었으나, HTTP/2 에서는 최적화와 성능 향상을 위해 HTTP 프레임으로 나누어진다. 위 그림처럼 HTTP 메시지는 다양한 방식으로 제공되는데 API, 설정 파일, HTML 폼 등의 방식이 있다. HTTP/ 의 이진 ..
Git 이란? Git(깃) 은 컴퓨터 파일들의 변경 사항을 추적하고 여러 명의 사용자들 간 해당 파일들의 작업을 조율하기 위한 스냅샷 스트림 기반의 분산 버전 관리 시스템(Distributed Version Control System)과 그 명령어를 말한다. 쉽게 말해 협업 도구로써 소스의 버전 관리를 도와주는 툴이다. 깃은 현재 가장 많이 사용되는 버전 관리 시스템으로 대부분의 웹, 앱 어플리케이션 개발에서 소스 코드 관리에 주로 사용된다. 또한 어떤 파일들의 변경 사항을 지속적으로 추적할 수 있다. 쉽게 말해 한 소프트웨어 개발에 여러 명의 개발자가 투입될 때, 이들이 작성한 소스 코드들을 효율적으로 관리하는데에 사용된다. 만약 A라는 프로젝트를 5명의 개발자가 진행한다고 하자. 개발자 1은 회원가입..