React 특강
·
카테고리 없음
![[Pasted image 20250501103616.png]]명시적과 암시적 프레그먼트에서 명시적으로 선정![[Pasted image 20250501103643.png]]import해서 속성이름을 정할 수 있음- HMC에서 저장하면 바로 재빌드해서 브라우저화면에 표시한다- Hot Module Inplace## ES6에서 나오는 화살표 함수![[Pasted image 20250501104917.png]]this라는 키워드를 제외하면 일반함수와 화살표함수의 차이점이 없다. this 키워드를 쓰지 않는이상!!li 는 ul 태그나 ol 태그로 감싸주어야 함.고유한 키속성이 있어야 한다.![[Pasted image 20250501111248.png]]-> 이렇게 Fragment를 명시적으로 선언해서 키값으로 ..
k6로 성능 테스트(Grafana로 시각화)
·
카테고리 없음
k6로 성능테스트하기 프로젝트 진행 시 꼭 필요한 것! 테스트!  이번에는 k6를 통해서 테스트하는 방법을 정리해볼 것이다. k6란?- 부하테스트 및 성능 테스트를 위해 설계된 오픈소스 도구이다. - javaScript로 작성된 테스트 스크립트를 실행하여, HTTP 요청을 대규모로 시뮬레이션함으로써 시스템의 성능을 측정할 수 있게 해주는 CLI 기반의 부하 테스트 도구. 준비사항 1. WSL 설치2. Docker 설치 k6 설치윈도우 기준으로 테스트를 하여 chocolatey를 사용하여 설치했다.  choco install k6 influxDB 설치docker run -d --name influxdb -p 8086:8086 -v influxdb-storage:/var/lib/influxdb influxd..
예외처리 효과적으로 관리하는법
·
뚜띠
예외처리에 사용한  클래스 1. ApiExceptionAdvice2. DomainException3. ExceptionResponse4. ExceptionCode5. ExceptionType ExceptionCode :  예외의 코드를 관리하는 enum 클래스. ExceptionType : 각 예외 유형을 미리 정의하고 관리하는 enum 클래스.HttpStatus, ExceptionCode, 메시지, 로그 레벨(LogLevel)을 포함하여 예외 처리를 일관되게 유지. ApiExceptionAdvice :  @RestControllerAdvice를 사용하여 전역적으로 예외를 감지하고 처리하는 클래스.발생한 예외를 감지하고, 적절한 HTTP 응답을 반환함.  DomainException :  RuntimeE..
ParameterizedTypeReference를 이용한 제네릭 타입 처리방법
·
카테고리 없음
📌 ParameterizedTypeReference란? - 제네릭 타입을 안전하게 처리하는 방법스프링의 RestTemplate이나 RestClient를 사용할 때, 응답 데이터를 제네릭 타입으로 안전하게 변환하기 위해 ParameterizedTypeReference를 사용한다.이는 런타임에서 제네릭 타입을 유지하면서 올바른 타입으로 변환할 수 있도록 도와주는 기능이다.🚀 1️⃣ Java의 제네릭과 타입 소거 문제📌 제네릭의 기본 개념Java에서 제네릭(Generic) 은 클래스나 메서드가 사용할 데이터 타입을 컴파일 시점에서 지정할 수 있도록 해주는 기능이다.하지만 Java는 타입 소거(Type Erasure) 를 사용하기 때문에, 런타임에는 제네릭 타입 정보가 삭제된다.List list = new..
Record와 DTO
·
카테고리 없음
✅ Record와 DTO의 차이  🚀 1. DTO (Data Transfer Object)란? DTO(Data Transfer Object)는 계층 간 데이터 전송을 위한 객체입니다.보통 클래스 형태로 선언되며, private 필드와 getter/setter 또는 @Getter(Lombok)를 사용하여 값에 접근합니다. 📌 DTO 예제 (클래스 기반)public class PaymentConfirmRequestDTO { private String paymentKey; private String orderId; private int amount; public PaymentConfirmRequestDTO(String paymentKey, String orderId, int amoun..
결제 관련 생성
·
뚜띠
[Payment Entity]@Entity@Getter@AllArgsConstructor@NoArgsConstructor@Builder@Table(name = "payment")public class Payment extends BaseEntity { @Column(nullable = false) private String orderName; @Column(nullable = false) private BigDecimal amount; //TODO: enum테이블 정의하기// @Column(nullable = false)// private PaymentStatus status; private BigDecimal discountAmount; @Column(..
ERD 최종 점검
·
뚜띠
1. baseEntity의 생성일시와 변경일시 사용법 이전에 이야기 나온 사항 : 생성일시(created_at), 변경일시(updated_at), 삭제여부(delete_status)를 baseEntity를 상속받아서 사용할 계획이었다. 그런데 환불 테이블의 경우 환불 요청 일시를 나타내고 싶은 컬럼을 추가할 때, 생성일시 컬럼을 환불 요청 일시의 의미로 사용해도 되는지 궁금했다. 왜나하면 사용자가 환불을 요청했을 때 컬럼이 생성되기 때문에 이것을 같게 생각한 것이다.  2. 환불 완료 일시와 변경일시 이 두 개의 컬럼이 동시에 필요할까?환불이 완료 일시일 경우에는 환불 완료가 최종 상태이기 때문에 환불 완료 일시와 변경일시의 값이 동일하게 된다. 만약 이럴경우에는 어떻게 해결할까? 그래도 환불 완료 일시..
JWT를 통한 인증
·
카테고리 없음
전반적인 흐름1. 로그인 요청 (Sign-in)사용자가 /auth/sign-in 엔드포인트로 아이디와 비밀번호를 포함한 로그인 요청을 보낸다.AuthController의 login 메서드에서 LoginRequestDto를 이용해 사용자 입력을 받아 AuthService.signIn()을 호출하여 검증한다.검증이 성공하면 사용자의 ID (memberId) 를 반환한다.2. JWT 토큰 생성AuthController에서 로그인 성공 시 JWT(Json Web Token) 을 생성한다.JWT 생성 과정:비밀키: AppConfig.getJwtKey()를 사용하여 서명에 사용할 SecretKey를 불러온다.만료시간 설정: 현재 시간(now)을 기준으로 1시간(Duration.ofHours(1)) 후 만료되도록 설..
JVM 밑바닥까지 파헤치기(ZGC 자가치유)
·
책/JVM 밑바닥까지 파헤치기
1. JVM에서 ZGC 자가치유(Self-Healing) ZGC(Zero Garbage Collector)는 저지연(Low Latency) GC로, 대규모 힙(Heap) 메모리를 가진 애플리케이션에서 Stop-the-World 시간을 최소화하는 것을 목표로 한다.ZGC의 핵심 기능 중 하나가 자가치유(Self-Healing) 메커니즘이다. 🔹 ZGC의 자가치유(Self-Healing)란? ZGC는 객체 참조를 자동으로 수정하는 기능을 제공한다. 이를 통해 GC가 객체를 이동시키더라도 애플리케이션이 이를 감지하지 못하게 하여 낮은 지연시간을 유지할 수 있다. 🔹 자가치유 과정 1. 컬러드 포인터(Colored Pointer) 사용 • 객체의 실제 메모리 주소 대신 컬러드 포인터를 사용하여 객체 상태 정..
JVM(읽기장벽과 쓰기장벽)
·
책/JVM 밑바닥까지 파헤치기
1. 읽기 장벽(Read Barrier) 객체를 읽을 때 실행되는 메커니즘으로, JVM이 객체의 상태를 확인하고 필요하면 자동으로 참조를 업데이트하는 역할을 한다. ✅ 주요 목적 • 객체 이동 감지 및 참조 업데이트(Self-Healing) • GC가 객체를 이동한 경우, 기존 참조는 무효화된다. • 읽기 장벽을 통해 객체가 이동되었는지 확인하고, 자동으로 새로운 위치로 참조를 수정한다. • GC의 지연시간 감소 • Stop-the-World 없이 객체를 이동할 수 있다. • 버전 관리 • 일부 GC에서는 객체의 여러 버전을 관리할 수 있도록 돕는다.2. 쓰기 장벽(Write Barrier) 객체에 데이터를 쓸 때 실행되는 메커니즘으로, JVM이 특정 객체의 변경을 추적하는 역할을 한다. ✅ 주요 목적 ..