본문 바로가기
관리자

Programming-[Backend]

(421)
자바 기초 강의 정리 - 4. CompletableFuture, Thread-safe, Concurrent, Atomic 인프런 얄코의 제대로 파는 자바 강의를 듣고 정리한 내용이다. 중요하거나 실무를 하면서 놓치고 있었던 부분들 위주로만 요약 정리한다.자세한 내용은 강의를 직접 수강하는 것이 좋다.https://www.inflearn.com/course/%EC%A0%9C%EB%8C%80%EB%A1%9C-%ED%8C%8C%EB%8A%94-%EC%9E%90%EB%B0%94/dashboard   1. CompletableFuture completableFuture도 Future와 마찬가지로 비동기처리의 결과를 담고 있는 클래스이다. Future와 동일하게 .get() 메서드를 호출하면 main 쓰레드의 흐름에 관여한다. CompletableFuture.supplyAsync() 메서드로 사용하여 인자없이 결과를 반환하는 Supp..
자바 기초 강의 정리 - 3. 멀티태스킹(쓰레드) - 1: Thread, Runnable, Group, Daemon 인프런 얄코의 제대로 파는 자바 강의를 듣고 정리한 내용이다. 중요하거나 실무를 하면서 놓치고 있었던 부분들 위주로만 요약 정리한다.자세한 내용은 강의를 직접 수강하는 것이 좋다.https://www.inflearn.com/course/%EC%A0%9C%EB%8C%80%EB%A1%9C-%ED%8C%8C%EB%8A%94-%EC%9E%90%EB%B0%94/dashboard   1. 쓰레드 프로세스 vs 쓰레드프로세스는 컴퓨터에서 실행 중인 프로그램이라고 보면 된다. 기본적으로 프로세스간 자원이 공유되지는 않는다. 쓰레드는 한 프로세스 안에서 일어나는 여러 실행 흐름을 의미한다. 이 쓰레드는 같은 프로세스 내의 공유 자원을 사용할 수 있기 때문에 공유 자원 사용에 유의해야한다. 쓰레드 생성 방법다음 두 가지의..
자바 기초 강의 정리 - 2. 컬렉션, 함수형 인터페이스, 에러와 예외 인프런 얄코의 제대로 파는 자바 강의를 듣고 정리한 내용이다. 중요하거나 실무를 하면서 놓치고 있었던 부분들 위주로만 요약 정리한다.자세한 내용은 강의를 직접 수강하는 것이 좋다.https://www.inflearn.com/course/%EC%A0%9C%EB%8C%80%EB%A1%9C-%ED%8C%8C%EB%8A%94-%EC%9E%90%EB%B0%94/dashboard    1. 컬렉션  ListLinkedList스택과 큐는 예전에는 따로 자료구조로 사용하였으나, 현재는 LinkedList 하나로만 사용한다. ArrayList vs LnikedList주로 ArrayList를 많이 쓰지만, 장단점에 대해 잘 기억하고 써야한다. ArrayList는 각 요소들로의 접근이 빠르지만 추가 |  제거 시에는 성능에..
gradle -Build Tools 설정, 서브 모듈, task에 대한 기본적 이해 자바 - 스프링부트 프로젝트에서 gradle을 이용하여 종속성 관리를 많이한다. 환경 설정 셋업이라 주니어 개발자로써 잘 모르는 내용이 많았는데, 대략적으로라도 이해한 내용을 정리해놓는다.  아래 gradle 공식 사이트에서 docs - running gradle builds - Tutorial 부분을 20~30분만 읽어봐도 대략적으로 이해할 수 있다.ref) https://docs.gradle.org/current/userguide/part1_gradle_init.html 1. build 자바- 스프링 계열에서 프로젝트 build를 하는 것은 실행가능한 .jar 파일을 만드는 과정이다. 직접 작성하는 .java 파일들을 JVM이 해석할 수 있는 .class 파일로 변환하고 메인 함수의 위치는 어디인지(..
[검증 중] Kafka - testcontainer : Transaction 묶기, graceful shutdown, 수동 커밋, await 아직 대략적으로만 경험했고, 확실하지는 않은 내용이라 다른 참조 문서들을 참고해야하는 내용이다.  1. Transaction 묶기 ref) https://gunju-ko.github.io/kafka/spring-kafka/2018/03/31/Spring-KafkaTransaction.htmlkafka는 기본적으로 비동기적인 메시지 발행을 하므로 트랜잭션을 끝까지 보장하지 않는다. 반드시 트랜잭션이 보장되도록 할려면 executeInTransaction 메서드를 사용해야한다. 이 방식은 KafkaTransactionManager를 거치는 방식은 아니고, KafkaTemplate만 이용해서 바로 트랜잭션을 묶어준다.kafkaTemplate.executeInTransaction( t -> t.send(y..
testcontainer 자바 도커 컨테이너 테스트: @ExtendWith, @DirtiesContext 1. testcontainer 개요 testcontainer는 테스트 시에만 사용할 수 있는 컨테이너를 실행시켜준다. 애플리케이션 실행에는 필요없지만 테스트만을 위해 컨테이너가 필요한 경우 해당 이미지를 구동시켜주는 것이다. 만약 테스트를 위해 MySQL DB가 필요하다면 testcontainer가 없는 경우 SpringBoot가 제공하는 In-memory DB를 이용하거나 따로 DB용 컨테이너를 실행해야할텐데, testcontainer는 그러한 과정 대신 테스트가 실행될 때만 MySQL용 컨테이너를 띄워주고 테스트가 끝나면 해당 컨테이너를 종료시킨다. build.gradle에 아래처럼 추가해준다.dependencies { ... testImplementation "org.testcontainers..
자바 기초 강의 정리 - 1. 기초 ~ 함수, 제너릭까지 인프런 얄코의 제대로 파는 자바 강의를 듣고 정리한 내용이다. 중요하거나 실무를 하면서 놓치고 있었던 부분들 위주로만 요약 정리한다.자세한 내용은 강의를 직접 수강하는 것이 좋다.https://www.inflearn.com/course/%EC%A0%9C%EB%8C%80%EB%A1%9C-%ED%8C%8C%EB%8A%94-%EC%9E%90%EB%B0%94/dashboard  1. 자료형자바에는 1 바이트 단위의 byte, 2바이트의 short도 있지만, int를 많이 사용한다. 타 언어들 및 라이브러리와 호환성을 위해서 이기도 하고, 대부분의 CPU에서 int의 4바이트(32비트)가 처리하기 적합한 크기이기 때문이기도 하다.float 대비 double은 표현 범위도 넓지만 표현의 정밀도도 더 크다.char는..
자바 linter, 포매팅 처리 : spotless, googlejavaformat, commit시 자동 적용 자바 코드의 문법 규칙을 만들고 자동으로 처리해주는 linter에 대해서 정리한다.  googlejavaformat구글에서 제공하는 format이다. 실제 구글에서 사용한다고 한다. intellij에서 설정하여 로컬로 사용할 수 있는데, 자세한 설정 방법은 아래 블로그를 참고하면 된다.https://velog.io/@ppinkypeach/IntelliJ%EC%97%90-Google-Java-Style-format-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0 *요약https://github.com/google/styleguide -> intellij-java-google-style.xml 파일을 다운환경 설정 -> Editor -> Code StyleScheme -> Import Sc..