전체 글

전체 글

    [Java] HashMap Iterator 성능 비교

    보호되어 있는 글입니다.

    [Java Algorithm] LRU 알고리즘이란?

    LRU 알고리즘이란? LRU 알고리즘은 Least Recently Used의 약자로 직역하자면 가장 최근에 사용되지 않은 것이라는 의미를 가지고 있다. DB의 부하를 줄이기 위해 캐시 메모리를 사용한다. 하지만 캐시에도 용량이 존재하기 때문에 캐시 메모리 또한 관리를 해주어야 한다. LRU 알고리즘은 캐시에서 작업할 때 가장 오랫동안 사용하지 않은 것을 제거하는 알고리즘이다. Cache Hit / Miss Cache Miss : 찾는 데이터가 캐시에 없는 상태로 해당 데이터가 추가될 경우 가장 앞에 위치하게 된다. [1, 2, 3, 4, 5] -> 데이터 6 추가 [6, 1, 2, 3, 4] Cache Hit : 찾는 데이터가 캐시에 있는 상태로 해당 데이터 앞에 있는 데이터들은 뒤로 밀리고 해당 데이터..

    [Java DataStructure] Priority Queue(우선순위 큐)란?

    Priority Queue(우선순위 큐)란? 일반적으로 큐는 FIFO(First In First Out)의 구조로 동작하지만, 우선순위 큐는 데이터의 우선순위를 먼저 결정하고 그 순서로 나가는 자료구조이다. Priority Queue의 특징 1. 우선순위를 기준으로 데이터를 꺼낸다. 2. 내부 구조가 힙으로 구성되어 있어서 시간 복잡도가 O(NlogN)이다. 3. 우선순위를 기준으로 루트 노드를 정하고 꺼낼때 루트 노드가 나온다. 4. Comparator 인터페이스를 오버라이딩하여 우선순위를 재정의할 수 있다. Priority Queue 객체 선언 import java.util.PriorityQueue; // 오름차순 PriorityQueue pq = new PriorityQueue(); // 내림차순 ..

    [JAVA] Garbage Collection 이란?

    Garbage Collection 이란? 가비지 컬렉션은 자바의 메모리 관리 방법 중의 하나로 JVM의 Heap 영역에서 동적으로 할당했던 메모리 영역 중 필요 없게 된 메모리 영역을 주기적으로 삭제하는 프로세스이다. C언어 같은 언어에서 메모리 관리는 프로그래머의 책임으로서, 직접 관리하지 않는다면 메모리 릭(Memory Leak)을 맞게 된다. Java나 Kotlin에서는 메모리 누수를 방지하기 위해 가비지 컬렉터가 불필요한 메모리를 알아서 정리해준다. JVM의 Heap 영역은 다음의 두가지 전제로 설계된다. 대부분의 객체는 금방 접근 불가능한 상태(Unreachable)가 된다. -> 객체는 대부분 일회성 오래된 객체(old)에서 새로운 객체(young)로의 참조는 아주 적게 존재한다. -> 메모리..

    [Redis] Redis란?

    보호되어 있는 글입니다.

    [AWS] EC2에 .war 외장 톰캣 서버 배포하기

    [AWS] EC2에 .war 외장 톰캣 서버 배포하기

    EC2 패키지 인스톨러 업데이트 sudo apt update sudo apt upgrade Java 설치 sudo apt install openjdk-11-jre-headless SSH Key 생성 ssh-keygen SSH 공개 Key 복사 cat ~/.ssh/id_rsa.pub Github에 공개키 등록 github 접속 setting SSH and GPG keys new SSH Key 클릭 후 등록 JAR → WAR 포맷 변경 1. build.gradle 수정 plugins { id 'org.springframework.boot' version '2.4.2' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'war' // 추가합니다..

    [Git] Git flow

    [Git] Git flow

    브랜칭 전략 브랜칭 전략은 보다 효율적인 개발 프로젝트 코드 관리를 위해 브랜치의 종류를 나눠서 관리하는 전략을 말한다. 그 중 유명한 Git flow 브랜칭 전략을 알아보자. 5 종류의 브랜치 Master(main) 실제 제품으로 운영되는 브랜치이다. 여러 개발자들이 만든 기능을 합친 브랜치이다. Release Master 브랜치에 통합하기 전에 완성된 기능을 테스트하는 브랜치이다. 보통 제품 출시 전의 버전을 관리한다. Develop 여러 엔지니어들이 개발한 기능들을 통합해 놓은 브랜치이다. 다음 버전을 대비하기 위한 브랜치로 사용된다. Feature 특정 기능을 개발할 때 사용되는 브랜치이다. Hotfix 이미 배포된 브랜치(Master)에서 버그가 발생했을 경우 수정하는 브랜치를 의미한다. Git..

    [Git] Git branch 다루기

    [Git] Git branch 다루기

    브랜치 생성하기 / 변경하기 (git switch) git이 브랜치를 바라보는 곳인 HEAD를 변경하는 작업을 switch라고 부른다. 브랜치 생성시엔 -c(create)를 붙이고, 기존의 브랜치로 이동할 땐 -c를 붙이지 않는다. 브랜치 생성하기 git switch -c feature or git checkout -b feature 브랜치 변경하기 git switch main or git checkout main 브랜치 합치기 (git merge) 요구된 개발이 끝나면 다른 브랜치와 합칠 수 있다. git commit -m "기능1 개발 완료" git switch main # merge를 위해 목적 브랜치로 이동 git merge feat # 목적 브랜치에 완료된 브랜치를 병합 실제 프로젝트에서는 브랜..