오늘은 싱글톤 패턴에 대해서 공부해보겠다. package com.naver.shopping.singleton;import com.naver.shopping.AppConfig;import com.naver.shopping.member.MemberService;import org.junit.jupiter.api.DisplayName;import org.junit.jupiter.api.Test;import static org.assertj.core.api.Assertions.assertThat;public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig app..
JUnit이란? JUnit은 자바에서 단위 테스트를 작성하고 실행하기 위한 프레임워크이다. Spring Boot에서는 JUnit 5 (JUnit Jupiter)를 사용한다. 먼저 JUnit5에서 자주 사용되는 테스트 검증 라이브러리인 Assertions에 대해서 간단히 알아보고 실제 코드와 함께 테스트 하는 과정을 이어나가보자. JUnit에서 제공하는 다양한 Assertion 메서드를 사용하여 예상 결과와 실제 결과를 비교할 수 있다. 테스트는 생산성을 높이고 애플리케이션의 품질 보장을 위해선 필수적으로 거쳐야 하는 단계이다. JUnit의 주요 어노테이션들은 크게 @Test : 테스트 메서드 정의@BeforeEach: 각 테스트 메서드 실행 전에 실행될 메서드를 정의한다.@AfterEach: 각..
오랜만에 자바 포스팅으로 돌아왔다. 오늘은 문자열을 처리하는데 사용되는 String, StringBuffer, StringBuilder의 동작 방식, 성능, 사용 목적을 비교하며 각각의 클래스가 어떻게 동작하고 언제 사용하며 성능이 어떻게 다른지 설명하겠다. String 불변 객체String 객체는 한 번 생성되면 더 이상 변경할 수 없다.예를 들어 String 객체에서 문자열을 변경하는 작업이 발생하면 실제로는 새로운 String 객체가 생성되는 것이고 기존 객체는 가비지 컬렉터가 처리할 때까지 메모리 상에 남아 있다. 불변성의 장점String 객체는 불변성 덕분에 안전하게 여러 쓰레드에서 공유될 수 있다.String은 Java의 String Pool(메모리 사용 최적화하는 공간)에 의해..
메서드 정리 파이썬 메서드는 클래스 내에 정의된 함수이다. 특정 객체에 대해 작업을 수행한다. 메서드는 객체의 상태를 변경하거나 객체와 관련된 특정 동작을 구현하는 데 사용된다. 리스트 리스트는 기본적으로 대괄호로 표현하며, 인덱스 값을 활용해 O(1) 시간 안에 접근할 수 있다. 없는 인덱스를 지정하면, IndexError가 발생한다. nums = [3,5,1,4,2]print(nums[0]) #3nums[1] = 7print(nums) # [3,7,1,4,2]nums[8] = 9 # 인덱스 에러 #리스트 안에는 다양한 자료형이 들어갈 수 있고, 길이는 가변적이다.my_list = ['hi', True, [1,2,3], {'name' : 'tom'}, {7,6}, (4,5,8)] ..