h2 database 에러 해결하기 오늘 아래의 에러가 계속 괴롭혀서 해결 방법을 써보고자 한다
1 h2 Database not found, either pre-create it or allow remote database creation (not recommended in secure environments) jdbc:h2:tcp://localhost/~/test를 아래처럼 계속 눌렀는데,
이 에러가 계속 나타났다.
1 h2 Database not found, either pre-create it or allow remote database creation (not recommended in secure environments) 시도했던 방법은 아래와 같은데,
하나같이 다 안 됐다.
스프링부트 Naver Login 구현하기 출처:
이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 스프링 부트와 OAuth2 Naver 사용한 방식 저번에 카카오 로그인을 구현하였을 때는 restTemplate을 사용했었다. 그런데 이번에는 spring-security-oauth2 부분을 알아보고 사용해보고자 했다.
라이브러리 중에 spring-security-auth2-autoconfigure이 있는데, 스프링부트2에서 기존 설정을 그대로 사용할 수 있어 많은 개발자가 이 방식을 사용했다고 한다.
하지만 책에서는 spring-boot-starter-oauth2-client 라이브러리를 사용했다. 그 이유는 아래와 같다.
스프링 팀에서 신규 기능은 oauth2 라이브러리에서만 지원하겠다고 선언 스프링부트용 라이브러리가 출시 기존에 사용되던 방식은 확장 포인트가 적절하게 open되어 있지 않아 직접 상속하거나, 오버라이딩 해야하고, 신규 라이브러리의 경우 확장 포인트를 고려해서 설계된 상태 직접 구현할 때 관련 자료를 찾아보면,
title: “Node.js의 ORM, sequelize” excerpt: “Node.js의 ORM, sequeliz”
toc: true toc_sticky: true
categories:
Javascript tags: Javascript Node.js의 ORM, sequelize 다들 ORM에 대해서 들어봤을 것 같다.
ORM이란? Object-Relational Mapping으로 객체와 관계형 데이터베이스의 데이터를 매핑(연결)시켜주는 것
ORM은 객체-관계 매핑의 줄임말이다. 객체 개념을 구현한 class와 RDB(Relational DB)에서 쓰이는 테이블을 자동으로 매핑하는 것이다.
ORM 프레임워크의 경우,
JPA/Hibernate JPA(Java Persistence API)는 자바의 ORM 기술 표준으로 인터페이스의 모음이다. 이러한 JPA 표준 명세를 구현한 구현체가 Hibernate Sequelize Sequelize는 Postgres, MySQL, MariaDB, SQLite를 지원하는 Promise에 기반한 비동기로 동작하는 Node.
멀티 프로세스 & IPC & 세마포어,뮤텍스 출처: multi process vs multi thread
컨텍스트 스위칭 한 task가 끝날 때까지 기다리는 게 아니라 여러 작업을 번갈아가며 동시에 처리한다. 인터럽트 발생 시 프로세스 상태를 PCB에 저장하고 새로운 프로세스 상태를 레지스터에 저장한다. 이때 CPU는 아무런 일을 하지 않기 때문에 잦은 컨텍스트 스위칭은 성능저하를 야기한다.
멀티 프로세스 장점 자식 프로세스 중 하나에 문제 발생 시 영향이 확산되지 않는다. 단점 IPC(Inter Process Communication) 각각의 독립된 메모리 영역을 할당받았기 때문에 하나의 프로그램에 속하는 프로세스 사이의 변수를 공유할 수 없다 Context Switching에서의 오버헤드 컨텍스트 스위칭 과정에서 캐쉬 메모리 초기화 등 무거운 작업이 진행되고 많은 시간이 소모되는 오버헤드가 발생하게 된다.
Nodejs에서의 멀티스레드, 멀티코어프로세스 출처: How to run many parallel HTTP requests using Node.js ?
nodejs는 싱글 스레드로, 10초가 소요되는 요청 A가 포함되는 경우, 다음 요청을 처리 하기 위해 10초를 기다리는 건 X!
NodeJS 이벤트 루프가 단일 스레드일 뿐이기 때문. 여러 클라이언트 요청을 수신하여 EventQueue에 배치.
이벤트루프 NodeJS는 이벤트 중심 아키텍처의 개념으로 구축되었고, 그 예로는 이벤트 리스너에 콜백함수를 등록하는 것!
NodeJS에는 요청을 수신하고 처리하는 무한 루프인 자체 eventLoop이 존재.
EventLoop는 EventQueue의 Listener!
출처: [병렬프로그래밍] 프로세스, 스레드 개념 [병렬프로그래밍] 스레드 이해하기
스레드 리마인드 프로세스는 실행중인 프로그램이며, 하나의 실행 흐름을 스레드라고 한다. 하나의 프로세스 안에 스레드 여러개 있는 것이 멀티 스레드.
게임/네트워크 프로그래밍에서 멀티 스레드 많이 사용. (캐릭터를 움직이게 하거나, 데이터를 기다릴 때, 흐름 담당할 때 사용)
멀티 프로그래밍 여러 개의 프로그램들이 단일 CPU 상에서 실행되는 것. 한 프로그램이 일부 실행되고 다른 프로그램이 일부 실행되는 방식으로, 모든 프로그램이 동시에 수행되는 것처럼 보이게 된다.
자바 스레드의 생성자 1 2 3 4 5 6 7 8 - Thread() : Thread를 상속받은 고유의 클래스 생성 필요.