[Java] buildSrc를 사용하여 의존성 관리하기
·
Programming/Java
gradle의 lifecycle을 공부하면서 발견한 내용인데 의존성을 하나의 파일에서 관리한다는 편함이 있어 협업할때 자주 사용하면 좋을거같아 공부를 해보았다. gradle lifecycle에 대해서 궁금하면 아래 블로그를 참고하면 좋을거같다.https://mari-laveau.tistory.com/324 [Java] Gradle과 동작 원리(Build Lifecycle)Spring으로 개발을 하며 너무 당연하다고 사용하는 것들의 원리가 정확히 어떻게 동작하는지 이해하지 않고 사용하고 있었다. 이번에 정리할 주제가 바로 이해하지않고 사용했으며 이번에 글을mari-laveau.tistory.com buildSrc 동작원리gradle에 동작 원리중 setting.gradle(.kts)를 먼저 읽어 어떤 프로..
[Java] Gradle과 동작 원리(Build Lifecycle)
·
Programming/Java
Spring으로 개발을 하며 너무 당연하다고 사용하는 것들의 원리가 정확히 어떻게 동작하는지 이해하지 않고 사용하고 있었다. 이번에 정리할 주제가 바로 이해하지않고 사용했으며 이번에 글을 정리하면서 왜 해당 빌드 도구를 사용하는지 내부적으로 어떻게 동작하는지 파헤쳐보자 구글에 Gradle을 검색하면 나오는 정의다.'소스 코드를 실행 가능한 애플리케이션으로 만들어 주는 빌드 자동화 도구이다' 로 나와있다. 그렇다면 우리가 작성한 .java 코드를 실행 가능한 어플리케이션으로 어떻게 만들 수 있을까? 이때 나오는 키워드가 컴파일과 빌드이다. 컴파일.java 파일을 .class 파일로 번역하여 바이트 코드로 변환빌드의존성 준비, 컴파일, 리소스 처리, 테스트, 패키징까지 합친 것모든 .java로 작성된 파일은..
[Java] 가비지 컬렉션(GC) 동작 원리
·
Programming/Java
Java에서는 객체를 생성하면 heap에 할당된다고 알고 있다 하지만 heap에서 사용되지 않은 객체들을 회수해야 다른 객체가 저장이 될 수 있다 우리는 Java를 사용하며 C/C++ 처럼 free를 사용해서 할당한 메모리를 시스템에 반환하지 않는다 이는 Java의 특성으로 JVM 안의 가비지 컬렉터가 더 이상 사용되지 않는 객체를 찾아 그 메모리를 자동으로 회수해 주기 때문이다. 이렇게 사용하지 않는 메모리를 찾아 회수하는 과정을 가비지 컬렉션이라고 하고, 그 일을 실제로 수행하는 JVM의 구성 요소를 가비지 컬렉터라고 한다. GC 수집 알고리즘Mark객체가 계속해서 참조를 가지는지 아닌지 체크해 놓는 것으로 해당 객체가 가비지 컬렉션의 대상이 되는 참조가 없는 래퍼런스인지 확인하고, 참조가 ..
[Kafka] Spring에서는 Kafka가 실제로 어떻게 동작할까?
·
Backend/Kafka
Kafka를 사용하면서 나는 Kafka에 대한 설정 값들 세팅을 application.yaml 파일에 넣었다 하지만 다른 블로그들을 참고해보니 설정 파일들을 KafkaConfig.java 파일로 따로 관리를 하는것을 보았다. 해당 글들을 보며 궁금해진 의문증은 총 2개였다. consumer가 broaker에 연결을 맺어 메시지를 주고 소비할 수 있는데 이것이 어떻게 구현이 되어 있고 실제로 어떻게 동작할까?yaml 파일로도 관리할 수 있을것 같은데 .java 파일로 관리하는 이유가 뭘까? 먼저 첫번째 의문을 해결하기 위해 Kafka 외부 라이브러리를 설치하여 구현이 어떻게 되어있는지 확인해보았다. 제일 먼저 Consumer쪽에서 메시지를 consume 하기 위해 사용하는 어노테이션은 @KafkaListe..
[Kafka] acks, ack-mode란?
·
Backend/Kafka
Kafka를 사용할때는 대게 메시지를 발행하는 Producer, 메시지를 관리하는 Broker, 메시지를 처리하는 Consumer로 이루어져 있다. 이때 Producer가 Broker에 메시지를 발행할때 발행한 메시지를 실제로 잘 받았는지 알아야 신뢰성 있는 설계라고 할 수 있다 만약 메시지를 보냈는데 중간에 네트워크 유실로 인해 broker에서 메시지를 못받았다면? 그리고 유실된 메시지가 사용자 돈과 관련된 거라면? 서비스가 심각한 장애사항이 될 수 있을 것이다 마찬가지로 Broker가 가진 메시지를 Consumer가 consume해서 메시지를 처리할때 consumer에서는 어디까지 메시지를 읽었는지를 Broker에게 알려줘야하고 그 값을 받아서 저장하고 그 다음 메시지를 consume할 수 있도록 ..
[Java] Thread와 Runnable 이란?
·
Programming/Java
쓰레드란?스레드(thread)란 프로세스 안에서 작업을 실행하는 가장 최소 단위를 말하며 자바에서는 JVM(Java Virtual Machine)에 의해 관리가 된다. 즉 JVM 프로세스가 생기고 main은 그 안의 main 스레드가 실행한다. 이때 main 스레드만 실행되지 않고 여러 스레드가 같이 실행된다 public static void main(String[] args) throws IOException { System.out.println("PID: " + ProcessHandle.current().pid()); System.in.read(); }}jps -l // 현재 실행되고 있는 자바 프로세스 목록 + PIDjstack // 스레드 덤프 간단하게 콘..