[JAVA] 최장 증가 부분 수열 (LIS, Longest Increasing Subsequence)
2023. 8. 20. 16:25
JAVA/알고리즘 개념 정리
LIS 란? Longest Increasing Subsequence ex) 수열 A = {10, 20, 10, 30, 20, 50}가 주어지고 가장 긴 증가하는 부분 수열을 구하는 문제 증가하는 부분 수열을 모두 구해보면 아래와 같음 {10}, {20}, {30}, {50} {10, 20}, {10, 30}, {20, 30}, {20, 50}, {30, 50} {10, 20, 30}, {10, 20, 50}, {10, 30, 50}, {20, 30, 50} {10, 20, 30, 50} 이 중 가장 길이가 긴 부분 수열은 {10, 20, 30, 50} 해결 방법 1 - O(n^2) 가장 쉬운 해결 방법은 일반적인 dp를 사용하는 방법 dp[i] = dp[i - 1]과 arr[i]를 포함시켜 만들 수 있는..
[RDS MySQL] Too many connections 해결 방법
2023. 5. 3. 14:11
Trouble Shooting
문제 상황 AWS RDS (MySQL) 사용 중 DB에 접속이 안 됨 Spring Boot 프로젝트 실행 시 ERROR 1040 (08004): Too many connections 에러 발생 원인 다른 프로젝트에서도 해당 DB를 사용하는데, Connection이 중지되지 않고 계속 유지되서 사용할 수 있는 Connection이 없는 상황 해결 방법 RDS DB의 최대 Connections 수 (max_connections)를 늘려주고, 일정 시간이 지나면 Connection을 중지 시키도록 connect_timeout을 설정하여 해결함 AWS RDS console 접속 좌측 탭의 파라미터 그룹 클릭 만약 파라미터 그룹이 하나 있으면 파라미터 그룹 생성 (default는 수정할 수 없기 때문) 아래와 같..
[Linux] Linux(EC2) 용량 부족 문제 해결 방법
2023. 4. 19. 15:54
기타
문제 상황 프로젝트를 AWS EC2(Linux 환경)에 배포하는 과정에 용량이 부족하다는 메세지가 출력됨 No space left on device 장치에 남은 공간이 없어 작업을 진행할 수 없는 상황 원인 장치에 남은 공간이 없어서 발생하는 에러 프로젝트의 용량이 크지도 않고, 불필요한 컨테이너와 이미지들도 모두 삭제하고, 로컬에 파일을 저장하는 등의 로직도 없는데도 공간이 부족해짐 원인은 Docker를 사용하면서 컨테이너들을 다루게 되는데, 이 때 사용하지 않는 불필요한 리소스들이 생성되었기 때문이라 함 해결 방법 아래의 명령어를 통해 불필요한 리소스들을 제거할 수 있음 docker system prune -a -f 다른 방법으로는 EC2 인스턴스의 용량을 늘리면 되긴 함 추가 - 남은 용량 확인 방..
[Spring Boot] 프로젝트 TimeZone 설정
2023. 4. 19. 15:32
Trouble Shooting
문제 상황 Spring Boot 프로젝트를 로컬에서 실행했을 때는 DB에 데이터를 삽입할 때, createdAt이 제대로 삽입됨 하지만 EC2로 배포 후 데이터를 삽입하면 한국 시간으로 들어가지 않고, 시간이 UTC로 들어가는 문제가 발생함 (한국 시간 -9) 원인 EC2 인스턴스 자체의 TimeZone을 바꿔봐도 해당 문제는 여전히 발생 프로젝트 자체의 TimeZone이 문제라고 생각함 해결 방법 아래의 코드를 통해 프로젝트의 TimeZone을 서울로 맞춰주면 됨 이 코드는 프로젝트의 main 클래스나 @Component로 등록한 클래스 내부에 적어줘야 실행됨 @PostConstruct는 프로젝트가 처음 실행될 때, 한 번만 실행 시켜주는 어노테이션 @PostConstruct public void se..
[Spring Boot] AWS S3를 이용한 파일 업로드
2023. 4. 18. 17:59
Spring Boot/문법 정리
AWS S3 란? AWS Simple Storage Service의 줄임말로 파일 서버의 역할을 하는 서비스 프로젝트 개발 중 파일을 저장하고 불러오는 작업이 필요한 경우에 프로젝트 내부 폴더에 저장할 수 있지만, AWS S3를 사용하여 파일을 관리할 수도 있음 AWS S3의 장점 무제한 용량 (하나의 파일에 대한 용량 제한은 있지만, 전체 용량은 무제한) 파일 저장에 최적화 (개발자가 따로 용량을 추가하거나 성능을 높이는 작업을 하지 않아도 됨) 99.999%라는 높은 내구도 (파일이 유실될 가능성이 낮음) 이 외에도 저렴한 비용, 높은 객체 가용성, 뛰어난 보안성 등의 장점이 있음 AWS S3 생성 객체(Object) : 파일과 파일정보로 구성된 저장단위로 파일이라 생각하면 됨 버킷(Bucket) :..
[Spring Boot] 게시판 만들기 6 - 화면 제작
2023. 4. 17. 16:20
Spring Boot/프로젝트
HTML, Thymeleaf, BootStrap, JavaScript, JQuery를 사용하여 화면 제작 디자인이나 화면에 대해 자세히는 정리하지는 않고 핵심적인 부분만 설명 화면 관련 코드에 전체 코드가 있으니 참고 Thyemleaf와 관련된 것은 [Spring Boot] Thymeleaf 기능 정리, [Spring Boot] Thymeleaf - form 관련 기능 정리 참고 printMessage.html 이 페이지는 내용을 출력하기 위한 페이지가 아닌 javascript를 통해 메세지를 출력해주고, 바로 다음 페이지로 이동시켜주는 페이지 header.html 화면 상단의 nav-bar와 Bootstrap, css 등을 import 해주는 페이지 모든 페이지에 같은 nav-bar가 들어가기 때문에 ..
[Spring Boot] 게시판 만들기 5 - 댓글, 좋아요, 파일 업로드 관련 기능
2023. 4. 17. 16:10
Spring Boot/프로젝트
댓글 관련 코드 CommentRepository @Repository public interface CommentRepository extends JpaRepository { List findAllByBoardId(Long boardId); List findAllByUserLoginId(String loginId); } CommentService 댓글에 관련된 CRUD @Service @RequiredArgsConstructor public class CommentService { private final CommentRepository commentRepository; private final BoardRepository boardRepository; private final UserRepository..