profile
개인용으로 공부하는 공간입니다. 피드백 환영합니다 🙂
post-thumbnail

[TIL] 도커 환경에서 파일 경로를 못찾는 문제 해결하기

문제 상황 로컬에서는 파일의 경로를 찾지만, 도커 환경에서는 Spring Boot 컨테이너에서 파일 경로 못찾는 에러가 발생했다.

2025년 2월 16일
·
0개의 댓글
·
post-thumbnail

[Spring] Spring Boot 프로젝트 멀티 모듈로 분리하기

멀티 모듈이란? 멀티 모듈이란, 여러 개의 모듈로 구성된 단일 프로젝트를 의미한다.

2024년 11월 5일
·
0개의 댓글
·
post-thumbnail

[Django] Django Rest Framework 핵심 개념 정리

DRF(Django Rest Framework) DRF이란 장고 안에서 RESTful API 서버를 유연하게 구축할 수 있도록 도와주는 라이브러리이다. API 생성, 요청 처리, 권한 관리, 데이터 직렬화 등 API 개발에 필요한 추가 기능을 제공한다. Reposit

2024년 9월 16일
·
0개의 댓글
·
post-thumbnail

[TIL] Django는 어떻게 다수의 요청을 처리할까?

상반기 채용 과정, 그리고 회사 입사 후에도 일이 너무 많아서 블로그 포스팅을 아예 작성하지 못했다..😰 노션에 대충 작성해놨던 글들을 다시 정리해보려고 한다.

2024년 8월 24일
·
0개의 댓글
·
post-thumbnail

[DB] 송금에서의 동시성 이슈 해결기 (feat. 락을 최소한으로 사용해보자!)

만약 여러 사람이 한 계좌에 송금하거나, 한 계좌에 송금과 적금이 동시에 일어나는 경우 동시성 이슈를 어떻게 해결할 수 있을까에 대해 고민해보고 작성했다. 1. 여러 사람이 한 계좌에 송금 아래 코드는 송금 로직 예시로, 잔액이 부족하면 충전을 하고, 내 잔액을 차

2024년 2월 8일
·
0개의 댓글
·
post-thumbnail

[Java] 자바 File I/O 구조 및 성능에 대해 알아보자

최근 프로젝트에서 대용량 파일을 읽어올 일이 많이 생겼다. 파일을 읽어와서 `Json` 형태로 변환을 해줘야 했기에 한줄을 읽어와서 편하게 처리할 수 있도록 `readline()` 을 사용했었다.

2024년 1월 18일
·
0개의 댓글
·
post-thumbnail

[TIL] 레디스는 싱글 스레드인데 어떻게 동시 요청을 처리할까?

Redis와 Event-Loop? > Redis는 싱글 스레드인데, 어떻게 수많은 요청을 동시에 처리할 수 있는걸까? 라는 궁금증에서 해당 포스팅을 작성해보았다. 결론부터 말하자면, Redis를 제외하고도 Node.js나 JavaScript 는 싱글 스레드면서 이벤

2023년 11월 30일
·
0개의 댓글
·
post-thumbnail

[Java] HashSet VS HashMap 완벽 이해하기

결론부터 말하자면, `HashSet` 역시 내부적으로 `HashMap` 을 사용해서 동작한다. 그리고 `HashMap` 은 해시 테이블 기반으로 동작한다.

2023년 11월 9일
·
0개의 댓글
·
post-thumbnail

[Spring Boot] 캐시 적용 과정에서의 삽질기

☁️ Redis를 사용한 이유? `Redis` 나 `Memcached` 를 사용하는 방법은 글로벌 캐싱 전략이다.

2023년 9월 10일
·
0개의 댓글
·
post-thumbnail

[Design Pattern] Proxy 패턴

원격 프록시는 실제 객체처럼 행동하지만, 실제로는 네트워크로 진짜 객체와 데이터를 주고 받게 된다. 즉 원격 프록시는 각 사용자의 JVM 내부의 힙 영역에 존재하는 로컬 객체라고도 할 수 있다.클라이언트가 로컬에서 원격 프록시를 호출한다.(대변자 역할)프록시가 실제 원

2023년 9월 9일
·
0개의 댓글
·
post-thumbnail

[MySQL] 옵티마이저 최적화

MySQL 서버의 옵티마이저는 실행 계획을 수립할 때, 통계 정보와 옵티마이저 옵션을 결합해 최적의 실행 계획을 수립한다. 옵티마이저 스위치 옵션은 optimizer_switch 시스템 변수를 이용해서 제어한다.Multi Range Read 란, Nested Loop

2023년 9월 6일
·
0개의 댓글
·
post-thumbnail

[Spring Boot] Redis로 동시성 이슈 해결하기

레디스가 원자적이여서 스레드 안전하다는 개념을 믿고 레디스를 적용했지만, 동시성 이슈가 발생했다. 레디스를 도입한 과정부터 차근차근 문제를 해결해나가보자.

2023년 9월 6일
·
0개의 댓글
·
post-thumbnail

[MySQL] ORDER BY, GROUP BY, DISTINCT 절에서 옵티마이저는 어떻게 동작하는가

GROUP BY 처리 GROUP BY 역시 ORDER BY과 마찬가지로 인덱스를 사용할 수 없으므로, 필터링 역할을 하는 HAVING절을 튜닝할 수 없다. 인덱스를 사용하는 경우 인덱스 스캔 이용 루스 인덱스 스캔 이용 임시 테이블을 사용하는 경우 DISTI

2023년 8월 30일
·
0개의 댓글
·
post-thumbnail

[Spring Boot] MySQL 검색 쿼리 성능 개선기

60만건의 유실물 데이터를 내용으로 검색할 때, 프론트에서 가끔 응답 시간이 너무 오래 걸린다는 피드백을 받고 성능을 올려보기로 했다.

2023년 8월 23일
·
2개의 댓글
·
post-thumbnail

[MySQL] 클러스터링 인덱스와 유니크 인덱스에 대하여

클러스터링 인덱스란? > 🫧 클러스터링이란? 서로 연관이 있는 데이터들을 하나로 묶는 것을 의미한다. 따라서 클러스터링 인덱스란, 테이블의 레코드를 프라이머리키가 비슷한 것 끼리 묶는 것을 의미한다. 중요한 것은 InnoDB 에서는 프라이머리 키에 의해, 삽입

2023년 8월 16일
·
0개의 댓글
·
post-thumbnail

[MySQL] B-Tree 인덱스 구조와 인덱스 스캔

☁️ 디스크 읽기 방식 CPU와 메모리는 전기적 특성을 띄고 있는 장치이기 때문에, 속도가 빠르다. 하지만 이에 반해 디스크와 같은 기계적 장치는 여전히 느리므로, 데이터베이스 성능 튜닝은 디스크 I/O를 얼마나 줄이느가 관건이라 할 수 있다. HDD VS SSD

2023년 8월 8일
·
0개의 댓글
·
post-thumbnail

[Java] Static inner class 는 어떻게 지연 초기화가 가능할까?

Q. static 키워드가 붙으면 어플리케이션 실행 시에 이미 초기화가 끝나는데, 어떻게 지연 로딩이 가능한가? 정적 필드 초기화 - 지연 초기화 홀더 클래스 관용구 ☁️ Bill Pugh Solution (LazyHolder) 권장되는 방법 중 하나로, 멀티스레

2023년 8월 4일
·
0개의 댓글
·
post-thumbnail

[MySQL] 트랜잭션 격리 수준(Isolated-level) 완전 정복하기

트랜잭션 격리 수준이란, 여러 트랜잭션이 동시에 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있도록 허용할지 말지 결정하는 것을 의미한다. 총 네 단계로 나뉘며, 뒤로 갈수록 고립 정도(격리)가 높아져 동시 처리 성능이 떨어져서 잘

2023년 8월 2일
·
0개의 댓글
·
post-thumbnail

[MySQL] 트랜잭션과 MySQL 잠금(Lock) 종류에 대해 알아보자

트랜잭션 : 작업의 완전성(일부만 적용되는 일이 없도록)을 보장하는 데이터의 정합성을 위한 기능이다. 잠금(Lock): 레코드에 대한 동시성을 제어하기 위한 기능이다. MyISAM이나 MEMORY 는 InnoDB 와 달리 트랜잭션을 지원하지 않는다. 트랜잭션 기능이

2023년 7월 31일
·
0개의 댓글
·
post-thumbnail

[AWS] 우리의 연약한 프리티어 서버가..또 터졌어요😇

어느때처럼 SSH 접속을 하려고 명령어를 실행시켰더니, 어느 에러 문구도 없이 접속이 되지 않았다. 크론탭을 통해 테스트하려고 매초마다 크롤링을 해오도록 설정해놨었기 때문에, 역시 직감으로 CPU 사용률을 먼저 확인해보았다.스케줄링 작업이 일어날때 아래와 같이 CPU

2023년 7월 30일
·
0개의 댓글
·