본문 바로가기

분류 전체보기158

Springboot 어노테이션을 알아보자 - Transactional 트랜잭션이란?트랜잭션은 데이터베이스에서 하나의 작업 단위를 의미합니다. 여러 데이터 조작 작업이 하나의 논리적인 작업으로 묶여 원자성(Atomicity)을 갖습니다. 즉, 모든 작업이 성공적으로 완료되거나, 실패 시 모두 롤백됩니다.ACID 원칙트랜잭션은 다음과 같은 ACID 원칙을 따릅니다:원자성 (Atomicity): 트랜잭션 내의 모든 작업이 모두 적용되거나 전혀 적용되지 않아야 합니다.일관성 (Consistency): 트랜잭션 전후에 데이터베이스는 일관된 상태를 유지해야 합니다.격리성 (Isolation): 동시에 실행되는 트랜잭션들이 서로 간섭하지 않아야 합니다.지속성 (Durability): 트랜잭션이 커밋되면 그 결과는 영구적으로 저장되어야 합니다. 언제 @Transactional을 사용해야.. 2024. 11. 13.
HikariCP? maximum-pool-size? minimum-idle? 개인 프로젝트를 진행하거나 테스트할 때는 몰랐지만, 이번 교내 프로젝트를 진행하면서 DB connection waiting 문제에 직면했다.개발을 완료하고 유저테스트를 준비해 진행했다. 교내 같은 과 지인들에게 사용법과 유의사항 등과 함께 서비스를 내놓았다. 처음 사용자가 내가 만든 서비스에 들어와 테스트한다는 게 얼마나 떨리고 신나는 일인지 아마 직접 해본 사람들은 알 것이다. 순탄하게 진행되던 중 10명 정도의 사용자가 들어왔을 때 서버가 엄청나게 느려지더니 접속이 안되기 시작했다. '무슨 일이지?'라는 생각에 급하게 서버 로그를 확인했는데, HikariPool-1 - Connection is not available라는 에러 메시지를 확인했다. 처음 보는 에러 메시지에 당황했지만 빠르게 에러를 찾아.. 2024. 11. 9.
의상 (파이썬) https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krdictionary를 이용해서 푸는 문제 def solution(clothes): answer = 1 dict = {} clen = len(clothes) for i in range(clen): if clothes[i][1] in dict: dict[clothes[i][1]] += 1 else: dict[clothes.. 2024. 10. 15.
연속 부분 수열 합의 개수 (파이썬) https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 첫 접근 방법## 시간초과 코드def solution(elements): lst = [] elen = len(elements) elements += elements for i in range(elen): for j in range(elen): tmp = 0 for k in range(i, j + i + 1): .. 2024. 10. 15.
Docker Compose란? 여러 개의 컨테이너를 관리해야 할 때 유용한 Docker compose에 대해서 알아보자. docker-compose.yml 파일을 살펴보자. 아래 파일 설정은 dind, springboot 그리고 nginx를 사용하고 있다.  이 docker-compose.yml 파일은 3개의 주요 서비스(dind, springboot, nginx)를 포함하여 서로 통신할 수 있도록 app-network라는 네트워크로 연결한 구조입니다. 이 docker-compose.yml 파일은 Docker-in-Docker, Spring Boot 애플리케이션, Nginx 웹 서버를 설정합니다. dind는 도커 엔진 역할을 하며, springboot는 스프링 부트 백엔드를 실행하고, nginx는 이 백엔드로부터 요청을 처리하는 프런.. 2024. 10. 9.
백준 2108 통계학 (파이썬) https://www.acmicpc.net/problem/2108 문제핵심1. 산술평균, 중앙값 최빈값, 범위 총 4가지 값을 구해야 한다.2. 최빈값을 구하는 방법을 잘 고려할 것(저는 dict를 사용했습니다) 풀이n = int(input())nums = []for i in range(n): nums.append(int(input()))#1.meanmean = round(sum(nums)/n)print(mean)#2.mediannums.sort()median = nums[n//2]print(median)#3.modedic = dict()for i in nums: if i in dic: dic[i] += 1 else: dic[i] = 1maxinum_mode_va.. 2024. 9. 23.
프로그래머스 귤 고르기 (파이썬) https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  접근법 #1 ### 풀이 1 dict 사용, ## 핵심 key ## a = dict(sorted(a.items(), key = lambda x:x[1], reverse = True))def solution(k, tangerine): answer = 0 dic = {} for i in tangerine: if i in dic: dic[i] += 1 .. 2024. 9. 4.
백준 2470 두 용액 (파이썬) https://www.acmicpc.net/problem/2470 문제핵심1. 음수 양수 상관없이 가까운 값을 찾는 것이기 때문에 절댓값을 이용해야겠다는 아이디어2. 정렬 후 왼쪽 끝과 오른쪽 끝을 정해두고 while left  팁1. 2e+9는 2 x 10^9를 나타낸다2. answer = [1, 2]와 같이 list로 되어있는 경우 *answer처럼 앞에 *(Asterisk)를 붙이면 괄호 안 내용은 1, 2로 출력된다. 풀이n = int(input())water = list(map(int, input().split()))water.sort() left = 0right = n - 1min_sum = 2e+9+1answer = [0, 0]while left 2024. 8. 28.
백준 1931 회의실 배정 (파이썬) https://www.acmicpc.net/problem/1931 문제핵심 아래 두 조건을 모두 만족시키는 정렬이 필요하다.1. 끝나는 시간으로 오름차순 (끝나는 시간이 짧을수록 회의를 많이 할 수 있기 때문에)2. 시작하는 시간으로 오름차순 코드n = int(input())meet = []for _ in range(n): start, end = map(int, input().split()) meet.append((start, end))meet.sort(key=lambda x: (x[1], x[0]))time = 0count = 0for i in meet: if time  어제 https://zhocoding.tistory.com/161 여기서 사용했던 lambda를 이용한 정렬을 해주면.. 2024. 8. 27.