덱(Deque)이란?Deque(Double Ended Queue)는 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조입니다. 즉, 큐(Queue)와 스택(Stack)의 기능을 모두 갖춘 자료구조입니다.사용법Deque는 다음과 같은 주요한 연산들을 지원합니다:Push/Po
레디스 스핀락을 적용해서 동시성 제어를 진행합니다.스핀락 적용 코드 스핀락을 통해 동시성 제어를 시도했으나, 실패.10대 주차 가능한 주차장에 20개의 스레드가 동시에 입차를 요청시 15~19대의 차량이 입차에 성공 CPU과부하로 인한 redis 성능 저하로 동시성 처
동시성 제어 테스트를 위해 테스트 코드작성을 하려고 계획을 했고 가장 처음 만난 문제는 동시성 제어는 단위테스트로 작성해야 하는가 통합테스트로 작성해야 하는가? 에 고민에 빠졌고동시성 제어는 멀티스레드 환경에서 테스트를 진행해야하고 단위테스트는 각 메서드나 함수 단위로
개선 전: 1461 ms동적 쿼리 적용 : 67ms기존 관리자 페이지를 호출 시 페이지를 호출하는 시간이 너무 오래걸리는 문제가 발생했고페이지 호출 시간 = 데이터의 개수 만큼의 페이지 지연이 발생되었다.군산오름 주차장 기준 1461ms 가 소요되었다.기존 로직의 흐름
키워드 검색주변 주차장 검색 + 주차장 유형 필터 포함: 쿼리 실행 속도를 측정한다.키워드 검색검색어 : 서울특별시청, 사려니숲길, 서울역, 강남역, 스타벅스 울산, 울산 스타벅스주변 주차장 검색서울특별시청 좌표를 기준으로 주변 주차장을 검색한다.(lo: 126.978
version 1, version 1-1예약 가능 여부를 확인하기 위해 예약시간에 해당하는 매시간마다 예약현황DB에서 예약정보를 찾고, 주차현황DB에서 출차여부를 확인한다. → 예약시간만큼 쿼리가 반복해서 실행되므로, 예약시간이 길어질수록 로직 실행 속도가 느려진다.
Case 1, Case 2 : 주차시간을 지켜 주차한 경우로, 보편적이고 일반적인 상황이라 가정한다.Case 3, Case 4 : 주차시간을 지키지 않은 경우로, 예외 상황이라 가정한다. → 일반적인 상황, 예외상황 모두 포함하여 version 2 가 예약차량 입차
예약 1\. 예약시작시간이 종료시간보다 늦게 입력된 경우 예외처리 \- NOT_END_TO_START(400,"입차시간이 출차시간보다 빨라야 합니다.") 2\. 주차장 ID가 주차장 정보 DB에 없는 경우 예외처리 \- NOT_FO
최초검색 : 13724 ms조회로직 변경 : 7847msFetch Join 변경 : 319ms조회 쿼리 변경 : 256ms기본적인 검색기능을 구현했으며 카카오맵 API로 사용자 검색어에 대한 결과를 호출검색 결과가 있는경우 : 검색결과 0번으로 좌표를 반환검색 결과가
코드 커버리지란 소프트웨어 테스트의 측정 항목 중 하나로, 테스트를 수행했을 때 얼마나 많은 코드가 실행되었는지를 나타내는 지표입니다. 즉, 소스 코드 중에서 얼마나 많은 부분이 테스트 케이스에 의해 실행되었는지를 백분율로 나타내는 것입니다.라인 커버리지 : 소스 코드
자바를 사용하는 개발자들이 SQL문을 작성하지 않고도 데이터베이스 쿼리를 생성할 수 있도록 도와주는 오픈소스 라이브러리입니다.객체지향적인 방식으로 쿼리를 작성할 수 있게 해주기 때문에, 코드의 가독성이 높아지고 유지보수성이 좋아집니다. 또한, 동적 쿼리를 작성할 때 유
2012년 7월에 개발을 시작해 2015년 1월에 오픈소스로 공개한 Pinpoint가 n계층 아키텍처를 추적해 대규모 분산 시스템의 성능을 분석하고 문제를 진단, 처리하는 플랫폼이다. 대규모의 n계층 아키텍처를 추적할 수 있는 Pinpoint는 다음과 같은 특징이 있다
Apache Jmeter를 아래의 경로에서 다운로드 받아준다Apache JMeter \- Download Apache JMeterzip파일을 다운받아준다 \- MAC의 경우 brew install jmeter로 설치해준다압축 해제
아래의 사이트에 접속하여 로그인을 해준다https://developers.kakao.com/내 애플리케이션 -> 애플리케이션 추가하기정보를 작성한다 앱이름 사업자 명은 원하는대로 작성하면된다아래와 같이 생성된 애플리케이션을 눌러준다우리가 사용할 키는 REST
CI(Continuous Integration, 지속적인 통합)CI는 소프트웨어 개발 과정에서 개발자가 코드 변경 사항을 지속적으로 통합하는 것을 의미합니다.여러 개발자가 동시에 코드를 변경하고 저장소에 업로드할 때, CI는 이러한 변경 사항을 자동으로 병합하고 빌드하
https://www.themoviedb.org/?language=ko 에 접속하여 회원가입 후 설정에 들어가준다Professional과 Developer중 Developer를 선택해준다필요 정보를 적어주는데 Application Summary를 조금 많이 적
controller에서 Pageable로 값을 받아준다 넘겨받을수 있는 값은 다음과 같다page : 페이지 번호size : 페이지당 개수sort : 정렬할 ID, (오름차순|내림차순)작성하면 아래와 같다http://localhost:8080/api/posts?
https://mvnrepository.com/artifact/org.springdoc/springdoc-openapi-uiSwagger는 두가지 버전의 라이브러리가 있는데springfox-swagger, springdoc-openapi 두가지 중 요근래 많이
자바 빈은 자바 객체를 만드는 규약입니다. 자바 빈은 다른 클래스에서 재사용 가능한 자바 객체를 만들기 위한 규약이며, 이를 만족하는 자바 객체를 "자바 빈"이라고 부릅니다. 자바 빈은 일반적으로 기본 생성자를 생성하고, 멤버 변수를 private로 선언하고, gett
IOC, DI란? IOC (Inversion of Control) 객체의 생성, 상호작용, 생명주기 등 관리를 개발자가 아닌 스프링 컨테이너에게 맡긴다. 개발자 -> 프레임워크로 제어의 객체관리 권한이 넘어갔음을 제어의 역전이라고 한다. 스프링 컨테이너를 IOC컨테