Java15 🔎 synchronized는 정말 동기화를 해주는가? synchronized 키워드를 사용하면, 멀티 스레드 환경에서 Race Condition을 해결해주는 지 확인해보자. Q. Race Condition이란?여러 스레드 또는 프로세스가 동시에 실행되면서 동일한 자원에 접근하거나 변경을 시도할 때 발생하는 문제이다.프로그램의 동작이나 결과는 실행 순서에 따라 달라질 수 있으며, 예상치 못한 버그나 비정상적인 동작을 유발할 수 있다. @Testpackage com.example.payment.test;import static org.assertj.core.api.Assertions.*;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.. 2024. 7. 19. @SoftAssertions를 사용하는 이유 package com.example.payment.transferHistory;import com.example.payment.transferHistory.entity.TransferHistory;import jakarta.persistence.EntityManager;import jakarta.persistence.PersistenceContext;import java.math.BigDecimal;import org.assertj.core.api.SoftAssertions;import org.junit.jupiter.api.DisplayName;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Aut.. 2024. 7. 17. @NotBlank과 @NotNull를 사용하는 이유 package com.example.payment.transfer.dto.reqeust;import jakarta.validation.constraints.DecimalMin;import jakarta.validation.constraints.NotBlank;import jakarta.validation.constraints.NotNull;import java.math.BigDecimal;import org.hibernate.validator.constraints.Length;public record TransferRequest( @NotBlank(message = "출금 계좌 번호는 필수로 입력해야 합니다.") @Length(min = 10, max = 10) String wi.. 2024. 7. 17. BigDecimal의 compareTo 메서드 파헤치기 계좌의 잔고를 BigDecimal이라는 자료형을 사용하고 있다.BigDecimal 자료형을 가진 값들을 비교하기위해 BigDeciamal class에 내장되어 있는 compareTo 메서드를 사용하고 있다. 정확한 동작 원리를 파헤쳐보자BigDecimal은 다음과 같이 Comparable Interface를 구현하고 있다. Comparable interface에는 compareTo라는 인터페이스 메소드가 존재한다.BigDecimal에서 compareTo라는 인터페이스 메소드를 구현하는 구조이다. @Override를 해서 compareTo 메서드를 구현해주고 있다. 코드를 좀 살펴보자intCompat은 자기 자신을 가리키고, val은 비교하고자 하는 값을 가리킨다. 비교에 따라 다른 return 값을 부.. 2024. 7. 17. 🔎 SoftAssertions의 각 Assertions는 독립적인가? SoftAssertions 공식문서에서는 SoftAssertions에 대해 다음과 같이 이야기한다.Suppose we have a test case and in it we'd like to make numerous assertions. In this case, we're hosting a dinner party and we want to ensure not only that all our guests survive but also that nothing in the mansion has been unduly disturbed 비유적인 표현으로 명시되었지만, 개인적으로 다음과 같이 해석했다."각 Assertions가 독립적으로 서로 영향을 주지 않는다" 정말 Assertions가 독립적으로 서로 영향을 주.. 2024. 7. 16. @NoArgsConstructor(access = AccessLevel.PROTECTED)를 사용하는 이유 우선 @Entity 코드를 먼저 봐보자.@Entity@NoArgsConstructor(access = AccessLevel.PROTECTED)public class TransferHistory extends BaseEntity { @Id @GeneratedValue private Long id; @Column(length = 10) private String withdrawalAccountNumber; @Column(length = 10) private String depositAccountNumber; private BigDecimal transferAmount; private BigDecimal amountAfterWithdrawal; privat.. 2024. 7. 15. 이전 1 2 다음