본문 바로가기

전체 글

관계형 데이터베이스 (RDBMS)와 비관계형 데이터베이스 관계형 데이터베이스 (RDBMS)와 비관계형 데이터베이스는 데이터를 저장하고 관리하는 데 사용되는 두 가지 주요 유형의 데이터베이스입니다. 관계형 데이터베이스 (RDBMS): 테이블 기반 구조: 데이터를 테이블 형태로 저장하며, 각 테이블은 관련이 있는 데이터의 집합을 나타냅니다. 각 테이블은 열 (필드)과 행 (레코드)으로 구성됩니다. 정해진 스키마: 테이블의 구조는 사전에 정의된 스키마에 따라야 합니다. 이는 데이터의 일관성과 무결성을 유지하는 데 도움이 됩니다. SQL 사용: 구조화된 쿼리 언어(SQL)를 사용하여 데이터를 조작하고 관리합니다. SQL은 데이터 검색, 삽입, 갱신 및 삭제와 같은 다양한 작업을 수행할 수 있는 강력한 언어입니다. 관계: 여러 테이블 간에 관계를 설정할 수 있습니다. .. 더보기
n+1 문제 n+1 문제 요약 1:N, N:N 연관관계가 설정된 엔티티 조회할 경우 해당 엔티티와 관련된 컬렉션을 사용할때 n번의 추가 쿼리가 발생하는 문제, 이 때문에 데이터베이스에 대량의 쿼리가 실행되어 성능 문제가 발생할 수 있음 상세설명 N+1 문제는 데이터베이스 쿼리 성능과 관련된 문제 중 하나로, 주로 ORM(Object-Relational Mapping)을 사용하는 경우에 발생합니다. N+1 문제는 다음과 같은 상황에서 발생합니다. 하나의 쿼리로 엔티티를 가져올 때 (1번 쿼리) 이후 해당 엔티티와 관련된 컬렉션(OneToMany 또는 ManyToMany 등)을 사용할 때 (N번 추가 쿼리) 이때 총 실행되는 쿼리의 수는 N+1이 되므로 "N+1 문제"라고 부릅니다. 간단한 예를 통해 설명하겠습니다. 예.. 더보기
부트캠프 main project "My-Buddy" -S3 이미지 업로드, 삭제 시간이 많이 지났지만 그 때 당시에 고민하며 해결해보았던 S3 이미지 업로드 삭제 기능 구현에 대한 블로깅을 남겨본다. S3와 연동하는 방식은 MultipartFile 업로드 방식을 사용하였으며 https://www.blog.ecsimsw.com/entry/AWS-%EC%82%AC%EC%9A%A9%EA%B8%B0-S3-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0 https://devlog-wjdrbs96.tistory.com/323 https://galid1.tistory.com/590 위 블로그들을 참조하였다. 이미지 확장자 제한 기능과 이미지 업로드, 삭제 기능을 구현하였다. 확장자, 이미지 크기 제한 기능은 다른 방법들로도 가능했던 것 같다. @Slf4j @RequiredArg.. 더보기
[프로그래머스] #43162 Python 네트워크 https://school.programmers.co.kr/learn/courses/30/lessons/43162 내 풀이 나는 dfs 재귀로 풀었는데 #dfs def dfs(v, visited, computers, li): if not visited[v]: visited[v] = True for i in range(len(computers)): if computers[v][i] == 1: li[-1].append(i) dfs(i, visited, computers, li) def solution(n, computers): visited = [False for i in range(n)] li = [] for l in range(n): if not visited[l]: li.append([]) dfs(l,.. 더보기
[프로그래머스] #43165 Python 타겟넘버 https://school.programmers.co.kr/learn/courses/30/lessons/43165 내 코드 def solution(numbers, target): answer = recursion(numbers, -1, 0, target) return answer def recursion(numbers, idx, result, target): idx += 1 if idx < len(numbers): cnt1 = recursion(numbers, idx, result + numbers[idx], target) cnt2 = recursion(numbers, idx, result - numbers[idx], target) return cnt1 + cnt2 else: if result == ta.. 더보기
mapstruct로 구현된 mapperImpl에서 변수에 의도치 않은 null이 할당된 문제 자꾸 데이터에 null 이 허용안되는데 null 들어온다고 error가 나길래 무슨 이유인가 mapper 구현체 보니 그냥 저 위 null도 할당 된거 없이 로직이 빈 메서드고 오버라이드 되어있었다. 알고보니 변수명을 dto랑 entity랑 다르게 썼더라.. 왜그랬니 이거 해결하고 데이터 제대로 들어가겠거니 했는데 또 안되서 보니 위 상황처럼 의도치 않게 변수에 null이 할당되는 이슈가 있었다. 이것 때문에 mapstruct 버젼 이슈인가 무슨 이슈인가 한참 뒤지면서 챗지피티한테 물어보고 클린하고 재빌드하고 반복하면서 해봤는데 안되길래 아예 직접 구글링 해서 찾아보니 https://supakon-k.medium.com/how-to-fix-mapstruct-in-spring-boot-when-return.. 더보기
[소프티어] #624 Python 전광판 https://softeer.ai/practice/info.do?idx=1&eid=624 처음에 스터디원이 껏다 키는 전구 자체 위치로 이진수 만들어서 하는 아이디어 안줬으면 못풀었다ㅠ 항상 고맙고 고마운 나의 말랑이 스터디원.. 0과 빈 자리수 전구 세팅 다르단것도 풀면서 결과가 제대로 안나와서 알아채고 빈자리수 표시인 x를 딕셔너리에 추가로 넣어줬다. #https://softeer.ai/practice/info.do?idx=1&eid=624 import sys input = sys.stdin.readline n = int(input()) li = [] for _ in range(n): temp1, temp2 = map(str, input().split()) li.append([temp1, temp2].. 더보기
[프로그래머스] #12945 Python 피보나치 수 https://school.programmers.co.kr/learn/courses/30/lessons/12945# 당연히 재귀 때리면 되겠거니 했는데 파이썬은 다르다고 한다 시간초과 뜨길래 질문하기 보니 재귀가 더 오래걸려서 포문을 하라고 해서 포문으로 돌렸는데 왜.. 풀이 +5점이나 되지..? 드문 풀이 일리가 없는데..!! 그래도 간만에 간단하게 풀려서 좋당.. 내 풀이 def solution(n): temp1 = 0 temp2 = 1 sum = 1 for i in range(3, n + 1): temp1 = temp2 temp2 = sum sum = temp1 + temp2 return sum % 1234567 타풀이 적용 와 그와중에 또 깔끔하게도 풀었다 타풀이.. sum 없이 가면 이렇게 ra.. 더보기