전체 글
-
쓰기락 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..
-
X-Aiz-Signature-V1란? X-Aiz-Signature-V1 를 이용한 API 통신 보안기능 개발Spring/Spring 개발 예제 2024. 5. 23. 15:59
Contents --> X-Aiz-Signature-V1 HTTP 요청 헤더로, 주로 API 통신에서 사용되는 보안 기능을 담당합니다. 이러한 서명 헤더는 데이터의 무결성과 출처의 신뢰성을 확인하기 위해 디지털 서명을 포함하는 경우가 많습니다. 주요 용도인증 및 인가:요청을 보낸 사람의 신원을 인증합니다.전송 중에 요청이 변경되지 않았음을 확인합니다.데이터 무결성:전송된 데이터가 중간에 변경되지 않고, 원본 그대로 도착했음을 보장합니다.재전송 방지:서명에 타임스탬프나 고유 식별자를 포함하여 동일한 요청이 여러 번 전송되는 재전송 공격을 방지합니다.일반적인 구현 방식서명 생성:요청을 보내는 쪽에서 비밀 키를 사용해 서명을 생성하고, 이를 X-Aiz-Signature-V1 헤더에 포함합니다.주로 HMAC..
-
JSON 마셜링/언마셜링이란?컴퓨터과학 2024. 5. 23. 15:41
Contents --> JSON 마셜링/언마셜링이란?**JSON 마셜링(Marshalling)**과 **언마셜링(Unmarshalling)**은 데이터를 객체와 JSON 포맷 사이에서 변환하는 과정입니다.마셜링(Marshalling): 자바 객체를 JSON 문자열로 변환하는 과정.언마셜링(Unmarshalling): JSON 문자열을 자바 객체로 변환하는 과정.이러한 변환을 통해 자바 객체를 JSON 형식으로 외부 시스템에 전달하거나, JSON 형식의 데이터를 자바 객체로 변환하여 사용하게 됩니다. 주요 라이브러리자바에서 JSON 마셜링/언마셜링을 수행하는 대표적인 라이브러리로는 다음과 같은 것들이 있습니다:Jackson: 가장 널리 사용되는 JSON 처리 라이브러리 중 하나.Gson: Googl..
-
컨슈머 스레드(Consumer Thread)와 프로듀서 스레드(Producer Thread)컴퓨터과학 2024. 5. 23. 11:09
Contents --> 컨슈머 스레드(Consumer Thread)와 프로듀서 스레드(Producer Thread)란 멀티스레딩 환경에서 자주 사용되는 개념입니다. 이 개념들은 주로 생산자-소비자 문제(Producer-Consumer Problem)라는 고전적인 동시성 문제를 해결하는 데 사용됩니다.이유와 필요성자원 효율적인 사용:프로듀서 스레드와 컨슈머 스레드를 통해 작업을 분리함으로써 자원을 보다 효율적으로 사용할 수 있습니다. 예를 들어, 데이터 생성과 데이터 처리를 동시에 수행함으로써 시스템의 자원 활용도를 높일 수 있습니다.병렬 처리:멀티스레딩을 통해 여러 작업을 동시에 수행할 수 있습니다. 프로듀서 스레드가 데이터를 생성하는 동안 컨슈머 스레드는 데이터를 처리할 수 있어 전체 시스템의 처..