반응형
근무 중 소스 개선이 필요한 곳을 발견하여서 해당 소스를 개선하였다.
동일한 전화번호가 있는 지 중복체크 하는 로직인데
A그룹의 전화번호를 B그룹으로 옮기는데 B그룹에는 중복된 전화번호가 있으면 안 된다. (A그룹 안에서는 중복이 있을 수도 있음)
그리하여 기존의 로직은 A그룹의 전화번호와 B그룹의 전화번호를 2중 for문으로 javascript에서 중복체크하는 방식이었다.
하지만 5000건이 넘어가는 순간 많은 시간이 소요되며 또한 멈춤 현상까지 발생되어 소스 개선을 하였다.
(5000*5000 반복하기 때문)
소스 개선한 방향
1. jsp의 a그룹 b그룹의 전화번호를 모두 같은 배열로 합친다.
2. ajax 로 java 쪽에 보낸다.
3. java 쪽에서는 해당 배열의 전화번호들을 hashmap을 이용해 중복체크를 한다.
→ hashmap 자료형의 중복을 허용하지 않는 특징을 이용했다.
→ 전화번호말고도 이름 정보도 포함되어있어 전화번호를 key 값에 두고, 이름을 value 값에 두었다.
4. 중복되는 전화번호를 제외한 hashmap 을 json 배열로 변환한 뒤 다시 jsp 단으로 넘겨준다.
요약
2중 반복문 → java의 hashmap을 이용해 중복체크
반응형
'etc' 카테고리의 다른 글
[etc] 솔루션에서 다른 테이블스페이스 접근 방식 (0) | 2021.08.23 |
---|---|
[쿼리 개선] 대량 Insert 시 로직 개선 (0) | 2021.07.27 |
[서버 관리] Oracle 서버의 CPU가 급작스레 높아진 경우 (0) | 2021.06.29 |
[오류 해결] Script5009:FormData가 정의되지 않았습니다 (0) | 2021.06.23 |
[etc] hang? deadlock? (0) | 2021.05.31 |