Steam API에 대한 개념 잡기Java를 통해 개발을 하다 보면 Stream API를 자주 사용하게 될 것입니다. Stream은 기본적으로 많은 기능을 제공해 주기 때문에, 적재적소에 사용하여 큰 도움을 얻을 수 있습니다. 최근 Java에 대한 강의를 보는 과정에서 제가 모르는 Stream 메서드들이 많이 등장해서, 이 기회에 이에 대해서 정리해보려고 합니다. 이 글을 읽는 분들이 이번 기회에 Stream API에 대한 이해 및 활용법에 대해 익혀 편하게 사용할 수 있기를 바랍니다. Stream API란?SteamAPI는 Java8부터 생긴 기능으로 `java.util.stream`에서 제공하는 다양한 기능들을 말합니다. Stream이라는 인터페이스에서 제공하는 기능들과 개발자가 작성한 람다 or 함..
Java
0. 서론 앞선 글에서 자바의 날짜/시간과 관련된 클래스들에 대해서 알아보았습니다. 이번 글에선 JPA를 이용해서 자바의 클래스들이 MySQL에서 어떤 타입으로 변경 되는지를 알아보고, MySQL에 있는 데이터 타입에 대해서 정리하겠습니다. 💡목표 1. Java의 날짜/시간 클래스가 어떻게 변경되는지 확인한다. 2. DB에 있는 날짜/시간 데이터 타입에 대한 특징을 이해한다. 1. Java의 클래스는 어떻게 바뀌는가? 이번 시간엔 지금까지 알아본 Java의 다양한 날짜/시간 클래스들이 JPA를 통해 기본적으로 어떻게 변환이 되는지, 어떤 타입으로 변경이 가능한지에 대해서 알아보겠습니다. 아래 코드는 예제로 사용할 코드입니다. 앞선 포스팅에서 다룬 클래스인 `LocalDate`, `LocalTime`, `..
질문 & 답변Q. Java의 Hashtable 클래스와 HashMap 클래스의 공통점과 차이점에 대해서 설명해 주세요.🙋🏻♂️ : `Hashtable` 클래스와 `HashMap` 클래스는 모두 `Hashtable` 자료구조를 구현한 클래스입니다. 둘의 차이점은 크게 `synchronized` 키워드의 유무와 `null` 허용유무가 있습니다.`Hashtable` 클래스는 메서드에 `synchronized` 키워드가 붙어있고, `null`이 저장되는 것을 허용하지 않습니다. 그에 반면 `HashMap`클래스는 `synchronized` 키워드가 없고, `null`이 저장되는 것을 허용합니다.자바의 docs에 따르면, 동시성 문제가 발생하지 않는다면 `HashMap`을 이용하고 Thread-Safe 해..
💡 목표 1. Java 8에서 새로운 시간 패키지가 생긴 이유를 이해한다. 2. Java 8에서 생긴 날짜/시간 클래스들의 각각의 특징을 이해한다. 왜 새로운 클래스가 생겼을까?Java8이 되면서 시간/날짜와 관련된 패키지가 추가되고, 새로운 클래스들이 많이 추가되었습니다. 우리가 흔히 사용하는 `LocalDateTime`과 같은 것들이 이때 추가가 된 것입니다. 본래 Java에서 사용하던 시간과 관련된 클래스는 `java.util.Date`와 `java.util.Calendar`였습니다. 왜 이 두 개의 클래스를 놔두고 새로운 패키지와 클래스를 만들었어야 했을까요? Practical 모던 자바(장윤기)에 따르면 `Date`와 `Calendar`에는 3가지 치명적인 문제가 있다고 합니다. 1. Threa..
발단 개발을 하다 보면 시간에 대한 정보를 저장하는 일이 자주 생깁니다. 제가 개발을 할 때나, 여러 강의를 보다 보면, 적어도 어떤 데이터의 생성 시간정도는 기록을 했습니다. 저 같은 경우는 지금까지 별생각 없이 Java의 `LocalDateTime`이라는 클래스를 이용하여 그 시점을 기록하였습니다. 하지만 최근 이와 관련된 문제가 발생했습니다. 방금 생성을 했는데, 9시간 전에 생성했다고 표기가 되는데... 9시간은 뭔가 익숙한데? 원인은 저 상황에서 서버를 Docker로 말아서 배포를 했는데, 서버 시간이 그리니치 평균 시(GMT)였기 때문에 발생한 문제였습니다. Docker에서 서버 시간을 설정하는 방법부터, LocalDateTime에서 TimeZone을 설정하는 방법까지 여러 방법을 검색해 봤지..
들어가며 String은 Java에서 Object를 제외하고 제일 많이 쓰이는 클래스 중 하나입니다. 하지만 String을 다루기는 굉장히 귀찮은 일들이 많죠. 예를 들어서 StringBuilder를 통해서 문자열을 더해줘야 한다거나, String의 메서드를 이용하면, 반드시 리턴을 받아야 한다는 등 말입니다. 이런 일들이 발생하는 이유는, String이 불변 객체이기 때문입니다. String은 왜 불변 객체일까를 알아보기 앞서서 자바에서의 불변 객체가 무엇인지에 대해서 살펴보고, 불변 객체의 어떤 특징 때문에 String을 불변 객체로 만들었을지 알아보겠습니다. 불변 객체란? Java에서의 불변 객체는 종류가 굉장히 많습니다. 대표적인 예시로는, 앞서 언급된 String 부터, Integer, Long ..
문제 링크 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 www.acmicpc.net 🏷️ 카테고리 `#그래프 이론` `#그래프 탐색` `#너비 우선 탐색` ⏳ 시간복잡도 각 테스트 케이스 당 최대 1만회 📒 해설 개인적으로 여러번 틀린 방향으로 접근을 해서, 굉장히 많이 틀렸던 문제입니다. 문제 내용을 정확하게 숙지하고 풀면 저와 같은 일은 일어나지 않을 것입니다. 해당 문제에서 신경써야 할 부분으로는 '명령어 수행 코드 작성', '레지스터 표현 자료구조 생각하기', '어떤 명령어를 선택할지' ,'지금까지 수행한 명령을 ..
문제 링크 2342번: Dance Dance Revolution 입력은 지시 사항으로 이루어진다. 각각의 지시 사항은 하나의 수열로 이루어진다. 각각의 수열은 1, 2, 3, 4의 숫자들로 이루어지고, 이 숫자들은 각각의 방향을 나타낸다. 그리고 0은 수열의 마 www.acmicpc.net 🏷️ 카테고리 # 다이나믹 프로그래밍 ⏳ 시간복잡도 📒 해설 오락실에 있는 DDR 게임을 할 때 버튼을 어떤 발로 밟을 때, 가장 적은 힘이 드는지를 구하는 문제입니다. N이 작다면 완전 탐색을 통해 풀 수도 있지 않을까 싶지만, N이 10만이기 때문에, 이용할 수 없는 문제였습니다. 상태 공간 트리를 그린다면, 중복되는 구간이 많이 나오기 때문에, 그림을 그려본다면 빠르게 DP 문제라는 것을 알 수 있었습니다. 📜 ..