문제 설명 제한 사항 입출력 예 입출력 예 설명 풀이(주석 포함)import java.util.*;class Solution { public int solution(String[] friends, String[] gifts) { int friendsLength = friends.length; // 빠르게 친구 찾기 위한 해시맵 생성 HashMap friendsMap = new HashMap(); for(int i = 0; i giftGraph[j][i] || (giftGraph[i][j] == giftGraph[j][i] && giftDegree[i] > giftDegree[j])){ ..
에러 발생java.lang.IllegalStateException: **Duplicate key 'key로 저장하려는 값'** (attempted merging values ~~) 오늘도 만난 에러,, 뜯어봐야 알겠지만 대충 봐도 key 값이 중복되어 발생한 에러다. 에러 원인에러가 발생한 부분을 찾아보니 아래와 같았다. Map memberMap = memberInfoRepository.findByMemberIds(memberIds).stream() .collect(Collectors.toMap(Member::getMemberId, member -> member)); 여기서 Collectors.toMap() 호출 시 중복되는 key 값이 존재하는 것이 에러의 원인이었다. memberId를 ..
에러 발생 신나게 개발하던 중 마주한 에러..2024-07-04 10:48:58 [http-nio-9091-exec-5] [WARN ] o.h.q.i.QueryParameterBindingsImpl - HHH000443: Dialect [com.~~~] limits the number of elements in an IN predicate to 2100 entries. However, the given parameter list [memberIds] contained 3417 entries, which will likely cause failures to execute the query in the database2024-07-04 10:48:58 [http-nio-9091-exec-5] [WARN ]..
회사에서 개발했던 어드민 사이트의 코드를 리팩토링했다..아니 해야만 했다.. 이유는…정말 너무너무 느려서,,,,^^,,, 회원들의 출석내역을 월별로 다운로드하는 기능이 있는데 데이터가 늘어나면 늘어날수록..정말 엄청난 시간이 걸린다.. 수정 전기존 코드에서 대량의 출석 데이터를 처리할 때 성능 문제가 발생했다. 각 회원의 출석 횟수를 개별적으로 조회하여 병렬로 처리하더라도 데이터베이스 호출 횟수가 많아져 전체 성능이 저하되었다. 데이터 약 7만 3천 개 기준 2시간 이상,,,이면 말 다했다. (아래의 모든 코드는 실제 사용한 코드를 수정한 예제 코드입니다.) @Transactionalpublic List exportMonthlyAttendanceList(int year, int month){ //..
간단하게 새로운 토이 프로젝트를 만들어보려고 한다. 프론트는 Thymeleaf를 이용하는데 Thymeleaf layout을 적용하는데 문제가 생긴 것 같다. 꽤 며칠을….이걸로 골머리를 앓다가..정말 어이없게 해결하게 되어서..기록해둔다. 문제 발생Thymeleaf layout을 적용하는데 뭔가 이상하다.우선 버전은 다음과 같다.Java 17Spring Boot 3공통 레이아웃을 만들어두고 사용하고자 하는데 적용이 안된다. gradle 파일에서 의존성을 확인하고, 공통 레이아웃 파일들의 경로에도 문제가 없는데..dependencies{ ... implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' imple..
새로운 프로젝트 진행 중 만나버린 친구.. 오랜만이다 CORS 에러.. 안녕?.. CORS 에러는 웹 개발자라면 꼭 만날 수 밖에 없는 에러로 명성이 자자하다. CORS란? Cross-Origin Resource Sharing의 줄임말로 웹 브라우저에서 다른 출처의 리소스 공유에 대한 허용/비허용을 다룬 보안 정책이다. 예를 들어, 다른 회사의 API 등 다른 도메인의 API(다른 출처)를 이용하고 싶을 때 CORS 허용 설정이 되어 있어야 성공적으로 API에 접근해 리소스를 공유받을 수 있다. CORS 설정 방법 CORS 에러를 해결하기 위한 여러 방법이 있겠지만 오늘은 직접 서버에서 HTTP 헤더 설정을 통해 다른 출처를 허용하도록 설정하려고 한다. Spring 서버, Node 서버 등 각 서버에 맞..
버튼을 클릭하면 서버 요청이 한 번만 들어와야 하는데 2번 이상 들어오는 케이스가 생겼다. 버튼 중복 클릭을 방지하기 위해 클라이언트 단에서 처리가 필요했다. 총 2가지 방법을 사용해보았고, 둘 다 문제 없이 잘 실행된다. 실제로 적용해 배포한 건 두번째 방법이다. 우선 버튼은 아래와 같다. 서버 호출 버튼 1. 클릭 시 버튼 비활성화(diabled) 처리 버튼 중복 클릭 방지를 구글링했을 때 가장 많이 나오는 방법이다. 클릭 시 버튼 요소 자체를 비활성화시키는 것이다. 서버 호출 후 응답을 받은 이후에 다시 버튼을 활성화시켜주었다. function serverCallClick() { // 버튼 요소 const serverCallButton = $("#serverCallButton"); // 버튼이 비활..
DB Connection Pool 수를 조회해야 할 일이 생겼다. 현재 DB에 연결된 세션 정보도 함께 조회하기 위해 아래의 쿼리를 작성했다. 필요할 때마다 쉽게 찾을 수 있도록 마찬가지로 기록해둔다. 현재 Connection Pool 수 /* 현재 Connection Pool 수 */ SELECT DB_NAME(dbid) AS 'Database', COUNT(dbid) AS 'Connection Pool Count' FROM sys.sysprocesses WHERE dbid > 0 GROUP BY dbid; 전체 Connection Pool 수 /* 전체 Connection Pool 수 */ SELECT COUNT(dbid) AS 'Total Connection Pool Count' FROM sys.s..
회사 프로젝트 중 Java 17를 사용한 프로젝트가 있다. 다른 프로젝트를 작업하다가 해당 프로젝트를 로컬에서 실행시킬 일이 있어서 실행했는데 아래와 같은 오류가 떴다. error: invalid source release: 17 다른 프로젝트에서는 Java 11을 사용하고 있어 Java 버전 변경을 위해 Project Structure에서 SDK 등은 17로 모두 변경한 상태였기에 의아했지만, 빠뜨린 부분이 있었다. gradle 버전 변경. 결국 Java 버전 변경이 완전히 되지 않았기 때문이다. 다음에 또 똑같은 걸로 검색해둘 것 같아 남겨둔다.. Project Structure(단축키 : Shift + Ctrl + Alt + S) Project SDK 변경 Language Level 변경 Modul..
에러 발생 예전에 회사에서 원격으로 근무하고 있던 동료 개발자로부터 에러가 발생했다고 공유 받았다. DB는 MySQL이며 아래와 같은 에러 메세지가 떴다고 한다. ERROR 1129(00000): Host '*' is blocked because of many connection errors. Unblock with 'mysqladmin flush-hosts' 에러 원인 검색해보니 바로 원인을 알 수 있었다. 원격 서버에서 MySQL 서버로 연결한 뒤 close를 하면 MySQL은 비정상적인 접속으로 판단해 해당 IP를 블락 처리한다고 한다. 이 때 MySQL에서 이와 같은 비정상적인 접속 요청 수를 카운팅해서 global.max_connect_errors에 지정된 값을 넘기면 자동 블락 처리가 되어 생..