java 4

[Java] 가비지 컬렉션(Garbage Collection)의 개념

가비지 컬렉션(Garbage Collection) 개념 가비지 컬렉션(Garbage Collection)은 프로그래밍 언어에서 메모리 관리를 위한 중요한 개념 중 하나입니다. 프로그램이 동적으로 메모리를 할당하고 사용할 때, 할당된 메모리 중에서 더 이상 사용되지 않는 부분을 찾아내고 해제하는 작업을 의미합니다. 이를 통해 메모리 누수(memory leaks)와 같은 문제를 방지하고, 프로그램의 안정성과 성능을 향상시킬 수 있습니다. 가비지 컬렉션은 주로 자바(Java), C#, Python, JavaScript와 같은 고급 프로그래밍 언어에서 사용되며, 다양한 방법으로 구현될 수 있습니다. 가장 일반적으로 사용되는 가비지 컬렉션 알고리즘에는 다음과 같은 것들이 있습니다. 1. 참조 카운팅(Referen..

Java 2023.08.21

[Spring] HATEOAS 개념 및 장단점

Spring HATEOAS 개념 Spring HATEOAS는 Spring Framework를 기반으로 한 Hypermedia as the Engine of Application State (HATEOAS)의 구현체입니다. HATEOAS는 RESTful 웹 서비스에서 리소스 간의 관계와 상태를 표현하고 클라이언트가 리소스 간의 상호 작용을 위한 정보를 동적으로 얻을 수 있도록 돕는 개념입니다. HATEOAS의 핵심 개념은 "하이퍼미디어 링크"입니다. 이는 리소스와 관련된 다른 리소스로의 링크를 포함하는 것을 의미합니다. 클라이언트는 이러한 링크를 따라가며 API에서 제공되는 다른 리소스와 상호 작용할 수 있습니다. Spring HATEOAS는 이러한 하이퍼미디어 링크를 생성하고 관리하기 위한 도구와 클래스..

Spring 2023.08.14

[Java] 객체지향 설계 5원칙 - SOLID

SOLID 원칙 로버트 마틴(Robert C. Martin)은 소프트웨어 개발자와 컨설턴트로서, 객체 지향 설계에 관한 많은 경험과 지식을 가지고 있습니다. 객체 지향 설계의 원칙 중에서 가장 잘 알려진 것은 SOLID 원칙으로, 다음과 같이 5가지 원칙으로 요약할 수 있습니다. 1. SRP (Single Responsibility Principle - 단일 책임 원칙) 클래스는 단 하나의 책임만 가져야 합니다. 즉, 한 클래스는 하나의 변경 이유만을 가져야 하며, 클래스의 모든 기능은 해당 책임을 수행하는 데 집중되어야 합니다. 예를 들어, 도서 관리 시스템에서 도서를 표현하는 Book 클래스 // Book 클래스는 도서를 표현하는 역할만 수행합니다. public class Book { private ..

Java 2023.08.06

[Spring/Java] 정규식을 통한 비속어 필터링

비속어 필터링 비속어들은 DB에 저장되어 관리되거나, 비속어 필터 라이브러리가 있으니 확인해보길 바란다. DB로 관리하는 것과 라이브러리를 활용하는 것에는 각각 장단점이 있으니 방식은 비교해보고 결정해보길 바란다. 게시물 등록 시에 모든 비속어를 DB에서 매번 조회하고 비교하는 것은 비효율적이다. Cache, Session, Singleton, In-memory 저장소(Redis 등)와 같은 방식으로 값을 미리 조회해서 사용하는 방식이 효율적이다. 이 글에서는 비속어들이 DB에 저장되어 관리되고, Redis를 사용하는 환경에서 비속어 필터링한다. 비속어 DB로부터 Redis에 비속어 정규식 패턴 저장 public void saveSlangListToRedis() { // DB로부터 모든 비속어 조회 (약..

Spring 2023.05.06