분류 전체보기 122

외부 설정 - 1

외부 설정 - 1 OS 환경 변수 OS 환경 변수 (OS environment variables) 는 해당 OS 를 사용하는 모든 프로그램에서 읽을 수 있는 설정 값 사용 범위가 가장 넓음 조회 방법 윈도우 : set mac, 리눅스 : printenv set 실행 결과 애플리케이션에서 OS 환경 변수 값 읽어오기 System.getenv() : OS 전체 환경 변수를 Map으로 조회 System.getenv(key) : 특정 환경변수 값을 String으로 조회 OS 환경 변수는 전역 변수 같은 효과가 있음 해당 애플리케이션을 사용하는 자바 프로그램 안에서만 사용되는 외부 설정값을 사용하고 싶을 때도 있음 자바 시스템 속성 자바 시스템 속성 (Java System properties) 은 실행한 JVM ..

자동 구성 라이브러리 만들기/사용

자동 구성 라이브러리 만들기 저번에 jar를 만들었던 프로젝트를 v2로 변경해서 파일을 추가함 @AutoConfiguration 스프링 부트가 제공하는 자동 구성 기능을 적용할 때 사용하는 어노테이션 @ConditionalOnProperty memory=on 이라는 환경정보가 있을 때 라이브러리를 적용 (스프링빈 등록) 라이브러리를 가지고 있더라도 상황에 따라서 해당 기능을 켜고 끌수 있게 유연한 기능을 제공 제일 중요한 부분! 자동 구성 대상으로 지정해주기 위해 파일을 생성해야함 파일명 주의! 위치 : src/main/resources/META-INF/spring/ (META-INF, spring 폴더 생성해야함) 생성 파일명 : org.springframework.boot.autoconfigure.A..

동적 계획법과 분할 정복

동적 계획법과 분할 정복 동적계획법 (DP 라고 부름) 입력 크기가 작은 부분 문제들을 해결 한 후, 해당 부분 문제의 해를 활용해서 큰 크기의 부분 문제를 해결하므로써 전체 문제를 해결하는 알고리즘 동적 계획법 상향식 접근법 : 가장 최하위 해답을 구한 후 저장하고, 해당 결과값을 이용해서 상위 문제를 풀어가는 방식 Memoization 기법 사용 이전에 계산한 값을 저장해 다시 계산하지 않도록 하여 전체 실행 속도를 빠르게 하는 기술 문제를 잘게 쪼갤 때, 부분 문제는 중복되어 재활용됨 피보나치 수열 분할 정복 문제를 나눌수 없을 때까지 나누어서 각각 풀고 병합하여 문제의 답을 얻는 알고리즘 하향식 접근법 : 일반적으로 재귀함수로 구현 문제를 잘게 쪼갤 때, 부분 문제는 서로 중복되지 않음 병합 정렬..

코테/알고리즘 2023.08.30

순수 라이브러리 사용

순수 라이브러리 사용 memory-v1.jar 라이브러리를 project-v1 에 적용 라이브러리 추가 project-v1/libs 폴더 생성 후 memory-v1.jar 복사&붙여넣기 project-v1/build.gradle 에 memory-v1.jar 추가 project-v1/libs 폴더 생성 후 memory-v1.jar 복사&붙여넣기 project-v1/build.gradle 에 memory-v1.jar 추가 후 Reload 라이브러리 설정 추가한 라이브러리를 스프링 빈으로 등록해 동작하도록 해야함 스프링 부트 자동 구성을 사용하지 않았기에 빈을 직접 등록함 실행 서버 실행 라이브러리 내부에 있는 어떤 빈을 등록해야하는지 알아야하고, 직접 등록해야함 복잡한 라이브러리였다면 상당히 힘들 것으로 예..

삽입 정렬

삽입 정렬 두 번째 인덱스부터 시작 해당 인덱스 (key 값) 앞에 있는 데이터 (B)부터 비교해서 값이 작으면, B 값을 뒤 인덱스로 복사 key 값이 더 큰 데이터를 만날때까지 반복, 그리고 큰 데이터를 만난 위치 바로 뒤에 key 값을 이동 데이터가 두 개일 때 삽입 정렬 import java.util.*; ArrayList list = new ArrayList(); list.add(5); list.add(2); if(list.get(1) < list.get(0)) { Collections.swap(list, 1, 0); } System.out.println(list); // [2, 5] 데이터가 세 개일 때 삽입 정렬 import java.util.*; ArrayList list = new Arr..

코테/알고리즘 2023.08.29

선택 정렬

선택 정렬 주어진 데이터 중 최소값을 찾음 해당 최소값을 맨 앞과 교체 맨 앞을 제외한 나머지 데이터를 동일 한 방법으로 교체 데이터가 두 개일 때 선택 정렬 import java.util.*; ArrayList list = new ArrayList(); list.add(8); list.add(2); if(list.get(0) > list.get(1)) { Collections.swap(list, 0, 1); } System.out.println(list); // [2, 8] 데이터가 세 개일 때 선택 정렬 import java.util.*; ArrayList list = new ArrayList(); list.add(10); list.add(2); list.add(8); // 작은 데이터 int min..

코테/알고리즘 2023.08.29

버블 정렬

버블 정렬 인접한 데이터를 비교해서 앞에 있는 데이터가 뒤에 있는 데이터보다 크면, 자리를 바꾸는 정렬 알고리즘 데이터가 두 개일 때 버블 정렬 import java.util*; ArrayList list = new ArrayList(); list.add(5); list.add(3); if(list.get(0) > list.get(1)) { Collections.swap(list, 0, 1); } System.out.println(list); // [3, 5] 데이터가 세 개일 때 버블 정렬 import java.util.*; ArrayList list = new ArrayList(); list.add(10); list.add(3); list.add(5); for(int i = 0; i < list.si..

코테/알고리즘 2023.08.29

자동 구성 (Auto Configuration) - 2

@Contitional 특정 상황일 때만 특정 빈들을 등록해서 사용하도록 도와주는 기능 스프링 부트 자동 구성에서 자주 사용됨 matches() 메서드 : true ➡️ 동작 o / false ➡️ 동작 x ConditionContext : 스프링 컨테이너, 환경 정보 AnnotatedTypeMetadata : 어노테이션 메타 정보 Condition 인터페이스를 구현해 자바시스템 속성이 'memory=on' 이라고 되어 있을때 메모리기능이 동작 하도록 구현 MemoryCondition "on" 일 경우 true 반환 MemoryConfig @Conditional 어노테이션 추가 (MemoryCondition.class 부터 먼저 체크함) 인텔리제이 VM 속성 설정 -Dmemory=on / -D 꼭 붙여줘..