스프링 어플리케이션에서 필터(Filter)와 인터셉터(Interceptor)의 차이와 각각의 예외처리는 어떻게 이뤄지는지 정리하고자 글을 쓴다. 우선 필터와 인터셉터가 웹 어플리케이션에서 어디에 위치하는지 어떻게 동작하는지 살펴보고, 이 둘은 어떤 차이가 있으며 어떻게
힙 덤프 분석은 프로그램이 실행 중인 동안 힙(Heap) 영역에 할당된 객체의 메모리 상태를 분석하는 과정이다. 힙 덤프는 힙 영역에 있는 모든 객체의 정보를 이진 형태로 저장한 것으로, 일종의 메모리 스냅샷이라고 볼 수 있다.웹 어플리케이션이 실행되는 동안 할당된 객
1. 피보나치 수열 수학에서 피보나치 수는 첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열이다. 처음 여섯 항은 각각 1, 1, 2, 3, 5, 8이다. 2. 배열을 이용하여 구현 (1) n이라는 수를 입력받고 n개의 피보나치 수열을 출
배열은 컴퓨터 과학에서 가장 기초적인 자료구조이다. 일련의 데이터 요소를 순서대로 저장하는 선형 자료구조로, 동일한 자료형의 요소들이 연속된 메모리 공간에 저장된다. 배열은 인덱스를 사용하여 각 요소에 접근할 수 있고 각 요소는 고유한 인덱스 값을 가지고 있다. 배열의
Redis는 메모리 기반의 데이터 저장소이다. 데이터를 저장하고 불러오는 속도가 매우 빠르기 때문에 캐싱, 세션 관리, 메시지 브로커, 대기열 등 다양한 용도로 사용된다.Redis는 NoSQL 데이터베이스이며 Key-Value 저장소 모델을 따른다.Redis는 인메모리
NoSQL은 Not Only SQL의 약자로, 관계형 데이터베이스가 아닌 다른 형태의 데이터베이스를 의미한다. 즉, 관계형 데이터 모델을 지양하고 대량의 분산 데이터를 저장하고 조회하는 데에 특화되어 있으며 스키마 없이 사용 가능하거나 유연한 스키마를 제공하는 저장소이
ELB(Elastic Load Balancing)는 AWS가 제공하는 로드밸런서이다. 로드밸런서는 여러 대의 서버나 네트워크 장치에 대한 부하(Load)를 분산하는 장치나 서비스를 말한다. 일반적으로 웹 서버를 비롯한 여러 서버들이 가지고 있는 시스템에서 사용된다. 서
Elastic IP(탄력적인 IP) 주소는 AWS가 제공하는 public IPv4 주소이다. EC2 인스턴스는 정지 후 재시작하면 public IP 주소가 바뀌게 된다. 서비스를 운영 중인 상황에서 public IP가 계속해서 바뀌는 건 서버를 운영할 수 없다.최초 사
'이펙티브 자바'를 읽으며 작성하는 글매개변수화 타입은 불공변(invariant)이다. 즉, 서로 다른 타입 Type1와 Type2가 있을 때
좋은 성능의 데이터베이스 쿼리를 작성하는 것은 개발자 또는 DBA의 공통적인 목표일 것이다. SQL 서버, 오라클, MySQL 등 관계형 데이터베이스를 이용하여 프로그래밍 시 최적화된 성능을 위한 쿼리 튜닝 기법에 대해 작성할 것이다.인덱스로 생성한 컬럼을 사용하여 쿼
멀티스레드 환경에서의 프로그래밍 시 동시성 문제를 제어해야할 필요성이 있다. 하나의 자원에 여러 스레드가 접근 시 개발자가 예상하지 못 한 결과를 초래할 수 있다. 이러한 멀티스레드 환경에서 동시성 제어를 위해 사용되는 Synchronized 키워드에 대해 학습하고자
1) 사용자는 id와 pw를 입력하여 로그인 요청을 시도한다.2) 사용자의 id와 pw를 받은 서버는 시큐리티 등을 통해 사용자 인증 로직을 수행한다.1) 서버는 사용자 인증이 정상적으로 완료되면 JWT(Json Web Token)를 생성한다.2) JWT를 사용자에게
'가상 면접 사례로 배우는 대규모 시스템 설계 기초'를 읽고 작성하는 글운영 중인 서버의 트래픽이 늘어나게 된다면 기존 서버의 확장을 고려해봐야 한다. 서버의 확장에는 크게 '수직적 규모 확장'과 '수평적 규모 확장'이 있다. 수직적 규모 확장은 스케일업(Scale U
특정 범위의 수가 주어지고 그 범위 내의 모든 소수를 찾아야 하는 경우.ex) 자연수 N이 입력되면 1부터 N까지 소수의 개수를 출력하는 프로그램을 작성하시오.이중 for문으로 답을 찾아내는 것은 시간복잡도가 O(N^2)이며 비효율적이다.에라토스테네스의 체 알고리즘을
데이터베이스에서 트랜잭션(Transaction)은 하나의 논리적인 작업 단위를 나타낸다.이 작업은 데이터베이스에서 데이터를 읽거나 쓰는 것과 같이 데이터베이스 상태를 변경하는 모든 연산들의 집합으로 구성된다.트랜잭션은 논리적인 완전성을 유지하기 위해 반드시 지켜야할 네
인덱스란 데이터베이스에서 검색 속도를 향상시키기 위해 사용되는 데이터 구조이다.인덱스는 테이블의 컬럼값에 대한 정렬된 데이터 구조체로, 특정 컬럼에서 원하는 값을 빠르게 찾을 수 있도록 도와준다. 인덱스를 사용하면 데이터베이스가 검색 시에 전체 데이터를 스캔하는 것이
'가상 면접 사례로 배우는 대규모 시스템 설계 기초'를 읽고 작성하는 글.단일 서버 운영 중 사용자가 늘게 된다면, 단일 서버만으론 원활한 서비스를 구축하기가 곤란한 상황이 오게 된다. 이번에는 웹/모바일 트래픽 처리 용도의 서버와, 데이터베이스용 서버를 따로 두는 설
Amazon EC2(Amazon Elastic Compute Cloud)는 AWS에서 가장 핵심 서비스라고 할 수 있다.EC2는 AWS에서 제공하는 클라우드 컴퓨팅 서비스이다. 이 서비스를 통해 Amazon이 전 세계에 걸쳐 구축한 데이터 센터의 서버용 컴퓨터들의 자원
'가상 면접 사례로 배우는 대규모 시스템 설계 기초'를 읽고 작성한 글이다.서버는 다음과 같은 구성 요소들이 존재한다.하드웨어 \- CPU, RAM, 저장장치, 네트워크 인터페이스 등운영체제 \- Window, Linux, MAC 등 웹 서버 \- Apache,
이펙티브자바를 읽고 작성하는 글이다.기존 Stack 클래스는 Object\[]을 사용하고 있는데, 이는 타입 안정성에 위배된다.Stack 클래스에서 꺼낸 객체의 형변환 시 런타임 에러가 발생할 위험이 있다.다음은 제네릭 클래스로 변경하는 과정이다.Object 타입을 선