전체 글

개발하면서 공부한 내용들을 정리하는 곳입니다
Tools

[Git] merge 와 rebase

하위 브랜치에서 작업을 마치고 상위 브랜치로 합치는 방법으로는 merge 와 rebase 가 있다. 그 차이점이 헷갈려 정리를 해보았다. Git 브랜치 합치기 - git merge merge 를 실습하기 위해 main branch 에서 하위 브랜치를 하나 따서 새로운 파일을 생성한다. 1. 하위 브랜치 생성 (main)$ git branch merge-practice 2. 브랜치 이동 후 파일 추가 ( merge.yaml ) 후 커밋 merge & rebase Test .. ( 내용 무관 ) 3. main 브랜치에서 기존 파일 수정 ( practice.yaml ) 후 커밋 merge 와 rebase - merge 테스트하기 ( 추가 ) 4. 브랜치 합치기 ( 현재 위치 : main ) (main)$ gi..

Web

[System Design] URL 단축기 설계 -1

대규모 시스템 설계 기초 라는 책을 매주 한 chapter 씩만 읽고있음에도 나에게는 아직 많이 어렵고 와닿지 않는 내용이 많았다. 그 중 8장은 직접 구현해보면 좋을 것 같아 구현해보았다. URL 단축기의 필요성 사실 처음에는 이 필요성이 와닿지않았다. 특정 사이트에서 링크 복사를 하면 해당 URL 의 단축 URL 이 복사되어 좀 더 보기 간편하다는 생각은 했지만 그게 다였다. 그래서 필요성을 먼저 정리해보았다. 1. 확장성 - URL 단축기는 원래의 긴 URL을 짧게 변환하여 빠른 리다이렉션을 통해 서버의 부하를 줄일 수 있다. 2. 성능 - 캐싱 전략을 사용해 자주 접근되는 단축 URL에 대한 리다이렉션을 빠르게 제공할 수 있다. - 단축된 URL은 데이터 전송 시 네트워크 부하를 줄일 수 있다. ..

JAVA

[JAVA] 체크 예외와 언체크 예외

평소 체크 예외와 언체크 예외의 용도를 생각하지 않고 사용했던 것 같아 정리를 해본다. 체크 예외(Checked Exception)와 언체크 예외(Unchecked Exception) 1. 체크 예외 ( Checked Exception ) - 컴파일러가 예외를 확인하므로 컴파일 타임에 예외를 발생시킨다. - 예외를 처리하기위해 try-catch 블록이나 throws 를 사용해야 한다. ex> IOException, FileNotFoundException public class CheckedExceptionExample { public static void main(String[] args) { try { File file = new File("nonexistent.txt"); FileInputStream..

SQL

[MySQL] 연/월/일 출력하기 ( 좌측 0 제거 )

프로그래머스에서 아래의 SQL 문제를 풀다가 날짜를 DATE_FORMAT 으로만 출력하는 나를 발견하고 정리하게 되었다. https://school.programmers.co.kr/learn/courses/30/lessons/151139 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr MySQL에서 연월일 출력하기 MONTH (DATE 타입) 으로 월 출력하기 SELECT MONTH(DATE('20220807')) FROM DUAL; -- 8 SELECT DATE_FORMAT(DATE('20220807'),'%m') FROM DUAL; -- 08 문제의 조..

Web

[Spring] Transaction 에 대해서

spring 으로 웹을 구현했을 때 서비스 단에 트랜잭션을 보장하기위해 @Transactional 을 사용했었는데 그 동작에 대해서는 궁금해하지않았던 것 같아 정리를 해보려한다. 트랜잭션 ( Transaction ) 이란 트랜잭션은 데이터베이스 용어로, 하나 이상의 관련 작업을 그룹화하여 일련의 작업들이 모두 성공적으로 완료되거나 하나라도 실패할 경우 모든 작업들이 취소되도록 하는 것을 의미한다. 트랜잭션의 특성 ( ACID ) - 원자성(Atomicity) : 트랜잭션 내의 모든 작업들이 완전히 수행되거나 전혀 수행되지 않아야 한다. - 일관성(Consistency) : 트랜잭션 실행 전후로 데이터베이스는 항상 일관된 상태를 유지해야 한다. - 독립성(Isolation) : 동시에 여러 트랜잭션이 실행..

JAVA

[이펙티브자바] Item1. 생성자 대신 정적 팩터리 메서드를 고려하라

이펙티브 자바 책을 읽으며 내 생각을 바탕으로 정리하며 이해하기 위함이다. 생성자와 정적 팩터리 메서드 1. 생성자 클라이언트가 클래스의 인스턴스를 얻는 전통적인 수단은 public 생성자이고, 예시는 아래와 같다. public class Car { private final String type; public Car(String type) { // ★ public 생성자 this.type = type; } @Override public String toString() { return "Car type: " + type; } public static void main(String[] args) { Car car = new Car("Sports"); System.out.println(car); // Car ..

Web

[JPA] 지연로딩과 즉시로딩

처음 웹 공부를 했을 때부터 JPA 를 썼기 때문에 그 쿼리를 주의깊게 보지 않았던 것 같다. 연관관계 매핑 시 fetchType 을 LAZY 로 하는 경우를 많이 봤을 것이다. 그 이유에 대해서 책을 통해 정리해보려 한다. JPA 의 FetchType ( LAZY 와 EAGER ) 연관관계 매핑 설정 시 FetchType 은 데이터베이스에서 데이터를 가져오는 전략을 지정하는 데 사용된다. 종류로는 LAZY 와 EAGER 두 가지가 있다. LAZY 는 지연로딩으로 해당 데이터를 필요할 때 가져오고, EAGER 는 즉시로딩으로 데이터를 즉시 가져온다. JPA 에서 @OneToMany 와 @ManyToMany 의 기본 FetchType 값은 LAZY 이고, @ManyToOne과 @OneToOne 은 EAGE..

Web

[JPA] 1:N 단방향 매핑과 N:1 양방향 매핑

프로젝트를 하다보면 자연스럽게 다대일 양방향 매핑을 사용하여 연관관계 매핑을 했을 것이다. 나는 일대다 단방향 매핑으로 설정을 하다가도 불편함을 느껴 다른 코드를 참조하여 다대일 양방향 매핑으로 변경했었는데 책을 통해 해당 내용을 정리해보려한다. 일대다 단방향 [1:N] 매핑과 단점 일대다 관계의 예로 팀과 회원을 볼 수 있다. 하나의 팀은 여러 회원을 참조할 수 있고 (일대다) 팀은 회원들을 참조하지만 반대로 회원은 팀을 참조하지않는다. (단방향) 이를 UML 로 보면 아래와 같은데 일대다 관계에서 외래키는 항상 다(MEMBER)쪽에 있음을 확인할 수 있다. 그러면, 이를 코드로 나타내보자. @Entity @Table @Getter @NoArgsConstructor(access = AccessLevel..

limnj
개발을 하자