최신 글
-
[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
인기 글
-
[Postman] 포스트맨 심화 사용법
Postman에서 기본적인 api 요청 생성 및 응답 확인을 하게 되면 직관적인 UI덕분에 금방 활용이 가능하다. 하지만 프로젝트 규모가 커져서 api가 많아지거나, 배포/개발/로컬 등의 환경이 분리되어 다양한 세팅에서 동일한 api를 사용하게 되는 경우, 포스트맨의 기타 기능들을 사용해야 생산성이 크게 올라간다. 이번에는 그런 사용법들을 소개하려고 한다. 환경변수 설정프론트와 백엔드, vscode나 intellij 등에서 개발을 할 때, 환경변수를 사용하면 동일한 값을 불러올 수 있어서 생산성이 높아지고 코드의 유지보수가 수월해진 것을 느낄 수 있다. 포스트맨에서도 환경변수를 사용하면 비슷한 편리함을 느낄 수 있다. 우선 환경변수를 만들기 위해 왼쪽의 environments 탭을 눌러보면 다음과 같은 ..
2024.09.09
-
IPv4 FLSM 서브네팅 (Subnetting)
서브네팅서브네팅은 할당된 네트워크 주소를 다시 여러 네트워크로 나누어 사용하는 것이다. IPv4의 IP주소를 서브네팅하는 방식으로 FLSM, VLSM등이 있는데, FLSM방식의 서브네팅을 하는 방식을 알아보자. 예시) 192.168.1.0/24 을 3개의 subnet으로 나누기주소의 마지막 /24부분이 서브넷 마스크이므로 이에 주목해야 한다.본래 IPv4주소는 8bit씩 4개, 즉 32bit로 이루어진다. 각 8bit는 점(.)으로 분리해서 표기한다.24는 네트워크ID를 표기하도록 24bit를 사용하라는 의미이다. 그러므로 32 - 24 = 8, 남은 8bit로 호스트ID를 구성해 서브네팅을 한다.8bit를 우선 4등분하여 6bit씩 분배한다. 이는 2의 6승이므로, 10진법으로 64이다. 이를 주소의..
2024.04.26
-
화이트박스 테스트의 검증 기준 (커버리지)
화이트박스 테스트 (White Box Test)화이트박스 테스트는 모듈의 코드를 열어서 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법이다. 이와 반대로 블랙박스 테스트는 코드를 보지 않고 프로그램의 구조와 상관 없이 각 기능들이 작동하는지만 확인하는 테스트이다. 화이트박스 테스트 종류1. 기초 경로 검사2. 제어 구조 검사 - 조건 검사 - 루프 검사 - 데이터 흐름 검사 화이트박스 테스트 검증 기준 (커버리지)문장(구문) 검증 기준코드의 모든 문장이 최소 한번은 수행되도록 구성하는 검증 기준분기(결정) 검증 기준코드의 조건식(전체)이 참/거짓인 경우가 한 번 이상 수행되도록 구성조건 검증 기준전체 조건식과 상관없이 개별 조건이 참/거짓인 경우가 한..
2024.04.24
-
[Spring] 프로젝트에 Dependency추가하기 (+Json파싱)
Java에서 JSON 파싱 자바에서 Json데이터를 파싱할 때, 주로 org.json.simple 라이브러리에서 메소드를 호출해서 파싱하는 것이 간편하다. 요약하자면 다음과 같은 코드로 파싱한다. Json데이터 -> 파싱 -> JsonObject로 변환 -> key-value에서 key입력으로 value검색 순서로 진행된다. 여기서 JsonObject는 key-value로 구성된 객체이다. // 먼저 Json데이터를 읽는 메소드를 호출한다 JSONParser jsonParser = new JSONParser(); // Json데이터를 JsonObject형태로 변환한다. JSONObject rootObj = (JSONObject) jsonParser.parse(제이손데이터); // key값으로 value를..
2024.03.16
-
[AWS, Java, Spring] Presigned Url로 S3에 이미지 업로드하기
Presigned Url을 사용해야 하는 이유백엔드 서버를 구축할 때, 기초적인 이미지 업로드 구현을 서버가 S3 버킷에 직접 업로드하는 방식으로 하는 경우가 많다. 소규모 프로젝트에서 이 방식이 가장 간편하기 때문이다. 이 구조를 그림으로 표현하면 다음과 같다. 즉, 서버에서 이미지 파일을 직접 전송받고 s3에 전송해 줘야 하기에, 이 과정에서 서버 자원이 많이 소모된다. 하지만 aws s3에서 제공하는 presigned url을 사용한다면 서버에서 파일을 직접 처리하지 않게 되기에 서버의 부담이 많이 줄어드는 큰 장점이 있다. 또한, aws에서 presigned url을 통해 파일을 업로드하는 경우 처리 속도를 아주 빠르게 제공해 주고 있어서 기존 프로젝트보다 성능이 향상된다. Presigned U..
2024.08.22