전체 글

개발 공부 기록. https://github.com/junseoparkk
📗 Back-end/📗 Spring

[Spring] H2 Database 연결 feat. JPA

1️⃣ 개요 요즘 Spring 공부를 하면서 김영한님의 JPA 강의도 듣고 있다. 데이터베이스에는 MySQL, Oracle, MongoDB 등 종류가 정말 많지만, 공부를 할 때에는 H2 데이터베이스를 사용한다. Maven 으로 프로젝트를 생성할 때와 Gradle 로 생성할 때 DB 연결 설정이 조금 다르다. 둘 다 사용해본 결과 Gradle 이 좀 더 편했고, 실제로 요즘 Gradle 을 더 많이 사용한다고 들었다. 매번 설정 방법을 찾아보기 귀찮아서 두 가지 방법을 모두 포스팅하겠다. 2️⃣ Maven Maven 에서는 'pom.xml' 과 'persistence.xml' 파일에서 설정을 한다. 우선 기본적으로 생성되어있는 'pom.xml' 파일에 의존성을 추가해준다. 다음과 같은 코드를 넣어주자. ..

📚 Project

[Project] 학교 시설 예약 관리 앱 (1) - 개요

1️⃣ 개요 현재 대학교 4학년인 만큼 졸업을 하기 위해선 '캡스톤 디자인'을 해야 한다. 이에 나는 4인 1팀을 꾸려 Flutter 와 Firebase, Spring 을 활용한 학교 시설 예약 관리 앱 (서비스) 제작을 주제로 선정했다. 그 중 나의 역할은 팀장 및 백엔드를 맡았다. 2️⃣ Why ? 우리 학교엔 도서관 내 스터디 룸, 개방형 학습 공간, 학생 쉼터, 이외 체육 공간 등 다양한 편의 시설이 존재한다. 물론 축구장, 체육관, 스터디 룸 등은 이미 학교 웹사이트를 통해 예약하여 사용할 수 있는 시스템이 마련되어있다. 그러나 일부 시설의 경우 온라인으로 예약할 수 있는 시스템이 없어 직접 가서 수기로 명단을 작성해야 한다. 만약 학교 내 편의 시설을 모아 한번에 예약할 수 있는 애플리케이션이..

📗 Back-end/📗 JPA

[JPA] ORM, JPA, Hibernate 개념

1️⃣ ORM ORM (Object-Relational Mapping) 은 말 그대로 객체와 관계형 데이터베이스가 매핑(Mapping)되는 것을 줄여서 표현한 것이다. 객체와 데이터베이스 테이블간의 연결을 도와준다. SQL 쿼리문이 아닌 프로그래밍 언어의 코드로 데이터를 다룬다는 관점에서 ORM 프레임워크는 객체와 데이터베이스 중간에서 매개체 역할을 한다. 즉, 객체와 쿼리를 나눠 ORM 을 통해 CRUD, 트랜잭션 처리 등 데이터베이스 관련 작업들을 훨씬 수월하게 해주는 방법이다. 2️⃣ JPA JPA (Java Persistence API) 는 Java ORM 기술에 대한 API 표준 명세이다. JPA는 ORM을 사용할 수 있도록 인터페이스를 모아둔 것으로, Java 언어를 통해 관계형 데이터베이스에..

📙 CS/📙 Network

[Network] HTTP Message

1️⃣ HTTP Message 'HTTP Message' 는 서버와 클라이언트 간 데이터가 교환되는 방식이다. 메시지 타입엔 두 가지가 있다. 요청 (Request) : 클라이언트가 서버로 데이터를 전달하여 필요한 동작을 요청한다. 응답 (Response) : 클라이언트의 요청에 대한 서버의 답변이다. HTTP 메시지 는 ASCII 로 인코딩된 텍스트 정보이며, 각각의 정보가 그 역할에 맞게 구분되어 구성된다. 예전 HTTP/1.1 에서는 클라이언트와 서버와의 연결을 통해 공개적으로 전달되었으나, HTTP/2 에서는 최적화와 성능 향상을 위해 HTTP 프레임으로 나누어진다. 위 그림처럼 HTTP 메시지는 다양한 방식으로 제공되는데 API, 설정 파일, HTML 폼 등의 방식이 있다. HTTP/ 의 이진 ..

📒 Language/📒 Git

[Git] Git 개념, 구조

Git 이란? Git(깃) 은 컴퓨터 파일들의 변경 사항을 추적하고 여러 명의 사용자들 간 해당 파일들의 작업을 조율하기 위한 스냅샷 스트림 기반의 분산 버전 관리 시스템(Distributed Version Control System)과 그 명령어를 말한다. 쉽게 말해 협업 도구로써 소스의 버전 관리를 도와주는 툴이다. 깃은 현재 가장 많이 사용되는 버전 관리 시스템으로 대부분의 웹, 앱 어플리케이션 개발에서 소스 코드 관리에 주로 사용된다. 또한 어떤 파일들의 변경 사항을 지속적으로 추적할 수 있다. 쉽게 말해 한 소프트웨어 개발에 여러 명의 개발자가 투입될 때, 이들이 작성한 소스 코드들을 효율적으로 관리하는데에 사용된다. 만약 A라는 프로젝트를 5명의 개발자가 진행한다고 하자. 개발자 1은 회원가입..

📙 CS/📙 Design Pattern

[Design Pattern] Singleton Pattern (싱글톤 패턴)

1️⃣ Singleton Pattern Singleton Pattern (싱글톤 패턴) 은 하나의 클래스가 오직 하나의 인스턴스만 가지는 패턴이다. 싱글톤 인스턴스는 최초 생성시 하나만 만들어지며, 해당 인스턴스를 다른 모듈이 공유하며 사용한다. Java에서 가장 기본적인 싱글톤의 형태는 다음과 같다. public class Singleton{ //객체는 하나의 인스턴스만 가진다. private static Singleton instance = new Singleton(); //생성자를 'private'로 제한하여 외부에서 싱글톤 객체를 만들지 못하게 한다. private Singleton() { } //get 메서드만을 통해서 싱글톤 객체를 얻을 수 있다. public static Singleton g..

📙 CS/📙 Algorithm

[Algorithm] Time Complexity : 시간 복잡도

1️⃣ Time Complexity : 시간 복잡도 우선 시간 복잡도를 알기 위해선 알고리즘(Algorithm) 의 개념을 이해해야 한다. 사전에 의하면 알고리즘은 수학과 컴퓨터 과학, 언어학 또는 관련된 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차이며, 계산을 실행하기 위한 단계적 절차를 의미한다. 즉, 문제 풀이에 필요한 계산 절차 또는 처리 과정의 순서를 말한다. 그렇다면 좋은 알고리즘, 효율적인 알고리즘은 무엇일까? 어떻게 보면 연산의 횟수와 데이터의 크기에 따른 알고리즘의 수행 시간이 적을수록 효율적인 알고리즘이라고 할 수 있다. 이를 계산하기 위한 방법이 시간 복잡도이며, 주로 'Big-O (빅-오)' 표기법을 사용한다. 이는 알고리즘의 수행 시간을 평가하는 척도라고 할 수 있다...

📕 Coding Test/📕 백준

[JAVA] 백준 1009: 분산처리

https://www.acmicpc.net/problem/1009 1009번: 분산처리 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000) www.acmicpc.net 문제 재용이는 최신 컴퓨터 10대를 가지고 있다. 어느 날 재용이는 많은 데이터를 처리해야 될 일이 생겨서 각 컴퓨터에 1번부터 10번까지의 번호를 부여하고, 10대의 컴퓨터가 다음과 같은 방법으로 데이터들을 처리하기로 하였다. 1번 데이터는 1번 컴퓨터, 2번 데이터는 2번 컴퓨터, 3번 데이터는 3번 컴퓨터, ... , 10번 데이터는 10번 컴퓨터, 11번 데이터는 1번 컴퓨터, 12번 데이터는 2번 ..

박갈
미 개발 구역