본문 바로가기

전체 글83

스프링에서 어떻게 캐싱이 이루어질까? - 1편 스프링에서 캐싱 사용하기 캐싱을 사용하면 자주 읽는 데이터에 대해 I/O 작업을 최소화하여 성능을 크게 개선할 수 있습니다.스프링에서는 캐싱을 적용하기 위해 스프링 3.1 버전부터 캐시 추상화를 지원합니다.캐시 추상화를 통해 애플리케이션에 캐싱을 적용하기 위해 캐싱의 세부 구현 사항에 대해 신경쓰지 않아도 됩니다.💡 공식 문서에서는 이에 대해 캐싱을 투명하게 제공한다라고 표현하고 있는데 투명하다는 의미는 개발자가 애플리케이션에서 사용하기 위해 세부 구현을 알 필요없이 간단한 선언만으로 사용할 수 있게 해줌을 의미합니다.  이를 코드로 살펴보면 다음과 같이 @EnableCaching, @Cacheable 어노테이션을 추가한것만으로 캐싱이 적용되게 됩니다.@Configuration@EnableCachingclass CacheCon.. 2024. 8. 4.
DOM(Document Object Model) DOM(Document Object Model, 문서 객체 모델)이란? 💡 DOM이란 HTML, XML와 같은 문서의 프로그래밍 인터페이스입니다. DOM은 문서의 구조화된 표현(structured representation)을 제공하며 프로그래밍 언어가 DOM 구조에 접근할 수 있는 방법을 제공하여 그들이 문서 구조, 스타일, 내용 등을 변경할 수 있도록 돕습니다. 위의 설명은 MDN 공식 문서에서 DOM에 대해 설명하고 있는 문장입니다. 즉, 웹 문서를 구조화된 방식으로 표현하여 프로그래밍 언어를 이용하여 문서 구조, 스타일 및 내용에 접근할 수 있도록 하는 인터페이스를 제공하는 것을 DOM 이라고 합니다. DOM의 구조 DOM은 트리 구조로 표현되며, 각 노드는 문서의 일부를 나타내게 됩니다. 예를 .. 2023. 8. 14.
모니터 화면 상단에 Profile이라는 글씨가 보이는 문제 문제 Mac Mini (M1)을 구매하고 나서 다음과 같이 모니터에 Profile이라는 글씨가 생기는 증상이 있었습니다. 검색해도 해당 정보가 나오지 않아 그냥 그러려니 하고 쓰자라고 생각했다가 해당 증상이 3초간격을 계속 나오고 해당 영역은 클릭이 안되어 굉장히 스트레스를 받았었습니다.. 😢 해결 과정 애플 고객센터에 문의해보니 다양한 해결 방법을 이야기 해주었고 다음과 같은 방법들을 제시해주었습니다. 애플 복구모드로 부팅 (꺼진 상태에서 전원 누르고 땐 후 전원 꾹누르면 진입됨) 후 다시 확인 복구모드로 들어가는 것만으로도 어느정도 복구가 된다고 함 모니터 선 제거후 다시 연결 nvram 초기화 (m1 모델의 경우 재부팅시 초기화) 사용자 다시만들고 해당 사용자로 로그인 해당 방식으로 사용했을 때 P.. 2022. 12. 17.
스프링 부트 3.0 이상에서 QueryDSL 설정 김영한님의 실전! QueryDSL 강의를 보던 도중 QueryDSL이 다음과 같이 QueryDSL 컴파일 시도시 예외를 발생하는 것을 볼 수 있었습니다. java.lang.NoClassDefFoundError: javax/persistence/Entity 현재 스프링 부트 3.0을 사용하고 있었고 querydsl 의존성을 다음과 같이 변경하였습니다. plugins { id 'java' id 'org.springframework.boot' version '3.0.0' id 'io.spring.dependency-management' version '1.1.0' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' conf.. 2022. 12. 3.
동작 파라미터화를 통해 코드 전달하기 동작 파라미터화 란? 동작 파라미터화는 아직 어떻게 실행될지 정해지지 않은 코드 블록을 의미합니다. 해당 코드 블록은 전달한 곳에서 필요시에 호출하기 때문에 실행이 뒤로 미루어지게 됩니다. 왜 실행 방법이 정해지지 않은 코드 블록이 필요하고 어떠한 장점을 가지는지 다음 예제를 통해 알아봅시다. 예를 들어, 사과 농장을 운영하고 싶다고 가정해봅시다. 현재, 수확한 사과 중 녹색사과만 걸러내서 확인하고 싶을 경우 다음과 같이 코드를 작성할 수 있을 것입니다. public static List filterGreenApples(List inventory) { List result = new ArrayList(); for (Apple apple : inventory) { if (GREEN.equals(apple... 2022. 11. 2.
DBMS의 실행계획 확인하기 DBMS는 실행계획을 통해 데이터 접근을 수행하게 됩니다. 실행계획은 옵티마이저를 통해 최적화 된 명령을 수행하게 되지만 데이터 양이 많은 테이블에 접근하거나 복잡한 SQL 구문을 실행하면 반응 지연이 발생할 수 있습니다. 이는 옵티마이저에 전달된 통계 정보가 부족한 상태라 제대로 실행 계획을 세우지 못했을 수 있지만, 가장 최신의 충분한 통계정보를 전달 받았다 하더라도 느릴 수 있습니다. 예를들어 통계정보가 최신이라도 SQL 구문자체가 복잡한 상황이거나 잘못된 인덱스 사용 등으로 인해 잘못 된 계획을 세울 수 있습니다. 이런 상황이 발생할 경우 실행계획을 살펴보고 해결방안을 찾아야 합니다. 실행계획 확인방법 다음과 같이 DBMS는 실행 계획을 확인할 수 있는 명령을 제공하고 있습니다. Oracle과 M.. 2022. 10. 23.
DBMS와 실행 계획 RDB를 조작할 때 SQL이라는 전용 언어를 사용하게 됩니다. 사용자 또는 개발자는 SQL을 이용하여 DBMS에 명령을 내리면 그 이후는 DBMS가 알아서 처리하고 결과를 제공해주게 됩니다. 따라서, 사용자는 데이터가 있는 곳을 알 필요도 없고, 데이터에 접근하는 방법도 따로 생각하지 않습니다. RDB가 권한이양을 하는 이유 이러한 모든 것을 DBMS에게 맞기게 되는데 이런 방식은 일반적인 프로그래밍과는 거리가 멉니다. C, 자바, 루비와 같은 프로그래밍 언어를 사용하는 경우 데이터에 접근하기 위한 절차에 대해 기술하게 되지만 RDB 같은 경우 단순히 해야하는 일을 기술하고 어떤식으로 처리할지는 DBMS에 맡기게 됩니다. RDB가 이런식으로 DBMS에게 권한을 이양한 이유는 권한을 이양하는 방식이 비즈니.. 2022. 10. 22.
DBMS와 버퍼 기억장치의 분류 일반적으로 기억장치는 기억비용에 따라 1차에서 3차까지의 계층으로 분류됩니다. 기억비용은 데이터를 저장하는데 소모되는 비용을 의미합니다. 1차기억장치의 경우 데이터 접근속도는 매우 빠르지만 기억비용이 높고 2차, 3차 기억장치로 갈수록 기억비용은 낮아지지만 데이터 접근속도가 느려집니다. 결국 많은 데이터를 영속적으로 저장하기 위해서는 속도를 잃고, 속도를 얻고자 하면 많은 데이터를 영속적으로 저장하기 힘들기 때문에 상황에 맞는 기억장치를 사용해야 합니다. DBMS와 기억장치의 관계 DBMS는 데이터 저장을 목적으로 하는 미들웨어이기 때문에 기억장치와는 떨어뜨릴 수 없는 관계입니다. 하드디스크 DBMS가 데이터를 저장하는 매체(저장소)는 현재 대부분 HDD입니다. 물론 하드디스크 이외에도 .. 2022. 10. 17.