(Thread-safety) 동시성 문제와 shared mutable state 관리
스레드, 컨텍스트 스위칭에 대한 이해 스레드가 수행하는 더 이상 쪼개지지 않는 작업 최소 단위는 CPU instruction 이다. 즉. 어셈블리. interrupt가 들어오면, 지금 하고 있는 인스트럭션 까지 마치고 나서 컨텍스트 스위칭 하게 된다. 스레드 context switching 시, 스레드 컨텍스트(레지스터 등등)가 저장되었...
스레드, 컨텍스트 스위칭에 대한 이해 스레드가 수행하는 더 이상 쪼개지지 않는 작업 최소 단위는 CPU instruction 이다. 즉. 어셈블리. interrupt가 들어오면, 지금 하고 있는 인스트럭션 까지 마치고 나서 컨텍스트 스위칭 하게 된다. 스레드 context switching 시, 스레드 컨텍스트(레지스터 등등)가 저장되었...
Jackson ObjectMapper 변환 https://stackoverflow.com/questions/10519265/jackson-overcoming-underscores-in-favor-of-camel-case A.@ JsonProperty 애너테이션으로 각 필드에 명시해주는 방법 [Java] Jackson ObjectMapper ...
옵션, 예제 컨슈머? 파티션 리더에게 메시지 가져오기 (Consume) 다른 메시지큐 처럼 소비하면 없어지나? – X 기본값 7일 동안 저장했다가 삭제 필요하다면 이미 가져온 데이터도 다시 가져올 수 있음 여러 컨슈머 그룹에서 메시지 수신 가능 컨슈머 중요 옵션 group.id ...
카프카가 왜 필요한가? 카프카는 메시징 시스템이고 [High Throughput, Scale-out, Fault-tolerance] 하다는 장점을 가지고 있음. 우선은, 왜 카프카를 써야 하는가?에 대한 근본적인 물음이다. “카프카도 결국 데이터 저장소를 중앙에 두고 insert/select 하는 개념으로 볼 수 있는데 DB를 Queue처럼...
Oracle로 설명했지만 대부분의 DB in docker image에서 통하는 내용이다. 문제 상황 Oracle docker image를 사용해서 DB 올리고 작업하고 있는데, insert된 row들 날짜 필드 시간이 안맞는다. (UTC -> Asia/Seoul)로 timezone 설정이 필요한 상황이다. SELECT SYSDATE, CUR...
OFFSET pagination Offset 기반 장점 한 번에 페이지를 건너뛰어 n번째 페이지를 조회 하는 것이 가능하다. 1…10 방식으로 페이지 번호를 제공하고 한번에 그 페이지로 이동하는 것이 필요하다면, 이 방식을 쓸 수 밖에 없다. Offset 기반 단점 1. row 상태 변화로 인해 offset이 틀어질 가능성 존재 이...
flyway는 DB에 schema_version 테이블을 유지하면서, DB 상태를 버전으로 관리 할 수 있게끔 도와준다. (나중에 DB를 실행해도 버전에 맞게 데이터를 밀어넣어준다.) DB에 데이터가 존재하는 상태에서 flyway를 적용할 때 발생하는 문제 Caused by: org.flywaydb.core.api.FlywayException: ...
통합TC에TestContainer사용하기-dist-외부공개.pdf 2.30MB pdf 내용 요약 Spring Batch는 통합TC 수행하고 나서 자동 rollback이 불가하다. TC에 alpha DB를 사용하는 경우 아래와 같은 문제가 생긴다. Spring MVC에서는 TC에 @Transactional @Rol...
martinfowler.com/bliki/CQRS.html (번역 ) https://martinfowler.com/bliki/CommandQuerySeparation.html CRUD를 모두 하나의 도메인 모델 을 사용해 처리하는 기존 방식과 달리, CQRS는 CUD를 Command용 모델로, R을 Query용 모...
jdbcType : nullable column에 null이 들어갈 때? MyBatis는 nullable 컬럼의 parameter로 null이 넘어왔을 때, jdbcType이 명시되어 있지 않으면 TypeException을 던진다. setNull로 해당 타입에 맞는 null값(VARCHAR인 경우 “”) 을 넣어줘야 하는...