본문 바로가기

개발

(38)
내가 보려고 쓰는 Java와 Kotlin 차이 정리 #3 클래스 클래스 예시 코드- 프로퍼티 : firstName, familyName, age- 함수 : getFullName, showMeclass Person { var firstName: String = "" var familyName: String = "" var age: Int = 0 fun getFullName(): String { return "$firstName $familyName" } fun showMe() { println("I am $firstName $familyName, $age years old") }} 자바는 명시적으로 public 와 같은 변경자를 적어야하는데 코틀린은 기본적으로 public class이다.만약 제한하고..
내가 보려고 쓰는 Java와 Kotlin 차이 정리 #2 3. 함수자바 메서드와 비슷한 개념으로 어떤 입력을 받아서 자신을 호출한 코드 쪽에 출력값을 반환할 수 있는 재사용 가능한 코드 블록이다. - 함수 예시fun main() { print("반지름을 입력하세요: ") val radius = readln().toDouble() print("원의 넓이는 ${circleArea(radius)}")}fun circleArea(radius: Double): Double { return Math.PI * radius * radius} fun 키워드를 이용해서 정의한다.()안에는 파라미터 목록이 들어있고 함수를 호출할 때 넘길 수 있는 데이터를 컴파일러에게 알려준다.반환 타입은 파라미터 목록() 뒤에 : 후 선언된다. 자바의 경우 메서드 파라미터..
내가 보려고 쓰는 Java와 Kotlin 차이 정리 #1 1. 변수 / 타입Java도 10버전 부터 타입 추론 도입했으나 많이 사용되는 문법은 아님. Java 변수 선언 형식// 불변 변수final String name = "Judy";// 가변 변수String name = "Judy"; Kotlin 변수 선언 형식// 불변 변수val name = "Judy"// 가변 변수var name = "Judy"기본적으로 타입 추론 방식을 사용하지만타입을 지정하고 싶은 경우 다음과 같이 사용한다.// 타입 지정val name:String = "Judy" 자바에서는 타입이 2가지로 나뉘었다. int와 같은 원시타입, String처럼 클래스를 기반으로 하는 참조타입코틀린에서는 똑같은 타입 예를 들어 Int가 문맥에 따라 원시 타입과 참조 타입을 가르키므로 구분이 모호하다...
#4) Spring WebFlux(기술 스택 차이, 요청 처리 흐름, 핵심 컴포넌트, 프로세스 구조) 1. Spring MVC와 Spring WebFlux의 기술 스택 비교1-1 서버Spring MVC : Servlet 기반의 프레임워크로 서블릿 컨테이너에서 Blocking I/O로 동작한다.Spring WebFlux : Non-Blocking I/O 방식으로 동작하는 Netty 등 서버 엔진에서 동작한다. 1-2 서버 APISpring MVC : 서블릿 API를 사용한다. Spring WebFlux : 기본 서버 엔진은 Netty지만 Jetty나 Undertow같은 서버 엔진에서 지원하는 Reactive Streams Adaptor를 통해 지원한다. 1-2 보안Spring MVC : 표준 서블릿 필터를 사용하는 Spring Security를 사용한다.Spring WebFlux : WebFilter를 이..
#3) Spring WebFlux(마블 다이어그램, Project Reactor, Backpressure) Reactor는 Spring Framwork의 주도하에 개발된 리액티브 스트림즈 구현체로 Spring 5버전부터 리액티브 스택에 포함되었다. Spring WebFlux 기반의 리액티브 어플리케이션 제작의 핵심 역할이다. 따라서 Reactor Core 라이브러리는 Spring WebFlux에 라이브러리로 포함되어 있다. 우선 마블 다이어그램에 대해서 익히고 이를 기반삼아 Reactor를 공부하는게 좋다. 1. 마블 다이어그램 마블은 구슬을 의미한다. 즉 여러 가지 구슬 도형으로 구성된 도표를 의미하고 Reactor에서 지원하는 Operator를 이해하는데 중요한 역할을 한다. 기본 구성 1. 두개의 타임라인이 위아래로 존재하는데 위부분은 Upstream이 데이터를 emit하는 타임라인이고 아래 부분 ..
#2) Spring WebFlux(리액티브 프로그래밍 특징, 리액티브 스트림즈) 리액티브 프로그래밍 특징 1. 선언형 프로그래밍 - 명령형 프로그래밍 vs 선언형 프로그래밍 : 간단하게 요약하자면 명령형 프로그래밍 방식은 실행할 동작을 구체적으로 명시하는 방식 선언형 프로그래밍은 실행할 동작을 구체적으로 명시하는게 아닌 목표만 선언하는 방식 2. 코드 구성 - Publisher : 입력으로 들어오는 데이터를 제공하는 역할 - Subscriber : Publisher가 제공하는 데이터를 사용하는 주체 - Data Source : Publisher의 입력으로 전달되는 데이터 - Operator : Publisher와 Subscriber 사이에서 데이터를 적절하게 가공 처리하는 담당 리액티브 스트림즈 리액티브한 코드 구성을 용이하게 해주는 라이브러리를 어떻게 구현할지 정의해 놓은 별도의 ..
#1) Spring WebFlux (함수 호출 관점 동기/비동기 Blocking/Non-Blocking, 함수형 인터페이스, WebFlux 장점) 함수 호출 관점에서 동기와 비동기 / Blocking과 Non-Blocking - 함수가 다른 함수를 호출 하는 상황일 때 caller: 호출 하는 함수 callee: 호출 당하는 함수 동기: caller는 callee의 결과에 관심이 있고 callee가 주는 결과 값을 이용해서 다음 action을 수행한다. 비동기: caller는 callee의 결과에 관심이 없고 callee는 결과 값을 이용하여 콜백을 수행한다. Blocking: callee를 호출 후, callee가 완료되기 전까지 caller는 아무것도 할 수 없다. 즉 제어권을 callee에게 줌, caller와 다른 별도의 스레드가 필요하지 않다. Non-Blocking: callee를 호출 후, callee가 완료되기 전에도 caller는..
#2) Spring Security Oauth2 Client + Apple 로그인 연동하기 build.gradle implementation group: 'org.springframework.security', name: 'spring-security-oauth2-client', version: '5.6.3' implementation group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: '9.30.1' implementation group: 'org.bouncycastle', name: 'bcpkix-jdk15on', version: '1.70' application.yml application-oauth.yml를 include 한다. (application.yml에 spring security oauth2 client를 설정했다면 무시) sp..

반응형