분류 전체보기 63

MCP Server 만들기

MCP Server 만들기https://docs.astral.sh/uv/getting-started/installation/ 들어가서 uv설치curl -LsSf https://astral.sh/uv/install.sh | sh맥 사용자의 경우 brew 사용하는게 좋음. (전역으로 설치가 안될 경우 brew 이용합시다)uv init test-mcp - 프로젝트를 생성cd test-mcp - 생성한 프로젝트로 이동uv venv - 가상 환경 설정source .venv/bin/activate - 가상 환경 활성화uv add "mcp[cli]" - mcp패키지 설치(cli옵션- cli도구 추가 옵션 추가)brew install node - 노드 설치mcp dev server.py - mcp 개발 모드 실행. 서..

AI 2025.10.19

[Spring Boot] Spring Boot의 멀티 스레드

Spring Boot의 멀티 스레드Spring Boot 환경에서 멀티 스레드 구현 방법만약 Spring Boot 프로젝트에서 특정 로직을 비동기적으로, 즉 별도의 스레드에서 실행해야 하는 요구사항이 있다면 어떤 방법들을 고려해볼 수 있을까요? 그리고 각 방법의 장단점은?Spring Boot 환경에서 멀티스레딩을 구현하는 방법은 크게 두 가지로 나눌 수 있습니다. 1. Java 표준 스펙을 직접 사용하는 방법Java ExecutorService: Java에서 제공하는 표준 스레드 풀 라이브러리입니다. Executors 팩토리 클래스를 통해 다양한 종류의 스레드 풀을 직접 생성하고 관리할 수 있습니다. CompletableFuture (Java 8+): 비동기 작업의 결과를 조합하거나, 여러 비동기 작업들을..

SpringBoot 2025.10.19

[Java] 런타임 데이터 영역(Runtime Data Area)

JVM이 OS위에서 실행되면서 할당받는 메모리 영역이 바로 런타임 데이터 영역(Runtime Data Arae) 입니다. 이 영역은 크게 5가지 조금 세분화하면 6가지 영역으로 나눌 수 있습니다. 스레드 관점 스레드(Thread)마다 하나씩 생성 PC 레지스터(PC Register) JVM 스택(JVM Stack) 네이티브 메서드 스택(Native Method Stack) 모든 스레드가 공유해서 사용 (☆GC의 대상) 힙(Heap) 메서드 영역(Method Area) 각 영역 저장 값 메서드 영역: 클래스, 메서드, 클래스 변수(static), 전역변수 힙 영역: new 연산자를 통해 생성된 객체(인스턴스) 스택 영역: 지역변수, 매개변수, 리턴값, 참조변수 각 영역 역할 PC 레지스터(PC Regist..

Java 2021.04.19

[Java] JVM 동작 원리

Java는 OS에 독립적인 특징을 가지고 있습니다. 어떤 OS든 Java가 설치되어 있다면 실행할 수 있다는 말입니다. 그게 가능한 이유는 JVM(Java Vitual Machine) 덕분입니다. 자바 코드 실행 과정(요약) 소스 코드 작성 컴파일러가 소스코드를 바이트 코드로 변환 (컴파일 타임) 바이트 코드를 클래스 로더에 전달 (이후로는 런타임) 클래스 로더는 바이트 코드를 런타임 데이터 영역(JVM 메모리)에 올림 실행 엔진이 JVM 메모리에 올라온 바이트 코드들을 명령어 단위로 실행 자바 코드 실행 과정(상세) 개발자가 자바 소스(.java) 작성 자바 컴파일러(javac.exe)가 자바 소스(.java)를 바이트 코드(.class)로 바꿔줍니다.(빌드) .class 파일: 컴퓨터가 읽을 수 없고..

Java 2021.04.19

[SpringBoot] Thymeleaf 사용

Spring Boot에 Thymeleaf 템플릿 엔진을 적용해 보겠습니다. Thymeleaf 란? 컨트롤러가 전달하는 데이터를 이용하여 HTML을 꾸밀수 있도록하는 뷰 템플릿(View Template)입니다. Thymeleaf 연동 및 설정 Dependency 추가 Gradle의 경우 build.gradle dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' ... } Maven의 경우 pom.xml ... org.springframework.boot spring-boot-starter-thymeleaf ... src/main/resources/application.properti..

SpringBoot 2021.04.19

[SpringBoot] Spring Data JPA

Spring Boot에서 JAP를 사용해 보겠습니다. JPA 란? JPA(Java Persistence API)는 Java를 이용해서 데이터를 관리(유지)하는 기법을 하나의 스펙으로 정리한 표준입니다. 자세한 것은 여기를 참조하세요. 사전 준비 ※ DataBase 연동 이후 작업을 하겠습니다. 자세한 설명은 여기를 참조하세요. JPA 연동 Dependency 추가 Gradle의 경우 build.gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' } Maven의 경우 pom.xml ... org.springframework.boot spring-boot-starter-data-j..

SpringBoot 2021.02.22

[JPA] JPA(Java Persistence API) 란

JPA에 대해 알아보겠습니다. ORM(Object-Relational Mapping) 이란? ORM은 객체지향과 관계형 데이터베이스를 매핑시킨다는 추상화된 개념입니다. JPA(Java Persistence API) 란? JPA는 Java를 이용해서 데이터를 관리(유지)하는 기법을 하나의 스펙으로 정리한 표준 JPA를 이용하면 다양한 데이터베이스에 종속적인 SQL문 없이 개발 가능 쉽게 말해 JAP는 ORM을 JAVA 언어에서 구현하기 위한 스펙 엔티티(Entity), 엔티티 매니저(EntityManager) 엔티티란? 데이터베이스상에서 관리하는 대상. '상품', '회사', '직원' 등을 예로 들 수 있습니다. JAP에서 '하나의 엔티티 타입을 생성한다' 라는 의미는 '하나의 클래스'를 작성한다는 의미입니..

JPA 2021.02.22

[SpringBoot] DataBase 연동

Spring Boot에 DataBase를 연동해 보겠습니다. 사전 준비 ※ Spring Starter Project를 만들어주세요. 자세한 설명은 여기를 참조하세요. ※ 사전에 dependency을 추가할 수 있습니다. ※ MariaDB에 다음과 같이 Database, User, Password, Privileges가 선행되어야 합니다. 자세한것은 Database, User 추가 - Privileges 부여를 참조하세요. - 값 Database todo User todo_usr password todo_pw Connection Pool 란 Pool에 Connection을 미리 만들어 두고 데이터베이스 접근시 Pool에 남아 있는 것 중 하나를 사용한 뒤 반환하는 기법입니다. DataSource 란 Jav..

SpringBoot 2021.02.20

[SpringBoot] 프로젝트 구조

Spring Boot 프로젝트 구조에 대해 알아보겠습니다. 프로젝트 구조(Project Structure) 프로젝트를 생성하면 기본적으로 다음과 같은 구조로 만들어집니다. (Eclipse에서 Spring Starter Project로 Maven 사용) 구조 설명 src/main/java: 프로젝트에서 사용하는 class, interface 파일을 모아둔 디렉토리 DemoApplication.java SpringApplication.run: 웹 애플리케이션을 실행하는 역할 @SpringBootApplication: 다음 세 가지 어노테이션으로 구성 @EnableAutoConfiguration: 스프링 부트 개발에 필요한 몇 가지 필수적인 설정들이 자동으로 완료되도록 도와줌 @ComponentScan: 자동..

SpringBoot 2021.02.20

[SpringBoot] 프로젝트 생성 및 실행

Spring Boot 프로젝트를 생성 및 실행 방법에 대해 알아보겠습니다. 프로젝트 생성 in Spring initializr https://start.spring.io/ 에 접속 환경 선택 및 입력 Project: 어떤 빌드 관리 도구를 이용한 프로젝트인지 선택 Language: 사용할 언어 Spring Boot: 프로젝트 버전 Group: 사용할 그룹. 일반적으로 도메인 Artifact: 산출물 이름. 일반적으로 프로젝트명 Name: 프로젝트 이름 Description: 프로젝트 설명 Package Name: 초기 소스들이 만들어질 기본 패키지명 Packaging: 패키징 방법 Java: 사용할 Java 버전 GENERATE IDE에서 실행시 압출 풀고 Import해서 사용 프로젝트 생성 in Ecl..

SpringBoot 2021.02.20