일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- springboot
- optional
- Kotlin
- 람다표현식
- try-catch
- webflux
- try-catch-finally
- Class Loader
- tcp
- 동작방식
- 코딩테스트
- intelij
- Hotspot VM
- execution engine
- jvm
- GC
- Runtime data area
- closeable
- feign
- resilience4j
- zipWith
- wagon-ssh
- AutoCloseable
- java
- jetbrain
- 날짜쿼리
- 4-way-handshake
- circuitbreaker
- n+1
- try-with-resources
- Today
- Total
목록전체 글 (64)
JuBin's personal study blog

zipWith은 Reactor의 Mono에서 사용 가능한 함수 입니다. zipWith에 대해 아주 간단히 설명하고자 합니다. 위 사진은 zipWith 함수의 flow를 보여줍니다. 사진 설명을 하자면 초록색원 A, 노란색사각형 1은 각각 Mono에서 발생되는 return값 입니다. 각 도형 오른쪽 검은 실선은 해당 Mono가 return되는 시점입니다. zipwith(A,1)로 인해 결과물 A1이 return 됩니다. 반응형 프로그래밍에서 코드를 짜는 경우 서로 다른 두 Mono가 작업이 완료되는 시점에 특정 동작을 함수가 필요한 경우가 있습니다. 이러한 상황에 zipWith을 사용하면 유용합니다. return Mono.just(req).flatMap { this.bookingConfigService.g..
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: unable to access 'https://github.com/****/***.git/' 평소와 같이 작업 도중 push를 하려고 하니 다음과 같은 에러가 발생하였다. 알아보니 비밀번호 인증은 2021년 8월 13일까지만 지원하였고, 이후 개인 엑세스 토큰..
간단한 개념부터 정리해 보자. 리액티브 프로그래밍의 필요성 리액티브 프로그래밍이 세상에 소개된지는 오래 되었지만 지금까지 왜 주류로 올라서지 못하였을까? 아마 리액티브 프로그래밍을 써야할 정도의 대규모 서비스가 많지 않았기 떄문이였던것 같다. 세상은 새로운 시대로 접어들면서 스타트업도 수백만명의 사용자에게 컨텐츠를 제공할 수 있어야 하고 전 세계의 고객을 상대해야 하므로 24시간 동안 끊임없이 운영되어야 한다. 또한 클라우드 환경에서 어플리케이션을 운영하는 것이 보편화 되고 있어서 문제가 생기면 서버를 더 투입하면 된다 라는 예전 방식은 이제 통하지 않게 되었다. 개발자들은 기존 자원을 더 효율적이고 일관성 있게 사용하는 방법을 찾고 있으며, 그 해법이 바로 리액티브 스트림이다. Spring WebFlu..
- 2장 목차 - 2.1 기본요소 : 함수와 변수 2.2 클래스와 프로퍼티 2.3 선택 표현과 처리 : enum과 when 2.4 대상을 이터레이션 : while과 for 루프 2.5 코틀린의 예외처리 2.1 기본 요소 : 함수와 변수 함수를 선언할 떄 fun 키워드를 사용하고 파라미터 이름 뒤에 해당 파라미터의 타입을 씁니다. 코틀린 함수의 기본 구조 코틀린에서 if는 식이지 문이 아닙니다. 식은 값을 만들어 내는 역할이고 문은 아무런 값을 만들어내지 않는다는 차이가 있습니다. 자바에서 모든 제어 구조가 문인 반면, 코틀린에서는 루프를 제외한 대부분의 제어 구조가 식입니다. /* * 코틀린 함수의 기본 구조 * 블록이 본문인 함수 */ fun max(a: Int, b:Int): Int { return ..

학부시절 부터 JAVA를 주 언어로 사용해 오다가 새로 이직하는 직장의 서비스의 주 언어가 Kotlin이라 Java에서 Kotlin으로 전환하게 되는 좋은 기회를 얻었습니다. JAVA개발자들을 위한 Kotlin 입문 서적으로 'Kotlin in Action'이라는 서적이 평이 가장 좋아 공부하며 배운것들을 요약하여 정리하고자 합니다. 1장. 코틀린이란 무엇이며, 왜 필요한가? 먼저 Kotlin은 JetBrains사에서 개발한 언어입니다. 코틀린은 JVM, JavaScript, Native 상에서 실행될 수 있습니다. JVM 기반의 Kotlin에서는 자바 애플리케이션 및 안드로이드 애플리케이션을 만들 수 있으며 인텔의 멀티 OS 엔진을 사용하여 IOS 디바에서 또한 사용할 수 있습니다. 그리고 자바 뿐만 ..

JPA N+1 쿼리 문제란? JpaRepository에 정의한 인터페이스 메소드를 실행하면 JPA는 메소드 이름을 분석해 JPQL을 생성하여 실행하게 됩니다. 이 과정에서 N+1 쿼리 문제가 발생하게 됩니다. ex) 먼저 N+1 문제에 대해 먼저 간단히 설명하자면 1:N 관계를 갖는 Entity 클래스를 작성하고(Album Entity, Song Entity) JPQL로 객체를 조회할때 1) EAGER 전략으로 데이터를 조회 할때 2) LAZY 전략으로 데이터를 조회 후 하위 엔티티(Song Entity)를 조회 할때 N+1 이슈가 발생하게 됩니다. 예시를 통하여 확인해 봅시다. ※ JPQL이란? JPQL은 SQL을 추상화한 객체지향 쿼리 언어로 특정 DB에 종속되지 않고 Entity와 필드 이름을 가지..
내용은 별거 없지만 원격서버에 올라간 jar파일을 실행하려면 기존 실행되던 서비스 kill processID, start process를 반복해야되는 번거로움이 있다. 간단한 배포스크립트를 통해 해당 쉘스크립트만 실행해주면 된다. deploy.sh #!/bin/bash REPOSITORY=/root/demo PROJECT=testJarFile CURRENT_PID=$(pgrep -f ${PROJECT}*.jar) -- 1 echo "> cd /root/demo" cd $REPOSITORY echo ">Now application PID : $CURRENT_PID" if [ -z "$CURRENT_PID" ]; then -- 2 echo "> There are currently no applications..
현재 상황은 로컬에서 프로젝트를 빌드해도, 로컬에서 테스트를 할수 없는 상황이다. 테스트 및 수정사항 적용을 위해서는 1. 로컬에서 build 2. SFTP로 build된 jar파일 원격서버(개발서버)로 전송 3. 기존 개발서버에서 실행중이던 서비스 kill 4. 새로 올라온 jar파일 실행 이와 같이 매우 불편하고 시간을 낭비하고 있다. 팀원 모두 이런 방식을 쓰고 있는데 아무도 불편함을 느끼지 못하고 있따. 고로 1~4번 과정을 자동화할수 있는 방법을 찾아 구축해 놓은걸 포스팅 하려고 한다. (추후 CI/CD도 포스팅 예정) Maven wagon plugin(wagon-ssh) testJarFile -- 1 org.apache.maven.wagon wagon-ssh 2.10 org.codehaus.m..
CORS - Cross Origin Resource Sharing 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다. 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 실행합니다. 예시 ) https://domain-a.com의 프론트 엔드 JavaScript 코드가 Jquery를 사용하여 https://domain-b.com/data.json을 요청하는 경우 Client Request(localhost:1804 -> localhost:1814) function corsTest(param) { var requestUrl = "http://..
코딩테스트 언어에 대한 숙달먼저 자바로 4년을 개발해 왔으니 나에게 가장 익숙한 언어인 JAVA로 준비할 것이다.코딩테스트는 일반적인(?) 코딩과 다르게 객체 지향적으로 짤 필요도 없고, 직접 자료구조를 구현할 필요도 없다. 주어진 시간 내 간결함과 정확함이 생명이다. 요즘은 메모리 성능이 점점 좋아져 공간복잡도는 시간복잡도에 비해 고려도가 낮다. 뼈대문제로 알고리즘 익히기강의를 통해서 알고리즘 기본 연습을 하기 전에 기억 저 넘어에 있는 알고리즘 지식을 불러와야 한다.알고리즘 바탕으로 특정 문제에 적용하는 연습을 해야한다. 그 전에 1, 2년전 수강했던 알고리즘이 기억이 안 나면 시작도 못 할 것입니다. 과거 기억을 불러오기 위해서 엔지니어 대한민국 채널을 추천.특정 알고리즘을 적용하면 바로 풀리는 ..