stream 의 collect 의 groupby를 이용하여 특정 값에 대한 그룹을 지어주자 ex) a = [{}] .b = [{}] , c=[{}] Stream 그룹 처리 Collectors.groupingBy() 사용 List trendList = testService.selectTestList(): Map trendMap = trendList.stream().collect(Collectors.groupingBy(p->p.get("date"))); 결과 예시 ) 2022-12=[{date=2022-12,cnt=3,gubun=A},{date=2022-12,cnt=1,gubun=B},{date=2022-12,cnt=4,gubun=C}] Map 의 키값 기준으로 내림차순 정렬 Map trendMapSort ..
문제 발단 프로젝트에서 얕은 복사와 깊은 복사에 대한 이해도가 적어 애먹은 부분이 있다 먼저 내가 문제가 되었던 알고리즘에 대하여 먼저 얘기해 보자면 어떤 쇼핑몰의 장바구니 로컬 스토리지 처리 관련된 문제이다... 기존 방식: 상품번호가 일치하면 상품번호에 대한 데이터를 중복체크해서 등록이 불가능하도록하는 것 변경된 방식: 장바구니에는 담는데로 담기게 하였다. 그러므로 발생하는 것은 로컬스토리지에 저장되어 장바구니에 표출하던 데이터는 로컬 스토리지에 저장된 상품 번호를 조회하여 그에 대한 상품 정보를 장바구니에 표출하는 형태였는데 중복체크를 안하도록 하는 방식으로 변경 되면서 기존 프로세스로는 장바구니에 중복 정보를 표출할 수 없게 되었습니다.(왜냐하면 상품번호에 해당하는 데이터는 하나의 pk를 가지기 ..
SAX Parser : Simple API for XML Parser 의 약어로 , 자바 API에서 제공한다. 정의 : 기본적으로 SAX 파서는 문서를 순회하며 event가 발생하면서 순차적으로 파싱을 하게 된다. SAX는 XML 문서를 읽어들여서 어떤 태그를 만나면 그에 따라 이벤트를 생성한다. SAX에는 기본적으로 세가지 이벤트가 발생한다 startElement() : 태그를 처음 만나면, 발생하는 이벤트 endElement() : 닫힌 태그를 만나면 발생하는 이벤트 characters() : 태그와 태그 사이의 text(내용)을 처리하기 위한 이벤트 예시 코드) xml 파일 30 홍길동 Male 사용자 30 홍길이 Male 사용자2 21 홍삼이 Female 사용자3 객체로 파싱할 클래스 public..
기본적으로 HttpServletRequest 객체 내 함수를 이용하여 클라이언트 IP를 가져올 수 있습니다. 기본 default 주소를 가져올때 사용하는 함수는 -> HttpServletRequest -> request.getRemoteAddr(); 그러나 이 기본 default 사용방식은 보안관련해서 방화벽이나 클라우드로 운영하는 경우 클라이언트의 실제 Ip 주소를 가져오기가 어렵다. 클라이언트가 요청을 하면 Web Server에서 프록시나 로드 밸런서를 통해 WAS에 요청하기 때문에 프록시나 로드 밸런서의 Ip 주소만을 담고 있습니다. 해결 방안 : X-Forwarded-For을 선언한 헤더를 사용하는 방법 ex) req.getHeader("X-Forwarded-For"); public static ..
기존에 poi 라이브러리를 이용하여 엑셀 파일 읽기 프로그램을 만들었다. 엑셀 업로드 10만 이상의 대용량 처리 이슈는? 어떻게 하지? 문제점 : 엑셀 사이즈가 커지게 되면 엑셀 파일을 workbook 객체로 변환할 때 Out of Memory(메모리 부족) 현상이 발생하게 된다. 그렇게 되면 엑셀 파일 읽기 도중 서버가 터질 수;; 있는 상황이 발생 그리하여 이보다 좀더 적은 메모리를 이용하여 처리하는 sax 방식을 채택 ※ 사용되는 클래스 SheetHandler.java(명칭은 정한것임) -> 엑셀 양식에 맞게 데이터를 커스텀하여 정리하는 클래스 : SheetContentsHandler 를 extends 받아서 override를 하게 된다. public class SheetHandler impleme..
- Total
- Today
- Yesterday
- 이미지
- mybatis
- Linux
- 격리수준
- Cache
- 스케줄러
- spring
- 네이버 클라우드
- 도커
- centos7
- hazelcast
- docker
- 캘린더
- Quartz
- dockerfile
- 리눅스
- dfs
- 컨테이너
- ncp
- 개념 이해하기
- 알고리즘
- Java
- Lock
- 정의
- MySQL
- leatcode
- insert
- 권한
- 캐시
- LocalDate
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |