개발/Java

jOOQ 를 좀 더 알아보자

[입문] jOOQ에 대해 알아보자 에 대해 글을 쓴지 1년이 지났습니다. Jooq에서 이것저것 커스텀을 해서 썼었는데 딱히 정리를 하지 않아서 필자가 자주 사용하는 일부 커스텀한 부분이나 겪었던 팁들을 정리하고자 합니다. 코드는 [여기] 서 확인 할 수 있습니다. 1. Jooq는 앞으로 JAVA 11 부터 Jooq는 3.15 부터 Java 11이 요구됩니다. [2021.07 release] 자주 사용되는 jooq용 gradle 플러그인도 Java 8을 드랍하고 최소사양이 Java 11 이 되면서 앞으로 jooq를 사용하려면 이에 대응해야합니다. 기업용은 8까지 지원하지만, 플러그인에서 지원을 드랍했기 때문에 설정 삽질을 조금 해야할것으로 보이네요. 2. Jooq DSL에 전용 Prefix 생성 [코드 링..

2022.01.03 게시됨

개발/Java

[GC] 1. JVM 가비지 컬랙터란?

자바는 메모리를 자동으로 정리해주는 managed 언어이기 때문에 이걸 해주는 Garbage Colletor 가 서버 개발자 면접으로 자주 등장합니다. 개인적으로는 싫어하는 질문이지만 면접에서 의외로 자주 등장해서, 자바를 사용하는 개발자라면 깊게는 아니더라도 반드시 알아야한다고 생각하기 때문에 정리했습니다. (사실 알아도 까먹는 일이 빈번함) [ 1 ]. Introduction 프로그래머가 저수준의 세부사항을 일일히 신경쓰지 않는 댓가로, 저수준에 대한 제어권을 포기하는것이 자바(JVM)의 사상입니다. 그렇기 때문에 우리는 개발자로써 'JVM 자동으로 해주는데요?' 라는 추상화 레이어를 벗겨내고 JVM이 어떻게 동작해야하는 알아야할 필요가 있습니다. Garbage 란 먼저 가비지 컬렉터에서 회수되는 대..

2020.08.19 게시됨

개발/Java

[Java] NIO, 그리고 Netty

NIO, 그리고 Netty Spring Webflux를 사용하는 상황이 와서 공부하게 되었다. Spring Boot도 2.x 버전부터 Webflux 선택시 내장 톰캣이 아닌 Netty를 기본설정으로 잡는다. Netty는 NIO 기반 네트워크 어플리케이션 프레임워크이기 때문에 NIO도 같이 정리하였다. NIO란? Java New Input/Output의 약자로 자바 4부터부터 지원된 생각보다 오래된 기능이며, 자바 7부터는 NIO2가 지원되었다. 다음은 NIO와 이전 IO 방식의 데이터 처리 비교이다. 이전 IO는 BIO라고 칭한다. BIO 기존 자바 I/O는 가상머신의 한계로 OS의 커널 버퍼를 직접적으로 핸들링 할 수 없었다. 왜냐하면 소켓이나 파일에서 Stream이 들어오면 커널 버퍼에 데이터를 써야..

2020.08.12 게시됨

개발/Java

[Reactive] Reactive Programming 과 Reactive Stream

Spring Webflux를 사용하면서 Reactive Programming 과 Reactive Strem에 대해 공부했던 부분을 정리합니다. 1. 리엑티브 프로그래밍이란? 단순히 이름만 듣고서는 어떤 뜻인지 정확하게 와닫지 않습니다.. [위키 피디아] 에서는 리엑티브 프로그래밍을 다음과 같이 정의하고 있습니다. In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. With this paradigm it is possible to express static (e.g., arrays) or dynamic (e.g., event..

2020.08.08 게시됨