전체 글

Jisung Jung의 기술블로그
Data Structure

[Data Structure] Priority Queue - 우선순위 큐

Priority Queue Priority Queue는 들어간 순서에 상관없이 우선순위가 높은 데이터가 먼저 나오는 자료구조이다. Queue와 구조가 비슷할 것 같지만 둘은 많은 차이가 있다. Queue는 연산의 결과로 FIFO 즉, 먼저 들어간 데이터가 먼저 나오지만 Priority Queue는 그렇지 않다. 앞서 설명한 것처럼 들어간 순서에 상관없이 우선순위가 높은 데이터가 먼저 나온다. Priority Queue는 Array, List, Heap으로 구현할 수 있다. 하지만 Array와 List는 데이터 삽입과 삽입 위치를 찾는 과정에서 성능을 저하시킬 수 있기때문에 일반적으로 Heap을 이용해 구현한다. Priority Queue의 개념은 사실상 Heap에 대한 개념과 같기 때문에 Heap에 대한..

DevOps

[Git] Git Stash 사용하기

목표 Git을 이용해 협업을 하다보면 pull시에 내가 수정한 코드를 다른 팀원도 수정해 충돌이 나는 경우가 있다. 이럴 때 충돌 상황을 해결할 수 있는 Git Stash에 대해 이해해보자. Your local changes to the followings files would be overwritten by merge 코드를 개발하다보면 팀원의 commit을 내 working directory에 반영하기 위해 pull 해야한다. 하지만, 내가 수정한 파일을 팀원도 수정했다면 제목과 같은 에러가 발생할 것이다. 이때 git stash를 사용할 수 있다. git stash를 이용하면 지금까지 working directory에서 작성한 내 코드는 모두 백업되고 가장 최근 commit으로 프로젝트를 되돌린다...

DevOps

[Git] Github 최근 Commit 삭제하기

Git Commit 내역 삭제하기현재 branch의 commit 내역 확인. git log를 이용해 commit 내역을 살펴보면 현재 branch의 HEAD가 commit 3490... 에 있음을 알 수 있다.git log  현재 HEAD의 commit을 삭제하고 싶다면 1 )과 같이 입력한다. HEAD^는 현재 HEAD 1개를 가리키는 것이다. 현재 HEAD를 포함해 n개의 commit을 삭제하고 싶다면 2)와 같이 입력한다.1) git reset HEAD^2) git reset HEAD~n 다시 git log를 확인해보면 commit이 삭제된 것을 알 수 있다. 이제 변경된 Git을 Github에 반영해보자. 아래와 같이 입력해 Github저장소에도 변경내용을 반영한다.git pu..

DevOps

[AWS] EC2 + Docker 설치하기

목표 AWS EC2 Instance를 생성하고 사용하는 방법 알아보기 EC2 SSH를 이용해 Instance에 Docker 설치하기 AWS EC2란 EC2(Elastic Compute Colude) EC2는 AWS에서 제공하는 클라우드 컴퓨팅 솔루션으로 AWS region에 존재하는 독립된 컴퓨터를 임대해주는 서비스이다. EC2를 사용함으로써 서버용 컴퓨터를 따로 구비하지 않아도 되고, 초기 구입 비용이나 세팅 없이 사용한 자원만큼만 비용을 지불하면 된다는 장점이 있다. EC2 Instance EC2 서비스를 통해 사용할 수 있는 실제 컴퓨터 한 대를 의미한다. 여러개의 Instnace를 생성해 사용할 수 있다. AWS EC2 Instance 생성하기 AWS EC2 서비스에 진입해 인스턴스 시작하기 버튼..

DevOps

[Github] Github Actions을 이용한 EC2 CI/CD 파이프라인 구축

amazon EC2 + Docker 설치하기 목표 AWS EC2 Instance를 생성하고 사용하는 방법 알아보기 EC2 SSH를 이용해 Instance에 Docker 설치하기 AWS EC2란 EC2(Elastic Compute Colude) EC2는 AWS에서 제공하는 클라우드 컴퓨팅 솔루션으로 AWS region에 존재 zzzzseong.tistory.com 해당 글은 위 포스트와 이어지는 글입니다. EC2 Instance 생성 과정과 Docker 설치 방법을 보려면 위 포스트를 참고해주세요 Spring 프로젝트에 Dockerfile 추가하기 Docker Image 생성을 위해 Spring 프로젝트 root 경로에 Dockerfile을 생성한 후 Github repository에 push한다. 본인은..

Spring, JPA

[JPA] Proxy

목표 Jpa Proxy가 무엇인지에 대해 이해한다. 어떤 상황에서 Proxy를 사용해야하는지 이해한다. Jpa Proxy란? Proxy Proxy는 데이터베이스 조회를 미루는, Hibernate가 만든 실제 객체를 상속받아 만들어지는 가짜 객체이다. Proxy 객체는 target이라는 이름의 변수로 실제 객체의 참조를 보관하는데 Proxy 객체를 호출하면 Proxy객체는 실제 객체의 메소드를 호출한다. DB에서 정보를 조회하고 실제 객체를 가져올때 em.find()를 사용하는 것처럼. Proxy 객체를 가져오고 싶을때는 em.getReference()를 사용해 Proxy객체를 가져올 수 있다. 그렇다면, Proxy객체의 동작 원리는 어떻게 되는 것일까? Proxy객체를 생성하고 데이터를 읽으려 하면 그때..

Java

[Java] Garbage Collector

목표 Java의 가장 널리 알려진 장점은 "JVM을 통해 모든 OS에서 동작한다"는 것이지만 "Java는 OS로부터 할당받은 메모리를 자동으로 관리한다"는 매우 큰 장점 또한 존재한다. Java에서 메모리를 자동으로 관리하는 관리자는 누구이며 어떤 방식으로 관리하는 것인지 알아보자. Java 메모리 관리자 GC(Garbage Collector) GC(Garbage Collector) Java GC는 JVM의 Execution Engine 내부에 존재하는데, OS로부터 할당 받은 메모리 영역(JVM Memory)을 자동으로 관리하는 기능이다. GC는 동적으로 할당된 메모리 영역(Heap)에서 더 이상 사용되지않는 객체를 식별하고 제거하여 메모리를 회수한다. 이를 통해 명시적으로 메모리 관리를 수행하지 않아..

Java

[Java] SE/JRE/JDK

Java SE, JDK, JRE ✅ Java SE(Java Standard Edition) Java SE는 Java에서 가장 기본이 되는 자바의 표준안이며 Java가 어떠한 문법적인 구성을 가지고 있는지, 어떠한 라이브러리들을 제공하는지 등을 정의하고 있다. Java SE이 이외의 Edition으로는 Java EE(Enterprise Edition), ME(Micro Edition)등이 있다. Java SE는 실제 소프트웨어가 아니며 실제 Java 소프트웨어를 개발하는데 필요한 설계도라고 생각하면 될 것이다. 아래는 Oracle에서 공개하는 Java SE의 공식문서 링크이니 궁금하면 들어가서 한번 보면 좋을 것 같다. 현재는 Java SE 20버전까지 올라와 있다. Java Platform, Sta..

Spring, JPA

[Spring] Redis 사용하기(1)

목표 Redis가 무엇이고 언제 사용하는 것인지 알아보자 Docker로 Redis를 실행해보자 Redis란 무엇이고 언제, 어떻게 사용하는것일까? Redis(Remote Dictionary Server) Redis는 오픈소스기반 NoSQL의 Key-Value Store, In-Memory Database이며 속도와 확장성, 대량 데이터 처리 능력을 제공한다. 여기서 Key-Value Store란 메모리를 기반으로 데이터를 빠르게 읽어올 수 있는 저장소를 의미하며 Disk를 기반으로 하는 RDBMS보다 Read가 빠르다. 💡Key-Value 형태는 HashMap과 유사해 보이는데, 그냥 HashMap을 사용하면 되는거 아닌가? 서버가 1대 있다는 가정에서는 Redis의 장점이 크게 보이지 않지만, 분산환..

Jisung Jung
Jisung Jung의 기술블로그