전체 글

전체 글

    Java Stream을 통한 List -> Map 변환

    Java Stream을 통한 List -> Map 변환 Java 개발 중 엔티티나 DTO의 키를 통해 List를 Map으로 변환하는 일이 자주 생긴다. 그때, Java Stream을 통해 아래와 같이 간단하게 Map으로 변환할 수 있다. // ProductDto의 List를 생성 final List productDtoList = getProductDtoList(); // ProductDto의 ID를 통해 Map을 생성 // key: ProductDto.id, value: ProductDto final Map productDtoMap = productDtoList.stream() .collect(Collectors.toMap( ProductDto::getId, // key (인스턴스 메서드 레퍼런스 사용)..

    CQS에 관한 고찰 (feat. Side Effect, 참조 투명성 그리고 순수 함수)

    CQS란? CQS는 함수를 크게 두 가지로 분류해서 구현하는 원리이다. Martin Fowler는 그의 블로그에서 CQS의 Command와 Query를 아래와 같이 정의했다. (CQS)의 개념을 최초로 소개한 사람은 Bertrand Meyor이다.) Queries: Return a result and do not change the observable state of the system (are free of side effects). Commands: Change the state of a system but do not return a value. 번역해 보면 아래와 같다. Queries: 관찰 가능한 시스템의 상태를 변경하지 않고, 그 결과를 반환하는 함수 Commands: 관찰 가능한 시스템의 상..

    [2022-12] 객체지향의 사실과 오해를 읽고

    http://www.yes24.com/Product/Goods/18249021 객체지향의 사실과 오해 - YES24 『객체지향의 사실과 오해』는 객체지향이란 무엇인가라는 원론적면서도 다소 위험한 질문에 답하기 위해 쓰여진 책이다. 안타깝게도 많은 사람들이 객체지향의 본질을 오해하고 있다. 가장 www.yes24.com 김영한 님의 JPA 강의를 보던 중 이 책을 알게 되어 보게 된 책이다. 생각보다 책이 얇아서 가벼운 마음으로 읽기를 시작했으나, 그 내용은 가볍지 않아 읽는 데 거의 두 달가량 걸린 책이다. 책에서 설명하는 개념이 추상적인 것이 많아서 이해하는데 어려웠다. (사실 몇 페이지 읽다가 책을 덮고, 몇 페이지 다시 읽다가 책을 덮고를 무한 반복하여 오래 걸렸다) 이 책을 읽으면서 인상 깊었던 ..

    [2022-09] Head First SQL을 읽고

    http://www.yes24.com/Product/Goods/2922303 Head First SQL - YES24 기본적인 데이터와 테이블 조작부터 SELECT, DELETE, UPDATE, 조인, 서브 쿼리, 보안 등 주요 문법을 순차적으로 설명한다. 또 착실하게 배운 문법을 확실하게 사용할 수 있도록 수많은 문제와 트랩을 www.yes24.com 딱 데이터베이스 입문용으로 읽기 쉬운 책이다. 데이터베이스에 대해 기초부터 다시 공부할 필요성을 느껴 가볍게 읽기 위해 골랐다. 헤드 퍼스트 부류의 책은 처음 읽었는데, 내용을 전개하는 방식이 처음엔 되게 낯설었으나 읽다 보니 술술 읽혀 좋았다. 그러나 내용이 너무 쉬워 데이터베이스 기초를 다루는 책을 한 권 더 찾아서 읽어야 할 것 같다. 완전 초심자에..

    Mac에서 여러 개의 Java 버전 관리하기 (Mac/Linux 명령어를 곁들인)

    Java 개발을 하다 보면 여러 가지 Java 버전을 바꿔가며 사용해야 하는 경우가 있습니다. 이번 포스트는 Mac 환경에서 여러 개의 Java 버전을 바꿔가며 사용하는 방법을 설명하고자 합니다. 추가로, 필자는 주로 Windows 환경에서 개발을 하다 보니 Mac(혹은 Linux) 환경에서 개발환경을 구축하는 것이 매우 낯설었습니다. 단순히 Java 버전을 바꾸는 것임에도 그 과정에서 궁금한 점들이 많이 발생하였고, 이것저것 찾아보느라 단순히 Java 구성하는데도 시간이 오래 걸렸습니다. 처음 Mac에 Java 개발환경을 구축하려는 분들이 저처럼 잡다한(?) 궁금증 때문에 시간낭비를 하지 않았으면 하는 마음에 이번 포스트를 정리하여 올립니다. 혹시라도 글에 오류가 있다면 댓글로 바로잡아주시면 감사하겠습..

    [자료구조] 선형 자료 구조 - 1 (동적 배열)

    선형 자료 구조 - 동적배열 선형 자료 구조란 연속된 자료를 저장하기 위한 자료 구조입니다.이에 해당하는 가장 기초적인 자료구조는 배열로써, 배열의 원소들은 모두 연속된 메모리 위치에 저장되며, 인덱스를 통해 원소를 참조하거나 변경하는데 걸리는 시간이 O(1)에 수행되는 두 가지 특징을 갖고 있습니다. 배열을 사용하는 데 있어 크게 두 가지 단점이 있습니다. 첫째로는 배열을 사용하기 위해선 먼저 배열의 크기를 정해야 하기 때문에 만약 배열의 크기를 넘겨서 자료를 저장하고 싶다면 더 큰 크기의 배열을 새로 할당받아 사용해야 합니다. 둘째로는 배열의 중간에 원소를 삽입하거나 삭제할 경우, 나머지 원소들의 연속적인 순서를 맞추기 위해 삽입/삭제가 이루어진 위치의 원소 이후부터의 원소들을 (삭제의 경우)앞쪽으로..