[Git] Git Stash 사용하기
·
git
목표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으로 프로젝트를 되돌린다.>..
[Git] Commit 제거하기
·
git
Commit 내역 확인Commit을 제거하기 위해 먼저 Commit 내역을 확인해야 한다. 아래 명령어를 이용해 Commit 내역을 확인할 수 있고, 로컬과 원격 브랜치의 HEAD가 해시값이 e138932인 Commit에 위치함을 확인할 수 있다.$ git log  로컬 브랜치의 Commit 되돌리기Commit을 제거하기 위해서는 먼저 현재 HEAD의 위치를 옮겨야 한다. 아래 명령어를 통해 로컬 브랜치의 HEAD를 이전 Commit으로 되돌릴 수 있다. 현재 위치한 HEAD에서 1개의 Commit만 되돌리고 싶다면 ^를 사용하면 되고 현재 HEAD가 위치한 Commit을 포함해 n개의 Commit을 되돌리고 싶으면 ~{n}를 사용하면 된다. 아래 명령어를 활용해 1개의 Commit을 되돌린 후 로컬 브..
[AWS] EC2 + Docker 설치하기
·
infra
목표 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 서비스에 진입해 인스턴스 시작하기 버튼..
[AWS] Github Actions을 이용한 자동 배포 파이프라인 구축
·
infra
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한다.  본인은 현..
[JPA] Proxy
·
spring, jpa
목표 Jpa Proxy가 무엇인지에 대해 이해한다. 어떤 상황에서 Proxy를 사용해야하는지 이해한다. Jpa Proxy란? Proxy Proxy는 데이터베이스 조회를 미루는, Hibernate가 만든 실제 객체를 상속받아 만들어지는 가짜 객체이다. Proxy 객체는 target이라는 이름의 변수로 실제 객체의 참조를 보관하는데 Proxy 객체를 호출하면 Proxy객체는 실제 객체의 메소드를 호출한다. DB에서 정보를 조회하고 실제 객체를 가져올때 em.find()를 사용하는 것처럼. Proxy 객체를 가져오고 싶을때는 em.getReference()를 사용해 Proxy객체를 가져올 수 있다. 그렇다면, Proxy객체의 동작 원리는 어떻게 되는 것일까? Proxy객체를 생성하고 데이터를 읽으려 하면 그때..
[Java] Garbage Collector
·
java
목표 Java의 가장 널리 알려진 장점은 "JVM을 통해 모든 OS에서 동작한다"는 것이지만 "Java는 OS로부터 할당받은 메모리를 자동으로 관리한다"는 매우 큰 장점 또한 존재한다. Java에서 메모리를 자동으로 관리하는 관리자는 누구이며 어떤 방식으로 관리하는 것인지 알아보자. Java 메모리 관리자 GC(Garbage Collector) GC(Garbage Collector) Java GC는 JVM의 Execution Engine 내부에 존재하는데, OS로부터 할당 받은 메모리 영역(JVM Memory)을 자동으로 관리하는 기능이다. GC는 동적으로 할당된 메모리 영역(Heap)에서 더 이상 사용되지않는 객체를 식별하고 제거하여 메모리를 회수한다. 이를 통해 명시적으로 메모리 관리를 수행하지 않아..
[Java] SE/JRE/JDK
·
java
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] Redis 사용하기(1)
·
spring, jpa
목표 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의 장점이 크게 보이지 않지만, 분산환..
[Java] Java코드가 실행되기까지
·
java
목표 자바 기초를 다시 공부하면서 문득 내가 작성한 자바 코드가 어떻게 동작하는지 알고싶어졌다. 이번 글을 정리하면서 자바 코드가 바이트코드로 변환되는 과정과 JVM에서 바이트코드를 기계어로 바꾸는 과정을 완벽하게 이해하고자 한다. Java 코드가 바이트코드로 변환되는 과정 Java는 사람이 읽기 쉬운 High-Level Language이기 때문에 기계가 읽을 수 없다. 따라서, 0과1로 이루어진 이진수의 코드로 변환해줘야하는데 그 과정을 간단하게 표현하자면 아래와 같다. 우리가 작성한 소스파일(.java)이 JDK의 java compiler를 통해 바이트코드파일(.class)로 변환되고 JRE의 JVM이 이를 OS가 이해할 수 있는 기계어로 변환한다. 좀 더 자세하게 들여다 보자. 우선, 소스코드를 기..