우선순위 큐란? 우선순위가 가장 높은 데이터를 가장 먼저 꺼내지는 자료구조이다. 단순히 배열로 구현하는 경우 데이터 삭제 시 O(N)이 걸리고 힙으로 구현하는 경우에는 최악의 경우에도 O(logN) 를 보장하므로 주로 힙으로 구현된다. 큐라고는 하지만, 큐와는 완전히 다르게 동작한다. 연산 inseart 요소 추가 remove 가장 우선순위 높은 요소 삭제하고 반환 find 가상 우선순위가 높은 요소 반환
분류 전체보기
JDK 설치 👉 JDK 8 설치 로 들어가 JDK 8을 설치하고 터미널에서 확인한다. JDK 는 모니터링, 디버깅, 컴파일 등등 자바 어플리케이션을 개발할 때 도와주는 다양한 툴들의 모음이다. java 명령어를 어디서든 사용하고자 보통 환경변수를 설정해주는데 IDE를 사용하는 경우에는 프로젝트 생성 때 JDK 의 경로를 설정해주므로 하지 않아도 된다. user@userui-MacBookPro ~ % java -version java version "1.8.0_202" Java(TM) SE Runtime Environment (build 1.8.0_202-b08) Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode) IDE 설치 IDE 중에서도..
왜 시작하게 되었는지 백엔드 개발자가 되겠다고 마음먹으며 이때까지 미뤄두었던 스프링 부트를 공부하겠다고 다짐을 했다. 스프링 부트로 개발하는 웹 프로세스를 전반적으로 간단하게라도 경험해보고 싶다는 생각을 했는데 내가 다뤄보고 싶은 기술을 다루지 않는 경우가 대부분이었다. 그래서 직접 하나하나 구글링해가며 맨땅에 헤딩하듯 만들어본 것이 👉 이전에 진행한 todo list 튜토리얼 이다. 여러 시행착오를 겪는 과정에서 배운 점이 정말 많았지만... 진행하다보니 내가 하고 있는 것이 맞는지, 더 챙겨야 할 디테일은 없는지 등 누군가가 조언해주고 더 자세한 피드백을 해주면 좋겠다는 생각을 했다. 그러나 내 주위에는 경험 많은 개발자가 없으므로... 전문가의 경험이 가득 담긴 책을 선생님 삼기로 했다! 때마침 추..
디스코드봇을 헤로쿠에 배포하다가 아래와 같은 오류가 나타났다. syntaxerror: unexpected token '??=' agent ??= new https.agent({ ...this.client.options.http.agent, keepalive: true }); 헤로쿠는 package.json 에 노드 버전을 명시하지 않으면 14로 설치한다. ??= 문법은 16버전에 생긴 것이라 생긴 문제다. 아래처럼 package.json 을 수정하고 다시 deploy 하면 해결된다. { "name": "~~~", "version": "1.0.0", "engines": { "node": "16.x" },
서버 실행하기 도커의 DB 서버를 켜기 위해 아래 명령어를 입력해준다. $ docker container start mariadb 스프링 부트 서버를 켜준다. IntelliJ 에서 실행 버튼을 누르면 된다. 그러면 아래처럼 create 문이 뜰 것이다. sql 문을 볼 수 있게 하고 포매팅하라는 옵션을 설정했기 때문이다. ... Hibernate: create table todos ( id bigint not null auto_increment, done bit not null, title varchar(100) not null, primary key (id) ) engine=InnoDB ... 포스트맨으로 api 테스트하기 포스트맨은 api 를 간단하게 테스트해볼 수 있는 무료 소프트웨어다. 포스트맨 ..
DB연동 build.gradle mariadb 와 jpa 를 사용할 것이므로 주석처리 해두었던 jpa 를 주석 해제하고 아래처럼 입력한다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework.boot:spring-boot-devtools' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' //jpa implementati..
이전 게시물에서 REST api 를 아래와 같이 간단히 명세했었다. 아직 DB 와 연결하지 않았으니 이대로 컨트롤러와 서비스의 틀을 만들어보겠다. Description HTTP method Route todo list 를 가져온다 GET /todos todo 를 가져온다 GET /todo/:id todo 를 생성한다 POST /todo todo 를 수정한다 PUT or PATCH /todo/:id todo 를 삭제한다 DELETE /todo/:id /todo/TodoItemService.java 코드가 하나 뿐이므로 todo 바로 아래에 클래스를 생성해준다. 안의 내용은 DB 연결 후 작성해줄 것이다. package com.todolist.tutorial.todo; import com.todolist.t..
모듈이란? 우리의 Todo list 는 기능이 단순히 todo 를 CRUD 하는 것 뿐이지만, 만약 여러 회원을 관리하는 기능까지 추가했다면 한 패키지 안에 개발하는 건 비효율적이다. 따라서 기능별로 모듈을 나눈다. 모듈은 이렇게 기능별, 역할별로 분리한 것을 말한다. 각각의 모델은 각각의 컨트롤러, 서비스, 모델을 가질 수 있다. todo 모듈 패키지 안에 todo 패키지를 생성해준다. Todo list 에서 비즈니스 모델은 바로 todo item 이다. 할일을 적는 텍스트 title 과 완료했는지 아닌지 체크하는 done. 그리고 각 item 을 구분하는 id 로 구성되어 있다. 이 비즈니스 모델을 처리하기 위한 클래스들을 생성해줄 것이다. 패키지 아래에 model 패키지를 생성해준다. /model/..