전체 글(93)
-
04.28 HashMap와 Map 차이
HashMap은 Map 인터페이스의 구현체 중 하나입니다. 따라서 HashMap은 Map의 기능을 제공하면서 추가적인 특징과 동작을 가지고 있습니다. 이들 사이에는 몇 가지 주요한 차이점이 있습니다: 구현 방식: Map: Map은 인터페이스로, 자체적인 구현을 가지지 않습니다. 따라서 Map을 구현한 다양한 클래스(예: HashMap, TreeMap)를 사용하여 Map의 기능을 구현합니다. HashMap: HashMap은 해시 테이블을 사용하여 Map 인터페이스를 구현한 클래스입니다. 해시 함수를 사용하여 키(key)와 값(value)의 쌍을 매핑하고, 배열 내의 버킷에 저장합니다. 순서 보장: Map: Map 인터페이스는 일반적으로 삽입 순서나 정렬된 순서를 보장하지 않습니다. 이는 구체적인 Map 구..
2023.04.27 -
04.27 TDD
작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현하는 방식입니다. TDD는 통합테스트랑 서로 다른 개념이고, TDD는 개발자가 자신이 작성한 코드가 기능 요구사항을 충족하는지를 검증하는데 사용되는 코드고, 통합테스트는 전체 시스템이 요구사항을 충족하는지를 검증하는 테스트 그러면 단위테스트는 무엇이냐 말 그대로 한 단위만을 테스트하는 것입니다. 여기서 한 단위는 일반적으로 class를 말합니다. 개발주기는 red, green, bule로 나뉘고 red단계는 실패하는 테스트 코드를 작성하고 green단계는 실제 성공해서 작동하는 테스트 코드를 작성합니다. 또한 bule단계는 쉽게 설명해서 리팩토링을 수행하는 단계입니다. TDD는 쉽게 설명해서 red,green,bule..
2023.04.27 -
04.16 TIL LINUX 와 권한
문제상황 CodeDeploy를 통해서 CICD를 구축해서 AWS EC2에 Spring Server를 배포. FE서버와의 연결상태 확인. 게시글 작성에서 이미지를 리스트로 업로하는 부분이 서버상에서 작동하지 않는다.. 에러코드 java.io.ioexception: permission denied ??? 갑자기 이게 무슨일인가 했다. 시도 및 확인 Local환경에서 Test 결과 - 성공 서버 환경에서 Test결과 - 실패 어떤 변수값에 의한 문제발생인지 파악이 필요했다. 대부분의 기능들이 정상적으로 작동하나 이미지 업로드와 관련된 부분에서 동일한 에러가 발생함을 확인. 이미지 사이즈에 의한 문제인가? - 아니다 - 로컬상에도 사이즈를 줄여서 해봤지만 지정한 예외가 처리되게 되어있다. 이미지 용량에 의한 문..
2023.04.16 -
04.15 TIL (서버)
전날(14일) AWS에 있는 CI/CD를 하고 자고 일어났는데 로그인을 할 경우 CORS가 나왔습니다. 분명히 CORS 처리를 했는데.. 그래서 코드를 다시 보기 시작했습니다. package com.sparta.petplace.config; import com.sparta.petplace.auth.jwt.JwtAuthFilter; import com.sparta.petplace.auth.jwt.JwtUtil; import lombok.RequiredArgsConstructor; import org.springframework.boot.autoconfigure.security.servlet.PathRequest; import org.springframework.context.annotation.Bean; ..
2023.04.15 -
04.12 TIL(Querydsl 성능 향상)
Querydsl을 통해 성능을 개선하기 위해 두가지 변경사항을 적용 시켜 봤다. 1. @Transactional(readOnly = true) 사용 2. Querydsl 에서의 paging 처리 1. @Transactional(readOnly = true) 사용 @Repository public class PostRepositoryCustomImpl extends QuerydslRepositorySupport implements PostRepositoryCustom{ ..... 생략 } 조회만을 위한 Querydsl 클래스에 @Transactional(readOnly = true) 을 사용하여 성능을 향상시켜줬다. @Transactional(readOnly = true) 을 사용했을때 장점이 있다. 1...
2023.04.13 -
04.10 TIL
SSE를 서버에 배포한 후 45초마다 연결이 끊기는 상황 발생 SSE에 주기적으로 신호를 보내서 연결을 확인해주는 hearbeat를 보내는 메서드를 추가해서 연결이 유지되도록 변경 Runnable heartbeatTask = () -> { try { String heartbeatMessage = "event: heartbeat\ndata: \n\n"; emitter.send(heartbeatMessage); } catch (IOException e) { emitter.complete(); executor.shutdown(); } }; 주기적으로 빈 이벤트를 보내는 태스크를 먼저 생성했다. executor.scheduleAtFixedRate(heartbeatTask, 0, 10, TimeUnit.SECON..
2023.04.10