본문 바로가기

분류 전체보기

(160)
백준 2178 C++ 최단 경로는 BFS!! #include #include #include using namespace std;int n,m;int arr[101][101];int dist[101][101];bool visited[101][101];int dx[] = {-1,1,0,0};int dy[] = {0,0,-1,1};int cnt = 1;void bfs(int x, int y) { queue> q; q.emplace(x,y); visited[x][y] = true; dist[x][y] = 1; while (!q.empty()) { auto [cx,cy] = q.front(); q.pop(); for (int i = 0; i = 0 && nx = 0 &..
[Spring] REST API #0 - REST API는 무엇인가? 스프링을 공부하면서 REST API라는 말을 많이 들어봤고 채용 시장에 올라오는 공고들을 보았을 때 REST API 개발 경험이라는 말을 많이 보았지만 심도있게 다뤄보지는 않은 것 같아서 이번 겨울방학 때는 REST API와 Spring에서의 로그인 (Spring security, Oauth, JWT)을 공부해려고 한다. 1. API란 무엇인가? (HTTP, JSON)RESTful API를 이해하려면 우선 API를 알아야 한다. 백엔드 개발을 하던 프론트엔드 개발을 하던 클라이언트와 서버가 API로 통신을 한다는 말은 익히 들어봤을 것이다. 많은 곳에서 API는 음식점에서 점원과 같은 역할을 하며 손님(클라이언트)이 음식을 주문하면 점원(API)이 요청사항을 주방(서버)에 전달하고 주방에서 만들어진 음..
[SpringBoot] MockMvc 알아보기 1. Mock?Mock는 모조품이라는 뜻으로 스프링의 MVC 패턴을 흉내내어서 실제 HTTP 요청, 응답 없이도 HTTP의 요청과 응답이 정상적으로 잘 이루어지는지 확인할 수 있는 기능입니다.2. MockMvc를 사용하는 이유1. 실제 서버나 내장 톰캣을 띄우지 않고도 빠르게 테스트 할 수 있다.2. MockMvc의 다양한 기능으로 테스트 코드 작성 시 API가 정상적으로 응답하는지 확인해볼 수 있다. 3. 예시 코드 @Test public void findAllArticles() throws Exception { final String url = "/api/articles"; final String title = "title"; final String ..
[H2] 스프링에 H2 데이터베이스 설정하는 법 스프링을 사용하면서 H2 데이터베이스를 설정할 때 은근 오류가 많이 나고 8082 port already use나 DB와 엔티티가 원하는 대로 연결이 안 되는 부분이 있어서 확실하게 정리하고자 하는 글입니다. 1. application.yml or application.properties 코드우선 H2 DB를 쓸 때 외부 콘솔(8082포트)을 쓰는 경우와 스프링 내장 콘솔(8080)을 쓰는 경우가 있는데 이 글은 외부 콘솔 8082를 사용할 때의 경우입니다. 우선 URL 설정이 제일 중요합니다. 아래의 url 부분을 그대로 사용하시고 blogdb부분만 원하는 db명으로 변경하시면 됩니다.그리고 저같은 경우는 스프링 서버, DB가 정상적으로 열리고 엔티티도 잘 연계되었는데 data.sql을 사용하는 경우에..
스프링 계층 구조 (Controller, Service, Repository) 스프링에서 개발을 하다보면 Controller, Service, Repository 계층 구조를 나눠서 개발하는 것을 볼 수 있다.이것을 하나의 설계 패턴으로 각 계층마다 역할과 책임을 분리시켜서 유지보수성과 확장성을 높이려는 목적이 있다.1. Controller 계층컨트롤러 계층은 @Controller, @RestController 애너테이션과 함께 쓰이며 주로 사용자의 http 요청을 받아서 응답을 처리하는 역할을 담당한다. 각 메서드 방식에 따라서 @GetMapping, @PostMapping 등의 애네터이션을 쓸 수 있으며 return값으로는 HTTP 응답을 반환할 수도 있고 뷰를 반환할 수도 있다.@RestController@RequiredArgsConstructorpublic class Mai..
[JPA] KBO 프로젝트 #3 - TEAM, PLAYER 엔티티 추가 설정 이제 TEAM과 PLAYER의 뼈대는 만들어졌으니 여기다가 추가 기능들을 넣을 것이다.우선 TEAM에는 승 패 무승부 승률 필드를 추가하고 PLAYER에는 타율 홈런 타점 방어율 승리 세이브 등을 추가할 것이다. 그리고 추가로 새로운 엔티티를 하나 만들어서 경기 일정에 관한 정보를 제공하도록 할 것이다. 정리 - 승, 패, 무승부 등 승 패에 관한 정보 추가 - 타율 홈런 타점 세이브 승리 등 투수, 타자의 디테일한 정보 추가 - 경기 일정, 결과, 경기 구장 정보 추가 package Entity;import jakarta.persistence.*;import lombok.Getter;import lombok.Setter;import java.util.ArrayList;import java.uti..
[JPA] KBO 프로젝트 #2 - 구단 순위 입력, 정렬 이제 구단 순위를 입력하고 JPQL 쿼리를 이용해서 구단 순위를 받아볼 예정이다. 실제 웹사이트, 애플리케이션으로 만든다면 실시간으로 업데이트하는 기능도 하고 싶지만 아직은 단순히 H2 데이터베이스로만 하기 때문에 그런 기능은 구현하지 못 했다. 1. Team 엔티티에 rank 추가package Entity;import jakarta.persistence.*;import java.util.ArrayList;import java.util.List;@Entitypublic class Team { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="TEAM_ID") private Long id; private ..
[JPA] 즉시 로딩과 지연 로딩 JPA를 공부하다 보면 즉시 로딩과 지연 로딩을 만나게 된다. 둘의 차이를 설명하기 전에 코드로 예시를 먼저 살펴보자.package org.example;import Entity.Player;import Entity.Team;import jakarta.persistence.EntityManager;import jakarta.persistence.EntityManagerFactory;import jakarta.persistence.EntityTransaction;import jakarta.persistence.Persistence;import java.lang.reflect.Member;public class Main { public static void main(String[] args) { ..

반응형