Java
-
java 언어를 사용해서 개발하는 대부분의 application은 spring을 사용할 것이다.spring-boot 3.0부터는 java17 버전 이후만 지원한다고 하니java17 버전을 사용하기 위해서 공부해 보자. switch문 개선기존 Java 11:switch는 int, String 등에만 사용 가능, case마다 break 필수Java 17 변경점:switch에서 패턴 매칭을 지원하여 다양한 타입을 처리 가능case 안에서 break 없이 바로 값 반환 가능static String test(Object obj) { return switch (obj) { case Integer i -> "Integer: " + i; case String s -> "String: " ..
[Java] 17 버전 주요기능java 언어를 사용해서 개발하는 대부분의 application은 spring을 사용할 것이다.spring-boot 3.0부터는 java17 버전 이후만 지원한다고 하니java17 버전을 사용하기 위해서 공부해 보자. switch문 개선기존 Java 11:switch는 int, String 등에만 사용 가능, case마다 break 필수Java 17 변경점:switch에서 패턴 매칭을 지원하여 다양한 타입을 처리 가능case 안에서 break 없이 바로 값 반환 가능static String test(Object obj) { return switch (obj) { case Integer i -> "Integer: " + i; case String s -> "String: " ..
2025.03.29 -
도메인명에 매핑된 ip 정보가 있을 텐데 이를 캐싱처리를 하는 것이 -> DNS CachingJVM단에서 이러한 캐싱 처리를 하고 있으니 -> JVM DNS Caching VIP, GSLB와 같은 기능을 이용하는 경우 상황에 따라서VIP의 경우에는 RIP가 변경될 수 도 있고GSLB의 경우에는 매핑이나 비율이 바뀌어야 되는데 캐싱처리 영향으로 의도한 바가 정확히 동작하지 않을 수 있다.보통의 HA(high availabilty)(고가용성)을 이루기 위해 VIP, GSLB 등을 사용한다. 이러한 상황을 방지하기 위해서 TTL 설정이 필요하다. 설정 방법Java 8 버전 $JAVA_HOME/jre/lib/security/java.security8 버전 이상 $JAVA_HOME/conf/security/j..
[Java] JVM DNS Caching TTL 설정(networkaddress.cache.ttl)도메인명에 매핑된 ip 정보가 있을 텐데 이를 캐싱처리를 하는 것이 -> DNS CachingJVM단에서 이러한 캐싱 처리를 하고 있으니 -> JVM DNS Caching VIP, GSLB와 같은 기능을 이용하는 경우 상황에 따라서VIP의 경우에는 RIP가 변경될 수 도 있고GSLB의 경우에는 매핑이나 비율이 바뀌어야 되는데 캐싱처리 영향으로 의도한 바가 정확히 동작하지 않을 수 있다.보통의 HA(high availabilty)(고가용성)을 이루기 위해 VIP, GSLB 등을 사용한다. 이러한 상황을 방지하기 위해서 TTL 설정이 필요하다. 설정 방법Java 8 버전 $JAVA_HOME/jre/lib/security/java.security8 버전 이상 $JAVA_HOME/conf/security/j..
2025.02.03 -
Heap option설명etc-Xms초기 Heap 메모리 sizeHeap-Xm최대 사용 가능한 Heap 메모리 sizeHeap-XX:MetaspaceSize초기/최소 metaspace sizemetaspace-XX:MaxMetaspaceSize최대 metaspace sizemetaspacedefaul = -1 ( unlimited )G1GCoption설명etc-XX:MaxGCPauseMillisGC pause 타깃 시간default = 200-XX:InitiatingHeapOccupancyPercentOld 영역의 사용률이 이 값을 넘으면 Concurrent Mark 시작default = 45 -XX:G1ReservePercent전체 힙의 이 비율을 Region reserve용으로 확보. 너무 낮으면 ..
[Java] JVM 옵션 정리Heap option설명etc-Xms초기 Heap 메모리 sizeHeap-Xm최대 사용 가능한 Heap 메모리 sizeHeap-XX:MetaspaceSize초기/최소 metaspace sizemetaspace-XX:MaxMetaspaceSize최대 metaspace sizemetaspacedefaul = -1 ( unlimited )G1GCoption설명etc-XX:MaxGCPauseMillisGC pause 타깃 시간default = 200-XX:InitiatingHeapOccupancyPercentOld 영역의 사용률이 이 값을 넘으면 Concurrent Mark 시작default = 45 -XX:G1ReservePercent전체 힙의 이 비율을 Region reserve용으로 확보. 너무 낮으면 ..
2024.04.21 -
코드 내부에서 java의 다형성 특징을 이용해서 abstract, interface를 이용해 기능을 작성하는 경우가 있다. 이러한 경우에 하나의 application 내에서만 호출되는 관계가 아니고, 다른 application에 메시지로 전달되거나 redis와 같은 storage에 저장되는 경우 object를 string이나 byte로 변환하는 과정이 필요하게 된다. 해당 과정에서 abstract, interface를 사용하게 되면 실제로 deserialize 되는 시점에 해당 정보가 어떠한 concrete class에 매핑되는지에 대한 정보가 필요하게 된다. 이러한 구체적인 정보가 없이는 serialize 된 정보가 다시 객체로 변환되기는 불가능하다. @JsonTypeInfo를 사용하면 이러한 문제를 ..
[Java] 다형성 serialize (jackson, JsonTypeInfo)코드 내부에서 java의 다형성 특징을 이용해서 abstract, interface를 이용해 기능을 작성하는 경우가 있다. 이러한 경우에 하나의 application 내에서만 호출되는 관계가 아니고, 다른 application에 메시지로 전달되거나 redis와 같은 storage에 저장되는 경우 object를 string이나 byte로 변환하는 과정이 필요하게 된다. 해당 과정에서 abstract, interface를 사용하게 되면 실제로 deserialize 되는 시점에 해당 정보가 어떠한 concrete class에 매핑되는지에 대한 정보가 필요하게 된다. 이러한 구체적인 정보가 없이는 serialize 된 정보가 다시 객체로 변환되기는 불가능하다. @JsonTypeInfo를 사용하면 이러한 문제를 ..
2024.04.13