목록전체 글 (164)
우당탕탕
String, StringBuilder, StringBuffer 뭐가 다른 걸까? String String 클래스는 문자열을 불변(immutable)하게 처리한다. 한 번 생성된 문자열은 변경할 수 없으며, 문자열 연산 시에는 새로운 객체를 생성하게 된다. 이로 인해 메모리 소모가 크게 발생할 수 있으니 문자열 연산이 많은 경우에는 StringBuilder 또는 StringBuffer사용을 권장한다. StringBuilder StringBuilder는 가변(mutable)한 특성을 가지고 있어 문자열을 동적으로 변경할 수 있다. 문자열 연산을 효율적으로 처리할 수 있어 성능상의 이점이 있지만, StringBuilder의 경우 단일 스레드 환경에서 안전하지 않기 때문에 멀티스레드 환경에서 사용할 때에는 동..
Cause: java.sql.SQLDataException: Cannot determine value type from string DTO 내부에 생성자 미존재로 나오는 에러 해결법 @NoArgsConstructor @AllArgsConstructor public class sampleDto { private String something; } @NoArgsConstructor / @AllArgsConstructor 어노테이션을 상황에 따라 사용해서 해결
낙관적 락, 비관적 락에 대해 JPA를 사용하여 데이터베이스와 연결된 애플리케이션을 개발할 때, 동시성 처리와 관련된 이슈가 발생할 수 있다. 이러한 이슈를 해결하기 위한 방법 중 하나는 락(lock)을 사용하는 것이다. 이번 포스팅에는 낙관적 락과 비관적 락에 대해 알아보고, 예제코드와 이를 사용하는 이유 및 장단점을 함께 써보겠다. 낙관적 락(Optimistic Lock) 낙관적 락은 충돌이 거의 발생하지 않을 것이라고 가정하고, 충돌이 발생한 경우에 대비하는 방식이다. 낙관적 락은 JPA에서 버전(Version) 속성을 이용하여 구현할 수 있다. 낙관적 락의 특징으로는 충돌 발생확률이 낮고, 지속적인 락으로 인한 성능저하를 막을 수 있다. 아래는 예시 코드이다. 1. Entity @Entity pu..
최근에 주변에서 개발을 시작하려는 지인분들이 많아 Git과 Github에 대해 가이드를 적어보려 한다. Git과 Github에 대해 간략하게 설명하고 Git 이란? Git은 분산 버전 관리 시스템(DVCS)로, 개발자들이 소스코드의 변경 사항을 추적하고 협업할 수 있도록 도와주는 도구이다. 여러 개발자들이 서로 다른 브랜치에서 작업을 진행하고, 작업한 부분을 병합하는 것까지 원활하게 지원해 준다. GitHub이란? GitHub은 Git을 기반으로 하는 원격 저장소 호스팅 서비스로, 개발자들이 프로젝트를 공유하고 협업할 수 있는 온라인 플랫폼이다. 코드 리뷰와 이슈 트래킹, 프로젝트 관리 등의 부가 기능 또한 제공한다. 따라 해보기 1. Git 설치 Git 공식 홈페이지(https://git-scm.com..
오늘은 최근 지인들에게 많은 질문을 받고 있는 성능 최적화와 스케일링 전략에 대해 적어보려고 한다.성능 최적화와 스케일링은 백엔드 개발에서 핵심적인 요소이다. 서비스의 성공 여부와 직결되는 이슈이기 때문에 꾸준한 최적화와 효율적인 스케일링 전략은 선택이 아닌 필수이다.성능 최적화 전략 1. 캐싱 캐싱이란 반복적으로 사용되는 데이터나 계산 결과를 메모리에 저장하여 빠르게 액세스 할 수 있도록 하는 기법이다.데이터베이스에 접근하는 데 시간이 많이 걸리는 작업일 경우, 캐싱을 사용하여 빈번하게 사용되는 데이터를 빠르게 가져올 수 있다. 예시로 Redis와 같은 인메모리 캐시 솔루션을 활용하여 조회 속도를 크게 향상 시킬 수 있다.캐싱의 종류로는 아래와 같다. 1-1. 지역캐싱 (Local Caching) 지..
마이크로서비스 아키텍처(MSA)는 작고 독립적인 서비스들의 집합으로 구성된 애플리케이션 구조이다 이번 포스팅에서는 마이크로서비스 아키텍처(Microservice Architecture)와 모놀리식 아키텍처(Monolithic Architecture)의 장단점을 비교하고, 각각 어떤 상황에서 각각이 적합한지에 대해 알아보겠다. 모놀리식 아키텍처 (Monolithic Architecture) 모놀리식 아키텍처는 전통적인 개발 방식으로 하나의 프로젝트에 모든 기능을 함께 포함한다. 이렇게 하면 코드 베이스가 커질수록 개발 및 배포에 복잡성이 증가한다. 아래는 모놀리식 아키텍처의 예시이다. 모놀리식 아키텍처의 경우 위의 그림과 같이 모듈단위로 쪼개는 것이 아닌 하나의 프로젝트로 전체 애플리케이션을 묶어서 개발하..
