본문 바로가기

전체보기

(43)
[Mybatis] ResultHandler로 대용량 Excel Download (POI) 대용량의 데이터를 데이터베이스에서 읽어 Excel로 다운로드 할 때 OOM(Out Of Memory)가 자주 발생한다. OOM을 해결하기 위해서 Mybatis를 사용하는 경우에는 ResultHandler를 이용하여 각각의 Result에 대해 Excel의 Row를 생성하면 OOM 발생을 방지할 수 있다. (기존의 DAO를 사용하지 않는 이유는 ResultHandler를 사용해서 데이터베이스에서 행을 패치하면서 바로 엑셀 생성을 처리하기 위해서임) SqlSession session = sqlSessionFactory.openSession(); ResultHandler 를 이용하여 row별로 처리할때는 첫번째로 session을 열어줘야한다. class InnerResultHandler implements Re..
Menu Children 만들기 Java에서 메뉴를 만들때 아래 형식으로 많이한다. ------------------------------ ID | PARENT_ID | NAME ------------------------------ 0 | null | root 1 | 0 | A 2 | 1 | A-1 3 | 0 | B 4 | 3 | B-1 5 | 3 | B-2 6 | 5 | B-2-1 ------------------------------ 이 데이터를 아래처럼 Tree Node로 바꿔보기로 한다. root A A-1 B B-1 B-2 B-2-1 public Menu selectMenuList(Map param) { List menu = repository.selectMenuList(param); menu.forEach(items -> ..
Spring Boot 마이크로서비스-밋업시리즈 3탄 후기 [마이크로서비스 따라하기 꿀밋업 시리즈] 3탄 - Spring Boot를 사용한 마이크로서비스 개발과 페어 프로그래밍 데모 https://www.meetup.com/ko-KR/Seoul-Cloud-Foundry-Meetup/events/264485819/ [마이크로서비스 따라하기 꿀밋업 시리즈] 3탄 - Spring Boot를 사용한 마이크로서비스 개발과 페어 프로그래밍 데모 2019년 9월 30일 (월) 오후 7:00: [마이크로서비스 따라하기 꿀밋업 시리즈]꿀밋업 시리즈 3탄 합니다!본 밋업 시리즈는 총 9단계의 세션으로 구성이 되어 있는 시리즈 형태로, 단일 애플리케이션을 마이크로 서비스로 전환하는 과정을 하나의 애플리케이션을 통해 알아봅니다. 참석하시는 분들은 전체 세션을 통해 클라우드에 최적화된..
TDD (Test Driven Development) 미완
마이크로서비스 개발을 위한 DDD(Domain Driven Design) 세미나 후기 마이크로서비스 개발을 위한 DDD(Domain Driven Design) 따라 해보기 http://www.allshowtv.com/detail.html?idx=92 마이크로서비스, 어디까지 해봤니? 기존 모놀리스 애플리케이션 개발 방법과 다르게, 클라우드 네이티브 애플리케이션 개발에서는 도메인 기반 디자인(DDD)이 필수적으로 요구됩니다. www.allshowtv.com 보리스(Boris) 다이어그램 데이터 오너십 - 알림 - 계좌불러옴 - 마켓시스템 제외 => aggregate로 나눌수 있음 ( 사용자 ---- / 계좌(account) ---- / 포트폴리오(내정보) + 거래이력 ==> 1:1매핑 ---- / 주문(order) ---- / 주식정보(외부시스템) --- / [공통] Noti(알림-외부시스..
Event Loop 자바스크립트의 큰 특징 중 하나는 싱글 스레드(단일 스레드) 기반으로 동작한다는 것이다. 자바스크립트를 해석하는 엔진은 크게 3가지 영역으로 나뉘는데 (V8 기준으로 작성) 1. Call Stack(호출 스택) 2. Task Queue (Event Queue) 3. Memory Heap + 그리고 추가적으로 Event Loop가 존재한다. 이벤트 루프는 Task Queue에 들어가는 task들을 관리하게 된다. 그림이 2개인 것은 Queue 가 자바스크립트 엔진에 들어가냐 마냐 의견이 분분하여 (찾아봤는데 정확히 명시된 곳이 없다.) 일단 그림을 2개 넣어보았다. Call Stack 자바스크립트는 단 하나의 호출스택을 사용한다. 이러한 특징 때문에 자바스트립트 함수가 실행되는 방식을 "Run to Com..
java.lang.OutOfMemoryError - Tomcat heap Size Setting memory leak(OutOfMemoryError) 가 나는것을 방지하기 위해 미리 heap size를 늘려주도록 한다. 1. Tomcat -window 톰캣 설치 폴더 > bin > catalina.bat 수정 > set CATALINA_OPTS="-Xms512m -Xmx1024m" -linux 톰캣 설치 폴더 > bin > catalina.sh 수정 > JAVA_OPTS = "$JAVA_OPTS -XX:NewSize=256m -XX:MaxNewSize=512m -Xms5120m -Xmx10240m" 2. Spring boot jar실행 java -XX:NewSize=256m -XX:MaxNewSize=512m -Xms5120m -Xmx10240m -Dspring.profiles.active=acti..
ehCache 설정하기 ehCache 는 캐시 엔진 중의 하나이다. 주요 특징으로는 아래와 같다. 경량의 빠른 캐시 엔진 확장성 : 메모리, 디스크 저장 지원, 멀티 CPU의 동시 접근에 튜닝 분산 지원 : 동기, 비동기 복사, 피어 자동 발견 높은 품질 결국 캐시란, 반복적으로 데이터를 불러올 때 지속적으로 DBMS 혹은 서버에 요청하는 것이 아닌 메모리에 데이터를 저장하였다가 데이터를 불러다가 쓰는 것을 의미한다. 따라서 서버나 DBMS에 부담을 덜어주고, 엄청 빠르기 때문에 많은 시스템에서 사용하고 있다. 대표적으로 Browser Cache, Apacha Cache, DNS Cache등 여러가지 형태로 캐시가 사용되고 있다. 1. gradle dependencies 추가 implementation 'org.springfr..