전체 글
-
[네트워크] CORS (Cross-Origin Resource Sharing)CS/네트워크 2021. 5. 31. 23:58
CORS 다른 출처 간의 리소스 공유 동작 방식 웹 클라이언트 어플리케이션이 다른 출처의 리소스를 요청할 때 요청 헤더의 Origin이라는 필드에 요청을 보내는 출처를 함께 전달한다. 서버가 이 요청에 대한 응답을 할 때 응답 헤더의 Access-Control-Allow-Origin 필드에 "이 리소스를 접근하는 것이 허용된 출처"를 내려주고, 이후 응답을 받은 브라우저는 자신이 보냈던 요청의 Origin과 서버가 보내준 응답의 Accss-Control-Allow-Origin을 비교해본 후 이 응답이 유효한지 아닌지를 판단한다. 오픈스페이스 환경에서 다른 출처에 있는 리소스를 가져와서 사용하는 일은 굉장히 흔한 일이라 무작정 막을 수 없기 때문에 몇 가지 예외 사항이 존재하는데 이 조항에 해당하는 것이 ..
-
[Spring] OAuth2스프링프레임워크/oauth2 2021. 5. 31. 20:52
OAuth 2.0 인증 방식 웹 사이트의 계정 인증에 타 서비스의 계정을 사용하는 인증 방식 구글 인증 방식 예시 구글 인증 페이지에 접속 https://accounts.google.com/o/oauth2?client_id=[OAuth 클라이언트 아이디] &redirect_uri=https://www.test.com/auth/google/callback 사용자가 구글 인증에 성공하면, 인증 페이지 접속 시 전달 된 리다이렉트 URI로 리다이렉트 되는데 다음과 같이 code라는 매개변수 정보를 추가해준다. https://www.test.com/auth/google/callback?code=[코드 정보] 웹 사이트에서는 이 code라는 매개변수 값을 URL로부터 얻어온 후 이 code를 통해서 액세스 토큰을..
-
[JPA] 플러시 (flush)강의노트/JPA - 기본편 2021. 5. 27. 10:25
플러시란? 영속성 컨텍스트의 변경 내용을 DB에 반영하는 것 트랜잭션 commit이 일어날 때 플러시가 동작하는데, 이때 쓰기 지연 저장소에 쌓아 놨던 INSERT, UPDATE, DELETE SQL들이 DB에 전달된다. [주의] 영속성 컨텍스트를 비우는 것은 아니다. 플러시의 동작 과정 변경을 감지한다. (Dirty Checking) 수정된 Entity를 쓰기 지연 저장소에 등록한다. 쓰기 지연 저장소에 저장된 SQL을 DB에 전달한다. 플러시가 발생한다고 해서 commit이 이루어지는 것이 아니고 플러시 다음에 실제 commit이 일어난다. 플러시가 동작할 수 있는 이유는 데이터베이스 트랜잭션(작업 단위)이라는 개념이 있기 때문이다. 트랜잭션이 시작되고 해당 트랜잭션이 commit되는 시점 직전에만 ..
-
[Linux] crontab 사용 방법운영체제/linux 2021. 5. 26. 17:23
crontab 기본 명령어 crontab 스케줄 추가 아래 명령어 입력 시 편집 창으로 이동되고 vi 편집기와 동일하게 i를 누른 후 스케줄 정보를 입력 스케줄 정보 입력 완료 후 :wq를 이용해서 crontab 스케줄을 갱신 $ crontab -e crontab에 정의되어 있는 스케줄 확인 $ crontab -l crontab에 정의되어 있는 모든 스케줄 삭제 $ crontab -r crontab 주기 결정 요일에서 0과 7은 일요일이고, 1부터 6은 월요일에서 토요일입니다. * * * * * 분(0-59)시간(0-23) 일(1-31) 월(1-12) 요일(0-7) 주기별 예제 매분 실행 # 매분 batch.jar 실행 * * * * * /home/spring_batch/batch.jar 특정 시간 실행..
-
[nginx] CentOS 7 설치오픈소스/nginx 2021. 5. 18. 13:32
1. add yum nginx repository yum 저장소에는 nginx가 없기 때문에 외부 저장소를 추가 $ cd /etc/yum.repos.d $ vi nginx.repo /etc/yum.repos.d/ 경로에 nginx.repo 파일을 추가하고 아래와 같이 작성 [nginx] name=nginx_repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1 2. yum install yum install 명령어를 이용해서 설치 $ yum install -y nginx 3. open firewall $ firewall-cmd --permanent --zone=public --add-port=8080/tcp succe..
-
[JAVA] Reactive StreamsCS/개발 언어 (JAVA) 2021. 5. 16. 19:01
Reactive Streams Reactive 프로그램을 위한 명세 Non-Blocking과 Back-Pressure를 이용하여 비동기 스트림 처리의 표준을 제공하는 것이 목적 Back-Pressure 컴포넌트가 대처할 수 없고 장애가 발생하면 안되기 때문에 컴포넌트는 상위 컴포넌트들에 자신이 과부하 상태라는 것을 알려 부하를 줄일 수 있도록 해야한다. Subscriber가 Publisher에 Request()하는 과정 push하는 데이터의 흐름을 제어 Publisher 무한한 data를 제공하고, 제공되는 data는 Subscriber에 의해 구독되는 형태로 처리 subscribe() : subscriber를 받아들이는 메소드 Subscriber onSubscrive() : Publisher가 생산하는..
-
[JAVA] 자바 가상 머신 (Java Virtual Machine)CS/개발 언어 (JAVA) 2021. 5. 12. 09:54
JVM이란? JVM의 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어들여 자바 API와 함께 실행하는 것 JAVA와 OS 사이의 중개자 역할을 수행하여 JAVA가 OS에 구애받지 않고 재사용 가능하게 해준다. 메모리 관리, Garbage Collection, 스택 기반의 가상 머신 자바 프로그램 실행과정 프로그램이 실행되면 JVM은 OS로부터 이 프로그램이 필요로하는 메모리를 할당받는다. 자바 컴파일러가(javac)가 자바 소스코드(.java)를 읽어들여 자바 바이트코드(.class)로 변환시킨다. Class Loader를 통해 class 파일들을 JVM으로 로딩한다. 로딩된 class 파일들은 execution engine을 통해 해석된다. 해석된 바이트코드는 Runtime Data Area에 배치..