분류 전체보기 130

git 기초 정리

git이란버전 관리 시스템으로써 코드의 수정 사항을 관리하고 각 수정 사항들에 대해서 공유, 병합, 특정 시점으로 복원하는 등의 기능이 있기 때문에 프로젝트 진행 시 생성성을 높이기 위해 사용합니다. 1. git repository로 만들기1-1. 작업하던 프로젝트롤 git repository로 지정하고 git 원격 저장소와 연결git init : 새로운 git 저장소를 생성, .git 티렉토리 생성, .git 디렉토리는 해당 디렉토리를 버전 관리하는데 필요한 정보가 저장되는 곳git remote : git 원격 저장소와 연결 1-2. 원격저장소의 프로젝트를 받아와서 git repository로 만들기git clone 2. 소스 코드 수정 후 원격 저장소에 올리기git add : git Stage 영역에..

filter, interceptor, aop

[10분 테코톡] 조시, 쿤의 서블릿 필터 & 스프링 인터셉터 - YouTube> filter, intercepter, aop는 보안처리, 인증, 권한 처리, 로깅과 같은 공통 관심사항을 따로 처리하는 데 사용되는 기술입니다. filter와 intercepter의 경우에는 파라미터로 ServletRequest와 ServeltResponse를 제공해주기 때문에 HTTP 헤더에 직접 접근이 가능하기 때문에 웹과 관련되 기능을 구현하는데 적합합니다. filter filter는 부가작업을 처리하기 위해 자바 표준 스펙이고 톰캣과 같은 웹 컨테이너에서 제공하는 기술입니다. Dispetcher Servlet가 실행하기 전이나 종료된 후에 동작합니다. 요청을 보낼 때는 Dispetche..

JVM, Garvage collection, Memory leak, Out Of Memory

JVM JVM(Java Virtual Machine)은 자바 어플리케이션을 실행하기 위한 가상 머신입니다. JVM은 자바 코드를 읽어서 실행하고, 메모리 관리, 스레드 관리, 가비지 컬렉션(Garbage Collection) 등의 작업을 수행합니다. GC gc란? Garvage collection은 자바의 메모리 관리 기법 중 하나로 Garvage Collector가 JVM(자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(garbage)를 모아 주기적으로 해제하는 프로세스를 말합니다. gc 장점 java 단에서 Garvage Collector가 메모리 관리를 대신 해주기 때문에 개발자는 메모리 관리를 하지 않아도 돼서 개발하는데 도움이 됩니다. gc 단점 단점..

@Async

How does @Async work? @Async를 지금까지 잘 못 쓰고 있었습니다(@Async 사용할 때 주의해야 할 것, 사용법) (tistory.com) [Spring] @Async 비동기 멀티스레드 사용법 (tistory.com) Spring 에서 async 처리 (@Async) (tistory.com) 스프링에서 @Async로 비동기처리하기 :: 스프링부트는 사랑입니다 (tistory.com) 비동기란? 비동기란 다른 쓰레드에서 병렬로 동작시키면서 응답을 기다리지 않고 처리할 수 있는 기술이며, 요청이 몰리거나 오래걸리는 작업을 처리할 때 사용하여 어플리케이션의 성능 향상을 위해 사용된다 @Acync 어노테이션 사용 시 주의 사항 @Async어노테이션의 사용법에 관한 주의사항이 있습니다. @A..

JPA fetch 전략 - 왜 LAZY가 성능상 이점인지?

JPA에서는 엔티티를 가져오는 방식에 대해 fetch 전략을 설정할 수 있습니다. Fetch 전략은 엔티티와 관련된 연관 관계의 데이터를 어떤 시점에 가져올지를 결정하는 것입니다. JPA에서는 기본적으로 두 가지 fetch 전략을 제공합니다. EAGER Fetch 전략 EAGER fetch 전략은 엔티티를 조회할 때 연관된 엔티티도 함께 조회합니다. 즉, 엔티티와 연관된 엔티티들이 모두 로딩됩니다. 이 방식은 필요한 모든 데이터를 한 번에 가져올 수 있어서 편리하지만, 불필요한 데이터를 가져오게 되면 성능 이슈가 발생할 수 있습니다. LAZY Fetch 전략 LAZY fetch 전략은 엔티티를 조회할 때 연관된 엔티티를 로딩하지 않고, 실제로 사용될 때 로딩합니다. 이 방식은 필요한 데이터만 가져오기 때..

JPA - N+1 문제에 대해서

서론 JPA에서 대표적으로 겪는 이슈로 N+1 현상이 있다고 한다. 토이 프로젝트로 만들었던 곳에서도 이 현상이 일어나는지 확인해보고 수정을 해보고자 한다. [10분 테코톡] 수달의 JPA N+1 문제 - YouTube 에서 설명한 내용이 이해하기에 좋은 것 같아서 정리해보고 내 프로젝트에 관련된 내용을 추가로 정리한다음 적용해보자. 본론 N+1 이란? 요청이 한개의 쿼리만 실행하기를 기대했는데, N개의 쿼리가 추가로 발생하는 현상 따라서 1+N이라고 생각하면 쉽다. @OneToOne, @oneToMany, @ManyToOne 등 여러 상황에서 발생할 수 있다. @OneToMany 지연로딩일 때 1. findAll()로 크루 목록을 조회 참고) JPQL Java Persistence Query La..

토이 프로젝트에 적용할 기능, 기술에 대한 기록 - 알림 기능, 요청에 대한 이력 적재 기능, maven -> gradle

두서 없이 작성 중. 아직 정리가 안 되어 있는 상태. 작성 배경 프로젝트에 적용할 기능, 기술에 대한 기록용 정리 하면서 작성하는게 아니라 일단 기록하기 위해 작성 기능목록 1. 알림 기능 2. 요청에 대한 이력 적재 기능 3. Maven vs Gradle 4. jpa n+1 문제 해결 프로젝트 주소 jeoningu/Springboot-JPA-Blog (github.com) 서론 - 알림 기능을 구현해보려 하는데, 어떻게 구현해야 할지 정리가 필요하고 관련된 내용들도 추가적으로 학습해서 정리해보려 한다. - Runnable, BlockingQueue로 구현된 기능에 대해서 작업한 적이 있는데, 알림 개발시에 참고할 수 있을 거 같아서 우선 이것들을 학습해보려고 한다. 학습하기 위해 참고할 블로그 목록을..

Project & Issu 2023.03.27