일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코틸린인액션
- Kotlin In Action
- 싱글톤 컨테이너
- 자바 ORM 표준 JPA 프로그래밍 7장
- 20055 컨베이어 벨트 위의 로봇
- Kotlin in action 5장
- spring
- 컨베이어 벨트 위의 로봇 Python
- 객체 지향 설계와 스프링
- Kotlin in action 10장
- 13460 구슬탈출 2
- 코틀린
- 스프링 핵심 원리
- 스프링 핵심 원리 - 기본편
- 7장 고급매핑
- Python
- 백준 20055 컨베이어 벨트 위의 로봇
- 20055
- Kotlin in action 6장
- 기능개발 python
- 백준 13460 Python
- kotlin in action 정리
- Kotlin in action 3장
- 백준
- 고급매핑
- 코틀린인액션
- 스프링 컨테이너와 스프링 빈
- 스프링 핵심 원리 이해
- KotlinInAction
- Kotlin
- Today
- Total
기록하는 습관
redis에 데이터를 저장하기 위해 SortedSet에 데이터를 넣어야 한다. 이 때, 반복문을 사용할 때 list를 사용하는 것과 stream 중에 어떤 것이 더 빠를지 비교해보고자 한다. @Test @DisplayName("redis 관련 속도 측정 - for문") void redisFor() { List boardList = getS3Records("", (long) 1); RBatch rBatch = redisson.createBatch(); for (Boards board : boardList) { rBatch.getScoredSortedSet("board1").addAsync(Double.parseDouble(board.getTitle()), board.getContent()); } } @Te..
개요 RMapCache 구조로 저장되어 있는 data 조회 테스트 조회는 Redis의 scan을 사용한다. scan 명령어는 정해진 count 개수 만큼 결과를 가져오고, offset 값을 반환 하기 때문에 keys 명령어 처럼 오랜 시간을 block 하지 않는다. 테스트 종류 1) count 최적치 테스트 redis에서 iterator를 사용해 keySet을 불러올 수 있는데, 이 때 batch size(count)를 지정해 불러올 수 있다. readAllKeySet() 함수는 count 지정하지 않고 모두 불러오는 함수 테스트 방법: 100만건의 key 조회 테스트 - Collection 당 1만개의 key 존재, 100번의 collection을 for loop로 순회. collection scan ..
1) 지연 로딩 (Lazy Loading) 개념 클라이언트에게 데이터 요청이 들어올 때, Cache에 로딩한다. DB나 API에 접근하기 전, Cache에 접근하여 원하는 데이터가 존재할 경우 Cache 데이터를 활용한다. 없으면, DB나 API에 접근하여 데이터를 가져와 Cache에 올린다. 장점 요청받은 데이터만 Cache에 저장 (→ 파르토 법칙에 따라 엄청난 효율성을 불러온다.) 캐시에 존재하지 않는 데이터를 DB에서 가져오며, 후에 캐시에 저장하기 때문에 Cache Miss에 치명적이지 않다. 단점 캐시 미스가 많아질수록 딜레이가 심해진다. 캐시 미스 발생시, 캐시에 데이터를 쓴다. 이는, 캐시의 데이터가 최신의 상태를 유지 못할 수도 있음을 의미한다. 2) Write Through 개념 데이터..
batch insert insert rows 여러 개 연결해서 한 번에 입력하는 것을 Batch Insert라고 한다. Batch Insert는 하나의 트랜잭션으로 묶이게 된다. batch insert with jpa 쓰기 지연 엔티티 매니저는 트랜잭션을 커밋 하기 직전까지 데이터베이스에 엔티티를 저장하지 않고 내부 쿼리 저장소에 INSERT SQL을 모아둔다. 그리고 트랜잭션을 커밋 할 때 모아둔 쿼리를 데이터베이스에 보내는데 이것을 트랜잭션을 지원하는 쓰기 지연이라 한다. 옵션 설정 rewriteBatchedStatements=true 해당 속성이 있어야 batch insert 동작 MySQL Connector/J 8.0 Developer Guide : 6.3.13 Performance Extensi..
0. redis 자료 구조 Hashes Every hash can store up to 232 - 1 field-value pairs (more than 4 billion). → key 1개 당, 약 42억개의 field-value 저장 가능. Sets The max number of members in a set is 232 - 1 (4294967295, more than 4 billion of members per set). → key 1개 당, 약 42억개의 member 저장 가능. 참고 https://redis.io/topics/data-types#sets https://minsoolog.tistory.com/33 1. bulk Insert MySQL에서는 bulk insert를 지원하지만 Red..
##1. 개요 swagger를 사용하기 위해서 제공되는 라이브러리는 springfox와 springdoc이 있다. springfox는 2020년이 마지막 라이브러리 업데이트이며(swagger3), 그 사이에 springfox가 나왔고 springfox는 2022년까지 업데이트 중이다. springfox는 2015년까지 SpringMVC였다가 sprinfox로 이름이 바뀌었다. 2018년 업데이트까지만 해도 webflux를 지원하지 않았지만 2020년 업데이트 때 webflux를 지원하여 springdoc과 비슷해졌다. ##2. swagger 2 vs OpenAPI3 참고: https://nordicapis.com/whats-the-difference-between-swagger-and-openapi/ s..
hikaricp connection https://jaehun2841.github.io/2020/01/27/2020-01-27-hikaricp-maximum-pool-size-tuning/#GeneratedValue-strategy-x3D-GenerationType-AUTO tomcat property https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html hikaricp property https://freedeveloper.tistory.com/250 https://jamong-icetea.tistory.com/212