JS의 변수 생성 과정자바스크립트 엔진은 변수 선언을 다음과 같은 단계에 거쳐 수행한다.1. 선언 (실행 컨텍스트에 등록하여 자바스크립트 엔진에 변수의 존재를 알린다) => 스코프가 참조2. 초기화 (메모리에 공간 확보, undefined를 할당하여 초기화)3. 할당 (실제 값 할당) 실행 컨텍스트실행 컨텍스트는 코드가 실행되기 위해 필요한 환경. - 모든 JavaScript 코드는 실행 컨텍스트에서 실행되며, 실행 컨텍스트는 코드 실행에 필요한 환경 정보를 제공한다.- 자바스크립트 엔진은 실행 컨텍스트를 관리하며 선언된 코드가 등록됨.- 실행 컨텍스트는 코드가 실행되기 전 메모리에 변수를 할당하고 실행할 준비를 마친다. JS 엔진은 코드를 실행하기 전 코드를 형상화하고 구분하는 과정을 거친다.즉, 자..
Promise비동기 작업을 순차적으로 실행하기 위하여 사용되는 객체 그러나 단지 callback함수 대신 보기 쉽게 만들어주는 것. 실행되지 않았지만 결과를 받는 처리(약속) - 상태: 3가지 1. Pending (대기) 2. Fulfilled (완료) 3. Rejected (실패) - then, catch, finally 3가지 메서드를 가진다.then : promise 객체가 fulfilled 상태가 되면 실행할 콜백함수를 등록하는 메서드catch : promise객체가 rejected 상태가 되면 콜백함수를 등록하는 메서드finally : 어떤 작업의 성공, 실패 여부와 상관없이 항상 실행하고 싶은 콜백함수를 등록 new Promisenew Promise 란 ? - promise 객체를 직접 생성할..
한 때 쿠팡에서 위와 같은 에러로 전체 물품이 품절 처리 된 적이 있다. 원인 파악 결과 Redis DB 때문이라는 것이 드러났다. RedisRemote Dictionary ServerDB, Cache, Message BrokerIn-memory Data Structure Store (메모리 상에 데이터를 저장하는 서버)Supports rich Data Structure (다양한 자료구조 지원) Redis와 캐시의 이해Redis 는 Remote Dictionary Server라는 뜻. 말 그대로 외부에 있는 Dictionary자료구조를 쓰는 형태의 서버 라는 의미이다. Redis는 기본적으로 In-memory Data Structure Store로서, 데이터를 메모리에 저장하여 빠른 접근을 가능하게 하..
이력서나 프로젝트 기술스택 등 적을 때 스프링/ 스프링부트/ 스프링 프레임워크 세 개의 선택지가 제시되곤 한다. 스프링과 스프링 부트는 새로운 기술이라기 보다는 스프링 프레임워크를 개선한 것이다. 대표적인 개선 사항은 다음과 같다. 스프링 부트1. 개발 환경 설정을 최소화스프링은 버전에 따라 동작하는 외부 라이브러리를 일일이 찾아 연동해야한다. 하지만 스프링 부트는 미리 설정된 스타터 프로젝트로 외부 라이브러리를 최적화해 제공하므로 사용자가 직접 연동할 필요가 없다. 2. 웹 애플리케이션 서버를 내장스프링 부트는 내부에 웹 어플리케이션 서버 (WAS, Web Application Server)인 톰캣을 가지고 있다. 따라서 웹 서비를 jar 파일로 간편하게 배포할 수 있다. 결론적으로 스프링부..
캐시에 저장된 데이터를 유효하지 않은 데이터로 마킹하는 작업. 다음 요청이 왔을 때, 유효하지 않은 데이터는 반드시 캐시-미스 로 다루고, 원본 저장소에서 값을 재생성 하도록 해야한다. 즉 캐시 무효화는 캐시에서 데이터를 제거하여 캐시를 무효화하는 프로세스이다. 캐시된 데이터는 실제 원본 데이터가 아니다. 원본 데이터는 DB 에 있거나, 서비스가 생성해야 한다. 문제는 DB 의 데이터가 변경되는 경우 발생하는데 이 경우 캐시된 데이터는 더 이상 유효하지 않다. 캐시 무효화 전략이 필요한 이유 : 웹 브라우저가 GET 요청을 받을 경우 캐시 헤더 없이도 최적화를 위해 임의로 캐싱을 합니다.리소스의 캐시 유효 기간을 장기간으로 설정해 오래된 정보가 표시되는 경우가 있을 것입니다. 이 경우 해당 캐시를 무효..
Cache캐시는 자주 사용되는 데이터나 연산 결과를 임시로 저장하는 고속의 저장 공간을 의미한다. CPU 캐시, 웹 브라우저 캐시, 메모리 캐시 등이 있다. 캐시가 사용되는 대표적인 예시로 DP 알고리즘이 있다. 이전의 값을 저장할 때 캐시의 역할을 사용하고 있다. * 캐싱 : 나중의 요청에 대한 결과를 미리 저장했다가 빠르게 사용하는 것. (행위) 또한 JPA 의 Entity Manager 또한 내부적으로 캐시를 통해 직접 데이터베이스에 접근하지 않고 1차 캐시에서 데이터를 가져와 성능적인 이점을 가져오고 있다. 그렇다면 이 결과는 어디에 미리 저장하는 것일까? 메모리 계층 구조 사진을 보면 이해할 수 있다. 조금 더 쉬운 예시로 맥북을 생각해보자. M2Pro CPU - 12MB Cache Memory..