Java 11

Java 8 ZonedDateTime vs OffsetDateTime 어떤 상황에서 쓰는게 적합한가?

Java 8 ZonedDateTime vs OffsetDateTime 어떤 상황에서 쓰는게 적합한가? 들어가기 전에 본 글은 회사 팀 내 세션 공유용 자료이며 이전 글 내용과 이어집니다. OffsetDateTime OffsetDateTime은 (LocalDateTime(날짜 + 시간) + ZoneOffset) 을 포함한다 Instant와 같이 나노초 정밀도로 타임라인에 순간을 저장한다 UTC/그리니치에서 오프셋을 추가하면 현지 날짜-시간을 얻을 수 있다. 데이터베이스에 Timestamp를 저장하거나 네트워크를 통해 XML 문서에 Timestamp 를 통신하는 데 사용하는 것이 유리하다고 한다. ZoneOffset UTC 기준 시간을 표현한 것 우리나라 Timezone(Asia/Seoul) 기준 UTC +..

Java/개념 2022.08.19

Java 8 LocalDateTime vs Instant 어떤 상황에서 쓰는게 적합한가?

Java 8 LocalDateTime vs Instant 어떤 상황에서 쓰는게 적합한가? 들어가기 전에 본 글은 세션 공유용 자료이며 LocalDateTime, Instant 의 개념에 관한 짧은 글이 아니므로 양해 부탁드립니다. 포스팅 계기 최근 새 회사(이커머스 도메인)에 이직하게 되었고 코프링(코틀린 + 스프링)기반 프로젝트를 진행하고 있었다. 프로젝트를 살펴보던 중 시간 관련 데이터들을 DB에 LocalDateTime 로 넣고 있었다. Instant 클래스가 아닌 LocalDateTime로 넣는 이유가 궁금해서 팀 내에 공유할 겸 오랜만에 포스팅하게 되었다. 그냥 LocalDateTime 쓰면 안되나요? 독자들은 LocalDateTime 이나 Instant 아무거나 쓰면 안 되나? 이런 궁금증이 ..

Java/개념 2022.08.09

Java 메모리 최적화가 어떻게 되는지 과정

Java 메모리 최적화가 어떻게 되는지 과정 메모리 최적화 목적 예를들어 아래 예제에서 Penguin객체가 하나가 아닌 Penguin[100]과 같이 요소가 100개인 배열이라고 할 때 힙영역에 생기는 Penguin 객체는 100개가되고 test() 메서드도 각 Penguin 객체에 따라서 힙에 100개가 만들어져야한다. 그렇지만 객체 멤버 메서드는 각 객체별로 달라지는 것이 아니다. 객체 멤버 메서드에서 사용하는 객체 멤버 속성의 값만 다를 뿐이고 똑같은 객체 멤버 메서드인 test() 메서드를 힙 영역에 100개나 만든다는 것은 심각한 메모리 낭비이다. 이를 해결하기 위해 JVM은 지능적으로 객체 멤버 메서드 test()를 스태틱 영역에 단 하나만 보유하게된다. 눈에는 보이지 않지만test() 메서드..

Java/개념 2021.02.25

JVM 동적 클래스 로딩

JVM 동적 클래스 로딩 클래스 로더란 '.class' 바이트 코드를 읽어 들여 class 객체를 생성하는 역할을 담당한다. 즉, 클래스 로더는 클래스가 요청될 때 파일로부터 읽어 메모리로 로딩하는 역할을 하며 자바 가상 머신의 중요한 요소 중 하나다. ※ 클래스 로더가 classpath라는 환경 변수에 등록된 디렉토리에 있는 모든 클래스들을 먼저 JVM에 로딩한다. JVM에 로딩된 클래스만이 JVM에서 객체로 사용할 수 있다. 클래스 로딩은 클래스를 로딩하는 시점 또는 실행 중간에도 할 수 있다. 자바의 클래스 로딩은 세부적으로 로딩, 링크, 초기화라는 세 단계 과정을 거친다. 로딩 : 클래스 파일을 바이트 코드로 읽어 메모리로 가져오는 과정 링크 : 가장 복잡한 과정으로, 읽어본 바이트 코드가 자바 ..

Java/개념 2021.02.24

[Java] 이것이 취업을 위한 코딩테스트다 BFS - 미로탈출

import java.util.*; class Node { int x ; int y ; public Node(int x, int y) { this.x = x; this.y = y; } } public class _2MazeEscape { private static int n = 5; private static int m = 6; private static int[][] edges = { {1, 0, 1, 0, 1, 0}, {1, 1, 1, 1, 1, 1}, {0, 0, 0, 0, 0, 1}, {1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1} }; public static void main(String[] args) { bfs(0, 0); System.out.println(edges[n..

Java/알고리즘 2020.11.12

[Java] 이것이 취업을 위한 코딩테스트다 DFS - 음료수 얼려먹기

public class _3frozenDrinks { private static int n = 4; private static int m = 5; private static boolean[][] visited = new boolean[n][m]; private final static int[][] edges = { {0, 0, 1, 1, 0}, {0, 0, 0, 1, 1}, {1, 1, 1, 1, 1}, {0, 0, 0, 0, 0} }; private static int cnt = 0; public static void main(String[] args) { for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (dfs(i,j)) { cnt++;..

Java/알고리즘 2020.11.12

[Java] 이것이 취업을 위한 코딩테스트다 구현 - 게임 개발

Java import java.util.Arrays; import java.util.Scanner; public class _3GameDev { private static int[] xyArr,xyChar; private static int cnt = 0; private static int length; private static int[] dx = {-1,0,1,0}; private static int[] dy = {0,1,0,-1}; private static int[][] arr,dp; private static int[] point = new int[2]; private static int Direction ; public static void main(String[] args) { System...

Java/알고리즘 2020.11.07

[Java] 이것이 취업을 위한 코딩테스트다 구현 - 왕실의 나이트

Java public class night { public static void main(String[] args) { System.out.println(solution("h8")); } public static int solution(String s){ int row = Integer.parseInt(s.charAt(1)+"")-1; //행 int column = s.charAt(0)- 97; //열 int cnt = 0; //결과 int[][] steps = {{-2,-1}, {-2 ,1}, {-1,2},{-1,-2},{2,1},{2,-1},{1,-2},{1,2}}; // 이동할 수 있는 8가지 방향 for (int i = 0; i < steps.length; i++) { if (row + steps..

Java/알고리즘 2020.11.07

[Java] Java 8에 추가된 LocalDate, LocalTime, LocalDateTime

Java 8에 추가된 LocalDate,LocalTime,LocalDateTime 이전 포스팅에 이어 포스팅하겠습니다. 2020/11/02 - [Java/개념] - Java 에서 Date, Calendar클래스가 왜 Deprecated됐는지? 이번 포스팅은 java.time 패키지의 LocalDate,LocalTime,LocalDateTime 에 대해 알아보겠습니다. Java의 Time API 흐름 Date(jdk 1.0) → Calendar(jdk.1.1) → java.time(jdk 1.8) LocalDate,LocalTime,LocalDateTime 클래스들의 공통점 TimeZone 개념을 가지고 있지 않기 때문에 TimeZone에 따라 시간 변환이 불가능합니다. java.time 패키지 이와같이 ..

Java/개념 2020.11.02

[Java] Date, Calendar클래스가 왜 Deprecated됐는지?

Java 에서 Date클래스와 Calendar 클래스가 왜 Deprecated 됐는지? 앞 전 포스팅으로 이어서 포스팅하겠습니다. 2020/11/02 - [Java/개념] - Java Date와 Calendar 클래스 국제화와 잘 맞지 않는다 java.util.Date 클래스는 실제로 더 이상 사용되지 않으며, 생성자와 다른 생성자/메소드도 더 이상 사용되지 않는다. 그것은 국제화와 잘 맞지 않기 때문에 더 이상 사용되지 않았다. Calendar클래스는 대신 다음과 같이 사용해야한다. Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 1988); cal.set(Calendar.MONTH, Calendar.JANUARY); cal.set(Cale..

Java/개념 2020.11.02