전체 글

Spring Boot와 S3 연결하기
현재 개발중인 서비스에서 이미지를 업로드하는 기능을 구현하기로 했고, 업로드된 파일은 AWS의 S3 버킷에 업로드하기로 결정했다. 아래 단계로 진행한다. 1. S3의 버킷을 생성하고 정책을 설정한 후 2. S3 버킷에 접근할 수 있는 IAM 사용자를 생성하고, 3. Spring Boot에서 S3 관련 의존성과 사용자 정보(access key, secret key)를 추가한다. 4. 업로드, 수정, 삭제하는 기능을 구현한다. 이번 글에서는 3번까지 진행하는 과정을 적어보려한다. 1. s3 버킷 생성 이 단계에서 주의하여 체크할 것은 세가지이다. 1. ACL (액세스 제어 목록) 을 활성화시켜준다. 2. 퍼블릭 엑세스 차단을 해제한다. 3. 권한 > 정책 설정 버킷을 생성하고 나면, 버킷의 권한에 들어가서 ..
![[데이터 무결성 위반] nested exception is org.springframework.dao.DataIntegrityViolationException](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FLtKEW%2FbtrrQzJQEXS%2FAAAAAAAAAAAAAAAAAAAAAIXNB8jx4loGl8cdkkXUcRWe6Ja3BtzwI_VJbnnY3xQ9%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DJG8dveD9lNwdNx59NjX19mo6ZmU%253D)
[데이터 무결성 위반] nested exception is org.springframework.dao.DataIntegrityViolationException
발생 에러 Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.DataException: could not execute statement DataIntegrityViolationException, 즉 데이터 무결성 (Data Integrity) 위반 문제(Violation Exception)가 발생했다. 에러 원인 Review id를 외래키로 참조하고 있는 Comment 테이블이 있기 때문에 Review 데이터를 제거하려할..
![[JAVA] 프로그래머스 - 전화번호 목록 LV2](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fba33HC%2FbtrrOcZ9oy2%2FAAAAAAAAAAAAAAAAAAAAAAulyFXdX5AZDSvgojtWLDVcbRNOHoUH0P3yWI46cOcF%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DswENeJEZnnyrhXtrcd53ZBjG7EY%253D)
[JAVA] 프로그래머스 - 전화번호 목록 LV2
문제 이해 및 제한 사항 프로그래머스의 해시 문제, 전화번호 목록 LV2 https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은 전화번호가 중복해서 들어있지 않습니다. 매개변수로 주어지는 전화번호 목록에서 어떤 번호가 다른 번호의 접두사인 경우가 1개라도 있으면 false를, 그렇지 않다면 t..
![[JAVA] 프로그래머스 - 완주하지 못한 선수 LV1](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb47CeV%2FbtrrpVflEfb%2FAAAAAAAAAAAAAAAAAAAAAI-jMH6cFEr6r4naT4hkLhJVyXg-Cg3rTmiqnP5wudXl%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DF35%252FSeW8kG8nqLgh1BZfqEega1Y%253D)
[JAVA] 프로그래머스 - 완주하지 못한 선수 LV1
문제 이해 및 제한 사항 프로그래머스의 해시 문제, 완주하지 못한 선수 LV1 https://programmers.co.kr/learn/courses/30/lessons/42576?language=java 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 ..
![[Concept] 인접 행렬과 인접 리스트](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbU2Sli%2Fbtrp7GDS72H%2FAAAAAAAAAAAAAAAAAAAAABamwXthzwu9QIDfwNooyZ7e1iTPL4z74T9HsuaODGXs%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DDigLdN2ERsiy11VXfEkuRcHeNA8%253D)
[Concept] 인접 행렬과 인접 리스트
그래프 그래프란 요소들이 서로 복잡하게 연결되어 있는 관계를 표현하는 자료구조입니다. 그래프에서 쓰이는 용어는 정점 (vertex) : 노드라고도 하며 데이터가 저장되는 원소 간선 (edge) : 링크라고도 하며 정점 간의 관계 그외에도 인접 정점, 차수, 경로 등의 용어가 있습니다. 그래프 구현 그래프를 구현하는 방법은 배열(Array)을 사용하는 인접 행렬, 연결 리스트를 사용하는 인접 리스트가 있습니다. 인접 행렬 그래프의 정점을 2차원 배열로 만들어서, 행과 열은 정점을 의미하며 각각의 원소들은 정점 간의 간선을 나타냅니다. 장점 2차원 배열에 모든 장점들의 간선 정보가 있기 때문에 두 정점을 연결하는 간선을 조회 시 O(1)의 시간복잡도로 가능합니다. 구현이 비교적 간단합니다. 단점 간선 수와 ..

Exception과 Exception handler (+테스트 코드)
에러는 3가지 종류가 있습니다. 컴파일 에러: 컴파일 시에 컴파일러가 체크하는 예외로, 문법 문제, 소스코드 문제 등으로 발생합니다. (보통 IDE에서 빨간 줄로 알려줍니다.) 런타임 에러 : 컴파일은 성공했지만 프로그램 실행 중, 발생하는 문제입니다. 논리적 에러 : 컴파일도 되고, 실행도 되었지만 의도한 동작이 아닌 다른 동작을 하는 경우입니다. 만약 게임에서 목숨을 다썼는데 죽지않는 경우를 논리적 에러라고 할 수 있습니다. 런타임 에러는 다시 에러(Error)와 예외(Exception)로 나뉘어집니다. 에러는 OutOfMemoryError, StackOverFlowError 와 같은 발생 시 복구할 수 없는 심각한 문제를 의미합니다. 예외는 발생하더라도 수습할 수 있는 비교적 덜 심각한 문제를 말합..