전체 글(23)
-
javascript null,undefined,empty 확인 방법
1. 배열이 비어있는지 확인 if(!array.length) 2. 배열에 뭔가가 들어있는지 확인 if(array.length) 3. 문자열이 비어있는지 확인 // undefined, null 모두 포함 if(string) 4.어떤 참조 변수가 false인지 판정할 때는 다음처럼 작성X if(string === false)(X) true인지를 확인하도록 부정(!) if(!string) 이렇게하면 string의 값이 0, “”, null, undefined, NaN인 경우에 true를 반환 5. boolean가 불린값 false를 갖는지를 확인하는 경우 if(boolean === false) 6. 객체가 비어있는지 확인 if(Object.keys(obj).length === 0)
2023.02.01 -
스프링부트 excel 대용량 다운로드 처리 SXSSF
jxls 탬플릿으로 프로젝트를 진행했는데 만 건 이상 데이터는 무려 7초나 걸리는 상황이라 교체를 할 수 밖에 없었다. 간단하게 개발하려다 고생만 더 했다. poi 라이브러리에서 SXSSF는 대용량 처리에 적합하다. 기존의 HSSF, XSSF는 전체 데이터를 메모리에 저장해서 사용하기 때문에 메모리가 다 차면 문제가 생긴다. SXSSF는 메모리 부족을 방지하기 위해 메모리에 있는 데이터를 주기적으로 임시 파일로 옮긴다. 서버에 메모리를 주기적으로 비워주며 성능부하가 덜하다. 교체 결과 7초 걸리던 시간이 1초로 단축됐다. // workbook 생성 SXSSFWorkbook sxssfWorkbook = new SXSSFWorkbook(-1); Sheet sheet = sxssfWorkbook.createS..
2022.10.12 -
스프링부트 jxls 엑셀 탬플릿 이용하여 만들기
dependency 추가 implementation 'org.jxls:jxls:2.12.0' implementation 'org.jxls:jxls-poi:2.12.0' implementation 'org.apache.poi:poi:5.2.2' implementation 'org.apache.poi:poi-ooxml:5.2.2' jxls 1.x 버전을 사용하지 않고 2.x로 구현했다. poi 라이브러리도 사용하기 때문에 poi도 추가해줘야 한다. @GetMapping("/excel.json") public void excel(JavaBean bean, HttpSession session, HttpServletResponse res) throws IOException, InvalidFormatExceptio..
2022.10.06 -
스프링부트 cron 표현식 연도 생략 해야함 주의!
Example patterns: "0 0 * * * *" = the top of every hour of every day. "*/10 * * * * *" = every ten seconds. "0 0 8-10 * * *" = 8, 9 and 10 o'clock of every day. "0 0 6,19 * * *" = 6:00 AM and 7:00 PM every day. "0 0/30 8-10 * * *" = 8:00, 8:30, 9:00, 9:30, 10:00 and 10:30 every day. "0 0 9-17 * * MON-FRI" = on the hour nine-to-five weekdays "0 0 0 25 12 ?" = every Christmas Day at midnight 스프링부트..
2022.09.26 -
스프링부트 스케줄러 동적 처리
@Slf4j @Component public class DynamicChangeScheduler { private ThreadPoolTaskScheduler scheduler; private String cron; private AnnualFeeService annualFeeService; // 생성자 주입을 통해 db의 자동갱신 기준일 cron 값 가져옴 public DynamicChangeScheduler(AnnualFeeService annualFeeService) { this.annualFeeService = annualFeeService; List list = annualFeeService.list(); cron = list.get(0).getCron(); } // 스케줄러 시작 public v..
2022.09.26