전체 글

전체 글

    [Java] Garbage Collection

    Garbage Collection이란? 우선 Garbage(가비지)라는 것은 유효하지 않은 메모리를 나타낸다. Java에서는 유효하지 않은 메모리를 JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해준다. Java에서는 대신 명시적으로 불필요한 데이터임을 표현하기 위해 일반적으로 null을 선언한다. 즉, 가비지 컬렉션(이하 GC)이란 메모리 관리 기법 중 하나로, 동적 할당한 메모리 영역 중 유효하지 않은 영역을 해제하는 기능이다. 동적으로 할당한 메모리 영역 : heap 영역 유효하지 않은 영역: 어떤 변수도 가리키지 않을 때 Java에서도 System.gc()를 호출할 수 있지만, 해당 메서드를 호출하는 것은 시스템의 성능에 매우 큰 영향을 미칠 수 있다. GC가 왜 필요할까? 따라서 GC를 ..

    [leetcode] 238. Product of Array Except Self

    Given an integer array nums, return an array answer such that answer[i] is equal to the product of all the elements of nums except nums[i]. The product of any prefix or suffix of nums is guaranteed to fit in a 32-bit integer. You must write an algorithm that runs in O(n) time and without using the division operation. examples. Input: nums = [1,2,3,4] Output: [24,12,8,6] 풀이 🚀 처음엔 이중 포문을 사용해서 i !=..

    [Logging] Logback을 이용해 logging하기

    https://seovalue.github.io/2021/09/29/logback-logging/ Logback으로 Logging하기 - Milestone | Joanne Blog 1. 출력 장치와 로그 종류 구분하기 출력 장치 콘솔 (기존에 스프링 애플리케이션 실행시킬 때와 동일하게 콘솔창에 로그 출력) 파일 (로그를 파일로 만들어서 보관) 로그 종류 info 레벨 message warn seovalue.github.io 블로그 이전 중입니다 :)

    QueryDsl(JPA)에서의 Cross Join 문제

    https://seovalue.github.io/2021/09/29/querydsl-cross-join/ Querydsl(JPA)에서의 Cross Join 문제 - Milestone | Joanne Blog QueryDsl을 사용하다 Cross Join이라는 문제를 만나게 되었다. seovalue.github.io 블로그 이전 중입니다 :)

    think

    보호되어 있는 글입니다.

    [백준] 2503 숫자야구 Java

    소스코드는 Github에서도 확인하실 수 있습니다. 풀이 🚀 1~9까지 중복되지 않는 세자리 수만 가능하므로, 123 ~ 987까지 모두 순회하며 주어진 조건을 모두 만족하는지 확인한다. 주어진 조건 * Input으로 들어온 수와 strike, ball 수를 비교했을 때 같다. * 1~9까지 중복되지 않는 세자리 수로 이루어져있다. 모든 조건을 만족한다면 가능한 답에 포함되므로 answer를 1 증가시킨다. 소스코드 👩🏻‍💻 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.HashSet; import java..

    이진탐색과 lower/upper Bound

    목차 이진 탐색 lower bound upper bound 이진 탐색 이진 탐색이란 주어진 데이터에서 원하는 값을 찾을 때, 데이터를 절반씩 나누어가며 탐색하는 방법이다. 간단한 예시를 통해 이진 탐색에 대해 알아보자. 다음과 같은 데이터가 주어져있을 때, 내가 찾고 싶은 값이 11이라고 해보자. 1 11 13 25 31 44 이진 탐색은 앞서 데이터를 절반씩 나누어가며 탐색하는 방법이라고 언급했었다. 따라서, 이진 탐색을 시작하기 전 준비 단계는 다음과 같다. 1. 가장 작은 값(left), 가장 큰 값(right)을 가리키기 2. 중간값(mid)을 찾기 (mid = (left + right) / 2) 이진 탐색이 진행되었다면 1. 단계는 left와 right를 알맞은 위치에 옮기기로 변경된다. 여기서..

    [백준] 12015 가장 긴 증가하는 부분수열 2 Java

    소스코드는 Github에서도 확인하실 수 있습니다. 풀이 🚀 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 풀이 방법은 다음과 같다. 먼저, A의 크기 + 1만큼의 int 배열을 만든다. 그리고 인덱스를 0으로 지정해준다. A로 부터 순서대로 읽어들이는 숫자를 number라고 해 보자. 1. array[index] number 인 경우 예를 들자면, array = {0, 10, 20} 인 상황에서 number로 10이 들어온 경우와 같다. 이 경우에는 ..

    [Spring boot] AWS S3 연동 관련 에러 해결 모음

    CloudFormation 관련 에러 에러 내용 요약: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.cloud.aws.core.env.ResourceIdResolver.BEAN_NAME' ~ cloudformation ~ spring-cloud-starter-aws 의존성을 사용해서 연동하게 되면 프로젝트 실행 시 기본으로 CloudFormation 구성을 시작한다. 따라서 설정한 CloudFormation이 없으면 프로젝트 실행이 되지 않아서 발생하는 에러이다. 해결책 // .properties cloud.aws.stack.auto=false // .yml..

    [Spring boot] S3 이미지 업로드 시 로컬에 저장하지 않고 업로드하기

    https://seovalue.github.io/2021/09/18/s3-upload-without-save/ 로컬에 이미지를 저장하지 않고, 스트림 형태로 S3에 업로드하기 - Milestone | Joanne Blog 이 글에서 S3에 이미지 업로드 시 cache-control 설정하는 방법에 대해 알아보았었다. seovalue.github.io 블로그 이전 중입니다 :)