전체 글 (186) 썸네일형 리스트형 [260330월] @ExceptionHandler 어노테이션은 무엇인가요? Spring MVC에서 컨트롤러나 전역 예외 처리를 위한 @ControllerAdvice클래스의 메서드에서 발생하는 예외를 처리하는데 사용> 특정 예외를 처리하는 메서드를 지정하거나 메서드의 파라미터로 처리할 예외를 설정할 수 있다 어떤 방식으로 동작?Spring MVC애플리케이션에서 예외 발생DispatcherServlet이 적절한 HandlerExceptionResolver를 찾아 예외 처리 (기본적으로 3가지 있고 우선순위에 따라 처리) 1순위가 @ExceptionHandler에 등록되었는지 확인. 처리할 수 없으면 다음 리졸버로 넘어감 특징 : WAS로 예외가 던져지지 않고 직접 처리된다는 것. > 예외 발생 시, 적절한 방법으로 처리되어 사용자에게 진화적인 에러 메시지를 제공하거나 로깅 등의 .. [260327금] @Value 어노테이션 사용 시 주의할 점을 설명해주세요 설정 파일에 설정한 값을 주입할 수 있는 어노테이션 주의할 점1. 주입 시점 - 대상 컴포넌트가 스프링 빈으로 등록되고 의존 관계를 주입할 때 동작. 따라서 환경 변수를 주입받는 대상 클래스에 @Componant어노테이션을 붙여주지 않는다면 해당 클래스는 컴포넌트 스캔에 대상이 되지 않아 스프링 빈으로 등록되지 않고, @Value어노테이션 또한 동작하지 않음. 2. 적절한 주입 방식 선택- @Value 어노테이션을 사용할 때도 필드 주입, 생성자 주입, setter주입 등의 방식 사용할 수 있음. 3. 프로퍼티 파일의 경로와 스코프 확인 [260326목] RAID 기술에 대해서 설명해주세요 수 많은 데이터들을 안전하게 저장하거나 성능을 높이기 위해 여러 하드 디스크나 SSD를 마치 하나의 장치처럼 사용하는 기술 RAID-0스트라이핑 방식데이터 분산 저장 -> 저장된 데이터를 읽고 쓰는 속도가 빨라짐 RAID-1미러링 방식복사본 구성RAID-0에 비해 쓰기 속도가 느림 RAID-4복사본을 만드는 대신 오류를 검출하고 복구하기 위한 정보를 저장한 장치를 둠새로운 데이터가 저장될 때마다 패리티 저장 디스크에도 데이터를 써야 하므로 병목 현상이 발생할 수 있음 RAID-54의 병목 현상을 극복하기 위해 패리티 정보를 분산하여 저장 RAID-6패리티 정보를 두 개 저장 [260325수] OSIV(Open Session In View) 옵션에 대해서 설명해주세요 영속성 컨텍스트를 뷰까지 열어둔다는 의미이다. 영속성 컨텐스트가 살아있으면 엔티티는 계속 영속 상태를 유지할 수 있어서 뷰에서도 지연 로딩을 사용할 수 있다. OSIV ON vs OFF 비교 OSIV ON (기본값 true)OSIV OFFSession 범위요청 전체트랜잭션 범위만Lazy 로딩 위치Controller, View 어디서든 가능Service 안에서만 가능장점편리함DB 커넥션 반환이 빠름단점DB 커넥션을 오래 붙잡음Lazy 로딩 위치 제한Session이 빨리 닫히면 DB 커넥션 풀에 커넥션이 빨리 반환되는 건 좋음.근데 Controller에서 Lazy 로딩을 쓰던 코드가 전부 예외를 터뜨림그래서 OSIV OFF 시에는 Service 계층에서 미리 다 로딩해서 DTO로 변환해서 반환하는 패턴을 .. [260324화] 헬스체크에 대해서 설명해주세요 헬스체크는 현재 서버의 상태가 정상인지 파악하는 것API엔드포인트를 호출하거나 특정 포트로 TCP연결을 시도, 스프링 액추에이터를 활용할 수 있음. 필요성은?서버가 헬스체크 기능을 제공하면 최신 코드를 배포할 때 신규 배포가 정상적으로 이뤄졌는지 확인 가능, 장애를 감지하여 개응할 수 있음. 장애 대응의 예시로 로드밸러서가 두 대의 서버를 바라보고 있다고 할 때, 한 서버가 헬스체크에서 비정상으로 판단되면 트래픽 분산 대상에서 제외하고, 이루 b서버로만 요청을 전달할 수 있다. [260323월] 레이어드 아키텍처란 무엇인가요? 레이어드 아키택처(Layered Architecture)란, 소프트웨어를 관심사별로 여러 계층으로 나누어 수직적으로 배열한 것관심사란? 유사한 책임들을 의미한다. ex. 데이터베이스 접근 관련 대표적인 구성으로 3가지 레이어가 존재한다. 1. 표현 계층 : 사용자 입력 처리2. 도메인 계층 : 비즈니스와 관련된 로직 수행3. 데이터 소스 계층 : 데이터에비스 접근 및 데이터 조작과 관련된 작업을 수행 싱크홀 안티 패턴이란?일반적으로 레이어드 아키텍처에서 요청은 상위 데이어에서 중간 레이어를 거쳐 하위 레이어로 전달된다. 이때, 중간 레이어는 아무 일도 하지 않음에도 불구하고 요청을 무작정 중간 레이어를 통과시키는 것을 싱크홀 안티 패턴이라 한다. > 불필요한 코드 작성, CPU 및 메모리 자원 낭비> 일.. [260320금] 싱글턴 패턴이란 무엇인가요? 싱글턴 패턴(Singleton Pattern)이란, 생성자를 여러 차례 호출해도 실제로 생성되는 객체를 하나로 유지하는 것이다. 객체가 최초로 생성된 이후에 생성자나 객체 생성 메서드는 기존에 만들어진 객체를 반환한다. public class Singleton { private static final Singleton INSTANCE = new Singleton(); // 생성자 호출 제한 private Singleton() { ... } public static Singleton getInstance() { return INSTANCE; }} 장점1. 하나의 객체를 여러 상황에서 재사용 > 메모리 낭비 방지2. 여러 다른 객체가 하나의 인스턴스에 쉽게 접근 가.. [260319목] 어떤 이유로 코루틴을 사용한 작업 처리가 기존 스레드 방식보다 가벼운지 설명해주세요 * 코루틴(Coroutines) : 코틀린에서 제공하는 기능으로 비동기 작업을 효율적으로 처리하기 위해 설계된 경량화된 동시성 처리 방식 - 작업을 일시 중단(suspend)하고 나중에 재개할 수 있으며 매우 적은 자원을 사용 - I/O작업이 많은 시스템에서 특히 효과적 - 협력적 멀티태스킹을 지원하여 코루틴 자체가 자발적으로 작업을 일시 중단하고 다른 작업에 CPU점유를 넘김 스레드코루틴메모리 사용량 차이자체 스택 메모리를 필요로 함JVM에서 기본적으로 1MB 스택 할당스레스 생성 ~ 종료될때까지 유지스레드 내에서 실행자체 스택 X컨텍스트 스위칭 비용OS수준CPU 레지스터, 메모리 맵 등의 상태를 저장하고 복원하는 비용 발생코루틴 간 전환은 OS개입 없이 사용자 공간(user space)에서 발.. 이전 1 2 3 4 ··· 24 다음