Java
-
[Java] 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법Java/Java 기본 및 이론 2021. 1. 3. 19:18
목표 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다. 학습할 것 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 및 초기화하는 방법 변수의 스코프와 라이프타임 타입 변환, 캐스팅 그리고 타입 프로모션 1차 및 2차 배열 선언하기 타입 추론, var 프리미티브 타입 종류와 값의 범위 그리고 기본 값 타입 할당되는 메모리 크기 기본값 데이터의 표현 범위 논리형 boolean 1 byte false true, false 정수형 byte 1 byte 0 -128 ~ 127 short 2 byte 0 -32,768 ~ 32,767 int(기본) 4 byte 0 -2,147,483,648 ~ 2,147,483,647 -2^{31} ~ 2^{..
-
[Java] 자바 UnsupportedClassVersionError 원인 (javac -target)Java/Java 기본 및 이론 2020. 12. 28. 16:54
1. java.lang.UnsupportedClassVersionError 발생 원인 Unsupported major.minor version 52.0 Java SE 15 = 59 (0x3B hex), Java SE 14 = 58 (0x3A hex), Java SE 13 = 57 (0x39 hex), Java SE 12 = 56 (0x38 hex), Java SE 11 = 55 (0x37 hex), Java SE 10 = 54 (0x36 hex), Java SE 9 = 53 (0x35 hex), Java SE 8 = 52 (0x34 hex), Java SE 7 = 51 (0x33 hex), Java SE 6.0 = 50 (0x32 hex), Java SE 5.0 = 49 (0x31 hex), JDK 1...
-
[JAVA] JVM 구조Java/Java 기본 및 이론 2020. 12. 27. 21:21
JVM은 자바 가상머신으로 자바 바이트코드를 실행 할 수 있는 주체로 JVM 덕분에 CPU나 운영체제(플랫폼)과 독릭접으로 동작 가능하다. JVM은 크게 Class Loader,GC, Runtime Data Area, Excute engine 세가지로 나뉜다 JVM 구성요소 1. Class Loader 컴파일된 자바 바이트코드를 Runtime Data Area 영엑에 로드한다. 자바 컴파일러가 ,java 파일을 컴파일하면 .class 파일 을 만드는데, 이게 바로 바이트코드이고 이걸 데이터영역에 로드하는 것이다. javac 가 바이트코드로 컴파일을 하게 되는데 이건 jdk 에 있는 기능이다. JRE 는 실행환경이기 때문에 컴파일 기능이 없다. 자바 9 이후 부터는 JRE 가 따로 제공되지 않는다. 2. ..
-
[자바] Java 8 스트림 특징Java/Java 8 2020. 12. 18. 18:12
자바8의 스트림 API 특징 선언형: 더 간결하고 가독성이 좋아진다. 조립할수있음: 유연성이 좋아진다. 병렬화: 성능이 좋아진다. 스트림이란 '데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소'로 정의할 수 있다. [딱 한번만 탐색할 수 있다] 스트림은 단 한번만 소비할 수 있다. 스트림 연산 java.util.stream.Stream 인터페이스는 많은 연산을 정의 filter, map, limit는 서로 연결되어 파이프라인을 형성한다. - 중간연산 collect로 파이프라인을 실행한 다음에 닫는다. - 최종연산 중간연산 filter나 sorted 같은 중간 연산은 다른 스트림을 반환 중간 연산의 중요한 특징은 단말 연산을 스트림 파이프라인에 실행하기 전까지는 아무 연산도 수행하지..
-
[JAVA8] LocalDate, LocalDateTimeJava/Java 8 2020. 12. 18. 18:12
LocalDate 현재시간 LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); 스트링 date 파싱하기 String date parse LocalDate endDate = LocalDate.parse(endTime, DateTimeFormatter.ofPattern("yyyyMMdd")); LocalDateTime 현재시간 알기 LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); 스트링 date 파싱하기 String date parse LocalDateTime endDateTime = LocalDateTime.parse(endTime, DateTimeForma..
-
[okhttp3] okhttp IOException: unexpected end of stream on AddressJava/Java Library 2020. 12. 17. 18:28
스프링에서 okhttp3 를 사용중 로그에 다음과 같은 오류 메시지가 떴다. okhttp3 사용 중에 간헐적으로 unexpected end of stream on [주소] 가 나왔다. request 를 요청받는 서버 설정마다 다른 것 같다. 해당 원인은 요청받는 서버의 keep_alive timeout 이 okhttp 로 요청하는 클라이언트 서버보다 timeout 시간이 낫기 떄문이다. 다시 말하면 클라이언트 서버가 timeout 이 받아주는 서버 timout 보다 길다. 나의 경우는 Okhttp3 로 요청하고 나서 프로세스가 조금 긴 경우에 다음과 같은 현상이 나왔다. 클라이언트가 서버에서 데이터를 받고나서 서버의 keep_alive timeout 시간이 지났음에도 클라이언트에서는 프로세스가 끝나지 않..
-
[JAVA] Date 및 LocalDateTime 을 Json String으로 변환시 주의(Gson 및 Jackson)Java/Java Library 2020. 10. 25. 23:45
Gson 라이브러리 및 Jackson 사용하여 Json String 을 만들때 Date 클래스 및 LocalDateTime 항목이 있는 class 으로 json string 으로 변환하게 되면 변환된 값이 yyyy-MM-dd'T'HH:mm:ss 이러한 포맷으로 변환이 되지 않는다. 이런 경우 모두 커스텀을 해줘야 한다. Jackson Date with Jackson public class ItemDate { private Integer id; private String name; private String createBy; @JsonFormat(shape= JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ", timezone="Asia/Seoul..
-
Gson Desrializer Serializer - json 파싱 및 json string 만들기(커스텀)Java/Java Library 2020. 10. 21. 00:40
java 에서 파싱을 해주는 라이브러리가 있는데 대표적인 라이브러리고 gson 과 jackson 있다. gson 을 사용시 기본적으로 new Gson().toJson() 및 fromJson() 으로 기본적인 파싱이 되지만, 종종 커스텀이 필요한 경우가 있다, 이런 경우 Desrializer 및 Serializer 기능이 필요하다. 1. Custom Serialization Serialization 은 toJson 할 경우 필요하다. 자바 객체를 Json 으로 변환 시 필요하다. 예시 Serialization 생성 public class BooleanSerializer implements JsonSerializer { public JsonElement serialize(Boolean aBoolean, Ty..