목록분류 전체보기 (67)
공부가 싫은 개발자
다음으로 이어서 S3와 Spring boot 연동하기Spring boot 3.5.7 기준 1. Acceess key와 Secret key 발급받기1) IAM 대시보드로 이동 2) 좌측의 액섹스 관리 > 사용자 > 사용자 생성 클릭 3) 사용자 세부 정보 지정사용자 이름 입력 후 다음 클릭4) 권한 설정 직접 정책 연결 선택 5) 권한 정책 설정 아래와 같이 하고 사용자 생성AmazonS3FullAccess 검색 후 체크 권한 경계 설정, 검토 및 생성 - 건너뛰기6) 방금 생성한 사용자 클릭 후 보안 자격 증명 클릭하단에 액세스 키 만들기 클릭 7) 액세스 키 사용 사례 고르기로컬 코드 또는 AWS 외부에서 실행되는 애플리케이션을 누르면 됨본인 상황에 맞게 선택하기태그는 선택사항이므로 건너뛰기 8) 액세..
아 귀찮다. 누가 대신 해줬으면 좋겠다.2026년 3월 기준, 귀찮아서 미루고 미뤘는데 안 하면 안드로메다로 갈 것 같..애 1. AWS 콘솔에서 S3 서비스 접속 → [버킷 만들기] 클릭버킷 이름: 고유한 이름 적기, 비공개로 해야 함객체 소유권: ACL 비활성화(구현은 귀찮지만 보안상 비활성화로 설정) 2. 퍼블릭 액세스 설정외부에 공개 > 체크 해제외부에 비공개 > 체크 3. 버킷 버전 관리비활성화 선택 (**중요**)활성화하면 과금이 된다고 함태그는 선택 사항이므로 넘어감 4. 기본 암호화파일 암복화 설정인데 굳이 필요 없다고 한다.필요한 경우에만 설정하면 될 듯 하다. 5. 고급 설정 가만히 두기6. 버킷 만들기 클릭 ================Public Access 설정하기=========..
1. Gmail SMTP - 사용할 구글 계정 2차 인증 필수 - 앱 비밀번호 > 비밀번호 발급2. build.gradle 설정 이메일 의존성 추가implementation 'org.springframework.boot:spring-boot-starter-mail' 3. application.ymlspring: mail: host: smtp.gmail.com port: 587 username: 사용할 Gmail 계정 password: 앱 비밀버호 16자리 properties: mail: smtp: auth: true starttls: enable: true 4. MailSender 인터페이스 ..
MAC, 인텔리제이, Gradle 기준!1️⃣ 인텔리제이에서 터미널을 켜고, 프로젝트의 루트로 경로 이동2️⃣ Spring Boot JAR 만들기 - 권한이 없는 경우: chmod +x gradlew - 있는 경우: ./gradlew clean build성공하면 다음과 같이 파일 생성됨build/libs/xxx.jar 3️⃣ Dockerfile 작성 (⭐ 핵심) - 프로젝트 루트에 Dockerfile 생성FROM eclipse-temurin:21-jdk-alpineWORKDIR /appARG JAR_FILE=build/libs/*.jarCOPY ${JAR_FILE} app.jarEXPOSE 8080ENTRYPOINT ["java", "-jar", "app.jar"]왜 이 이미지?eclipse-tem..
2025년 11월, PostgreSQL 기준, EC2 연결 안 함들어가기 전 EC2에서 보안 그룹을 설장하고 들어가야 함1. EC2 대시보드에서 보안 그룹 선택 2. 보안 그룹 생성 클릭 3. 기본 세부 정보보안 그룹 이름: 본인이 원하는 이름설명: 아무거나 4. 인바운드 규칙 및 아웃바운드 규칙PostgreSQL을 위한 보안 그룹이므로 포트 범위를 5432로 지정소스는 어디서든 접근할 수 있도록 하던가, 본인 IP만 허용하던가 설정아웃바운드는 자유롭게 본인이 원하는 대로 5. 하단에 보안 그룹 생성 클릭 6. 검색창에 RDS 검색 후 대시보드에서 데이터베이스 생성 클릭 7. 데이터베이스 생성 방식 선택: 표준 생성 8. 엔진 옵션: 기본 설정 값 9. 템플릿: 프리티어 (무료 계정) 10. 가용성 및 ..
🧵 문자열 처리✅ StringBuilder문자열을 반복해서 더할 때 + 대신 사용 → 성능 훨씬 좋음 (String은 매번 새 객체 생성)StringBuilder sb = new StringBuilder();sb.append("Hello");sb.append("World");sb.toString(); // "HelloWorld"sb.reverse(); // 문자열 뒤집기sb.deleteCharAt(i); // i번째 문자 삭제메서드설명append(str)문자열 추가insert(index, str)특정 위치에 삽입delete(start, end)부분 삭제reverse()문자열 뒤집기toString()최종 문자열 반환 ✅ StringString s = "a,b,c";String[] arr = s.spli..
✅ 기본 개념자동 정렬되는 큐기본은 최솟값 우선 (오름차순)poll() 시 가장 작은 값부터 꺼냄내부적으로 힙(heap) 구조 사용1. 선언과 초기화PriorityQueue pq = new PriorityQueue(); // 오름차순 (최솟값 우선)PriorityQueue maxPq = new PriorityQueue(Collections.reverseOrder()); // 내림차순 (최댓값 우선) 2. 요소 추가pq.offer(5);pq.offer(2);pq.offer(8); 3. 요소 제거 + 반환int val = pq.poll(); // 가장 작은 값 꺼냄 4. 요소 조회int peek = pq.peek(); // 가장 작은 값 확인 (제거 X) 5. 크기 확인pq.size(); 6. 전체 순회순회..
✅ 기본 개념후입선출 (LIFO) 구조DFS, 괄호 검사, 백트래킹, 재귀 시뮬레이션에 자주 사용Stack 클래스 또는 Deque로 구현 가능 1. 선언과 초기화Stack stack = new Stack(); 2. 요소 추가stack.push(10); 3. 요소 제거stack.pop(); // 제거 + 반환 4. 요소 조회stack.peek(); // 맨 위 요소 확인 (제거 X) 5. 전체 순회for (int num : stack) { System.out.println(num);} 6. 크기 확인stack.size(); 7. 코딩테스트에서 자주 쓰이는 상황상황활용 예시DFS 탐색stack.push(node)괄호 검사push / pop 으로 짝 맞추기백트래킹상태 저장 후 복원 💡Deque로 대체하..
✅ 기본 개념선입선출 (FIFO) 구조BFS, 시뮬레이션, 순서 처리에 자주 사용대표 구현체: LinkedList, ArrayDeque 1. 선언과 초기화Queue queue = new LinkedList(); 2. 요소 추가queue.offer(10); // 추가 (null 반환 가능)queue.add(20); // 추가 (예외 발생 가능) 3. 요소 제거queue.poll(); // 제거 + 반환 (비어있으면 null)queue.remove(); // 제거 + 반환 (비어있으면 예외) 4. 요소 조회queue.peek(); // 맨 앞 요소 확인 (제거 X) 5. 전체 순회for (int num : queue) { System.out.println(num);} 6. 크기 확인queue.siz..
✅ 기본 개념Set은 중복을 허용하지 않는 자료구조순서가 없고, 빠른 검색이 가능대표 구현체: HashSet, TreeSet, LinkedHashSet 1. 선언과 초기화Set set = new HashSet(); 2. 요소 추가set.add(10);set.add(10); // 중복 → 무시됨 3. 요소 삭제set.remove(10); 4. 존재 여부 확인set.contains(10); // true/false 5. 전체 순회for (int num : set) { System.out.println(num);} 6. 크기 확인set.size(); 7. 초기화set.clear(); 8. 리스트 ↔ 셋 변환List list = Arrays.asList(1, 2, 2, 3);Set set = new Has..
