회사 업무 중에 Spring 내부를 파보다가 Java의 ==과 equals를 만났습니다. 몇년간 Kotlin만 사용해오다가, 문득 자바 코드를 보니 기억이 잘 나지 않았습니다. 그래서 이번 기회에 자바와 코틀린의 동등성과 동일성에 대한 것에 hashCode를 한 스푼
최근 흥미롭게 읽었던 책인 실전 카프카 개발부터 운영까지 - 고승범을 다시 정리해서 기록해두려고 한다.중요한 이론과 개인적으로 느낀점을 다룰 예정이며, 실습은 기록하지 않는다. 프로듀서 디자인 개요 위 그림은 프로듀서의 전체 흐름을 나타낸 그림이다.ProducerRec
최근 흥미롭게 읽었던 책인 실전 카프카 개발부터 운영까지 - 고승범을 다시 정리해서 기록해두려고 한다. 중요한 이론과 개인적으로 느낀점을 다룰 예정이며, 실습은 기록하지 않는다. 이번 장에서는 카프카의 기본 개념(주요 요소, 리플리케이션, 파티션 등)과 핵심 개념(
최근 재밌게 읽었던 책인 실전 카프카 개발부터 운영까지 - 고승범을 오늘부터 다시 정리해서 기록해두려고 한다. 중요한 이론과 개인적으로 느낀점을 다룰 예정이며, 실습은 기록하지 않는다. 1장은 카프카가 왜 만들어졌는지, 주요한 특징은 무엇인지, 어떤 곳에서 활용되는지
springboot와 kotlin으로 개발 중 한 트랜잭션 내에서 save와 file에 write를 해야하는 경우가 생겼습니다. 아래 코드를 보며 자세히 설명드리겠습니다. (코드는 이해의 편의를 위해 조금 극단적으로(?) 작성되었음을 알려드립니다)위 코드처럼 한 트랜
이번 글은 kotlin과 jpa를 같이 사용하며 생긴 이슈들에 대해 소개하겠습니다.보다 자세한 글을 원하시면 우아한 형제들 기술블로그의 이 글 을 읽으시면 좋을 것 같습니다.이번 글에 사용된 코드는 github에 있습니다 .자바로 개발해오다가 이번에 입사를 하면서 코틀
이번 글의 코드는 Github에 있습니다. 이번 글에서는 코틀린에서 자주 등장하는 용어들에 대해 알아보겠습니다. 정리하고 싶은 키워드들을 작성하므로 키워드들끼리 연관성이 없을 수 있습니다. open 자바에서는 클래스에 final이 붙지 않으면 모두 다른 클래스에서
이번 글의 코드는 Github에 있습니다. 자바에 비해, 코틀린의 타입 시스템은 더 간결하고 가독성 좋은 몇 가지 기능을 제공합니다. 그 중에 대표적으로 널이 될 수 있는 타입(nullable type)과 읽기 전용 컬렉션이 있습니다. 이번 글에서는 코틀린에서 nu
이번 글의 코드는 여기에 있습니다.아래와 같이 클래스 이름 옆에 괄호로 둘러싸인 코드를 주 생성자 라고 부릅니다. 주 생성자는 생성자 파라미터를 지정하고 그 생성자 파라미터에 의해 초기화되는 프로퍼티를 정의하는 두 가지 목적에 쓰입니다.코틀린의 클래스는 하나의 주생성자
면접에서 "자바에서 불변객체에 대해 설명해주세요.."라는 질문을 받았다.속으로 'final만 붙이면 불변객체 아닌가?'라는 생각을 했지만 불변객체에 대해 공부하지 않아 모른다고 했다...그래서 찾아봤더니 생각했던 것과 다른 내용이 있어서 글을 작성한다.이번 포스팅의 코
교착상태(deadlock)란 프로세스들의 집합이 더 이상 진행을 못하고 영구적으로 블록되어 있는 상태로 정의된다. 교착상태는 시스템 자원에 대한 경쟁 도중에 발생할 수도 있고 프로세스 간 통신 도중에 발생할 수도 있다. 집합 내의 한 프로세스가 특정 사건의 발생을 기다
이전 글에서는 RestController에서 @RequestBody 바인딩을 Jackson 라이브러리의 ObjectMapper가 하는 것을 확인했습니다.그리고 RequestBody를 생성할 때, DTO가 Property기반이 아니거나 Delegate를 한 상태가 아니라
세마포어와 뮤텍스은"여러 프로세스나 쓰레드가 공유 자원에 접근하는 것을 제어하기 위한 방법"으로 정의할 수 있습니다. 즉, 병행 처리를 위한 프로세스 동기화 기법입니다. 예를 들자면 교차하는 철도에서 열차의 진행가능 여부를 나타내는 신호등이 세마포어나 뮤텍스가 될 수
이전 글에서는 어떻게 @RequestBody를 처리하는지를 알아보기 위한 과정을 설명했습니다. 이번 글에서는 @RequestBody를 바인딩하는 ObjectMapper에 대해 알아보고, 결론을 짓겠습니다. 참고로 아래 사진들에서 현재 위치(class)는 다음과 같이 찾
Springboot로 토이 프로젝트를 진행중 Request DTO(requestBody로 오는)에 @NoArgsConstructor를 빠뜨려서 에러가 났다. (습관적으로 적어오던 어노테이션...) 그런데 @RequestBody로 넘어오는 객체에는 기본 생성자가 왜 필요
20대의 마지막 회고 2019년이 끝난지 5일이 지났다. 이동욱님의 책을 따라해보는게 재밌어서 끝내느라 회고가 늦어졌다. 2019년에는 많은 것을 경험하고, 배운 의미있는 한 해였다. 20대 마지막을 마무리 짓고, 30대의 시작을 생각해보는 시간을 가져본다. Baek
.gitignore란? 깃에서 특정 파일 혹은 디렉토리를 관리 대상에서 제외할 때 사용하는 파일. 이 파일 안에 기입된 내용들은 모두 깃에서 관리하지 않겠다는 것을 의미합니다. 예를 들어 자동으로 생성되는 로그파일, 프로젝트 설정 파일 등을 관리 대상에서 제외할 수 있습니다. 인텔리제이에 플러그인 설치하기 인텔리제이에서는 .gitignore 파일에 ...
image.jpg > 이번 글은 이동욱님의 의 그레이들 프로젝트를 스프링 부트 프로젝트로 변경하기를 따라해보며 내용을 공유하고자 합니다. > > 평소 스프링 이니셜라이저를 통해 프로젝트를 생성해와서 build.gradle의 코드가 무슨 역할을 하는지를 잘 모르기 때문에 그레이들 프로젝트를 스프링 부트 프로젝트로 변경하기 먼저, intellij에서 그...
임베디드 타입(복합 값 타입) 새로운 값 타입을 직접 정의해서 사용할 수 있는데, JPA에서는 이것을 임베디드 타입(embedded type)이라 합니다. 중요한 것은 직접 정의한 임베디드 타입도 int, String처럼 값 타입이라는 것입니다. 임베디드 타입을 사용하지 않았을 때와 사용했을 때를 비교해 봅시다. 위는 평범한 회원 엔티티입니다. ...