reactive programming
리액티브 프로그래밍 끝임없이 들어오는 데이터의 스트림을 비동기 논블로킹 병렬처리 하기 위해 사용하는 프로그래밍이다. 메모리 내 데이터를 반복해서 처리하지 않고 스트림으로 처리하기 때문에 메모리를 더 효율적으로 사용한다. Publisher 와 Subscriber 가 있고 Publisher 는 Subscriber 가 비동기 적으로 구독하는 데...
리액티브 프로그래밍 끝임없이 들어오는 데이터의 스트림을 비동기 논블로킹 병렬처리 하기 위해 사용하는 프로그래밍이다. 메모리 내 데이터를 반복해서 처리하지 않고 스트림으로 처리하기 때문에 메모리를 더 효율적으로 사용한다. Publisher 와 Subscriber 가 있고 Publisher 는 Subscriber 가 비동기 적으로 구독하는 데...
스프링 요청 처리 과정 1 request 가 Servlet 을 통해 Dispatcher Servlet 의 doDispatch() 로 들어간다. doDispatch 에서 컨트롤러의 요청 url 에 해당하는 핸들러 메소드와 인터셉터를 찾는다. 인터셉터들에 대해 preHandle() 을 실행한다. 톰캣은 request body 를 ...
DB index 테이블 생성 시 하나의 열에 PK 를 지정하면 자동으로 clustered index 가 생성된다. clustered index 가 없는 경우 unique 제약 조건이 있는 테이블을 만들면 자동으로 non clustered index 를 만든다. 기존 테이블에 PK 제약 조건을 적용하려 하거나 테이블에 clustered i...
Neflix OSS 넷플릭스에서 제공하는 MSA 전환 기술이다. API gateway 역할을 하는 zuul, 로드 밸런서 역할의 ribbon, 서킷브레이커 패턴 구현체 hystrix 그리고 서비스 관리를 위한 eureka 로 구성되어 있다. 1. eureka 각 서비스들의 주소 집합이다. 서비스가 100 개 쯤 있다면 100 개의 주소를 모두 ...
싱글톤 패턴 구현 방법 4가지 1. static 을 활용한 방법 class BasicSingleton implements Serializable { private BasicSingleton() {} private static final BasicSingleton INSTANCE = new BasicSingleton(); public st...
출처1 : https://www.youtube.com/watch?v=UzaGOXKVhwU&ab_channel=%EC%9A%B0%EC%95%84%ED%95%9CTech 출처2 : https://www.artima.com/insidejvm/ed2/jvm8.html 출처3 : https://ict-nroo.tistory.com/19 JVM &...
객체지향 개발 5대 원칙 SOLID 모든 문제의 원인은 어플리케이션의 기능 수정, 추가에 있다. 기존의 코드가 기능 수정, 추가를 예상하지 않고 개발하게 되면 개발 비용이 많이 발생하고 예상하지 못한 에러나 예외를 발생시킨다. 복잡한 논리일 수록 이런 문제가 자주 발생한다. 기능 수정, 추가가 쉬운 복잡한 논리의 어플리케이션을 개발하기 위해 ...
티베로(오라클)에서 row 가 있으면 update 없으면 insert 하는 쿼리 AS-IS 티베로(오라클)에서 row 가 있는지 select 문으로 확인 후 없으면 insert 문 실행. Connection conn = DriverManager.getConnection(url, username, password); conn.setAutoCommit...
자바스크립트의 비동기 순차 실행 실행 순서에 따라 한 번에 하나씩 비동기 작업을 실행. 컬렉션의 각 항목에 대해 비동기 작업을 실행하려는 경우 동적으로 구축해야 한다. 1. Callback 사용 function delay2(m, t, cb) { setTimeout(() => { console.log(m); ...
Node.js 의 리액터 패턴 1. 블로킹 I/O 전통적인 블로킹 I/O 프로그래밍에서는 작업이 완료될 때 까지 스레드의 실행을 차단한다. 따라서 블로킹 I/O 를 사용해 구현된 웹 서버가 같은 스레드 내에서 여러 연결을 처리하지 못하게 된다. 보통 이 문제는 멀티스레드 사용해 해결한다. 각각의 스레드에서 I/O 작업이 처리되기 때문에 I/O...