Java의 스트림은 왜 한 번만 읽을 수 있는가?Java의 스트림이 한 번만 읽을 수 있는 이유는 스트림의 설계 방식과 데이터 처리 방법 때문이다. 스트림은 데이터를 한 방향으로 순차적으로 읽도록 설계되어 있으며, 한 번 읽은 데이터는 메모리에 저장되지 않기 때문에 다시 읽으려면 데이터를 재전송 받아야 한다. 이 방식은 스트림의 기본적인 동작 방식으로, 데이터를 처음부터 끝까지 한 번에 읽도록 설계되어 있다.이유 1: 데이터 소비스트림은 데이터를 한 번에 한 바이트씩 읽는다. 한 번 읽은 데이터는 소비되어 더 이상 스트림에 남아 있지 않게 된다. 이를 통해 메모리 사용을 최소화하면서 데이터를 처리할 수 있다.이유 2: 메모리 효율성스트림은 대량의 데이터를 메모리에 로드하지 않고 순차적으로 처리하기 때문에..
orElse와 orElseGet의 차이점은 기본값을 제공하는 방식과 시점에 있다.orElse방식: 기본값을 직접 인자로 받습니다.특징: orElse는 Optional이 비어있지 않더라도 기본값을 항상 생성합니다. 이는 기본값 생성이 비용이 많이 드는 경우 비효율적일 수 있습니다.T orElse(T other)예시:String result = Optional.ofNullable(someValue) .orElse(createDefaultValue()); // createDefaultValue()가 항상 호출됨orElseGet방식: 기본값을 생성하는 Supplier를 받습니다.특징: orElseGet은 Optional이 비어있을 때만 Supplier를 실행하여 기본값을..
✅ 이 글은 Optional을 잘 알고 있는 사람에게는 어울리지 않는 글입니다. 헷갈림을 유발할 수 있습니다. 오늘 Java의 Optional에 대해서 알게 된 점을 쓴다. 제목에 부끄럽지만을 썼지만 뺐다. Java8부터 나온 Optional 이 몇 년이나 지났지만 알고 있다고 사용한 부분에서 전혀 다른 결과가 나와서 순간 뭐지? 했다가 아차 싶어서 쓰는 글이다. 예제로 살펴본다.Optional 이란?Java8에서는 Optional 클래스를 사용해 NPE를 방지할 수 있도록 도와준다. Optional는 null이 올 수 있는 값을 감싸는 Wrapper 클래스로, 참조하더라도 NPE가 발생하지 않도록 도와준다. Optional 클래스는 아래와 같은 value에 값을 저장하기 때문에 값이 null이더라도 바..
식과 문 대부분의 프로그래밍 언어에서 가장 작은 유용한 코드 조각은 문(Statement) 또는 식(Expression) 이다. 둘의 근본적인 차이는 다음과 같다. 문은 상태를 변경한다. 식은 값을 만든다. 이 말은 식이 결괏값을 돌려주는 반면에 문은 그렇지 않다는 뜻이다. 문은 아무값도 돌려주지 않기 때문에 뭔가 유용한 일을 하기 위해서는 자신을 둘러싼 주변의 상태를 변경해야만 한다 (이를 부수 효과라고 한다.) 코틀린에서 대부분의 요소는 식이다. val hours = 10 val minutesPerHour = 60 val minutes = hours * minutesPerHour 각각의 경우 =의 오른쪽에 있는 코드는 식이며, 왼쪽의 식별자에 대입할 값을 만들어 낸다. println() 같은 함수는 ..
코틀린 책 보다가 자바 split 메소드로는 점(.)을 사용해 문자열을 분리할 수 없습니다. 라는 질문이 있다고 한다. 한번 찾아봤는데 실제로 있다. "12.345-6.A".split(".") 이 결과가 어떻게 나올 것이라고 생각 되나? 많은 자바 개발자가 [12,345-6,A] 라는 결과가 나올 거라고 실수를 저지르는 개발자가 많다고 한다. 실제 결과는 빈 배열을 반환한다. 알게된 점은 자바의 split은 에서 점(.)은 자바 정규식 엔진의 특수 문자이므로 마침표(.)는 모든 문자를 나타내는 정규식으로 해석된다고 한다. 이 문자를 이스케이프하려면 "\\."를 사용해야 한다고 한다. final String extensionRemoved = filename.split("\\.")[0]; 참고 https:/..
문자열로 온 text 값을 LocalDateTime으로 parsing 해야 할 작업이 생겼다. 그런데 형식도 보통 yyyyMMddhhmmss 형식이 아니라 밀리세컨드까지 포함된 형식에 yyyy도 아닌 뒤에 yy만 들어오는 형태였다. Date: 120220 (20/2/2012) Time: 6150525 (6:15:05.250) 이렇게 들어온다.. 첫번째로 yyyy가 아닌 yy부터 날짜까지만 파싱이 되는지 확인해봤다. LocalDateTime yyMMddhhmmss = LocalDateTime.parse("220811165340", DateTimeFormatter.ofPattern("yyMMddHmmss")); System.out.println("yyMMddhhmmss = " + yyMMddhhmmss);..
서버에 설치된 JDK 버전보다 상위버전으로 컴파일한 자바 프로그램을 실행 시 발생하는 에러 Exception in thread "main" java.lang.UnsupportedClassVersionError: .... has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.jav..
최근에 파일을 읽어 올 작업이 많았는데 그때마다 파일 읽어올 때 어떻게 해야되나 검색 하다가 그냥 stackoverflow에 나와있는 갖가지 방법들을 그냥 샘플 자바 프로젝트 하나 파서 한번씩 해봄. 추가로 어느 책에서 봤는데 자바에서 I/O만 다뤄도 책 한권이 나온다고 하던데 틈틈히 I/O 관련해서 봐야겠다..! 헷갈리지 않게! 방법이야 여러가지가 있다. I/O를 편하게 사용할 수 있게 해주는 Apache commons IO를 사용해도 더 간단하게 할 수 있는데 그건 나중에 정리한번 해봐야겠다. src/main/java/resources 파일을 읽을 때 사용 하는 방법 기본 자바 public class FileReadUsingJava { public static void main(String[] arg..
- Total
- Today
- Yesterday
- config-location
- rocky
- LocalDateTime
- elasticsearch
- docker
- oracle
- Bash tab
- 오라클
- Spring
- mybatis config
- springboot
- 베리 심플
- k8s
- localtime
- Linux
- Github Status
- Mac
- svn
- jQuery
- input
- mybatis
- 북리뷰
- JavaScript
- maven
- Java
- window
- Kotlin
- Spring Security
- LocalDate
- intellij
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |