최신 글
-
[Java] Long과 long의 차이
자바에서 데이터 타입을 배울 때, Long이라는 타입도 배우게 된다. 그런데 자바를 실제로 사용하다 보면, long이라는 타입도 있어서 어느 것을 사용해야 할 지 고민이 된다. 이런 비슷한 페어들이 있으니, 한 번에 정리해서 적절한 타입을 사용해 보자. 기본 데이터 타입 (primitive type)long은 기본 데이터 타입이다. 이는 다음과 같은 중요한 특성을 가진다.스택 메모리에 직접 저장되므로 메모리 사용이 효율적이다연산 속도가 빠르다null값을 가질 수 없다 -> null point exception을 발생시킬 수 있다ex) int, long, float, double, char, byte, short, boolean 객체 타입 (wrapper type)Long은 객체 타입이다. 이는 다음과 같..
2024.09.15
-
[Postman] 포스트맨 심화 사용법
Postman에서 기본적인 api 요청 생성 및 응답 확인을 하게 되면 직관적인 UI덕분에 금방 활용이 가능하다. 하지만 프로젝트 규모가 커져서 api가 많아지거나, 배포/개발/로컬 등의 환경이 분리되어 다양한 세팅에서 동일한 api를 사용하게 되는 경우, 포스트맨의 기타 기능들을 사용해야 생산성이 크게 올라간다. 이번에는 그런 사용법들을 소개하려고 한다. 환경변수 설정프론트와 백엔드, vscode나 intellij 등에서 개발을 할 때, 환경변수를 사용하면 동일한 값을 불러올 수 있어서 생산성이 높아지고 코드의 유지보수가 수월해진 것을 느낄 수 있다. 포스트맨에서도 환경변수를 사용하면 비슷한 편리함을 느낄 수 있다. 우선 환경변수를 만들기 위해 왼쪽의 environments 탭을 눌러보면 다음과 같은 ..
2024.09.09
-
[AWS, Java, Spring] Presigned Url로 S3에 이미지 업로드하기
Presigned Url을 사용해야 하는 이유백엔드 서버를 구축할 때, 기초적인 이미지 업로드 구현을 서버가 S3 버킷에 직접 업로드하는 방식으로 하는 경우가 많다. 소규모 프로젝트에서 이 방식이 가장 간편하기 때문이다. 이 구조를 그림으로 표현하면 다음과 같다. 즉, 서버에서 이미지 파일을 직접 전송받고 s3에 전송해 줘야 하기에, 이 과정에서 서버 자원이 많이 소모된다. 하지만 aws s3에서 제공하는 presigned url을 사용한다면 서버에서 파일을 직접 처리하지 않게 되기에 서버의 부담이 많이 줄어드는 큰 장점이 있다. 또한, aws에서 presigned url을 통해 파일을 업로드하는 경우 처리 속도를 아주 빠르게 제공해 주고 있어서 기존 프로젝트보다 성능이 향상된다. Presigned U..
2024.08.22
-
[AWS, Java] Cloudwatch 경보를 AWS sdk for Java로 만들기
Cloudwatch Alarm (경보)란?Cloudwatch에서 다양한 이벤트에 대한 지표, 로그, 경보 등을 만들 수 있다. 쉽게 말하자면, 내가 설정한 AWS에서 발생한 일에 대해 모니터링을 할 여러 수단들이 마련되어 있다는 뜻이다. 이 중 경보(alarm)은 내가 설정한 어떤 일이 발생했을 때, 이메일 송신과 같은 방법으로 알람을 받을 수 있게 설정하는 도구다. 위 사진처럼 AWS 콘솔 - cloudwatch 에서 경보 탭을 클릭하여, 경보를 쉽게 만들 수 있다. 그러나 콘솔에서 경보를 만드는 것 뿐만이 아니라, AWS sdk for Java를 이용하여 스프링 프로젝트에서도 경보를 다룰 수도 있다. 나는 회사의 프로젝트에서 자동으로 경보를 생성하는 알고리즘이 필요했기에 이 방법을 사용하게 되었는데,..
2024.07.09
-
[Java] ResponseEntity 를 return할 때, new를 언제 붙이는가?
ResponseEntity란?ResponseEntity는 HttpEntity를 상속받고 있어, HttpEntity에다 HttpStatusCode를 추가한 클래스이다. HttpEntity는 HTTP 요청 또는 응답 entity인데, header와 body로 구성되어 있다. ResponseEntity class 문서에서 생성자는 다음과 같다.public ResponseEntity(@Nullable T body, @Nullable MultiValueMap headers, HttpStatusCode statusCode) { super(body, headers); Assert.notNull(statusCode, "HttpStatusCode must not be null"); this.status ..
2024.05.09
-
[Java] 선형 검색 Linear Search
선형 검색선형 검색 (=순차 검색)은 배열에서 검색할 값을 처음부터 순서대로 하나하나씩 비교하여 찾는 방식이다. 예를 들어 배열 {1, 2, 3, 4, 5}에서 값 3을 선형 검색으로 찾는다면, 첫 값인 1과 3을 비교, 다음 값인 2와 3을 비교, 그리고 다음 3과 3을 비교해서 찾게 된다. Java로 선형 검색 구현일반적으로 선형 검색을 할 경우, 다음 두 가지 결과가 발생한다.배열을 끝까지 탐색했음에도 불구하고 검색할 값을 찾지 못함 -> 검색 실패배열 탐색 중 검색할 값을 찾음 -> 검색 성공이를 메소드로 구현하면 다음과 같다.import java.util.Scanner;class SeqSearch { // 크기가 n인 자바 배열 a에서 key와 값이 같은 요소를 선형 검색하는 메소드 ..
2024.05.02
인기 글
-
[AWS, Java, Spring] Presigned Url로 S3에 이미지 업로드하기
Presigned Url을 사용해야 하는 이유백엔드 서버를 구축할 때, 기초적인 이미지 업로드 구현을 서버가 S3 버킷에 직접 업로드하는 방식으로 하는 경우가 많다. 소규모 프로젝트에서 이 방식이 가장 간편하기 때문이다. 이 구조를 그림으로 표현하면 다음과 같다. 즉, 서버에서 이미지 파일을 직접 전송받고 s3에 전송해 줘야 하기에, 이 과정에서 서버 자원이 많이 소모된다. 하지만 aws s3에서 제공하는 presigned url을 사용한다면 서버에서 파일을 직접 처리하지 않게 되기에 서버의 부담이 많이 줄어드는 큰 장점이 있다. 또한, aws에서 presigned url을 통해 파일을 업로드하는 경우 처리 속도를 아주 빠르게 제공해 주고 있어서 기존 프로젝트보다 성능이 향상된다. Presigned U..
2024.08.22
-
[Postman] 포스트맨 심화 사용법
Postman에서 기본적인 api 요청 생성 및 응답 확인을 하게 되면 직관적인 UI덕분에 금방 활용이 가능하다. 하지만 프로젝트 규모가 커져서 api가 많아지거나, 배포/개발/로컬 등의 환경이 분리되어 다양한 세팅에서 동일한 api를 사용하게 되는 경우, 포스트맨의 기타 기능들을 사용해야 생산성이 크게 올라간다. 이번에는 그런 사용법들을 소개하려고 한다. 환경변수 설정프론트와 백엔드, vscode나 intellij 등에서 개발을 할 때, 환경변수를 사용하면 동일한 값을 불러올 수 있어서 생산성이 높아지고 코드의 유지보수가 수월해진 것을 느낄 수 있다. 포스트맨에서도 환경변수를 사용하면 비슷한 편리함을 느낄 수 있다. 우선 환경변수를 만들기 위해 왼쪽의 environments 탭을 눌러보면 다음과 같은 ..
2024.09.09
-
[Java] Long과 long의 차이
자바에서 데이터 타입을 배울 때, Long이라는 타입도 배우게 된다. 그런데 자바를 실제로 사용하다 보면, long이라는 타입도 있어서 어느 것을 사용해야 할 지 고민이 된다. 이런 비슷한 페어들이 있으니, 한 번에 정리해서 적절한 타입을 사용해 보자. 기본 데이터 타입 (primitive type)long은 기본 데이터 타입이다. 이는 다음과 같은 중요한 특성을 가진다.스택 메모리에 직접 저장되므로 메모리 사용이 효율적이다연산 속도가 빠르다null값을 가질 수 없다 -> null point exception을 발생시킬 수 있다ex) int, long, float, double, char, byte, short, boolean 객체 타입 (wrapper type)Long은 객체 타입이다. 이는 다음과 같..
2024.09.15
-
[Spring MVC] Ajax로 게시판 만들기
일반적인 스프링 게시판은 @GetMapping 그리고 ModelAttribute로 리스트와 페이징을 처리한다. 그래서 게시글을 검색하거나 목록 페이징를 넘기면 웹페이지가 새로 로딩된다. 하지만 Ajax방식으로 페이징을 처리하면 새 로딩 없이 게시글 목록을 갱신할 수 있다. View에서 Ajax 넘겨주는 function 작성 우선 Controller에서 게시판 리스트를 처음 출력해주는 부분은 기존과 동일하게 Get방식으로 만든다. @Autowired private NoticeService service; @GetMapping("/notice/list") public String viewList(Model model, @SessionAttribute(name = "loginMember", required =..
2024.04.10
-
[Java] ResponseEntity 를 return할 때, new를 언제 붙이는가?
ResponseEntity란?ResponseEntity는 HttpEntity를 상속받고 있어, HttpEntity에다 HttpStatusCode를 추가한 클래스이다. HttpEntity는 HTTP 요청 또는 응답 entity인데, header와 body로 구성되어 있다. ResponseEntity class 문서에서 생성자는 다음과 같다.public ResponseEntity(@Nullable T body, @Nullable MultiValueMap headers, HttpStatusCode statusCode) { super(body, headers); Assert.notNull(statusCode, "HttpStatusCode must not be null"); this.status ..
2024.05.09