분류 전체보기
-
org.springframework.core.io.Resource란 무엇인가 !!?자바웹프로그래밍/JAVA 2024. 7. 15. 22:02
org.springframework.core.io.Resource 인터페이스는 Spring 프레임워크에서 리소스 추상화를 제공하는 인터페이스입니다. 이 인터페이스는 파일 시스템, 클래스패스, URL 등 다양한 소스로부터 리소스를 쉽게 접근하고 읽을 수 있도록 합니다.주요 메서드Resource 인터페이스는 여러 메서드를 제공합니다. 그 중 주요 메서드는 다음과 같습니다:boolean exists(): 리소스가 존재하는지 확인합니다.boolean isReadable(): 리소스를 읽을 수 있는지 확인합니다.boolean isOpen(): 리소스가 현재 열려 있는지 확인합니다.URL getURL(): 리소스의 URL을 반환합니다.URI getURI(): 리소스의 URI를 반환합니다.File getFile():..
-
JVM의 메모리 영역에 대한 이해와 예시와 reflection의 이해자바웹프로그래밍/JAVA 2024. 7. 11. 13:52
Contents --> JVM의 메모리 영역은 각각의 역할이 있으며, 이를 이해하는 것은 Java 프로그램의 실행 방식을 이해하는 데 중요합니다. 각 메모리 영역의 역할과 이를 설명하기 위한 예제를 살펴보겠습니다. JVM 메모리 영역PC 레지스터 (Program Counter Register): 현재 실행 중인 JVM 명령의 주소를 가리킵니다. 각 스레드는 자신의 PC 레지스터를 가지고 있습니다.Java 스택 (Java Stack): 메서드 호출과 관련된 정보를 저장합니다. 각 스레드는 자신의 스택을 가지고 있으며, 각 스택 프레임은 메서드 호출, 지역 변수, 매개 변수, 그리고 연산 중간 결과를 포함합니다.네이티브 메서드 스택 (Native Method Stack): 네이티브 메서드 호출과 관련된 ..
-
jvm 클래스 로더 작동방식자바웹프로그래밍/JAVA 2024. 7. 11. 13:16
Contents --> JVM의 클래스 로더는 Java 애플리케이션에서 클래스를 메모리로 로드하고, 링크하고, 초기화하는 역할을 합니다. 이를 통해 필요한 클래스들이 적절히 사용될 수 있도록 합니다. 클래스 로더의 작동 방식을 이해하기 위해 다음과 같은 주요 단계와 구성 요소를 살펴보겠습니다 1. 클래스 로더의 유형JVM에는 세 가지 기본 클래스 로더가 있습니다:Bootstrap Class Loader: JVM의 핵심 클래스 로더로, JDK의 rt.jar와 같은 핵심 라이브러리를 로드합니다. 이는 네이티브 코드로 작성되어 있으며, JVM이 시작될 때 로드됩니다.Extension Class Loader: 확장 클래스 로더로, JRE의 lib/ext 디렉토리에 있는 클래스들을 로드합니다.Applicati..
-
쓰기락 for update 사용시 주의점 (mysql,postgresql)데이터베이스 2024. 7. 11. 09:49
FOR UPDATE를 사용할 때 조건절에 인덱스가 있다면 인덱스를 사용하여 조건에 맞는 행들을 찾고 그 행들에 대해 잠금을 겁니다. 따라서, 인덱스 스캔 조건에 맞는 모든 행에 잠금이 걸립니다. 이는 결과 집합의 크기와 상관없이 조건에 맞는 모든 행이 잠금이 걸리는 것을 의미합니다. MySQL 예시예를 들어, 다음과 같은 쿼리가 있다고 가정해봅시다: SELECT * FROM your_tableWHERE indexed_column = some_value AND another_column = another_valueFOR UPDATE; 여기서 indexed_column에 인덱스가 있고, another_column에는 인덱스가 없다고 가정합니다.인덱스가 있는 indexed_column을 사용하여 먼저 조건을..
-
java에서의 동시성 이슈 제어방법자바웹프로그래밍/JAVA 2024. 7. 10. 16:55
Contents --> 1.synchronized 키워드 사용2.Lock API 사용 (ReentrantLock 등)3.volatile 키워드 사용4.Atomic Classes (AtomicInteger, AtomicBoolean 등)5.Concurrent Collections (예: ConcurrentHashMap, CopyOnWriteArrayList 등)6.Executor Service와 Future 사용 1. synchronized 키워드 사용synchronized 키워드는 메서드 또는 블록 수준에서 동기화를 제공합니다. 특정 코드 블록에 동시에 하나의 스레드만 접근하도록 합니다. class Counter { private int count = 0; public synchroniz..
-
스핀락,뮤텍스,세마포에 대해 각각 정의 및 차이 with 예제 코드 java컴퓨터과학 2024. 5. 27. 11:04
Contents --> 1. 스핀락(Spinlock)정의스핀락은 락을 획득하기 위해 루프를 돌며(lock을 획득할 때까지) 락의 상태를 계속 확인하는 방식의 동기화 메커니즘입니다. CPU 사이클을 소모하면서도, 락을 빠르게 획득할 수 있을 때 유리합니다. 특히, 락이 짧은 시간 동안 점유될 때 유리합니다.특징바쁜 대기(busy-waiting)를 사용하여 CPU 사이클을 소모합니다.멀티코어 시스템에서 락을 빠르게 획득할 수 있을 때 유리합니다.오래 대기할 경우 성능 저하가 발생할 수 있습니다.import java.util.concurrent.atomic.AtomicBoolean;class Spinlock { private final AtomicBoolean lock = new AtomicBoolea..
-
[Spring 핵심 알기 - 4] ViewResolver란? - 수정카테고리 없음 2024. 5. 23. 17:36
Contents --> ViewResolver주로 뷰의 논리적 이름을 실제 뷰 객체로 매핑하는 역할을 합니다. 일반적으로는 서버 측 템플릿 엔진을 사용하여 HTML 페이지를 생성하는 데 주로 사용됩니다. 그러나 JSON과 같은 데이터 형식을 클라이언트에게 전달해야 할 때도 ViewResolver를 사용하여 JSON 형식의 데이터를 생성하고 클라이언트에게 전송할 수 있습니다. 이 과정은 다음과 같습니다. ViewResolver에서 json 데이터 처리방법클라이언트의 요청이 들어오면 DispatcherServlet이 해당 요청을 처리합니다.DispatcherServlet은 HandlerMapping을 통해 요청을 처리할 컨트롤러를 찾습니다.해당 컨트롤러의 메서드가 실행되어 데이터를 반환하면, Spring은..
-
[Spring 핵심 알기 - 2] HandlerMapping란? HandlerMapping 분석(with. DispatherServlet)Spring/Spring Core 2024. 5. 23. 16:48
Contents --> --> --> --> --> -->Sring MVC 구성도시작에 앞서...위 구성도에서 보듯 DispatcherServlet이 중심에서 컨트롤 하는것을 볼수있다.DispathcServlet을 모른다면 아래에 링크를 타고 공부하고 오자 2024.02.22 - [Spring] - [Spring 핵심 알기 - 1] DispatcherServlet 란? frontController 패턴 (with. 전자정부프레임워크 ) DispatchServlet은 요청에 대한 내용들을 처리할수있도록 구성을 정의 해놓았는데, DispatcherServlet.properties를 검색하면 아래와같이 설정된 내용들이 나온다. # Default implementation classes fo..