
사용자가 쿠폰을 발급하는 과정에서 동시성 테스트를 해보았습니다. 동시성 문제 발생현재 로직은 다음과 같습니다.사용자가 쿠폰을 발급할 수 있는 상태를 확인하여 발급합니다.@Override@Transactionalpublic void issueCoupon(Long customerId, Long couponId) { Coupon coupon = couponRepository.findById(couponId).orElseThrow(() -> new RestApiException(CommonErrorCode.ENTITY_NOT_FOUND)); Customer customer = customerRepository.findById(customerId).orElseThrow(() -> new RestApiE..

스프링과 OAuth 를 이용한 프로젝트를 진행중입니다. 구매자는 예약을 할 수 있는데, 이러한 예약 내역에 대해 카카오 캘린더로 일정을 추가해주려고 합니다.이 로직을 작성해주기 위해 다음 카카오 톡캘린더 docs를 참고하여 로직을 작성해주었습니다.https://developers.kakao.com/docs/latest/ko/talkcalendar/rest-api Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com 전체적인 로직은 다음과 같습니다. 보기에는 어려울 수 있으니 하나씩 천천히 해보도록 하겠습니다. 액세스 토큰 저장 (스킵 가능)카카오 API..

피드 작성을 하면서 S3에 요청할 일이 많았습니다. 하지만, 반복문을 통해 S3에 요청을 보내면서 시간이 너무 많이 걸린다는 것을 API 요청만으로도 느낄 수 있었습니다. 그래서, 이 작업에 대해 비동기 처리를 하게 되었고, 그에 대한 테스트 결과입니다. 사용자는 20건의 요청을 한번에 보내게 되고, 한번의 테스트 당 10개의 이미지(최대 10개로 잡았습니다.)를 보내도록 하였습니다. 1. 단순 반복문 사용기존 반복문을 사용하였을 때의 결과입니다.다음과 같이 for문을 이용하여 데이터를 저장해주었습니다.최소 787ms, 최대 1266ms, 평균 911ms라는 시간이 걸렸습니다. 2. S3 요청 비동기 처리이미지 처리를 다른 서비스로 넘기면서, Async 처리를 해주었습니다.또한 초기 쓰레드의 수를 최대 ..
프로젝트를 하며, id를 AI로 두고 객체를 생성하는 경우가 많았습니다. 그런데 이번에 객체 생성 중 id가 null이라는, 처음보는 에러를 발견하게 되었습니다. 제 에러로그는 다음과 같습니다.더보기더보기Hibernate: insert into chat_member (chatroom_id, user_id) values (?, ?) 2024-05-31T18:33:49.735+09:00 WARN 22400 --- [nio-8080-exec-7] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1048, SQLState: 23000 2024-05-31T18:33:49.735+09:00 ERR..

문제프로젝트 리팩토링 과정 중에서 entity를 더 상세히 적고 싶어서 다음과 같이 @Column 어노테이션을 추가하여 null 이 들어오지 않도록 하였습니다.그리고, 스프링을 재시작하였는데, 업데이트 쿼리가 실행되지 않아 데이터베이스 스키마가 그대로 남아있는 것을 확인하였습니다.또한 저의 application.yml의 설정은 다음과 같습니다. 해결방안spring.jpa.hibernate.ddl-auto: update 의 경우, 제약조건(Null 등)이 변경되어도 이를 반영해주지 않는다.따라서 직접 db를 변경해주는 수밖에 없다고 한다.

키(Key)데이터베이스 테이블에서의 데이터는 서로 상이합니다. 즉, 해당 테이블을 구성하고 있는 애트리뷰트 전부를 이용하면 모든 데이터들을 항상 유일하게 식별할 수 있습니다. 그러나 실제로는 애트리뷰트 전부를 이용할 필요 없이 하나 또는 몇 개의 애트리뷰트만 지정하여 그 값을 이용해도 해당 테이블에 있는 있는 모든 데이터들을 유일하게 식별할 수 있는 경우가 많습니다. 이렇게 데이터들을 유일하게 식별할 수 있는 애트리뷰트 집합을 그 테이블의 키(Key)라고 합니다. 특징1️⃣ 유일성: 유일한 값을 가져야 합니다.2️⃣ 최소성: 최소한의 값으로 식별할 수 있어야 합니다.3️⃣ 불변성: 변하는 값이어선 안됩니다.4️⃣ 존재성: 반드시 존재해야 합니다. 누구한텐 있고 누구한테는 없어선 안됩니다.후보키(Candi..

DNS란 ?DNS에 대해서 알기 위해 먼저 전화번호부를 생각해봅시다.누군가의 전화번호를 저장하기 위해 해당 번호를 저장했다고 생각해봅시다.전화번호만 알고 있다면 이 전화번호가 누구 껀지, 그리고 해당 번호를 항상 외우고 있어야 합니다.하지만 이 번호가 무수하다면 ?이를 다 외우고 있기엔 사실상 불가능할 것입니다. 그래서, 우리는 이름을 매핑해줍니다.그러면, 우리는 해당 이름만을 가지고 그 사람의 전화번호를 얻을 수 있습니다.도메인 이름 시스템(Domain Name System, DNS)란, 사람이 읽을 수 있는 도메인 이름(예: www.naver.com)을 머신이 읽을 수 있는 IP 주소(예: 192.0.2.44)로 변환해주는 서비스를 말합니다.DNS은 전세계적으로 약속된 규칙을 공유하는데, 상위 기관에..

문제 링크: https://www.acmicpc.net/problem/30464 문제건덕이는 학교에 가기 너무 싫은 나머지 최대한 늦게 학교에 도착하려고 한다. 등굣길은 N개의 칸이 가로로 놓인 형태이며, 각 칸은 가장 왼쪽 칸부터 오른쪽으로 1부터 N까지 번호가 매겨진다. 건덕이는 1번 칸에, 학교는 N번 칸에 존재한다.건덕이는 처음에 학교를 바라보는 방향으로 서 있다. 등교하는 방법은 특이한데, 1분마다 현재 자신이 서 있는 칸에 쓰인 수만큼 바라보는 방향으로 이동한다. 이때, 등굣길을 벗어나도록 이동할 수 없다.건덕이는 바라보는 방향을 최대 두 번 반전할 수 있다. 학교가 있는 칸에 처음으로 도착하는 시간을 최대한 늦추면 출발 몇 분 뒤에 도착할까? 건덕이가 방향을 반전하는 데 드는 시간은 무시한..

CS 공부를 하며 항상 나오는 문제는주소창에 www.naver.com을 입력하면 무슨 일이 일어나나요 ? 였습니다.그래서 이번 포스팅에서는 해당 질문에 대해 윈도우 운영체제 기준으로 자세히 답해보도록 하겠습니다. 웹 브라우저에 www.naver.com 을 입력하면 일어나는 일 IP 주소 가져오기우리는 보통 웹 브라우저에서 검색을 하면 주소창에 URL(보통 도메인 이름)의 형태로 작성을 합니다.URI? URL?URI는 Uniform Resource Idenfier의 약자로, 통합 자원 식별자라고도 합니다.✅ Uniform은 리소스를 식별하는 통일된 방식을 말합니다.✅ Resource는 URI로 식별 가능한 모든 종류의 자원(웹 브라우저 파일 및 그 외의 리소스 포함)을 지칭합니다✅ Identifier는 다..