분류 전체보기
[LeetCode] Longest Consecutive Sequence (Java)
✉️문제 https://leetcode.com/problems/longest-consecutive-sequence/description/ Longest Consecutive Sequence - LeetCode Can you solve this real interview question? Longest Consecutive Sequence - Given an unsorted array of integers nums, return the length of the longest consecutive elements sequence. You must write an algorithm that runs in O(n) time. Example 1: Input: leetcode.com 🗝 문제풀이 class Solu..
[LeetCode] Course Schedule (Java)
✉️문제 https://leetcode.com/problems/course-schedule/description/ Course Schedule - LeetCode Can you solve this real interview question? Course Schedule - There are a total of numCourses courses you have to take, labeled from 0 to numCourses - 1. You are given an array prerequisites where prerequisites[i] = [ai, bi] indicates that you must take co leetcode.com 📝 접근 위상 정렬 알고리즘을 이용한다. 🗝 문제풀이 class S..
[DB] MySQL 어댑티브 해시 인덱스
🔍 어댑티브 해시 인덱스 일반적으로 인덱스를 생각하면 B-Tree 인덱스를 생각할 것이다. 하지만 여기서는 사용자가 수동으로 생성하는 인덱스가 아니라 InnoDB 스토리지 엔진에서 사용자가 자주 요청하는 데이터에 대해 자동으로 생성하는 인덱스이다. 사용자는 innodb_adaptive_hash_index 변수를 이용해서 어댑티브 해시 인덱스 기능을 활성화하거나 비활성화할 수 있다. ✏️ B-Tree의 한계 B-Tree는 실제 데이터가 리프 노드에 존재하기 때문에 특정 데이터를 찾기 위해 루트 노드 -> 브랜치 노드 -> 리프 노드의 경로를 거친다. 만약 검색 작업을 몇천 개의 스레드로 실행하면 CPU 사용량이 늘어나고 자연히 쿼리의 성능은 떨어진다. ✏️ 어댑티브 해시 엔덱스의 등장 어댑티브 해시 인덱스..
Docker Compose를 이용한 Vue 프로젝트 실행
이전에는 voca 프로젝트의 backend 스프링 프로젝트와 DB를 컨테이너로 올리는 작업을 진행하였다. 현재 운영 서버는 Nginx를 이용하고 있어 이를 맞추고자 한다. 🔍 vue 빌드하기 웹브라우저는 HTML, CSS, JS 이 세개의 언어만 해석할 수 있기 때문에 모든 사람이 이용하게 하려면 App.vue파일을 그대로 올리는 것이 아닌 build를 해야 한다. Vue 프로젝트는 npm run build 명령어를 통해 간단하게 빌드할 수 있다. 빌드가 성공하면 dist라는 폴더가 생기는데 이 폴더를 그대로 서버에 올리면 된다. 이를 도커 파일로 작성해보자. dockerfile을 프론트 프로젝트 루트에 생성한다. FROM node:latest as build-stage # 디렉토리 전환 명령어로 이후의..
Docker Compose를 이용한 프로젝트 실행
🔍 도커 컴포즈 보통 도커를 사용하여 프로젝트를 관리하면 여러개의 컨테이너를 실행하고 관리하게 되는데 (DB랑 백엔드 프로젝트 하나만 묶어도 2개이다), 모든 컨테이너를 ps 커맨드로 확인하면서 관리하는게 쉽지만은 않다. 이런 불편함을 해소하고자 나온 것이 도커 컴포즈이다. 도커 컴포즈는 시스템 구축과 관련된 명령어를 하나의 텍스트 파일에 기재해 명령어 한번에 시스템 전체를 실행하고 종료할 수 있도록 도와준다. 🔍 도커 컴포즈 실습 간단하게 진행하고 있는 백엔드 프로젝트로 도커 컴포즈 실습을 진행하였다. 일단 필요한 컨테이너는 총 두 가지이다. MySQL DB 컨테이너 스프링부트 .jar파일을 빌드하고 실행해주는 컨테이너 도식도는 위와 같으며 yml으로 된 도커 컴포즈 파일을 작성함으로써 이 도커 컨테이..