전체 글
-
비관적 락(Pessimistic Lock)과 낙관적 락(Optimistic Lock) 차이 with JPA자바웹프로그래밍/JPA 2024. 12. 18. 16:07
1. 비관적 락(Pessimistic Lock)특징:데이터에 대한 충돌이 빈번할 것으로 예상될 때 사용하는 방법.데이터가 다른 트랜잭션에 의해 변경되지 않도록 **락(Lock)**을 이용해 강제적으로 제어.데이터에 접근하려는 시점에 바로 락을 걸어서 다른 트랜잭션이 데이터를 읽거나 수정하지 못하게 한다.데이터의 일관성을 보장하지만, 성능에 영향을 줄 수 있음.장점:데이터 충돌 가능성을 완벽히 방지.데이터의 신뢰성이 중요하거나 다수의 사용자 간 충돌이 예상될 때 적합.단점:락을 사용하기 때문에 성능이 저하될 가능성이 있음.데드락(Deadlock) 상황이 발생할 수 있음.JPA에서의 사용: JPA에서는 @Lock 어노테이션과 엔티티 매니저의 lock() 메서드를 통해 비관적 락을 구현합니다. @Lock(Lo..
-
자바의 타입 시스템에서 참조 타입과 원시 타입(또는 기본형 타입)을 구분한다는것은 무엇을 의미하는가?자바웹프로그래밍/JAVA 2024. 12. 5. 15:35
1. 원시 타입 (Primitive Types)원시 타입은 자바에서 제공하는 기본 데이터 타입입니다. 원시 타입 변수는 값을 직접 저장합니다. 이러한 변수는 메모리 상에 값을 직접 저장하며, 값 자체를 다룹니다. 자바에서 원시 타입에는 다음과 같은 데이터 타입들이 있습니다:int (정수)char (문자)boolean (참/거짓)float, double (실수)byte, short, long (정수 타입의 다른 크기들)원시 타입 변수의 동작:원시 타입의 변수는 값 자체를 저장하고, == 연산자로 비교할 때 값이 같으면 true를 반환합니다.원시 타입 변수는 스택(stack) 메모리에 저장됩니다int x = 5;int y = 5;System.out.println(x == y); // true (값이 같음)..
-
스프링 AOP에서 "프록시를 거친다"는 것은 무슨뜻일까? AOP @Transacitonal 원리Spring/Spring Core 2024. 12. 3. 10:32
스프링 AOP에서 "프록시를 거친다"는 것은, 스프링이 **프록시 객체(Proxy Object)**를 생성하여 메서드 호출을 가로채고, AOP 로직(Advice)을 실행한 후 실제 객체의 메서드를 호출하는 과정을 의미합니다.프록시의 개념프록시는 객체를 대신해서 동작하는 중간 대리자 역할을 합니다. 스프링 AOP는 프록시 패턴을 사용하여, 대상 객체의 메서드 호출을 가로채고, AOP로 정의된 부가 작업(예: 로깅, 트랜잭션 관리)을 실행합니다. 프록시가 생성되는 과정빈 등록 시 프록시 생성:스프링 컨테이너는 빈(bean)을 등록할 때, 해당 빈에 AOP가 적용되어야 하는지 확인합니다.AOP 설정이 적용된 경우, 원래의 빈 대신 프록시 객체를 생성합니다.프록시 객체의 역할:프록시는 실제 객체를 감싸고 있으며..
-
Solana 시스템 프로그램을 통해 계정 A에서 B로 솔라나를 전송하는 과정블록체인/Solana 2024. 11. 25. 23:44
1. Sender Wallet Account (보내는 사람의 지갑 계정)이건 돈을 보내려는 사람의 지갑이에요. 여기에는 솔라나(SOL)가 들어있고, 이 지갑을 통해 다른 사람에게 돈을 보낼 수 있어요. 보내는 사람은 **트랜잭션(거래)**을 만들어 이체를 요청하게 돼요.2. Transaction (트랜잭션, 거래)트랜잭션은 마치 "돈을 보내주세요!"라고 적힌 편지와 같아요. 이 편지는 어떤 내용을 담고 있냐면:Message (메시지): "누구에게 얼마를 보낼 건지" 같은 중요한 정보들이 여기에 들어가요.Instructions (지시사항): "어떻게 돈을 보낼지"를 적어놨어요. 예를 들어, 시스템 프로그램을 사용해서 돈을 보내라는 지시가 포함돼요.Recent Blockhash (최근 블록해시): 이건 현재..
-
List<MultipartFile> 가 톰캣서버,스프링에서 읽어드리는 과정Spring 2024. 11. 12. 22:52
1. 클라이언트와 서버의 연결 및 요청 전송클라이언트가 500MB 비디오 파일을 서버에 업로드할 때, 보통 HTTP POST 요청을 통해 파일 데이터를 전송합니다. 이 과정에서 클라이언트와 서버 간에 TCP 연결이 설정됩니다.TCP 연결 수립 (3-way handshake):클라이언트와 서버는 서로 TCP 연결을 설정하기 위해 3-way handshake를 수행합니다.이 과정에서 클라이언트는 서버에 SYN 패킷을 보내고, 서버는 ACK 패킷으로 응답하여 연결이 설정됩니다.HTTP POST 요청 시작:연결이 설정된 후, 클라이언트는 HTTP POST 요청의 헤더를 먼저 전송합니다. 헤더에는 파일의 메타데이터(예: 파일명, 크기, MIME 타입 등)가 포함됩니다.서버는 클라이언트의 헤더 정보를 읽고, 그다음..
-
스프링에서 AOP(Aspect-Oriented Programming)를 사용하여 개발된 부분카테고리 없음 2024. 11. 11. 09:45
스프링에서 AOP(Aspect-Oriented Programming)를 사용하여 개발된 부분은 주로 횡단 관심사(Cross-Cutting Concern)를 처리하는 기능들입니다. 다음은 스프링에서 AOP를 사용하여 구현된 대표적인 기능들입니다. Cross-Cutting Concern이란?Cross-Cutting Concern(횡단 관심사)은 소프트웨어 개발에서 애플리케이션의 주요 기능과는 별개로, 여러 모듈이나 클래스에 걸쳐 공통적으로 필요한 부가적인 기능을 말합니다. 이 기능들은 비즈니스 로직과는 구분되지만, 애플리케이션 전반에 걸쳐 일관되게 적용되어야 하기 때문에 각 모듈에 중복되어 나타나기 쉽습니다.예를 들어볼까요?애플리케이션을 개발할 때, 주로 비즈니스 로직이 주요 관심사(Core Concern..
-
Spring framework에서 사용하는 디자인 패턴Spring 2024. 11. 11. 09:37
스프링 프레임워크는 다양한 디자인 패턴을 활용하여 개발자가 보다 효율적이고 유지보수하기 쉬운 애플리케이션을 개발할 수 있도록 돕습니다. 스프링에서 자주 사용되는 주요 디자인 패턴과 이를 사용하는 예시는 다음과 같습니다.1. 싱글톤 패턴 (Singleton Pattern)설명: 싱글톤 패턴은 특정 클래스의 인스턴스를 하나만 생성하여, 모든 클라이언트가 동일한 인스턴스를 공유하도록 보장합니다. 객체 생성 비용이 높은 경우나 상태를 공유해야 할 때 유용합니다.스프링에서의 사용: 스프링은 기본적으로 빈을 싱글톤으로 관리합니다. 애플리케이션 컨텍스트가 로드될 때 각 빈의 인스턴스를 하나만 생성하여 재사용합니다. 이로 인해 애플리케이션 성능과 메모리 사용을 최적화할 수 있습니다.2. 팩토리 패턴 (Factory P..
-
상관 서브쿼리 (Correlated Subquery)란? 종류들데이터베이스 2024. 10. 22. 11:51
메인 쿼리의 결과 개수만큼 서브 쿼리가 실행되는 경우는 **상관 서브쿼리(Correlated Subquery)**일 때 주로 발생합니다. 상관 서브쿼리는 메인 쿼리의 각 행에 대해 서브쿼리가 반복적으로 실행되는 구조를 가지므로, 메인 쿼리의 결과가 많아질수록 서브쿼리 실행 횟수도 그만큼 늘어납니다. 1. 상관 서브쿼리 (Correlated Subquery)상관 서브쿼리는 메인 쿼리의 각 행에 의존해서 값을 계산하는 쿼리입니다. 예를 들어, 아래와 같은 쿼리가 있습니다: SELECT a.id, (SELECT COUNT(*) FROM orders o WHERE o.user_id = a.id) AS order_countFROM users a; 이 경우 users 테이블의 각 행마다 orders ..