STUDY LOG

230730 STUDY LOG.

우진하다 2023. 7. 31. 01:34

오늘 공부

[BE] 스프링 강의 수강 및 정리 / 스프링 북스터디

05. API를 작성하는 다양한 방법 - POST, PUT API 만들기

05. API를 작성하는 다양한 방법 - GET API 만들기

05. API를 작성하는 다양한 방법 - DELETE API 만들기

05. REST API 명세를 문서화 하는 방법 - Swagger

05. 로깅 라이브버리 - Logback

오늘 정리

1. 자바의 Garbage Collection (GC, 가비지 컬렉션) 개념

자바의 Garbage Collection (GC, 가비지 컬렉션)은 자동 메모리 관리의 한 부분입니다. 자바에서 객체를 생성하면, JVM(Java Virtual Machine)의 Heap 영역에 메모리가 할당됩니다. 프로그램이 이러한 객체들을 더 이상 사용하지 않게 되면, 가비지 컬렉터가 이를 감지하고 해당 메모리를 회수합니다.

가비지 컬렉션의 주요 개념들은 다음과 같습니다:

Mark and Sweep: 이는 가비지 컬렉션의 기본적인 방법입니다. 가비지 컬렉터는 먼저 모든 객체를 스캔하면서 참조하는 곳이 있는지 '표시'합니다. 이후, 참조되지 않는 (즉, 표시되지 않은) 객체들을 '쓸어담아' 메모리를 해제합니다.

Generational GC: 이 방법은 객체의 생존 기간에 따라 메모리를 관리합니다. JVM의 Heap 영역을 Young Generation, Old Generation, Permanent Generation으로 분리하고, 각 영역별로 다른 방식의 GC를 적용합니다.

Stop-The-World: GC가 실행되는 동안, JVM은 애플리케이션의 실행을 일시 중지합니다. 이를 "Stop-The-World"라고 합니다. GC 작업이 많이 발생하면 이로 인해 애플리케이션의 성능이 저하될 수 있습니다.

GC Tuning: JVM의 힙 크기, GC 알고리즘 등을 조정하여 애플리케이션의 성능을 최적화하는 작업을 말합니다. 이는 애플리케이션의 특성에 따라 다르므로 신중한 분석이 필요합니다.

2. 문자열 자동완성 API - LIKE vs Trie

문자열 자동완성 기능을 구현하는데 있어서는 사용하는 방식이 데이터의 크기, 요구되는 응답 시간, 구현의 복잡성 등에 따라 달라질 수 있습니다.

LIKE 쿼리: SQL의 LIKE 연산자를 사용하면, 데이터베이스에서 원하는 문자열을 찾는 것이 상대적으로 쉽습니다. 이 방법은 데이터베이스의 내장 기능을 사용하므로 구현이 간단하다는 장점이 있습니다. 하지만, 데이터의 크기가 클 경우 LIKE 쿼리는 인덱스를 사용하지 못해 성능이 떨어질 수 있습니다. 따라서, 대량의 데이터에 대해 빠른 응답 시간을 요구하는 경우에는 적합하지 않을 수 있습니다.

Trie (트라이): 트라이는 문자열 검색을 위한 특수한 자료 구조로, 접두사를 공유하는 문자열들을 빠르게 찾을 수 있습니다. 이 방법은 문자열 자동완성 기능을 빠르게 구현하는 데 매우 유용합니다. 트라이를 사용하면, 대량의 데이터에 대해서도 빠른 응답 시간을 제공할 수 있습니다. 그러나 트라이를 구현하고 유지하는 것은 LIKE 쿼리를 사용하는 것보다 복잡할 수 있습니다. 또한, 트라이는 메모리를 많이 사용하는 경향이 있습니다.

따라서, 선택하는 방식은 사용 사례에 따라 달라질 수 있습니다. 작은 데이터 세트에 대해 간단하게 구현하려면 LIKE 쿼리가 좋을 수 있지만, 대량의 데이터에 대해 빠른 응답 시간을 요구하는 경우에는 트라이를 고려해 볼 만합니다.

 

오늘 후기.

스프링 점점 점점 점점 알면 알수록 더 어려운듯 하하
반복되는 학습에 그래도 조금 익숙해진것 같은데
아무 가이드 없는 상황이라면 아직은 많이 어려울것 같다.

다음주에 할 과제와 강의량이 아직 많은데 어떻게 해나가야할지 걱정이나
최대한 집중해서 마무리할 수 있도록 노력해야겠다.

오늘도 끗 내일돔 히미히미히미히미히미힘 잡니다

'STUDY LOG' 카테고리의 다른 글

230803 STUDY LOG.  (0) 2023.08.03
230801 STUDY LOG.  (0) 2023.08.02
230729 STUDY LOG.  (2) 2023.07.30
230728 STUDY LOG.  (1) 2023.07.28
230727 STUDY LOG.  (0) 2023.07.28