1. JDK와 JRE1.1. JDK(Java Development Kit) 는 ‘자바 개발 키트’의 약자이다. JDK는 자바 개발할 때 필요한 컴파일러(javac)나 자바콘솔, javadoc, 등과 같은 키트(kit)들을 포함하고 있어서 프로그램을 생성하고 컴파일을 할 수 있다. 1.2. JRE(Java Runtime Environment) 는 ‘자바 실행 환경’의 약자이다. 자바로 만들어진 프로그램은 JRE가 있어야 기동이 가능한데, JRE는 자바 가상머신(Java Virtual Machine) 과 자바 클래스 라이브러리(Java Class Library), 자바 명령(Java Command)를 포함한 자바 실행에 필요한 패키지를 가지고 있다. 2. JVMJava Virtual Machine(자바 가상..
전체 글
매일매일 부딪히고, 체득하며 배우는 개발 블로그입니다.병목현상(Bottleneck)과 해결 방안1. 병목현상(Bottleneck)과 해결 방안1.1. 병목현상이란? 병목현상(Bottleneck)은 시스템 또는 애플리케이션 전체의 처리 속도와 성능을 제한하는 특정 지점이나 구성 요소를 의미한다. 이는 마치 병의 목이 좁아 전체 액체 흐름을 저해하는 것과 유사한 원리로, 일부 컴포넌트의 과도한 리소스 소비 또는 비효율성으로 인해 전체 시스템의 성능이 저하되는 상황을 가리킨다.시스템 전반이 빠르게 작동하더라도, 병목이 발생한 구간의 처리 속도에 의해 전체 성능이 제한되며, 이는 사용자의 경험과 시스템 안정성에도 직결된다.1.2. 병목현상의 주요 원인 및 사례병목은 주로 하드웨어 자원, 소프트웨어 아키텍처, 코드 구현 방식 등 다양한 요인으로 인해 발생할 수 있으..
1. 복잡도1.1. 시간 복잡도1.1.1. 빅오 표기법시간 복잡도란 "입력 크기에 대해 어떠한 알고리즘이 실행되는 데 걸리는 시간"을 의미한다.빅오 표기법은 입력 범위 n을 기준으로 실행되는데 가장 오래 걸리는 시간(최악의 경우)을 의미한다. O(n**2) 1.1.2. 시간 복잡도의 존재 이유효율적인 코드로 개선하기 위해 알고리즘의 수행시간을 측정하여 비교하기 위함이다. 1.2. 공간 복잡도공간 복잡도는 프로그램을 실행시켰을 때 필요로하는 메모리 공간의 양을 의미한다. int a[1004]; int는 4byte를 차지하는데, 이때 배열 크기인 1004*4byte가 필요하게 된다. 1.2.1. C언어의 자료형1.2.2. JAVA의 자료형 2. 선형 자료 구조선형 자료 구조란 요소가 일렬로 나열되어있는 자료..
1. 데이터베이스 기본1.1.1 Data란💡 관찰의 결과로 나타난 정량적 혹은 정성적인 실제 값을 의미한다. 예) 에베레스트의 높이: 8848m 1.1.2. Information이란💡 데이터를 기반으로 하여 의미를 부여한 것이다. 예) 에베레스트는 세계에서 가장 높은 산이다. 1-2. Database1.2.1. Database란💡 한 조직에 필요한 정보를 여러 응용 시스템에서 공용할 수 있도록 논리적으로 연관된 데이터를 모으고, 중복되는 데이터를 최소화하여 구조적으로 통합/저장해 놓은 것이다. 구조화된 데이터의집합이므로 컴퓨터에서 쉽게 접근, 관리, 업데이트할 수 있다. 1.2.2. Database의 정의운영 데이터(Operational Data): 조직의 목적을 위해 사용되는 데이터공용 데이터(S..
int fd = open("data.txt", O_RDONLY); // 파일 열기read(fd, buf, 100); // 파일 읽기write(fd, buf, 100); // 파일 쓰기unlink("data.txt"); // 파일 삭제1. 운영체제와 컴퓨터1.1. 운영 체제의 역할과 구조1.1.1. 운영 체제의 역할1. CPU 스케줄링과 프로세스 관리: 프로세서에 CPU 할당 및 반환, 프로세서 생성 및 삭제2. 메모리 관리: 프로세서에 메모리 할당 관리3. 디스크 파일 관리: 보관 방법 관리4. I/O 디바이스 관리: 마우스, 키보드와 컴퓨터 간 데이터 송수신 관리 드라이버: 하드웨어를 제어하는 소프트웨어 ..
1. 네트워크의 기초1.1. 네트워크란?네트워크는 컴퓨터 등의 장치들이 통신 기술을 이용하여 구축하는 연결망을 지칭하는 용어이자네트워크란 노드(node)와 링크(link)가 서로 연결되어 있거나 연결되어 있지 않은 집합체를 의미한다. 노드: 서버, 라우터, 스위치 등 네트워크 장치를 의미.링크: 노드간 연결된 유선 또는 무선을 의미1.2. 처리량과 지연 시간처리량: 링크를 통해 전달되는 단위 시간당 데이터 양을 말한다. 단위로는 bps(bits per second) 처리량은 사용자들이 많이 접속할 때마다 커지는 트래픽, 네트워크 장치 간의 1. 대역폭, 네트워 크 중간에 발생하는 2.에러, 장치의 3. 하드웨어 스펙에 영향을 받는다. +a) 용어정리대역폭: 주어진 시간 동안 네트워크 연결을 통해 흐를 ..
1. RAG의 기초RAG(Retrieval Augmented Generation,검색 증강 생성): 환각 증상 해결을 위해 고안 LLM에게 어떤 질문을 할 때, 이에 힌트가 될만한 문장을 함께 넣어 줌으로써, 환각 현상 방지 RAG는 문서를 숫자로 변환하여 저장하는 인덱싱, 검색하고 답변을 생성하는 검색/생성 두가지 구조로 나뉜다. 2. RAG 고급 기법2.1. 다중 재정렬, MultiQueryRetriever=사용자 질문의 의도를 LLM이 이해하여 이를 여러 질문으로 재생성2.2 컨텍스트 재정렬, Long-Context ReorderLLM의 컨텍스트 사이즈가 늘어나며, 긴 입력이 가능해졌지만 중간 문서는 잘 찾지 못하는 문제가 있다.문장의 앞, 뒤에 따라서도 정확도(Accuracy)가 달라진다. 2.3..
1. FastAPI 기초와 RESTful API 설계1.1. Rest API웹 서비스에서 자원을 요청하고, HTTP 메서드를 활용해 자원에 대한 행동을 표현하는 표준 인터페이스1.2. FAST APIFAST API는 파이썬의 API를 빌드하기 위한 웹 프레임워크이며, NodeJS와 GO와 대등할 정도로 성능이 매우 높다. 현재로서는 사용가능한 파이썬 프레임 워크중에 가장 빠르다. https://fastapi.tiangolo.com/ FastAPIFastAPI framework, high performance, easy to learn, fast to code, ready for productionfastapi.tiangolo.com 1.2. UvicornFastAPI는 Python으로 작성된 고성능 웹 ..