non-blocking UUID generator

UUID Table of Contents UUID 레코드 레이아웃 UUID 레코드 레이아웃 이름 길이 (byte) 길이 (hex) 길이 (bits) 내용 time_low 4 8 32 시간의 low 32비트를 부여하는 정수 time_mid 2 4 16 시간의 middle 16비트를 부여하는 정수 time_hi_and_version 2 4 16 최상위 비트에서 4비트 “version”, 그리고 시간의 high 12비트 clock_seq_hi_and_res clock_seq_low 더보기…

[Spring Batch] Implement of Aggregated Item reader

Table of Contents 들어가기에 앞서 Aggregated querying (customize) Jdbc Cursor Item Reader custom RowMapper Batch Job, Step 구현 정리 JdbcTemplate Result Set Extractor 마치며 들어가기에 앞서 SQL 을 이용하다보면 GROUP BY 절을 자주 사용하게됩니다. Batch 의 Item reader 에서도 GROUP BY 절을 사용하여 grouped item 을 가져오면 좋겠으나 집계되어 반환되는 더보기…

Spring framework test 실행시 로그 줄이기 (logback-test.xml)

Table of Contents Logback logback-test.xml Logback Spring framework 환경에서 테스트 코드 실행시, testbed profile 에 대해 별다른 logback 설정이 없다면 , 아래와 같이 debug 로그부터 info 로그까지 바리바리 올라온다.   하지만 대부분의 로그는 assertion 에 관한 로그가 아닌, springframe context load, configuration 등에 관한 로그이다. 따라서 test 에 집중할 수 더보기…

[Java] 당신이 SimpleDateFormat 을 쓰지 말아야 할 이유

Why need to not use SimpleDateFormat? Table of Contents 들어가기에 앞서 SimpleDateFormat 이란? Synchronization 근데 이게 왜? 정말로 문제가 될까? 해결 방법 들어가기에 앞서 제목이 좀 자극적이었나요? 전혀 자극적이지 않습니다. 엄밀하게는, production 에 SimpleDateFormat 을 쓰면 안되는 이유입니다. 더 엄밀하게는, multi-thread 환경에서 사용하면 안되는 이유입니다.   SimpleDateFormat 이란? Java7 에서 더보기…

[Spring] Excel Download 구현 – AbstractXlsxView 커스터마이징 하기

Table of Contents 들어가기에 앞서 AbstractXlsxView 상속 자식클래스 구현 마치며 들어가기에 앞서 관리자 혹은 유지보수 툴에서는, 화면에 보여지는 데이터를 Excel 파일 형식으로 다운받을 일이 많다. 흔히 Excel Controller (API Gateway의 일종으로 이름은 그냥 관용적인 표현인 듯)에서 요청을 받으면, 주어진 조건에 맞는 데이터를 xlsx 파일로 만들어 응답해주는 형태로 구성된다. 현재 진행하는 더보기…

[MySQL] Transaction Isolation Level

Table of Contents 들어가며 Transaction Isolation Level SERIALIZABLE 마치며 References 들어가며 JPA로 비즈니스 로직을 작성하던 중, 동시성 문제를 해결하기 위해 Transaction Isolation 에 대해 좀 더 찾아보게 되었습니다. 다양한 DBMS가 있지만 접근하기 쉬운 MySQL의 Transaction Isolation Level 에 대해 정리하고, 이를 JPA 에서 어떻게 활용할 수 있는지 알아보겠습니다.   Transaction 더보기…

[VCS] Git Branching Strategy – Git flow

Table of Contents 들어가기에 앞서 Git-Flow 메인 브랜치 보조 브랜치 마치며 참고문헌 들어가기에 앞서 학생 시절 VCS에 무덤덤했고, 단순히 master 브랜치에서 반복되는 커밋으로 체계적이지 못한 버전관리를 하고 있었습니다. 어느 순간 현업에서 일을하며 자연스럽게 Git-flow를 적용하고 있었고, 오늘은 Git Branching Strategy 중 하나인 Git flow에 대해 나누고자 합니다. 조금 더 정확하게는, 더보기…

[JPA] JPQL사용중 LAZY fetch 가 안될 때

Table of Contents 발단 분석 해결방법 추가 발단 복잡한 관계 매핑이나 Native SQL에 가까운 쿼리를 유도해야할때에, JPA Repository 만으로 해결이 힘든 경우가 있다. (보통 가능은 하나, 코드가 지저분해진다) 위와 같은 상황에서 비즈니스 로직을 작성하던 중 있던 일이다.  ORM에서 1:M의 OneToMany 관계를 매핑할때는 보통 지연 가져오기를 Fetch 전략으로 선택한다. (Lazy fetching, 더보기…

[JS] jQuery가 없는 페이지에서 jQuery사용하기

jQuery 를 사용하지 않는 페이지가 있다. 문제 될 건 없지만, 해당 페이지에서 편하게 디버깅을 하기 위해 jQuery 를 이용하려고 한다. 그럴 때 다음과 같은 방법을 이용한다.   F12등으로 개발자 도구를 연다. Console창에 다음과 같은 코드를 입력한다. (2번 라인은 얼마든지 필요한 버전의 CDN주소로 대체할 수 있다.) var jq = document.createElement(‘script’); jq.src 더보기…