전체 글
-
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 ..
-
Rows Removed by Join Filter ??란 무엇인가?데이터베이스/postgresql 2024. 10. 21. 16:30
PostgreSQL의 EXPLAIN ANALYZE 결과에서 조인 과정 중 필터링된 레코드 수를 나타내는 항목입니다. 이는 조인 필터가 어떤 역할을 하는지를 보여주는 부분으로, 조인을 수행할 때 특정 조건을 만족하지 않아 제외된 레코드들의 수를 의미합니다.1. Join Filter란?Join Filter는 조인할 때 조인 조건 외에 추가적으로 필터링을 적용하는 조건을 의미합니다. 조인 시 두 테이블에서 조인 조건을 만족하는지 여부를 평가한 뒤, 그 조건 외의 추가 조건에 따라 데이터를 더 걸러낼 수 있습니다.조인 조건: 테이블 간의 관계를 설정하는 기본 조건입니다. 예를 들어 ON a.id = b.a_id는 두 테이블을 연결하는 조인 조건입니다.조인 필터: 조인 후에 추가로 레코드를 걸러내는 조건입니다. ..
-
NL조인시 드라이빙테이블 100개 드리븐 1000개, 드라이빙테이블1000개 드리븐 100개가 성능 차이가 나는이유데이터베이스 2024. 10. 21. 16:16
겉으로 보기에는 두 경우 모두 비교 연산이 같은 수(100,000번)처럼 보이지만, 실제로는 성능 차이가 발생할 수 있습니다. 그 이유는 드라이빙 테이블이 먼저 읽힌 이후, 드리븐 테이블에서 데이터를 검색하는 방식과 그 과정에서의 인덱스 사용 여부에 있기 때문입니다. 이를 좀 더 자세히 설명해볼게요.1. Nested Loop Join의 실행 방식드라이빙 테이블: 조인 시 먼저 읽히는 테이블로, 바깥쪽 루프의 역할을 합니다.드리븐 테이블: 드라이빙 테이블의 각 레코드에 대해 조회를 수행하는 테이블로, 안쪽 루프에서 사용됩니다.2. 두 경우의 차이점두 가지 케이스를 다시 살펴볼게요:케이스 1: 드라이빙 테이블이 100개, 드리븐 테이블이 1,000개인 경우.드라이빙 테이블에서 100개의 레코드를 순차적으로 ..
-
mysql 에서 for update를 통해 lock을 걸경우와 postgres에서 걸경우 같을까?데이터베이스/postgresql 2024. 10. 18. 10:03
*MySQL (특히 InnoDB)**와 PostgreSQL는 행 잠금과 쓰기 락 처리 방식에서 차이가 있습니다. MySQL과 PostgreSQL은 모두 **MVCC (Multi-Version Concurrency Control)**를 사용하여 데이터의 일관성을 유지하면서 동시성을 처리하지만, 행 잠금(ROW-level locking) 방식에 차이가 있습니다.MySQL (InnoDB)에서의 행 잠금InnoDB는 인덱스를 사용한 쿼리에 대해 인덱스 기반의 잠금을 사용합니다. 즉, 특정 인덱스를 통해 WHERE 절에 의해 필터링된 모든 행에 잠금이 걸리며, 이 잠금은 다음과 같은 특성을 가집니다:인덱스 기반 락: InnoDB는 인덱스를 사용하는 쿼리에 대해 잠금을 걸기 때문에, 해당 인덱스를 사용하는 범위 내..