전체 글

1. 얕은 복사(Shallow Copy) 얕은 복사는 객체의 최상위 수준 필드만 복사한다.원시 타입 필드는 값이 복사되지만, 참조 타입 필드는 참조만 복사된다.새로운 객체를 생성하지만 내부 객체의 참조는 원본 객체와 공유한다. 1 - 1. 예시 - 얕은 복사public class ShallowCopyExample { public static void main(String[] args) { int[] originalArray = {1, 2, 3, 4, 5}; Product original = new Product("Laptop", 1000, originalArray); Product copy = original.shallowCopy(); System...
1. 개요2개의 스프링 컨테이너를 생성하고, 통신이 원활한지 확인한다. 2. service-bservice-a 보다 service-b를 먼저 작성하는 이유는 a가 b를 호출하는 구조이기 때문이다. 2 - 1. build.gradleplugins { id 'java' id 'org.springframework.boot' version '3.3.6' id 'io.spring.dependency-management' version '1.1.6'}group = 'com.study'version = '0.0.1-SNAPSHOT'java { toolchain { languageVersion = JavaLanguageVersion.of(17) }}configurations { compileOnly { extend..
1. 트랜잭션 격리수준(Transaction Isolation Level) 트랜잭션 격리수준은 동시에 여러 트랜잭션이 실행될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있도록 허용할지 말지를 결정하는 것이다. 격리 수준이 높아질수록 데이터의 일관성과 무결성은 보장되지만, 동시성과 성능은 떨어지게 된다. 데이터 정합성과 성능은 반비례 관계이다. 따라서, 각 애플리케이션의 요구사항에 맞는 적절한 격리 수준을 선택하는 것이 중요하다. 각 격리 수준은 특정 데이터 불일치 현상(Dirty Read, Non-Repeatable Read, Phantom Read)을 방지할 수 있다. 2. 트랜잭션 격리 수준 유형 트랜잭션 격리 수준은 READ UNCOMMITTED, READ COMMIT..
1. Docker란?Docker는 컨테이너 기반 가상화 플랫폼으로, 애플리케이션과 그 종속성을 격리된 환경인 컨테이너로 패키징하여 실행할 수 있게 ㅐ준다. 이를 통해 다양한 환경에서 애플리케이션을 일관되고 실행할 수 있으며, 개발 환경과 운영 환경 사이의 차이로 인한 문제를 줄일 수 있다. Docker는 가상 머신보다 가볍고 빠르며, 호스트 운영체제의 커널을 공유하여 자원을 효율적으로 활용한다. Docker를 사용하면 애플리케이션을 신속하게 구축, 테스트, 배포할 수 있으며, 특히 마이크로서비스 아키텍쳐와 같은 복잡한 시스템을 관리하는 데 유용하다. 2. Docker 주요 특징2 - 1. 컨테이너 기반 가상화도커는 컨테이너라는 경량화된 가상화 환경을 제공한다.컨테이너는 애플리케이션과 그 종속성을 포함하는..
데이터베이스 인덱스는 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 특정 컬럼에 대한 값과 해당 레코드의 위치를 매핑하여 빠른 데이터 접근을 가능하게 한다. 인덱스는 추가적인 저장 공간을 사용하지만, 대량의 데이터에서 검색 성능을 크게 개선한다. 인덱스는 ORDER BY, GROUP BY, WHERE 절의 효율적인 처리를 돕는다. 하지만 INSERT, UPDATE, DELETE 작업시 인덱스 갱신으로 인한 성능 저하가 발생할 수 있다. 1. 인덱스의 자료구조인덱스는 주로 해시 테이블과 B+Tree가 사용된다. 해시 테이블은 O(1)의 시간 복잡도로 빠른 검색이 가능하지만, 범위 검색에는 적합하지 않는다. B+Tree는 균형 잡힌 트리 구조로, O(log N)의 시간 복잡도를 가지며 범위 검색에 효율..
· MSA
1. 분산추적이란?분산 추적은 마이크로서비스 아키텍처와 같은 분산 시스템에서 요청의 전체 여정을 추적하고 모니터링하는 기술이다. 이 기술은 여러 서비스와 구성 요소를 거치는 요청의 경로를 시각화하고, 각 단계에서 소요된 시간과 발생한 오류를 식별한다. 분산 추적은 고유한 트레이스 ID를 사용하여 요청을 추적하며 각 작업 단위를 'Span'으로 표현한다. 이를 통해 개발자들은 성능 병목 현상을 파악하고, 오류의 근본 원인을 신속하게 찾아내며, 전체 시스템의 성능을 최적화할 수 있다. Zipkin과 같은 도구를 사용하면 이러한 분산 추적 데이터를 수집하고 시각화하여 효과적으로 분석할 수 있다. 2. 주요 개념2 - 1. Tracetrace는 하나의 요청이 시작부터 끝까지 각 서비스를 거치는 전체 흐름을 나타..
1. 일급 컬렉션(First-Class Collection)이 무엇인가요?일급 컬렉션(First-Class Collection)은 컬렉션 객체를 포장(wrap)하면서, 그 외 다른 멤버 변수가 없는 상태를 말한다. 즉, 컬렉션을 감싸고 있는 클래스로, 해당 클래스는 오직 하나의 컬렉션 필드만 가진다. 일급 컬렉션을 사용하면 컬렉션과 관련된 비즈니스 로직을 한 곳에서 관리할 수 있게 되고, 불변성을 보장하며, 비즈니스에 특화된 명확한 이름을 부여할 수 있어 검색이나 가독성을 높일 수 있다. 1 - 1. 예시아래와 같은 코드가 있다고 가정해보면,List names = new ArrayList();names.add("Alice");names.add("Bob");names.add("Charlie"); 아래와 같..
· MSA
1. Spring Cloud Config란?Spring Cloud Config는 분산 시스템에서 설정 정보를 중앙화된 외부 저장소에서 관리할 수 있게 해주는 Spring Cloud의 핵심 컴포넌트이다. Config Server는 Git, File System, Vault 등의 저장소에서 설정 정보를 가져와 각 마이크로서비스에 제공하며, 설정 변경시 서비스 재시작 없이 동적으로 적용이 가능하다. Config Client는 Config Server로부터 설정 정보를 가져와 사용하며, 이를 통해 모든 마이크로서비스의 설정을 한 곳에서 효율적으로 관리할 수 있다. 여러 환경(개발, 테스트, 운영)과 여러 서비스에 걸친 설정 관리를 단순화하고 일관성을 유지하는 데 도움을 준다. 2. 주요 기능2 - 1. 중앙 집..
Griotold
Griotold's Olive Oil