분류 전체보기 115

자바, 객체지향, 스프링

⁉️ 자바의 특징은? 자바는 객체지향 프로그래밍 언어로, 컴파일 언어인 동시에 인터프리터 언어이기도 합니다. JVM (자바 가상 머신) 위에서 실행되기 때문에 운영체제에 독립적입니다. 또한, 객체 생성시 자동으로 메모리 영역을 찾아 할당하고, GC (Gabage Collector)를 통해 사용하지 않는 객체를 삭제해 메모리를 자동으로 관리합니다. 하지만, 자바 실행시 JVM 을 거쳐야하므로, 다른 언어에 비해 실행 속도가 느립니다. 다른 언어에 비해 작성해야 하는 코드의 길이가 긴 편입니다. ⁉️ JVM 이란? 어떤 기능? JVM 은 스택기반으로 동작합니다. 자바와 운영체제 사이에서 중개자 역할을 수행하여 운영체제에 구애받지 않고 재사용을 가능하게 해줍니다. 메모리관리, GC (Gabage Collect..

DBMS 정의

DBMS 정의 데이터베이스와 DBMS의 차이에 대해서 설명해 보세요 DBMS의 주요 기능은 무엇이 있을까요? DBMS의 주요 구성요소에 대해서 설명해 보세요 데이터베이스와 DBMS 의 차이는? 데이터베이스: 데이터의 저장소, 데이터를 통합 저장하고 운영하는 집합체 DBMS: 데이터베이스를 생성하고, 효율적으로 관리하기 위한 관리 시스템 DBMS 개념 Database Mnagement System 데이터베이스를 관리하기 위한 매니지먼트 시스템 일반 파일 시스템 문제점인 종속성과 중복성을 해결하기 위해 고안됨 응용 어플리케이션과 데이터 사이의 중재자 역할 (Software System) 주요 기능 사용자 간의 권한 통제 (데이터 접근 통제) 데이터의 일관성과 무결성 보장 데이터를 표준화하고, 통합 관리 가능..

데이터 독립성

데이터 독립성 데이터 독립성이란 무엇일까요? 논리적 독립성과 물리적 독립성에 대해서 설명해 보세요 데이터 독립성의 필요성에 대해서 설명해 보세요 데이터 독립성 하위 단계의 데이터의 논리적, 물리적 구조가 변경되어도 상위 단계에 영향을 미치지 않도록 구성하는 데이터베이스 특징 필요성 유지보수 비용 증가 테이터 복잡도 증가 데이터 중복성 증가 요구사항 대응 저하 독립성 내용 목적 논리적 독립성 ▪️ 데이터베이스의 논리적 구조를 변경시키더라도 기존 응용 프로그램에 영향을 주지 않는 것(응용 프로그램과 자료구조를 독립시키는 것) ▪️ 데이터베이스 관리시스템이 하나의 논리적데이터 구조를 가지고 많은 응용 프로그램이 제 각각 요구하는 다양한 형태의 논리적 구조로 사상(Mapping)시켜 줄 수 있어야 함 ▪ 사용자..

액츄에이터

운영 환경에서 서비스할 때 필요한 이런 기능들을 프로덕션 준비 기능이라 함 프로덕션을 운영에 배포할 때 준비해야 하는 비 기능적 요소들을 뜻함 지표(metric), 추적(trace), 감사(auditing) 모니터링 스프링 부트가 제공하는 액추에이터는 이런 프로덕션 준비 기능을 매우 편리하게 사용할 수 있는 다양한 평의 기능들을 제공함 액츄에이터는 /actuarot 경로를 통해 기능을 제공함 이 기능은 현재 서버가 잘 동작하고 있는지 애플리케이션의 헬스 상태를 나타냄 액츄에이터 기능을 웹에 노출 액츄에이터가 제공하는 수 많은 기능을 확인 할 수 있음 제공하는 기능을 엔드포인트라 함 health 는 헬스 정보, beans는 스프링 컨테이너에 등록된 빈을 보여줌 각각의 엔드포인트는 /actuator/{엔드포..

YAML / @Profile

YAML YAML (YAML Ain't Markup Language) 사람이 읽기 좋은 데이터 구조를 목표로 함 확장자는 yaml, yml application.properties 예시 environments.dev.url=https://dev.example.com environments.dev.name=Developer Setup environments.prod.url=https://another.example.com environments.prod.name=My Cool App application.yml 예시 environments: dev: url: "https://dev.example.com" name: "Developer Setup" prod: url: "https://another.examp..

운영체제의 큰 그림

운영체제의 큰 그림 운영체제의 심장, 커널 커널: 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능 사용자 인터페이스: 커널에 포함되지 않는 서비스, 사용자가 컴퓨터와 상호작용할 수 있는 통로 그래픽 유저 인터페이스: 그래픽을 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스 커맨드 라인 인터페이스: 명령어를 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스 이중 모드와 시스템 호출 응용 프로그램이 실행 과정에서 하드 디스크에 접근하여 데이터를 저장하려면 운영체제에 도움을 요청해야 하고, 운영체제는 커널 영역 내의 하드 디스크에 데이터를 저장하는 코드를 실행하여 응용 프로그램의 작업을 대신 수행함 이중 모드: CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구..

운영체제를 알아야 하는 이유

운영체제를 알아야 하는 이유 운영체제란 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 이들이 올바르게 실행되도록 도움 응용 프로그램과 하드웨어 사이에서 응용 프로그램에 필요한 자원을 할당하고, 응용 프로그램이 올바르게 실행되도록 관리하는 역할 응용 프로그램에 자원을 효율적으로 배분하고, 실행할 프로그램들이 지켜야 할 규칙을 만들어 컴퓨터 시스템 전체를 관리

다양한 입출력 방법

다양한 입출력 방법 프로그램 입출력 기본적으로 프로그램 속 명령어로 입출력장치를 제어하는 방법 CPU가 프로그램 속 명령어를 실행하는 과정에서 입출력 명령어를 만나면 CPU는 입출력장치에 연결된 장치 컨트롤러와 상호작용하며 입출력 작업을 수행함 1. '메모리에 저장된 정보를 하드 디스크에 백업한다' 말은 '하드 디스크에 새로운정보를 쓴다'는 말과 같음 CPU는 하드 디스크 컨트롤러의 제어 레지스터에 쓰기 명령을 보냄 2. 하드 디스크 컨트롤러는 하드 디스크 상태를 확인 하드 디스크가 준비된 상태라면 하드 디스크 컨트롤러는 상태 레지스터에 준비되었다고 표시함 3. ① CPU는 상태 레지스터를 주기적으로 읽어보며 하드 디스크의 준비 여부를 확인함 ② 하드 디스크가 준비됐음을 CPU가 알게 되면 백업할 메모리..

장치 컨트롤러와 장치 드라이버

장치 컨트롤러와 장치 드라이버 장치 컨트롤러 CPU, 메모리보다 다루기가 더까다로움 입출력장치에는 종류가 너무 많음 키보드, 모니터, USB 메모리, SSD, 마우스 등 많음 장치마다 속도, 데이터 전송 형식 등도 다양하기 때문에 입출력장치와 정보를 주고받는 방식을 규격화하기 어려움 입출력장치의 데이터 전송률은 낮음 전송률: 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표 CPU나 메모리와 전송률이 비슷하지 않기 때문에 통신이 어려움 모든 입출력장치는 각자의 장치 컨트롤러를 통해 컴퓨터 내부와 정보를 주고받고, 장치 컨트롤러는 하나의 이상의 입출력장치와 연결되어 있음 장치 컨트롤러의 역할 CPU와 입출력장치 간의 통신 중개 오류 검출 데이터 버퍼링 버퍼링: 전송률이 높은 장치와 낮은 장치 사이에 ..

@ConfigurationProperties 검증

@ConfigurationProperties 검증 최대 커넥션 숫자는 최소 1 최대 999라는 범위를 가져야 한다면 검증을 어떻게 할 수 있을까? 자바에는 자바 빈 검증기 (java bean validation) 이라는 표준 검증기가 제공됨 자바 빈 검증기를 사용하려면 spring-boot-starter-validation 이 필요함 @NotEmpty 어노테이션: 항상 값이 있어야 함 @Min(1) @Max(999) 어노테이션: 최소 1, 최대 999의 값을 허용 @DurationMin(seconds = 1) @DurationMin(seconds = 60) 어노테이션: 최소 1, 최대 60초를 허용 MyDataSourceConfigV3 생성 및 ExternalReadApplication.java 수정 m..