데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조 동작 원리 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장 쿼리문에 인덱스 생성 컬럼을 WHERE 조건으로 거는 등, 작업을 할 경우 옵티마이저에서 판단하여 생성된 인덱스를 활용 가능 인덱스에 저장되어 있는 데이터의 물리적 주소로 가서 데이터를 가져오는 식으로 동작하게 되어 검색 속도 향상 오름차순으로 정렬하기 때문에 정렬된 주소 체계 💡 옵티마이저 : 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 엔진, 컴퓨터의 두뇌가 CPU인 것처럼, DBMS의 두뇌는 옵티마이저 인덱스의 장점 가장 큰 특징은 데이터들이 정렬되어 있다는 점 조..
메인 메모리란 ? 프로그램이 올라가는 거대한 바이트 배열 배열의 방들에는 주소를 통해 접근할 수 있음 메인 메모리에 올라간 프로그램은 프로세스가 됨 32 bit, 64 bit 아키텍쳐 운영체제의 아키텍쳐는 메인 메모리의 주소 길이에 의해 결정 멀티 프로세서에서의 메모리 접근 관리 각 프로세스는 자신만의 메모리 공간을 가지고 있어야 함 자신만의 메모리 공간을 어떻게 지정할까? 베이스 레지스터(Base Register) 해당 프로세스의 메모리 시작 위치를 저장한 레지스터 한계 레지스터(Limit Register) 해당 프로세스가 사용할 수 있는 최대 메모리 크기를 저장한 레지스터 즉, 멀티프로세서에서는 베이스 레지스터, 한계 레지스터를 통해 메모리 접근을 통제 운영체제의 주소 체계 논리적 주소(Logical..
프로메테우스는 데이터 수집과 통합 도구 그라파나는 데이터 시각화 도구 위 두 가지를 사용하여 시스템 모니터링 환경을 구축할 수 있음 프로메테우스(Prometheus) 시계열 DB를 내장하고 있음 중앙 서버에서 에이전트를 통해 노드와 컨테이너 상태를 모두 수집 내부 메트릭을 외부로 노출하기 때문에, 사용자가 수집 대상에 접속할 수 있다면 개인 컴퓨터에서도 메트릭을 가져올 수 있음 💡 메트릭이란? 현재 시스템의 상태를 알 수 있는 측정 값 시스템 매트릭(System Metric) : CPU와 메모리 사용량 표시 서비스 메트릭(Service Metric) : HTTP 상태 코드와 같은 상태 표시 💡 시계열 데이터베이스란? 시간을 축으로, 시간의 흐름에 따라 발생하는 데이터를 저장하는데 최적화 된 데이터베이스 ..
CI/CD란? Continuous Integration / Continuous Delivery 지속적인 통합(CI), 지속적인 제공(CD) 왜 필요할까? 매번 개발자가 코드를 수정하고 빌드 및 테스트 할 경우, 시간 소요가 커짐 git에 올리는 것 만으로, 빌드 → 테스트 → 배포까지 자동화하면 개발 시간을 더 확보할 수 있음. 위 과정을 자동화 할 수 있는 것 → CI/CD CI(Continuous Integration) 란? 빌드/테스트 자동화 과정 어플리케이션의 버그 수정, 코드 추가와 같이 변경 사항이 주기적으로 빌드 및 테스트 되면서 Repository에 통합(Merge)되는 것을 의미 그래서 지속적인 통합 이라고 하는 것 CD(Continuous Delivery) 란 ? 배포 자동화 과정 빌드..
https://www.acmicpc.net/problem/1863 1863번: 스카이라인 쉬운거 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 50,000) 다음 n개의 줄에는 왼쪽부터 스카이라인을 보아 갈 때 스카이라인의 고도가 바뀌는 지점의 좌표 x와 y가 주어진다. (1 ≤ x ≤ 1,000,000. 0 ≤ y ≤ 500,000) 첫 www.acmicpc.net 문제 도시에서 태양이 질 때에 보이는 건물들의 윤곽을 스카이라인이라고 한다. 스카이라인만을 보고서 도시에 세워진 건물이 몇 채인지 알아 낼 수 있을까? 건물은 모두 직사각형 모양으로 밋밋하게 생겼다고 가정한다. 정확히 건물이 몇 개 있는지 알아내는 것은 대부분의 경우에 불가능하고, 건물이 최소한 몇 채 인지 알아내는 것은 가능해 보인다. 이를 ..
DI, IoC IoC 제어의 역전(개발자 → 컴퓨터) 프레임워크 정의 : 프로그램 실행 제어권이 개발자에게 있냐, 컴퓨터에게 있냐. 컴퓨터에게 있으니까 스프링은 IoC DI Dependency Injection 의존성 주입 new 를 스프링이 해준다. 스프링에서는 3가지 의존성 주입 방식을 지원함 Field 주입 Setter 주입 Constructor 주입 Field 주입 Field 주입은 클래스의 Field 에 Autowired 어노테이션을 붙여서 주입하는 방식을 말함 @Controller public class LogController { @Autowired private LogService logService; @Autowired private RestTemplateUtils restTemplate..
인공지능, 머신러닝, 딥러닝 인공지능 학습방법 지도학습 모든 입력패턴에 대해 정확한 답을 가지고 신경망을 학습하는 방법. 입력이 주어짐에 따라 원하는 출력값이 활성화되도록 가중치를 조절 각 입력자료에 대해 원하는 목표 출력값을 대응시켜 학습자료 구성 비지도학습 목표값 없이 학습 데이터만 입력, 스스로 연결 가중치들을 학습 주어진 입력패턴 자체를 기억시키거나, 유사한 패턴을 군집화 시키는데 사용 입력에 대한 정확한 답을 알 필요가 없으며, 입력 데이터에 내재된 구조나 그 사이의 관계를 파악하여 패턴들을 분류 강화학습 데이터의 상태(State)을 인식하고 이에 반응한 행위(Action)에 대하여 환경으로부터 받는 포상(Reward)을 학습하여 행위에 대한 포상을 최적화하는 정책(Model)을 찾는 기계학습 ..
Event Driven Architecture Event Driven이라는 용어는 programming, architecture와 연결되어 다양한 정의로 표현 💡 EDA (Event-driven architecture) 분산된 시스템 간에 이벤트를 생성, 발행 (publishing)하고 발행된 이벤트를 필요로하는 수신자에게 전송 이벤트를 수신한 수신자가 이벤트를 처리하는 형태의 시스템 아키텍쳐 Event Driven Pattern - 특정 행동이 자동으로/순서에 따라 발생하는 것이 아닌 어떤 일에 대한 반응으로 동작하는 디자인 패턴 IO Event - 컴퓨터 회로를 구동시키기 위해 발생하는 일 ( ex) 마우스 클릭, 키보드 타이핑, 모바일 터치 등) IoT 기기 등의 센서로부터 유입되는 데이터 스트리밍..