Weaving
·
Spring
Weaving 모듈화한 부가 기능을 타겟에 적용하여, 핵심 기능과 연결하는 과정을 뜻한다. Runtime Weaving (RTW) - 프록시 패턴을 활용한 위빙 방식으로, Proxy객체를 생성하여 실제 타깃 오브젝트의 변형 없이 런타임 중 메서드 호출이 일어나는 일어나는 방식이다. - Proxy, Reflection, 바이트 코드 조작등의 기술을 사용하여 이루어짐. - Spring AOP와 같은 프레임워크를 통해 Runtime Weaving을 구현할 수 있다. 1. Aspect 정의 package com.example; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; @Aspect public cla..
RequestContextHolder
·
Spring
- 스프링 프레임워크에서 HttpservletRequest에 접근하게 도와주는 구현체 - contoller, service, dao등등 전 구간에서 HttpServletRequest에 접근할 수 있도록 함 - static한 ThreadLocalMap을 만들어 놓고, servlet이 호출되면 key를 thread로 하여 제공받은 HttpServletRequest를 보관함 ThreadLocal - 하나의 쓰레드에서 읽고 쓸 수 있는 지역변수 thread-local을 관리하는 클래스 - servlet이 종료될 때, 해당 thread를 key로 갖는 HttpServletRequest를 map에서 제거함 - 호출된 servlet이 동일하면, 어느곳에서든 같은 HttpServletRequest를 꺼내서 쓸 수 있게..
힐링
·
Daily Life/CLIP
Cute Lamb Needs Attention - YouTube
자세
·
Daily Life/목표
1. 공부 2. 적용 3. 설득
Reactive Programming & Spring Webflux
·
Spring
Reactive Programming - 등장 배경 : 작은 모바일 디바이스, 모바일 멀티 코어 프로세스까지 너무나 다양한 환경에서 애플리케이션이 배포되며, 이에 따라 사용자는 더욱 더 빠른 처리를 기대함. - 데이터 스트림이나 변경에 대해 반응적으로 동작하는 프로그래밍 패러다임 - 함수형 프로그래밍 기법 사용 - 비동기적인 이벤트 중심의 개발을 효과적으로 처리 가능 - Project Reactor / ReactiveX / RxJava와 같은 스트림에서 사용 - non-blocking형식 ( 기존의 블록킹 형식의 리퀘스트는, 워커 스레드가 처리를 하는동안 서블릿 스레드가 응답을 기다려야했음. 반면 논블록킹 리퀘스트는 이벤트 핸들러와 콜백을 모든 요청에 포함하여, 스레드풀에 요청을 위임하고, 다음요청을 처..
Docker 설정
·
Infra/Docker & k8s
Docker를 공부하면서, Side Project를 진행하고 있다. 기록하자면, 다음과 같다. 1. jar파일 만들기 Spring Boot 프로젝트 루트 디렉터리 위치에서 gradle build하여 build프로젝트 하위의 libs폴더 밑의 jar파일을 만든다. 이렇게 libs밑에 만들어진 jar파일 버전이 두 가지가 있는데, was가 포함된 버전인 fastshoppers-0.0.1-SNAPSHOT.jar 이 파일을 가지고 Dockerfile을 만들 것이다. 2. DockerFile 생성 FROM openjdk:17-jdk-slim WORKDIR /app COPY build/libs/fastshoppers-0.0.1-SNAPSHOT.jar app.jar CMD ["java", "-jar", "app.ja..
StackTraceElement
·
Language/Java
Thread.currentThread().getStackTrace() 로 현재 스레드의 호출 스택 트레이스 정보를 얻을 수 있다. 이 메서드를 호출하면, 현재 실행중인 호출 스택에 있는 메서드들의 정보를 배열로 반환받음. StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); for (StackTraceElement element : stackTrace) { System.out.println("Class Name: " + element.getClassName()); System.out.println("Method Name: " + element.getMethodName()); System.out.println("File Name:..
https에서 사용하는 SSL Handshaking 방식 및 대칭 / 비대칭키 암호화 방식
·
CS/Computer Network
HTTP 서로 다른 시스템들 사이에서 통신을 주고 받게끔 하는 프로토콜로, 암호화 되지 않는다는 단점이 있음. HTTPS HTTP에 SSL을 사용하는 프로토콜로, SSL은 서버와 브라우저 사이에서 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버와 브라우저가 민감한 정보를 주고 받을때, 해당 정보가 도난당하는 것을 막아줌. Http Message Body를 암호화 함. HTTPS를 사용하는 이유 1. 보안성을 위해서. http 프로토콜은 암호화되지 않아서 해커의 공격을 받았을 때 사용자의 정보가 쉽게 노출될 수 있다는 우려가 있음. 그러나 https는 암호화 되어있기 때문에, 보안성이 http방식에 비해 우수함. 데이터가 중간에 가로채어서 수정되지 않음을 보장함. 2. https를 통해서 웹사이트의..
데드락과 데드락을 해결하는 방안
·
CS/Operating Systems
데드락이란? 두 개 이상의 프로세스가 자원을 점유한 상태에서 다른 프로세스가 점유하고 있는 자원을 요구하며, 서로의 작업을 끝나기만을 기다리며 둘 다 영원히 끝나지 않는 것. 교착상태의 발생 조건 아래의 4가지가 모두 성립되어야 한다. 1. 상호 배제 - 자원은 한 번에 한 프로세스만 사용 가능. 2. 점유 대기 - 최소한 하나의 자원을 점유하고 있으며, 다른 프로세스에 할당되어 사용하고 있는 자원을 점유하기 위해 대기 상태가 있어야 함. 3. 비선점 - 다른 프로세스에 할당된 자원은 사용이 끝날때 까지 강제로 빼앗을 수 없음 4. 순환 대기 - 여러 프로세스가 있을 때, 각 프로세스들이 꼬리를 물며 점유한 자원을 대기한 상태여야하고, 마지막 프로세스가 첫 프로세스가 점유한 자원을 요구해야함. 비유하자면..
takoyummy
TakoHub