토이 프로젝트 3(Spring boot와 Fast API 연결하기)
·
카테고리 없음
연동하면서 있었던 문제점 CORS를 양쪽에서 풀어주어야 함.  1. CORS 문제의 원인CORS 문제는 기본적으로 서로 다른 도메인, 포트, 또는 프로토콜 간의 요청이 발생할 때 브라우저가 이를 보안 상 막으려 하기 때문에 발생합니다. 예를 들어:Spring Backend: http://localhost:8080FastAPI Backend: http://localhost:8000두 서버가 서로 다른 도메인/포트를 사용하므로, 브라우저에서 FastAPI가 Spring 서버에 요청을 보낼 때 CORS 문제가 발생할 수 있습니다.2. 해결 방법(1) Spring에서 CORS 설정Spring에서 CORS를 허용하려면 @CrossOrigin 애너테이션 또는 전역 설정을 추가해야 합니다.a. 특정 컨트롤러/메서드에..
JVM 밑바닥까지 파헤치기(저지연 컬렉터 / 세년도어, ZGC)
·
책/JVM 밑바닥까지 파헤치기
저지연 가비지 컬렉터: Shenandoah와 ZGC 비교 및 설명자바의 가비지 컬렉터는 끊김 없는 사용자 경험을 제공하기 위해 발전해 왔으며, Shenandoah와 ZGC는 대표적인 저지연(Low-Latency) 가비지 컬렉터입니다. 이들은 STW(Stop-The-World) 시간을 최소화하고, 대규모 힙 메모리를 효율적으로 관리하도록 설계되었습니다. 최신 JVM에서 성능 요구사항이 높은 애플리케이션에 적합한 선택지로 자리 잡고 있습니다.Shenandoah Garbage Collector1. 특징Low-Pause-Time GC:STW 시간을 최소화하기 위해 동시 압축(Concurrent Compaction) 방식 사용.힙 전체를 복사하지 않고, 필요한 객체만 이동하여 메모리를 정리.Region 기반 메모..
JVM 밑바닥까지파헤치기(패러렐, CMS, G1)
·
책/JVM 밑바닥까지 파헤치기
1. 패러렐 컬렉터 (Parallel Garbage Collector)특징:Throughput(처리량) 극대화에 중점을 둔 가비지 컬렉터.GC 작업을 여러 스레드로 병렬 실행하여 애플리케이션 실행 시간을 확보.Young Generation과 Old Generation 모두 병렬로 처리.작동 원리:Young Generation: Stop-The-World(STW) 상태에서 여러 스레드로 병렬 GC 수행.Old Generation: 병렬로 압축(Compaction) 수행.적용 사례:대규모 데이터 처리와 높은 처리량이 중요한 백엔드 서버.예: 배치 처리, 분석 시스템.장점:병렬 처리를 통해 높은 처리량을 유지.간단한 설정과 안정적인 성능.단점:STW 시간이 상대적으로 길어질 수 있음.낮은 대기 시간(Laten..
JVM 밑바닥까지 파헤치기(클래식 가비지 컬렉터)
·
책/JVM 밑바닥까지 파헤치기
컬렉션 알고리즘이 방법론이면, 가비지 컬렉터는 실무자 핫스팟 가상 머신의 '클래식' 가비지 컬렉터들 [신세대]시리얼파뉴페러렐 스캐빈지 [구세대]시리얼 올드CMS패러렐 올드 G1 시리얼 컬렉터 : 가장 기초적이고 오래된 컬렉터. '단일 스레드'로 동작. ※ 단일 스레드라는 단어에는 가비지 컬레션을 단순히 하나의 GC 스레드가 모두 처리한다는 의미는 X 스톱 더 월드 : 가비지 컬렉션이 시작되면 '회수가 완료될 때까지 다른 모든 작업 스레드가 멈춰있어야함' 이 스톱 더 월드의 시간을 줄이기 위해 패러렐 컬렉터, CMS, G1과 같은 더 정교하고 좋은 컬렉터가 등장. 파뉴 컬렉터 : 여러 스레들르 활용하여 시리얼 컬렉터를 병렬화한 버전스레드 회수에 멀티스레드를 이용한다는 점만 제외하면 시리얼 컬렉터와 완전히 ..
JVM 밑바닥까지 파헤치기(심벌참조)
·
책/JVM 밑바닥까지 파헤치기
심벌 참조(Symbolic Reference)란? 심벌 참조(Symbolic Reference)는 JVM이 클래스, 필드, 메서드 등의 이름을 문자열 등의 심벌(기호)로 저장하고, 필요할 때 실제 메모리 주소로 변경하는 방식을 의미한다.JVM은 프로그램 실행 중 직접 메모리 주소를 참조하지 않고, 심벌릭(기호적) 참조를 사용하여 바이트코드에서 클래스, 필드, 메서드 등을 식별한다.이는 클래스 로딩과 바인딩(바이트코드를 실행하는 과정)에서 중요한 역할을 한다.1. 심벌 참조 vs 직접 참조 (Direct Reference)심벌 참조 (Symbolic Reference)클래스 파일 내에 저장된 기호(Symbol) 형태의 참조런타임에서 실제 메모리 주소로 변환됨예: "java/lang/String", "toS..
JVM밑바닥까지 파헤치기(스레드 프라이빗 메모리)
·
책/JVM 밑바닥까지 파헤치기
JVM에서 스레드 프라이빗 메모리란?: JVM 내부에서 각 스레드가 독립적으로 사용하는 메모리 영역을 의미한다. 이 영역은 다른 스레드와 공유되지 않으며, 해당 스레드가 실행 될 때만 접근할 수 있다. 1. JVM 메모리 구조에서의 위치 JVM 메모리는 앞의 포스팅에서 설명했듯이 크게 다음과 같이 나눌 수 있다. 1)  메소드 영역[공유]2)  힙[공유]3)  스레드 프라이빗 메모리[비공유]스택(가상머신 스택)PC 레지스터네이티브 메서드 스택스레드 프라이빗 메모리는 위의 스택, PC 레지스터, 네이티브 메서드 스택으로 구성된다. 스택각 스레드는 자신만의 Java 스택을 가진다.메서드 호출 시 생성되는 지역 변수, 매개변수, 리턴 값, 연산 중간 결과 등을 저장.메서드가 호출될 때 스택 프레임이 생성되고,..
JVM 밑바닥까지 파헤치기 (자바 가상 머신 런타임 영역)
·
책/JVM 밑바닥까지 파헤치기
자바 가상 머신 (JVM) 런타임 메모리 영역자바 가상 머신(JVM)은 자바 프로그램 실행 중 필요한 메모리를 여러 영역으로 나누어 관리합니다. 각각의 메모리 영역은 특정 목적에 맞게 설계되었으며, 자바 애플리케이션의 효율적인 실행을 지원합니다.JVM 런타임 메모리 구조메서드(Method) 영역힙(Heap)자바 스택(Java Virtual Machine Stack)네이티브 메서드 스택(Native Method Stack)프로그램 카운터(Program Counter, PC)1. 메서드(Method) 영역역할:클래스 정보, 메서드 정보, 상수 풀(Constant Pool), 정적 변수(static 변수) 등을 저장.모든 스레드에서 공유되는 메모리 영역.내용:클래스 이름, 메서드 이름, 반환 타입 등 런타임 ..
머신러닝 교과서(머신 러닝의 작업 흐름)
·
카테고리 없음
머신러닝 처리 흐름 이해하기머신러닝은 데이터를 활용해 모델을 훈련시키고 이를 통해 예측이나 분류 등의 작업을 수행하는 기술입니다. 이 글에서는 머신러닝의 전반적인 처리 흐름을 단계별로 살펴보겠습니다.1. 문제 정의머신러닝 프로젝트의 시작은 해결하려는 문제를 정의하는 것입니다.목표: 분류, 회귀, 군집화 등예: 주택 가격 예측, 이메일 스팸 분류, 고객 세그먼트 나누기이 단계에서 문제 정의가 명확해야 이후 데이터 수집과 모델 설계가 올바르게 진행될 수 있습니다.2. 데이터 수집모델의 성능은 데이터의 품질과 양에 크게 좌우됩니다.데이터 수집 방법:데이터베이스에서 쿼리로 추출웹 스크래핑공개 데이터셋 활용데이터 형태: CSV 파일, 데이터베이스, 이미지, 텍스트 등 다양한 형태가 존재합니다.3. 데이터 전처리수..
JVM 밑바닥까지 파헤치기 2장
·
책/JVM 밑바닥까지 파헤치기
런타임 데이터 영역: 자바 가상 머신은 자바 프로그램을 실행하는 동안 필요한 메모리를 몇 개의 데이터 영역으로 나눠 관리함. 프로그램 카운터 :작은 메모리 영역, 바이트코드 줄 번호 표시기자바 가상 머신 명세에서 OutOfMemoryError 조건이 명시되지 않은 유일한 영역자바 가상 머신 스택 :'스레드 프라이빗'하며, 연결된 스레드와 운명을 같이 함.스택 프레임을 만들어 지역 변수 테이블, 피연산자 스택, 동적 링크, 메서드 반환값 등의 정보를 저장.지역 변수 테이블에는 기본 데이터 타입, 객체 참조, 반환 주소 타입을 저장네이티브 메서드 스택 :가상 머신 스택은 자바 메서드(바이트코드)를 실행할 때 사용. 네이티브 메서드 스택은 네이티브 메서드를 실행할 때 사용자바 힙 : 자바 애플리케이션이 사용할..
머신러닝 교과서(비지도 학습)
·
카테고리 없음
비지도 학습이란?비지도 학습(Unsupervised Learning)은 머신러닝에서 정답(레이블, Y)이 없는 데이터를 기반으로 모델을 학습시키는 방법이다. 주어진 데이터의 숨겨진 구조, 패턴, 또는 관계를 찾아내는 데 초점을 맞춘다. 비지도 학습은 주로 데이터 분류, 차원 축소, 데이터 시각화 등에 사용된다.비지도 학습의 특징정답 레이블 없음:학습 데이터에 정답(레이블, Y)이 존재하지 않는다.모델이 데이터를 보고 스스로 패턴을 학습한다.패턴 발견:데이터의 군집(Cluster)을 형성하거나, 특성(Feature) 간의 관계를 분석한다.활용 목적:데이터의 숨겨진 구조를 파악하거나, 데이터의 차원을 줄여 시각화 및 분석을 용이하게 만든다.비지도 학습의 주요 유형1. 군집화(Clustering)군집화는 데이..