클래스에 @CheckRole을 한 경우 특정 메서드는 예외로 할 수 있게 무시 어노테이션을 따로 만들어줌Aspect 만들기
스프링에서 권한 체크를 좀 더 깔끔하게 하고 싶어서,어노테이션으로 역할(Role)을 체크하는 방식으로 만들어봤다.어노테이션 정의하기먼저 커스텀 어노테이션을 만든다. 클래스나 메서드에 붙일 수 있도록 @Target을 지정해주고, 런타임 시점에 리플렉션으로 읽을 수 있게
스프링에서 트랜잭션 전파는 트랜잭션의 경계에서 이미 진행 중인 트랜잭션이 있거나 없을 때 어떻게 동작할 것인가를 결정하는 기능@Transactional 어노테이션이 존재하는 메서드 호출시 기존에 트랜잭션이 존재하면 재사용할지 예외를 던질지 등 행동을 결정 가능트랜잭션
📌 핵심 개념 요약:순수 함수(Pure Function)→ 입력이 같으면 항상 결과가 같고, 외부 상태를 변경하지 않는 함수불변성(Immutable Data)→ 데이터를 수정하지 않고, 복사본을 만들어 변경고차 함수(Higher-Order Function)→ 함수를
이벤트 버블링(Event Bubbling)은HTML 요소에서 이벤트가 발생했을 때, 그 이벤트가 해당 요소에서 시작하여, 부모 → 조상 요소까지 전파되는 현상입니다.왜 이벤트 버블링이 발생하는가? (왜 생겨났는가?)🔹 이유 1: 트리 구조인 DOM의 자연스러운 전파
동시성 문제를 피하기 위해멀티스레드에서는 레이스 컨디션이나 데드락 같은 문제가 생기기 쉬운데 싱글 스레드에선 이런 걱정이 없음 모든 명령을 순차적으로 처리해서 데이터 일관성을 쉽게 유지할 수 있음빠른 성능을 위해Redis는 메모리 기반이라 I/O가 빠름 싱글 스레드 구
스레드 컨텍스트 스위칭이 프로세스보다 빠른 이유스레드 컨텍스트 스위칭(Thread Context Switching)의 경우 프로세스 컨텍스트 스위칭(Process Context Switching)과 달리 MMU 새로운 주소 체계 바로 보도록 수정하고 TLB 가상 메모리
JPA에서 엔티티의 기본 키(ID)는 두 가지 방식으로 생성할 수 있습니다.✅ 직접 할당: @Id만 사용. 애플리케이션 코드에서 ID 값을 명시적으로 설정합니다.✅ 자동 생성: @Id + @GeneratedValue를 함께 사용. JPA가 식별자 생성 전략에 따라 자동
🎭 비유: 웨이터가 있는 식당식당에 웨이터 한 명(= CPU)이 있고, 여러 손님(= 작업, 스레드)이 있다고 가정해보겠습니다.단일 작업 처리 (동시성 X)웨이터가 한 손님의 주문을 받고, 음식 나오기를 기다리고, 그 손님에게 음식 가져다주고, 계산까지 다 끝낸 후에
동시성 상황(여러 사용자가 동시에 Stack 생성 요청)에서 중복 생성 문제를 확실히 막기 위해@Lock(LockModeType.PESSIMISTIC_WRITE)를 이용해 락을 걸어주는 방식비관적 락이란?"다른 트랜잭션이 이 데이터를 수정할 수도 있다" 라고 비관적으로
결론부터 말하면 동작하지 않는다Spring에서는 @Transactional, @Cacheable, @Async 같은 애너테이션이 런타임에 동작하는 Spring AOP 기반으로 처리된다.Spring AOP는 JDK Dynamic Proxy나 CGLIB 방식을 이용해 프록
n8n을 활용해 IMAP 이메일을 수신하면, 그 내용을 자동으로 Slack에 메시지로 전송하는 방법을 소개합니다.n8n 인스턴스IMAP 이메일 계정 (Gmail, Outlook 등)Slack 워크스페이스 및 Webhook URLn8n 편집 화면에서 IMAP Email
엔티티 매핑 최적화엔티티 클래스와 데이터베이스 테이블 간의 매핑을 최적화하는 것은 JPA 성능 향상에 매우 중요합니다.필드 매핑: 필요하지 않은 필드는 매핑하지 않도록 합니다. 모든 데이터베이스 열을 엔티티 필드로 매핑하면 메모리 사용량과 성능에 영향을 미칩니다.Fet

aop를 활용하여 메소드 실행중 슬로우 쿼리와 오류 발생시 해당 상황을 로그테이블에 저장하는 기능을 만들어 보았다.Service 클래스에 있는 특정 기능에 sleep을 걸고 메소드를 실행하였다. log가 잘 저장되었을까엣 저장 실패Connection is read-on

NextJS 에서 next-auth를 이용하면 google , facebook , naver 같은 소셜 로그인 기능을 쉽게 만들 수 있어요.next 13버전, next-auth 4버전을 사용했습니다..env 파일을 이용해서 google 클라이언트 키와 시크릿키를 저장합
띄어쓰기는 자손\> 는 첫번째 자식인접 형제 선택자 A + B A 근접 B만A 뒤에 따라오는 B는 전부 A ~ B자식 요소중 포커스에 걸리면

style을 적용할 때 인라인 스타일을 이용할 때가 많았다 (편하니까)이런식으로..하지만 인라인식으로 작성하게 되면 불필요한 리랜더링을 하게 된다. 이유는?결론부터 말하면 {} === {} 가 false 이기 때문!리액트의 버추얼돔이 검사를 하면서 어디가 달라졌는지 찾