전체 글 110

데이터베이스

⁉ 데이터베이스란? 사용하는 이유? 데이터베이스는 데이터의 집합체를 의미합니다. 구조화된 방식으로 저장해 효율적으로 접근하고 관리할 수 있습니다. 데이터베이스를 사용하는 이유 구조화된 방식으로 데이터를 저장 (대용량의 데이터를 효율적으로 관리) 데이터의 무결성 (일관성 있게 유지) 데이터의 중복 최소화 ⁉ DBMS 란? DBMS 는 데이터베이스 관리 시스템 (Database Management System) 의 약자로, 여러 사용자가 데이터베이스에 접근해 사용할 수 있도록 제공해주는 소프트웨어입니다. ⁉️ 데이터베이스와 DBMS의 차이에 대해 설명해 보세요 ⁉ 데이터베이스 스키마란? 데이터베이스의 구조와 제약 조건에 관한 전반적인 표현을 나타냅니다. 스키마는 3가지로 분류됩니다. 외부 스키마 (Exter..

너비 우선 탐색 (BFS)

너비 우선 탐색 (BFS) BFS 와 DFS ? 대표적인 그래프 탐색 알고리즘 너비 우선 탐색 (Breadth First Search) : 정점들과 같은 레벨에 있는 노드들을 먼저 탐색하는 방식 깊이 우선 탐색 (Depth First Search) : 정점의 자식들을 먼저 탐색하는 방식 예제 BFS : A - B - C - D - G - H - I - E - F- J 한 단계씩 내려가면서 해당 노드와 같은 레벨에 있는 노드들을 먼저 순회 DFS : A - B - D - E - F - C - G - H - I - J 한 노드의 자식을 끝까지 순회 한 후, 같은 레벨에 있는 노드들의 자식을 순회 Java 로 그래프를 표현하는 방법 HashMap 과 ArrayList 를 활용해서 그래프를 표현 할 수 있음 B..

코테/알고리즘 2023.09.05

우선순위

우선순위 설정 데이터 --spring.profiles.active=dev 옵션 지정을 안해주면 스프링은 "default" 라는 이름의 프로필을 사용함 기본값 스프링은 문서를 위에서 아래로 순서대로 읽으면서 실행 함 설정한 기준이 먼저 실행됨 dev로 설정되있다면 dev를 실행하고, prod로 설정되있다면 prod로 실행함, 아무것도 설정되있지 않다면 default로 실행 참고, 프로필을 한번에 둘 이상 설정하는 것도 가능 (--spring.profiles.active=dev,prod) 속성 부분 적용 최종적으로 url 부분은 dev.db.com 으로 dev 프로필에서적용한 것이 반영되고, 나머지는 처음에 입력한 기본값이 유지된다. feat. 스프링부트 - 핵심 원리와 활용 (김영한)

그래프 이해

그래프 이해 그래프란? 정점 (Vertex) 또는 노드 (Node) 와 간선 (Edge) 으로 표현하기 위해 사용 그래프 용어 노드 (Node) : 위치를 말함, 정점 (Vertex) 라고도 함 간선 (Edge) : 위치 간의 관계를 표시한 선으로 노드를 연결한 선이라고 보면 됨 (link 또는 branch 라고 함) 인접 정접 (Adjacent Vertex) : 간선으로 직접 연결된 정점 (노드) 참고 정점의 차수 (Degree) : 무방향 그래프에서 하나의 정점에 인접한 정점의 수 진입 차수 (In-Degree) : 방향 그래프에서 외부에서 오는 간선의 수 진출 차수 (Out-Degree) : 방향 그래프에서 외부로 향하는 간선의 수 경로 길이 (Path Length) : 경로를 구성하기 위해 사용된..

코테/알고리즘 2023.09.04

설정 데이터

설정 데이터 외부 파일 OS 환경 변수, 자바 시스템 속성, 커맨드 라인 옵션 인수는 사용해야 하는 값이 늘어날 수록 사용하기가 불편해짐 대안은 설정값을 파일에 넣어서 관리하고, 애플리케이션 로딩 시점에 해당 파일을 읽어들이면 됨 .properties 파일은 key=value 형식을 사용해서 설정값을 관리하기에 적합 개발, 운영 서버에 각각 application.properties 외부파일을 생성 애플리케이션 로딩시점에 해당 파일을 읽어 속에있는 값들을 외부 설정값으로 사용 파일 이름이 같으므로 애플리케이션코드는 그대로 유지할수 있음 스프링과 설정 데이터 스프링은 해당 파일을 읽어서 사용할 수 있는 PropertySource의 구현제를 제공함 application.properties 파일을 설정 데이터 ..

컨테이너 가상화 이해

컨테이너 가상화 이해 컨테이너 기술 컨테이너 기술은? 컨테이너는 애플리케이션을 언제든 실행 가능하도록 필요한 모든 요소를 하나의 런타임 환경으로 패키징한 논리적 공간임 운영 시스템을 가상화한 경량의 격리된 프로세스 온프레미스 서버에서 빠르고 효율적으로 배포 가능하며, 확장성 또한 가지고 있음 반복적이고 불편한 작업에 시간을 낭비하지 않고 애플리케이션 개발에 집중할 수 있게 됨 컨테이너 특징 Image를 통해 실행되므로 경량임 언제든 프로세스 수준의 속도로 빠르게 실행(run) 할 수 있고, 한번에 여러 개의 컨테이너를 동시 실행 가능 어떤 환경에서도 동작 가능한 이식성 보유 컨테이너 자체 애플리케이션 환경에 대한 관리만 요구됨, 지속적 서버관리 비용 절감 가능 컨테이너는 DevOps workflow 구성..

외부 설정 - 2

외부 설정 - 2 커맨드 라인 인수 커맨드 라인 인수 (Command line arguments) 는 애플리케이션 실행 시점에 외부 설정값을 main(args) 메서드의 args 파라미터로 전달하는 방법 사용 java -jar app.jar dataA dataB 필요한 데이터를 마지막 위치에 스페이스로 구분해서 전달 dataA, dataB 2개의 문자가 args 에 전달됨 커맨드 라인 인수는 공백 (space)로 구분 CommandLineV1 - arg dataA CommandLineV1 - arg dataB 보통 key=value 형식으로 데이터를 받는것이 편리함 커맨드 라인 인수를 다음과 같이 입력 url=devdb username=dev_user password=dev_pw 커맨드 라인 인수는 ke..

외부 설정 - 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..