연산자 구분 단항 연산자(Unary Operator) : 항이 하나인 연산자로 하나의 변수에서만 작동하는 연산자 이항 연산자(Binary Operator) : 두 개의 항을 처리하는 연산자로 두 변수의 값으로 작동하는 연산자 사칙연산자 표현식 메서드명 내부 실행 a + b plus a.plus(b) a -b minus a.minus(b) a * b times a.times(b) a / b div a.div(b) a % b rem/mod a.rem(b), a.mod(b) println("num1 + num2 = ${num1 + num2}") println("num1 - num2 = ${num1 - num2}") println("num1 * num2 = ${num1 * num2}") println("num1..
1. 변수선언 val (불변변수) : 한번 저장하면 다시 할당 할 수 없는 변수를 정의. //문자, 문자열, 논리 값 객체 //Char(2byte), String class, Boolean : (true, false) val charVal = 'a' val strVal = "Hello" val boolVal = true; //charVal = 'b' // Error: 불변변수는 다시 재할당 불가능. println(charVal); println(strVal); println(boolVal); println(charArrayOf('가','나').contentToString()) var str = String(charArrayOf('가','을')); println(str); //문자열 탬플릿 //$변수명, ..
인터페이스 구문 interface Book { //?를 이용한 선택적 속성(undefined 허용) author?: string; pages: number; } const ok: Book = { author: 'Devide', pages: 365 } const missing: Book = { pages: 80 } 읽기전용 속성(readonly) readonly는 interface에서만 사용 interface Page { readonly text: string; } function read(page: Page) { console.log(page.text); //Cannot assign to 'text' because it is a read-only property. page.text = '10'; 함수와 ..
함수 매개변수에 변수 타입 선언 function sing(song: string) { console.log(`Singing: ${song}!`); } sing('hhh'); 자바스크립트의 경우 2개의 매개변수에 값을 한 개만 넣을 경우 undefined로 출력하지만 타입스크립트에서는 에러를 표기한다. function SingTwo(first: string, second: string) { console.log(`first: ${first} / ${second}`); } SingTwo('h111', 'h222'); SingTwo('h111'); //error 만약 선택적 매개변수를 이용하려면 변수명 뒤에 ?를 추가하면 매개변수를 1개만 넣어도 된다. function SingTwo(first: string,..
1.타입시스템 타입스크립트는 자바스크립트의 7가지 원시타입과 동일 null; //null undefined; //undefined boolean; //true or false string; //”Hello” number; //1233 bigint; //1233n symbol; //Symbol(”Hello”) 타입 시스템은 프로그램에서 가질 수 있는 타입을 이해하는 방법에 대한 규칙 코드를 읽고 존재하는 모든 타입과 값을 이해 각 값이 초기선언에서 가질 수 있는 타입을 확인 각 값이 추후 코드에서 어떻게 사용될 수 있는지 모든 방법을 확인 값의 사용법이 타입과 일치하지 않으면 사용자에게 오류를 표시 타입스크립트 타입 오류 종류 구문 오류 : 타입스크립트가 자바스크립트로 변환되는 것을 차단한 경우 let l..
프로시저 생성 CREATE PROCEDURE [테이블명] [변수명] [타입], [변수명] [타입] OUTPUT -- 리턴일경우 OUTPUT 추가 AS BEGIN [내용] END GO 프로시저 수정 ALTER PROCEDURE [테이블명] [변수명] [타입], [변수명] [타입] OUTPUT -- 리턴일경우 OUTPUT 추가 AS BEGIN [내용] END GO 프로시저 삭제 DROP PROCEDURE IF EXISTS [테이블명] 프로시저 실행 EXEC or EXECUTE [프로시저명] [파라미터]... 함수생성 CREATE FUNCTION [FUNC_NAME] ( [변수명] [타입], [변수명] [타입] ) RETURNS [리턴타입] AS BEGIN DECLARE [리턴 변수명] [타입] [내용] RE..
WebFlux Webflux는 Reactive system을 개발하기 위하여 Spring에서 제공하는 라이브러리이다. Spring Framework는 원래 Servlet API, 컨테이너용을 간단하고 편리하게 사용하기 위해 개발된 프레임워크였다(spring-webmvc를 제공). 그리고 근본은 Blocking, Synchronous(동기)방식이다. 추후 Servlet 3.1에서 비동기 처리 방식을 지원했지만, 서블릿은 응답을 기다리는 동안 Pool안에 있는 스레드를 지연시킬 수 있어서 Reactive해야 하는 요구를 충족하지 못햇다. 그래서 스프링 5.x 버전부터 Spring WebFlux가 추가되었고 웹 요청 처리를 Reactive하게 다루고 Non-Blocking을 구현할 수 있도록 초점을 맞추고 있..
리액티브 오퍼레이션 Flux와 Mono는 리액터가 제공하는 가장 핵심적인 구성요소이며, 이 오퍼레이션들은 두 타입을 함께 결합하여 데이터가 전달될 수 있는 파이프라인을 생성한다. Flux와 Mono에는 500개 이상의 오퍼레이션이 있으며 각 오퍼레이션은 다음과 같이 분류된다. 생성(Creation) 오퍼레이션 조합(Combination) 오퍼레이션 변환(Transformation) 오퍼레이션 로직(Logic) 오퍼레이션 마블 다이어그램을 보려면 해당 사이트에 가면 볼 수 있다. (https://rxmarbles.com/#from) 1. 생성(Creation) 오퍼레이션 데이터를 생성하여 방출할 때 사용. 객체로부터 생성 Flux나 Mono로 하나 이상의 객체를 생성하려면 just() 메서드를 사용한다....
Spring Reactor 리액티브 프로그래밍은 일련의 작업 단계를 기술하는 것이 아니라 데이터가 전달될 파이프라인을 구성하여 데이터가 전달되는 동안 어떤 형태로든 변경 또는 사용되는 것. 사람의 이름을 가져와 대문자로 변경 후 출력 String name = "devPaik"; String capitalName = name.toUpperCase(); String greeting = "Hello, "+ capitalName + "!"; System.out.println(greeting); Mono.just("devPaik") .map(n -> n.toUpperCase()) .map(cn -> "Hello," + cn + "!") .subscribe(System.out::println); 위와 같이 리엑티브..
리엑터 개요 애플리케이션 코드를 개발할 때 명령형(Imperative)과 리엑티브(Reactive) 두 가지 형태로 코드를 작성할 수 있다. 명령형 : 순차적으로 연속되는 작업이고, 각 작업은 한 번에 하나씩 그리고 이전 작업 다음에 실행한다. 데이터는 모아서 처리되고 이전 작업 데이터 처리를 끝낸 후에 다음 작업으로 넘어갈 수 있다. 리엑티브(반응형) : 데이터 처리를 위해 일련의 작업이 병렬로 실행될 수 있으며, 각 작업은 부분집합의 데이터를 처리할 수 있고, 처리가 끝난 데이터는 다음 작업에 남겨주고 다른 부분집합의 데이터로 계속 작업할 수 있다. 이런 리액터 프로젝트는 비동기 파이프라인을 구축할 때 콜백 지옥과 깊게 중첩된 코드를 생략하는 목적으로 설계되었다. 리액터 1.x는 배압조절 기능이 없다..