728x90

Programming 281

Spring - Spring <-> AWS S3 첨부 파일 업로드, 삭제 (첨부 파일 업로드 수정 및 삭제)

1. S3 생성 AWS S3를 통해 bucket을 생성한다. - bucket : 다수의 객체를 관리하는 컨테이너로 파일시스템이라고 보면 된다. 체크를 하지 않으면 public으로 해당 버킷에 접근 할 수 있다. public으로 접근 가능하다는 것은 외부에서 해당 버킷에 접근이 가능하다는 뜻이다. 2. 사용자 생성 (IAM) AWS IAM을 통해 사용자를 생성한다. 사용자의 권한 정책으로 AmazonS3FullAccess 권한을 부여해준다. 3. 액세스 키 생성 새롭게 생성한 사용자를 선택하여 액세스 키를 생성해준다. 생성한 액세스키, 비밀 액세스 키는 따로 확인 가능하도록 보관해놓는다. 4. 스프링 연동 4.1. build.gradle 의존성 추가 implementation 'org.springframe..

Programming/Spring 2023.12.12

Spring - REST API 간단한 연습 (RestController 사용)

지금까지 프로젝트를 진행하면서 REST API에 대한 반환값으로 String 즉, View로 전달하는 방식을 많이 사용하였다. @RestController를 사용하는 방법 또한 크게 다른점은 없지만 많이 사용해보지 않았기 때문에 익숙함을 위해 연습하기 위한 작은 프로젝트다. - ERD - RestaurantApi.java @RequiredArgsConstructor @RestController public class RestaurantApi { private final RestaurantService restaurantService; @GetMapping("/restaurants") public List getRestaurants() { return restaurantService.getAllRestau..

Programming/Spring 2023.11.27

Spring Test Code 관련 - (MockMvc 등... 여러가지)

- MockMvc - MockMvc 1. Spring MVC 컨트롤러를 테스트하기 위해 사용된다. 이를 통해 웹 애플리케이션의 HTTP 요청과 응답을 시뮬레이션하고 테스트하는 것이 가능하다. - @AutoConfigureMockMvc 1. Mock 객체를 자동 주입하기 위해 사용한다. @SpringBootTest @AutoConfigureMockMvc public class MyControllerTest { @Autowired private MockMvc mockMvc; // 테스트 코드 작성 } 2. 위와 같이 MockMvc를 주입 받아 테스트 코드를 작성 할 수 있다. - ObjectMapper 1. JSON 데이터와 Java 객체 간의 변환을 수행하는 데 사용되는 라이브러리다. @Test @Disp..

Programming/Spring 2023.11.19

Spring - 페이징, Querydsl RE

- Page - Pageable - PageRequest - 페이징 구성 예시 - Querydsl - JpaQueryFactory - Querydsl 추가 및 예시 - 페이징, Querydsl 적용 - Page - Page는 페이징된 데이터와 페이징 정보를 포함하는 객체이다. 쿼리 결과의 일부 데이터를 나타내며, 페이지 정보, 총 항목 수, 페이지 번호, 데이터 목록 등을 포함한다. getContent() 현재 페이지의 데이터 목록을 반환한다. getTotalPages() 총 페이지 수를 반환한다. getTotalElements() 전체 항목 수를 반환한다. getNumber() 현재 페이지 번호를 반환한다. getSize() 페이지 크기 (한 페이지당 항목 수)를 반환한다. - Pageable - Pa..

Programming/Spring 2023.11.14

CodingTest - Recursive, Tree, Graph(DFS, BFS 기초)

1. 재귀 함수 2. DFS 깊이 우선 탐색 2.1. 스텍 프레임 3. BFS 레벨, 너비 우선 탐색 - 재귀 함수 - 재귀 함수는 자기 자신을 호출하는 함수를 말한다. - 기본적으로 if else를 통해 특정 조건에 자기 자신을 호출하여 원하는 값을 도출해낸다. - 재귀 함수를 이용한 팩토리얼 import java.util.Scanner; class Main { public int DFS(int v) { if (v == 1) { return 1; } else { return v * DFS(v - 1); } } public static void main(String[] args) { Main main = new Main(); Scanner scanner = new Scanner(System.in); in..

CodingTest - Sorting and Searching(정렬, 이분 검색과 결정 알고리즘)

1. 선택 정렬 2. 버블 정렬 3. 삽입 정렬 4. 삽입 정렬 예제 5. 이분 검색, 결정 알고리즘 6. 이분 검색, 결정 알고리즘 예제 - 선택 정렬 1. 선택 정렬은 정렬 알고리즘 중 하나이다. 2. n(n-1)/2번, 즉 O(n^2)의 시간 복잡도를 가지므로 대규모 데이터에 대해 효율적이지 않다. - 버블 정렬 1. 버블 정렬은 정렬 알고리즘 중 하나이다. 2. 시간 복잡도가 O(n^2)의 시간 복잡도를 가지므로 선택 정렬과 마찬가지로 대규모 데이터에 대해 효율적이지 않다. for(int i=0; itmp) arr[j+1]=arr[j]; else break; } arr[j+1]=tmp; } return arr; 1. 배열의 두번째 인덱스를 기준으로 잡는다. 2. 기준 인덱스보다 작은 인덱스 중 기..

CodingTest - HashMap, TreeSet (해쉬, 정렬지원 Set)

4.1 map.put(x, map.getOrDefault(x, 0)+1); - map.get()하면 해당 key의 value 값을 가져오는데 getOrDefault를 하면 해당 key의 value가 없으면 defalut로 지정한 값이 입력된다. (위에서는 0에 해당한다.) for (char key : map.keySet()) { // System.out.println(key + " " + map.get(key)); if (map.get(key) > max) { max = map.get(key); answer = key; } } - 향상된 for문을 이용하여 map의 key값을 순회하고 싶아면 keySet() 함수를 사용하면 된다. System.out.println(map.containsKey('A'));..

CodingTest - Two Pointers, Sliding Window

- Two Pointer Algorithm 1. 배열 또는 리스트에서 두 개의 포인터를 사용하여 원하는 조건을 만족하는 요소나 부분 배열을 찾는 데 사용되는 알고리즘이다. 이 알고리즘은 주로 정렬된 배열 또는 리스트에서 사용되며, 시간 복잡도를 개선하기 위한 효율적인 방법 중 하나이다. - Sliding Window 1. 배열 또는 문자열과 같은 순차적인 데이터 구조를 처리하고 여러 데이터 포인트의 부분집합을 검사하거나 연산하는데 사용되는 알고리즘 기법이다. 3_1 오름차순으로 정렬이 된 두 배열이 주어지면 두 배열을 오름차순으로 합쳐 출력하는 프로그램을 작성하세요. - 방법 1 import java.util.ArrayList; import java.util.Scanner; public class Mai..

Spring - 파일 업로드 Re

- Spring은 MultipartFile이라는 인터페이스로 멀티파트 파일을 매우 편리하게 지원한다. - 일반적인 파일 업로드 방법 - 아래 파일 업로드 방법은 가장 기본적인 방법이다. input을 통해 전달받은 file을 파일명 그대로 지정된 위치에 파일을 저장하는 방식이다. - upload-form.html 상품 등록 폼 상품 입력 상품명 파일 1. HTML에서 파일을 전송할 때 form에 enctype="multipart/form-data"를 추가해준다 . 그 이유는 첨부파일의 경우 문자가 아닌 바이너리로 전송해야 하기 때문이다. 2. HTML input의 속성을 file로 지정하게 되면 첨부파일을 추가할 수 있게된다. - SpringUploadController.java @Slf4j @Contro..

Programming/Spring 2023.10.17
728x90