분류 전체보기90 [Spring Data JPA] MariaDB에서의 동시성 이슈로 인한 갱신 이상 문제와 그 해결법(비관적 락, 낙관적 락) 동시성 이슈란?멀티 스레드로 동작하는 데이터베이스에서 동시에 2개 이상의 트랜잭션이 실행돼서 데이터의 정합성이 맞지 않게 되는 이슈를 의미합니다. 동시성 이슈를 확인해보자MariaDB에서 정말 동시성 이슈가 생기는지를 확인해보기 위해 Spring Boot 프로젝트 하나를 만들었습니다. 우선 이렇게 2개의 엔티티를 만들어주었는데, 각각의 용도는 이렇습니다.TestEntity: 초기에 count를 N개로 하고, 이 count를 감소시키며 갱신이상 문제가 생기는지 확인RequestRecord: 요청이 들어올 때마다 하나씩 생성해서 해당 트랜잭션이 롤백된게 아니라는 것을 증명하기 위해 사용 그리고 count 감소 API를 위한 TestController와 TestService도 만들어줬습니다. 요청이 들어오면,.. 2024. 11. 20. [Docker] Docker Container 안의 파일을 로컬로 이동하기 AWS EC2 안에서 실행되고 있는 docker container 안에 쌓이고 있는 로그 파일을 로컬로 이동시키기 도커 컨테이너에 있는 파일을 EC2로 이동하기우선 aws 펨키를 통해 EC2에 ssh로 접속해줍니다.ssh -i [펨키경로] [사용자이름]@[인스턴스의 ip 또는 퍼블릭 dns] 그리고 아래 명령어를 통해 docker container 안에 접속해줍니다.container id는 docker ps 명령어를 통해 알 수 있습니다.sudo docker exec -it [컨테이너id] sh 이렇게 접속을 했다면, 다운로드하고자 하는 파일의 경로가 어딘지 파악해줍니다저는 /log 안에 다운 받고자 하는 파일이 있습니다. exit 명령어를 통해 컨테이너에서 빠져나오고 아래 명령어로 다운 받을 수 있습니.. 2024. 11. 20. [Java / 백준 ] 12851. 숨바꼭질 문제링크: https://www.acmicpc.net/problem/12851태그: bfs 풀이 숨바꼭질 문제와 동일하지만, 다른 점이 있다면 이미 방문한 지점도 재방문이 가능하도록 해야한다는 것입니다.재방문이 가능한 기준은 이전에 방문했던 시간과 다시 방문하려고 할때의 도달 시간이 같을 때입니다.다시 방문하려고 할때, 이전에 도달했던 시간보다 크다면, K에 도달했을 때 최단 시간이 될 가능성이 없기 때문에 제외시켜줍니다. vis 배열을 선언해주고 이를 모두 최대값으로 초기화 해준 다음, vis[next] 전체 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;class Main { public stat.. 2024. 11. 20. [MySQL] SQL 프로그래머스 4단계 다 풀어보기 (2) 6문제자동차 대여 기록 별 대여 금액 구하기 포인트: 서브 쿼리, WITH 절, 대여 기간은 DATEDIFF + 1이라는거, CASE WHEN THEN END 문 너무 어렵다.. https://school.programmers.co.kr/learn/courses/30/lessons/151141 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr WITH DISCOUNT AS (SELECT H.HISTORY_ID AS HISTORY_ID, C.DAILY_FEE AS DAILY_FEE,DATEDIFF(H.END_DATE, H.START_DATE) + 1 AS DATEDIFF, C.CAR_TYPE AS CAR_T.. 2024. 11. 10. [MySQL] 프로그래머스 SQL 4단계 모두 풀어보기! (1) 6문제 우유와 요거트가 담긴 장바구니분류, 포인트: IN 절https://school.programmers.co.kr/learn/courses/30/lessons/62284 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr SELECT DISTINCT CART_IDFROM CART_PRODUCTSWHERE CART_ID IN ( -- 우유 SELECT CP1.CART_ID FROM CART_PRODUCTS AS CP1 WHERE CP1.NAME = 'Milk')AND CART_ID IN ( -- 요거트 SELECT CP1.CART_ID FROM CART_PRODUCTS AS CP1 WHERE C.. 2024. 11. 9. [MySQL] WITH, WITH RECURSIVE 구문 WITH 구문with 구문은 메모리 상에 가상의 테이블을 저장할 때 사용됩니다.RECURSIVE의 여부에 따라 재귀와 비재귀 두가지 방법으로 사용 가능합니다. WITH [RECURSIVE] TABLE명 AS ( SELECT - # 비반복문. 무조건 필수 [UNION ALL] # RECURSIVE 사용 시 필수. 다음에 이어붙어야 할 때 사용 SELECT - [WHERE -] # RECURSIVE 사용 시 필수. 정지 조건 필요할 때 사용) WITH RECURSIVE 구문WITH RECURSIVE 구문은 가상 테이블을 생성하면서 가상 테이블 자신의 값을 참조하여 값을 결정할 때 사용됩니다.WITH RECURSIVE CTE AS ( SELECT 1 AS NUM -- 초기값 설정 .. 2024. 11. 9. 이전 1 2 3 4 5 6 7 ··· 15 다음