Spring

[Spring] Webflux

Spring MVC와 Spring Webflux의 차이점blocking / non-blockingSpring MVC 공식문서에 따르면, Spring Webflux 대부분의 구조 및 설정은 Spring MVC와 동일하다고 명시되어 있다.그러나 동시성 모델과 블로킹/쓰레드 기본 전략이 다르다.MVC에서는 애플리케이션이 스레드를 차단(blocking)할 수 있다는 가정 하에 큰 스레드풀을 가지고 있고,WebFlux에서는 스레드가 차단되지 않아(non-blocking) 적은 스레드풀을 사용하여 request들을 처리한다는 점이다. 더 자세히 살펴보자면 두 프레임워크의 차이는 다음과 같다.Spring MVC 어플리케이션은 Imperative logic(명령형 로직)이다.명령형 프로그래밍은 작성하기도, 이해하기도,..

back-end

R2DBC

R2DBC R2DBC 정의R2DBC (Reactive Relational Database Connectivity)는 이름 그대로 관계형 DB에서 reactive programming을 가능하게 해주는 데이터베이스 접근 API다.R2DBC의 등장 배경 그리고 장점R2DBC는 적은 스레드로 동시성을 처리하고 더 적은 하드웨어 리소스로 확장할 수 있는 논블로킹(non-blocking) 어플리케이션 스택이 필요해지면서 등장했다.기존에 많이 쓰이던 관계형 데이터베이스 접근 API는 주로 JDBC였다. 그러나 JDBC는 블로킹(blocking) API 였고, ThreadPool로 블로킹 동작을 절충하려고 해도 완전한 논블로킹 서비스를 구축할 수 없었다.또한 몇몇 NoSQL 드라이버가 자체 Reactive Datab..

개발지식

[Cache] 메모리 캐시와 디스크 캐시

메모리 캐시와 디스크 캐시는 컴퓨터 시스템에서 데이터를 더 빠르게 접근할 수 있도록 하는 두 가지 주요 캐시 기술입니다. 각 캐시의 장점, 단점, 그리고 사용되는 상황을 이해하면 효율적인 시스템 설계와 성능 최적화에 도움이 됩니다.메모리 캐시 (Memory Cache)정의: 메모리 캐시는 주로 RAM(Random Access Memory)에 저장되는 데이터로, CPU와 메모리 간의 데이터 전송 속도를 빠르게 하기 위해 사용됩니다.장점:속도: 메모리 캐시는 매우 빠릅니다. RAM의 접근 속도는 디스크보다 훨씬 빠르기 때문에 데이터에 빠르게 접근할 수 있습니다.낮은 지연 시간: 메모리에 저장된 데이터는 거의 즉각적으로 접근할 수 있어 지연 시간이 매우 낮습니다.단점:비용: RAM은 비싸기 때문에 대용량 데이..

front-end

[JavaScript] scroll 이벤트로 특정영역 도달시 function 호출

사용자가 스크롤할 때 JavaScript 함수를 호출웹 페이지에서 사용자가 스크롤할 때 JavaScript 함수를 호출하려면 scroll 이벤트를 활용할 수 있습니다. scroll 이벤트는 사용자가 스크롤할 때마다 트리거되며, 이를 통해 특정 기능을 실행할 수 있습니다.아래는 스크롤 시 JavaScript 함수를 호출하는 간단한 예제입니다:기본 예제HTML 파일에 JavaScript를 포함합니다.window 객체의 scroll 이벤트에 이벤트 리스너를 추가하여 스크롤 시 특정 함수를 호출합니다. Scroll down the page 코드 설명HTML 구조:body 태그에 충분한 높이를 설정하여 페이지가 스크롤될 수 있도록 합니다.header 요소를 추가하여 스크롤할 때 배..

DB

ORM(Object-Relational Mapping) 데이터베이스 액세스 프레임워크

Persistence(영속성)- 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성을 말합니다. - 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버리게 됩니다.Persistence 영속성이란?영속성은 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다. 데이터가 영속적이지 않으면 데이터가 휘발되어 CRUD가 의도대로 되지 않을것이다. Persistence Framework는 객체를 데이터베이스에 저장, 조회 , 수정, 삭제 하는 등의 데이터베이스 작업을 쉽게 할 수있게 도와주며, 데이터베이스와 객체 간의 매핑을 담당하는것이 특징이다. Object Persistence(영속성 객체)- 메모리 상의 데이터를 파일..

개발지식

[Cache] 페이지 캐시

페이지 캐시 기능은 웹 브라우저가 웹 페이지를 더 빠르게 로드하기 위해 사용하는 기술입니다. 이 기능은 사용자가 이미 방문한 페이지의 일부 또는 전체를 저장하여, 페이지를 다시 방문할 때 저장된 데이터를 사용해 빠르게 로드합니다. 페이지 캐시에는 여러 종류가 있으며, 가장 중요한 두 가지는 일반 HTTP 캐시와 BFCache(Back-Forward Cache)입니다.HTTP 캐시HTTP 캐시는 브라우저가 서버에서 가져온 리소스(예: HTML, CSS, JavaScript, 이미지 등)를 저장하여 동일한 리소스에 대한 반복적인 네트워크 요청을 줄이는 데 사용됩니다. HTTP 캐시는 서버와 클라이언트 간의 데이터 전송을 줄여 페이지 로딩 시간을 개선합니다. HTTP 캐시는 웹 페이지의 리소스를 저장하여 이후..

Spring

[Springboot]Springboot 3.x에 Swagger

연관된 글 : 참고:https://velog.io/@kjgi73k/Springboot3%EC%97%90-Swagger3%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0

Java

[Java] Stream API - map과 flatMap

Map이란?map은 스트림 내부의 요소 하나하나에 접근해서 제가 파라미터로 넣어준 함수를 실행한 뒤 최종연산에서 지정한 형식으로 반환해주는 메서드 입니다.  List people = Arrays.asList( new Person("personA", 24), new Person("personB", 26), new Person("personC", 28), new Person("personD", 30) );위와 같은 리스트를 예시로 만들어보겠습니다. List nameList = people.stream() .map(person -> person.getName()..

front-end

[JavaScript] flatMap

evtSprtrList?.flatMap(sp => sp.lowEvtSprtrList);주어진 JavaScript 코드 evtSprtrList?.flatMap(sp => sp.lowEvtSprtrList);는 evtSprtrList 배열이 정의되어 있고 null이 아닌 경우 각 요소의 lowEvtSprtrList 속성을 추출하고 이를 하나의 배열로 평탄화(flatten)하는 작업을 수행합니다.이 작업을 설명하고자 할 때, 아래와 같은 예시와 함께 단계별로 설명해 보겠습니다:예시 데이터const evtSprtrList = [ { id: 1, lowEvtSprtrList: [10, 20, 30] }, { id: 2, lowEvtSprtrList: [40, 50] }, { i..

개발지식

[Spring] Port 8080 is already in use 에러 해결 방법

발생 원인동일한 포트를 사용하는 어플리케이션을 번갈아가며 실행 시키는 경우 (이미 다른 하나가 실행중)IDE 상에서는 프로세스가 종료되었으나 실제 프로세스가 종료되지 않은 경우 해결 방법프로세스 종료하기lsof -n -i -P | grep 8080kill -9 3932 연관된 글 : 참고:https://deeplify.dev/back-end/spring/port-is-already-in-use

ideahamster
Do_de_gee.log