[Spring] 컴포넌트 스캔과 의존 관계 자동 주입 (@ComponentScan, @Autowired)
·
Back-end/Spring
컴포넌트 스캔과 의존 관계 자동 주입이전 글 - 싱글톤 패턴과 싱글톤 컨테이너이전 글에서는 AppConfig 클래스에 @Bean을 작성해서 스프링 빈으로 등록했다.등록해야 할 빈이 몇 개 안된다면 상관없지만 빈을 수십, 수백개를 등록해야 한다면 설정 정보가 너무 커지고 누락 가능성이 있어서 비효율적이다.따라서 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 @ComponentScan이란 기능이 있고 의존관계 주입도 @Autowired라는 기능이 있다.@ComponentScan, @Component, @Autowired@ComponentScan을 설정 정보(AppConfig.java)에 붙이면 @Component가 붙은 클래스를 스캔해서 자동으로 스프링 빈으로 등록한다.@ComponentScan@Comp..
OS / Network / DB / DesignPattern 정리
·
Computer Science/OS,Network,DB,DesignPattern
Github 레포지토리에 정리되어 있습니다.👨‍💻 개발자 면접을 위한 CS 스터디 : 탄젠트📅 일정 : 2024/09/23 (월) ~📄 목표취업을 위한 면접 CS 스터디를 목표를 한다.Network, OS, Database, Java, Design Pattern을 공부한다.SQLD 자격증 취득을 위해 병행 공부한다.🤔 방법주어진 범위 각자 공부한 내용 깃허브에 .md 파일로 업로드매주 월요일 14:30에 대면으로 만나서, 한 주동안 각자 공부한 내용 공유면접 대비하여 면접 예상 질문과 모범 답안 준비하여 상대방에게 질문매주 스터디가 끝나면 돌아가면서 교내 씨부엉 스터디에 활동일지 업로드또한 Github Issue에 면접 예상 질문 정리해두어, 추후 돌려볼 수 있도록 함큰돌의 CS 지식의 정석 강..
[Spring] 싱글톤 패턴과 싱글톤 컨테이너
·
Back-end/Spring
싱글톤 패턴이란?싱글톤 패턴이란 객체를 하나만 생성하도록 제한하는 방식이다.이는 시스템 전체에서 동일한 객체를 공유하고 싶을 때 사용하는 방식이다.싱글톤 패턴을 사용하는 이유웹 어플리케이션은 보통 여러 명의 클라이언트가 동시에 요청을 한다. 여러 요청이 동시에 들어올 경우 아래 그림과 같이 요청이 들어 오는 만큼 객체를 생성하고 요청이 끝나면 소멸한다. 이러한 방식은 사용하면 메모리 낭비가 너무 심해져서 성능에 문제가 생긴다.이러한 문제를 해결하기 위한 방식이 싱글톤 패턴이다.싱글톤 패턴을 적용한 어플리케이션은 아래 그림과 같이 여러 요청이 들어와도 하나의 객체만을 사용하게 된다.싱글톤 패턴의 문제점싱글톤 패턴은 여러가지 문제가 있다.싱글톤 패턴을 적용하여 예제 코드를 만들어보자.static 영역에 인스..
Github commit history 일괄적으로 수정 및 삭제하는 방법
·
DevOps/Git
github를 통해 작업을 진행하다 보면 commit에 원치 않는 파일이나 메시지가 들어가는 경우가 있다.이를 바로 발견하여 수정하면 쉽게 해결할 수 있지만 모르고 작업하다가 나중이 되어서야 알게 됐거나 너무 많은 commit에 올라갔다면 상황이 복잡해진다.예를 들어 AWS SecretKey가 commit에 유출되었는데 너무 많은 커밋에 유출되어 하나하나 수정하기 힘든 경우가 이에 해당된다.다행히 이러한 경우 일괄적으로 commit을 수정하는 방법이 있다.git filter-branchgit filter-repo위 두 가지 기능으로 Git 리포지토리의 commit history를 재작성할 수 있다.두 기능에는 일괄적으로 commit 메시지를 수정하거나 특정 파일을 commit history에서 수정하거나..
Docker 컨테이너에서 nvidia GUP 사용하는 방법(nvidia-docker)
·
DevOps/Docker
RVC(Retrieval-based Voice Conversion)와 Whisper를 이용한 프로젝트를 진행하고 있다. 발표 전까지 여러 번 배포하며 테스트를 해야 하는데 배포 할 때마다 각종 라이브러리와 CUDA 드라이버에 오류가 생겼다.이거 뭔 ... 코드 짤 때보다 오류 잡는데 시간을 더 쓰고 있어서 안정적인 환경을 구축하기 위해서 Docker를 사용하기로 결정했다.우선 Docker은 로컬 컴퓨터 위에 있는 가상 환경이지만 독립된 가상 환경이기 때문에 로컬의 nvidia GPU에 접근헤서 사용하려면 nvidia-docker를 사용해야 한다.nvidia-docker란?출처NVIDIA GPU는 호스트의 디바이스 파일 (/dev/nvidia0등)으로써 등록되어 있다. 또한, CUDA 라이브러리(libcu..
EC2 인스턴스가 갑자기 터진다면?(Swap memory)
·
DevOps/AWS
EC2를 프리티어로 사용하면 t2.micro를 사용하게 된다. t2.micro는 램이 1GB 밖에 안돼서 Spring 서버만 띄워도 메모리 부족으로 인해 서버가 멈추고 ssh 연결이 끊어지는 경우가 많다. 프리티어 인스턴스가 아니어도 Docker를 사용하면 터지는 경우도 많다. 이럴 경우 Memory Swap을 이용하면 상위 인스턴스를 사용하지 않고도 서버가 다운되는 문제를 해결할 수 있다.Swap Memory 설정가상 메모리는 하드디스크를 메모리처럼 사용하는 방식이기 때문에 속도가 매우 느려진다는 단점이 있다.그래도 더 비싼 상위 인스턴스 쓰는 것보단 나으니 ... 이정도는 감수하고 쓰자.우선 메모리 용량 별 가능한 Swap 용량이다.사용하고 있는 인스턴스에 맞게 설정해주면 된다.난 t2.micro를 ..