일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- spring webflux
- 스프링 리액티브 프로그래밍
- 마이바티스 트랜잭션
- 스프링 웹플럭스
- ChainedTransactionManager #분산데이터베이스 #Spring Boot #MyBatis
- JSON 분리
- jar 소스보기
- batchInsert
- JobExecutionAlreadyRunningException
- nonblocking
- date_format
- 성능개선
- JSON 분할
- multi update
- 스테이지에 올리기
- git stage
- 날짜형을 문자형으로
- JSON 분해
- 스프링 배치 공식문서
- 마리아디비
- str_to_date
- 무시하기
- spring reactive programming
- org.json
- Meta Table
- JSONObject 분할
- 폐기하기
- 스프링 배치 메타 테이블
- JSONArray 분할
- 문자형을 날짜형으로
- Today
- Total
목록전체 글 (197)
ebson
JPA 개발자들이 스프링 프레임웍을 함께 사용하는 이유 중 하나가 스프링에서는 트랜잭션 관리를 해주기 때문이라고 한다. 내가 실무에서 만난 프로젝트도 스프링 프레임웍 기반의 프로젝트였고 트랜잭션 설정 파일이 있었다. 서비스 메서드를 호출한 후 트랜잭션을 처리하도록 하되 insert, update, delete 으로 시작하는 서비스 메서드에서 예외가 발생하는 경우에 트랜잭션을 롤백하도록 설정할 수 있었다. 트랜잭션 과다 생성으로 인한 성능저하 그런데 서비스 메서드를 호출할 때 적용되는 트랜잭션 설정과 어울리지 않는 일부 소스에서 성능저하를 일으키는 경우가 있었다. 서비스단에서 모아서 처리해야 할 트랜잭션 작업을 컨트롤러에서 for문을 돌면서 개별적으로 요청하고 같은 쿼리를 여러번 호출했기 때문이다. .....
외부 API ENDPOINT 으로 JSON, FORM DATA 등의 데이터셋을 POST 요청하여 성공/실패 응답을 받고 처리하는 것 만큼이나 GET 요청을 통해 데이터셋을 받아 정제하고 사용하는 것도 실무에서 만날 수 있는 흔한 요구사항이다. 그리고 GET 요청을 통해 받는 데이터셋이 JSON 포맷인 경우도 많다. 그래서 외부 API ENDPOINT으로 HTTP GET 요청을 효율적으로 실행하며 결과 JSON 데이터셋을 용도에 맞게 수집, 정제, 활용하는 작업이 필요할 수 있다. 내가 실무에서 만난 작업은 데이터베이스의 특정 테이블의 정보를 바탕으로 brightcove 에서 제공하는 비디오정보 데이터셋을 특정 기간내 조회하여 데이터베이스의 특정 테이블에 해당 비디오정보의 상태정보를 업데이트 하는 배치 잡..
아래 내용은 Udemy 알고리즘 코딩 테스트 입문부터 합격까지 (Feat. 컴공선배 알고리즘캠프) 강의 섹션 7: PART 2. 알고리즘 유형 분석 - 동적계획법 Dynamic Programming 43강 ~ 50강 내용 요약입니다. Chapter 6. 동적 계획법 문제를 쪼개서 작은 문제의 답을 구하고, 그걸로 더 큰 문제의 답을 구하는 것을 반복함 분할 정복과 비슷한 느낌임 # DP 구현 2가지 Top-down : 구현-재귀 저장방식-메모이제이션(Memoization) Bottom-up : 구현-반복문 저장방식-타뷸레이션(Tabulation) # Memoization - 한 번 구한 답들은 저장해두자 부분 문제들의 답을 한 번 구했으면 또 구하지 않도록(중복연산 방지) Cache에 저장해두고 다음부턴..
아래 내용은 Udemy 알고리즘 코딩 테스트 입문부터 합격까지 (Feat. 컴공선배 알고리즘캠프) 강의 섹션 7: PART 2. 알고리즘 유형 분석 - 이분탐색 Binary Search 37강 ~ 42강 내용 요약입니다. 1. 이진 탐색 Binary Search 1.1. 탐색 전에 반드시 정렬되어 있어야 한다. 1.2. 살펴보는 범위를 절반 씩 줄여가면서 답을 찾는다. 1.3. 정렬 O(NlogN) + 이진탐색 O(logN) => 결과적으로 O(NlogN) 1.4. 미리 정렬되어 들어오면 이진탐색만 하면 되므로 O(logN) 1.5.일차원 배열에서 탐색행위가 1회일때는 선형탐색이 유리하지만(O(N) O(NlogN)) 2. b..
실무에서 JSON 데이터를 외부 API ENDPOINT로 POST 전송하는 것은 흔한 요구사항이다. XML 포맷에 비해 JSON 포맷을 사용할 때의 이점은 최소한의 용량으로 가독성이 더 좋은 데이터를 주고 받을 수 있다는 것이다. 내 경우는 기존 XML파일로 생성하던 데이터들을 JSON 방식으로 변환해 전송하는 요구사항과 데이터베이스 등에 적재된 데이터들을 검색 페이지에 사용하기 위한 용도로 JSON 방식으로 전송하는 요구사항이 있었다. 두 요구사항 모두 외부 API ENDPOINT 으로 JSON을 POST 요청하는 요구사항이다. 첫번째 요구사항에 대해 유틸 클래스를 개발해본 경험에 대한 내용은 다른 글에서 정리하도록 하겠다. 이 글에서는 최소한의 용량으로 압축한 JSON 포맷의 데이터마저 API END..
대형 서비스에서 데이터베이스를 여러대로 분산해 효용성을 높이고 규모를 조절하는 것은 일반적인 방법이다. 그리고 데이터베이스당 트랜잭션 처리가 이루어지는 특성상 한 기능단위에서 2개 이상 데이터 소스에 접근하고자 할 때 스프링에서 별도의 작업을 취하지 않으면, 한개의 데이터 소스로만 commit 되고 다른 데이터 소스에 대한 commit이 누락될 수 있다. 즉 A 데이터 소스와 B 데이터 소스에 대한 스프링의 트랜잭션 매니저들 중 하나만 동작한다는 것이다. 이때는 스프링에서 제공하는 ChainedTransactionManager를 적용해 A, B 데이터 소스에 대한 트랜잭션이 모두 동작하도록 할 수 있다. 위 클래스의 동작 방식은 공식 문서에 따르면, 생성자의 인자로 전달받은 트랜잭션 매니저를 순서대로 처..
데이터베이스의 날짜형 데이터를 원하는 포맷의 문자열로 조회하는 것은 흔한 요구사항이다. MariaDB의 내장함수를 사용해 datetime 형 데이터를 vatchar(n) 형 데이터로 변환해 조회할 수 있다. 날짜형을 문자형으로 SELECT date_format(now() , '%Y-%m-%d %H:%i:%S') datetime_to_varchar => 2023-02-21 10:55:08 문자형을 날짜형으로 SELECT str_to_date('2022-07-13 14:49:46', '%Y-%m-%d %H:%i:%S') varchar_to_datetime , str_to_date('20220713 14:49:46', '%Y-%m-%d %H:%i:%S') varchar_to_datetime , str_to_d..
아래 내용은 Udemy 알고리즘 코딩 테스트 입문부터 합격까지 (Feat. 컴공선배 알고리즘캠프) 강의 섹션 6: PART 2. 알고리즘 유형 분석 - DFS, BFS, 백트래킹, 32강 ~ 36강 내용 요약입니다. # 예제문제(1) 길찾기 문제 # 보통 위, 아래, 왼, 오 4방향이 많다. # 체스 등 응용 문제도 있다. # 방향값을 미리 코드로 짜두고 for문으로 순회하는 기법을 익혀두자 dy = (0, 1, 0, -1) dx = (1, 0, -1, 0) chk = [[False] * 100 for _ in range(100)] N = int(input()) def is_valid_coord(y, x): return 0