전체 글
-
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는 인덱스를 사용하는 쿼리에 대해 잠금을 걸기 때문에, 해당 인덱스를 사용하는 범위 내..
-
aws 보안그룹설정할떄 인바운드 규칙에 사용자 지정을 클릭하고 보안그룹을 넣는이유클라우드/aws 2024. 10. 16. 17:40
AWS 보안 그룹에서 인바운드 규칙을 설정할 때, 사용자 지정 옵션을 클릭하고 다른 보안 그룹을 지정하는 것은 특정 보안 그룹에 속한 인스턴스나 리소스로부터만 접속을 허용하겠다는 의미입니다. 이는 주로 AWS 네트워크 내에서의 접근을 제어할 때 사용되며, 보안 그룹 간의 트래픽 허용을 설정할 수 있습니다.자세한 설명:보안 그룹(Security Group):보안 그룹은 AWS에서 가상 방화벽 역할을 하며, 인스턴스(예: EC2, RDS 등)로 들어오거나 나가는 트래픽을 제어합니다.인바운드 규칙: 인스턴스로 들어오는 트래픽을 제어.아웃바운드 규칙: 인스턴스에서 나가는 트래픽을 제어.사용자 지정을 클릭하고 보안 그룹을 넣는 경우:인바운드 규칙에서 **"사용자 지정(Custom)"**을 선택하고 특정 보안 그룹..