안녕하세요 🤚오늘은 Instant & LocalDateTime 차이에 대하여 알아보려고 합니다.위 내용을 다루기 전에 간단하게 자바8 전 후 에 다루던 날짜, 시간 API 가 어떻게 변했는지도 살짝 알아보려고 합니다. 서론포스팅 계기 회사 프로젝트를 살펴보던 중 시간 관련 데이터들을 DB에 TimeStamp 로 데이터 타입이 지정되어 있었다.그리고 엔티티에서는 LocalDateTIme 이 아닌 Instant 로 설계가 되어 있었다. 기존에 내가 했던 프로젝트는 DB에서 LocalDateTime 을 사용했고, 엔티티에는 DateTIme&TimeStamp 으로 설계를 해왔기 때문에왜 그럴까? 라는 궁금증이 생겨 따로 정리를 해보고 포스팅하게 되었습니다. 위 내용을 설명하기 전에 간단하게 자바8 전 후 날..
안녕하세요 👐오늘은 성능측정도구 JMH 에 대한 이야기를 해보려고 합니다. 서론제가 JMH 를 알게 된 계기는 자바에서 Stream 과 일반 for loop 에 대한 성능 측정을 해보고둘에 대한 차이를 알아보다가 자연스럽게 알게 되었습니다. JMH 라이브러리는 간단하고, 어노테이션 기반 방식을 지원하며, 안정적으로 자바 프로그램 또는 JVM 메모리를 사용하는모든 언어를 대상으로 벤치마크를 구현할 수 있습니다. 벤치마크라는 단어가 생소 했습니다. 맨처음엔 mysql workbench 랑 헷갈렸었죠..😅 벤치마크는 컴퓨터 시스템, 소프트웨어, 하드웨어, 디바이스 등으 성능을 측정하고 비교하기 위해 사용되는 표준화된 테스트 입니다.이 테스트는 일반적으로 속도,처리량,응답시간,성능 과 같은 측면을 측정..
안녕하세요🤚오늘은 Stream API 를 공부하며 궁금했던 내용에 대해서 이야기 해보려고 합니다. 서론요즘 모던 자바 인 액션 책에 푹 빠져있어, 매일 매일 책을 읽으며 새로운 지식들을 쌓아가고 있습니다.아직 응애 개발자인, 3개월차 개발자가 보기엔 어려운 내용이 많지만, 새로운 내용이 많아서 처음부터 시작하는 거 같은 신기한 기분을 느끼고 흥미로워서 재밌습니다. 스트림은 자바 8부터 새롭게 생긴 문법으로 기존의 자바 문법들 보다 더 좋을 것이라고 생각했습니다. 그래서 아직 사용이 자연스럽지 않음에도 연습할 필요성을 느껴서 책을 사서 공부를 하는 중입니다. 모던 자바 인 액션은 자바8 이후 새로운 문법에 대해서 이야기하는 책으로대표적으로 Lambda, Stream, Optional 등 새로운 문법들을 ..
안녕하세요 🤚 오늘은 모던 자바인 액션 책에 있는 스트림API 활용하는 실전 문제를 직접 풀어보며 Stream API에 대한 이해도를 높여보고자 합니다. 위 과정은 모던 자바 인 액션 에 있는 챕터에 실전문제중 하나 이며, 자세한 내용은 책을 참고해주시면 감사하겠습니다. 문제를 보기전에 아래 코드는 사전에 작성을 해둬야하는 코드 입니다 public class Trader { private final String name; private final String city; public Trader (String name, String city) { this.name = name; this.city = city; } public String getName () { return name; } public Str..
안녕하세요✋오늘은 Java 에서 제네릭 에대해 알아보겠습니다. 제가 간단하게 알았던 제네릭 타입은 그냥List list = new ArrayList();List linkedList = new LinkedList(); 안에 들어가는 타입을 미리 결정하는게 제네릭 타입 이구나 정도로 알고 있었습니다. 그러다가 저 리스트에 String이 아닌 객체가 들어올수도 있고, Integer, Double 등 다른값이 들어올수도 있는 상황을 생각해 봤습니다. 즉 나중에 저 List 안에 String 도 들어갈수도 있고, Integer 도 들어갈 수 있는즉, 재사용성이 가능한 코드를 어떻게 하면 만들 수 있을까?라는 고민을 해봤고, 그에 대한 해답은 바로 제네릭 을 잘 이해하고 사용하자 였습니다. 고민 1)어떠한 타입..
안녕하세요 오늘은 String 객체에 대한 이야기를 해보겠습니다. 문자열 생성 문자열은 자바에서 객체로 취급한다는거 알고 계셨나요? int,double,char는 원시 타입으로 해서 객체가 아닙니다. 그러므로 자체적으로 구현된 메소드들 또한 없죠. 위 타입을 객체 처럼 사용하기 위해서는 이미 만들어진 Wrapper 클래스를 사용하면 됩니다. 한번 String 객체를 생성해 보겠습니다. // 1 String str1 = new String("Hello World"); String str2 = new String("Hello World"); // 2 String str3 = "Hello World"; String str4 = "Hello world"; 위 사진은 보기 코드에 첫번째 new 로 객체를 생성했을..
안녕하세요오늘은 자바가 어떻게 동작하는지 랑 JVM 관점에서 Static이 어떻게 작동하는지 알아보겠습니다. 자바에서 클래스를 실행시키기 위해서는 메인메소드가 필요합니다.그러면 메인 메소드는 무엇일까요?public static void main(String[] args) { } 를 메인 메소드라고 부릅니다. 정확하게 말하면 스프링 환경이 아닌, 일반 자바를 다루는 환경에서 클래스의 어떠한 값을 콘솔에 출력하기 위해서꼭 있어야 하는 게 바로 메인메소드 입니다.public class StaticTest { public static void main(String[] args) { System.out.println("Hello World"); }} 위 값이 없다면 출력을 할 수가 없죠. 그리고 값,메소드 등을..
안녕하세요🖐 오늘은 메모리에 대하여 알아보겠습니다. 프로그램은 메모리에서 동작(=실행) 이 됩니다. ⁉ 그러면 어떻게 메모리에서 동작이 되나요 간단하게 예시를 들어서 설명을 해보겠습니다. Q. 자바를 이용하여 두개의 정수를 더하여 결과를 출력하는 프로그램을 만들어보겠습니다. 두개의 정수를 더해야 하므로 컴퓨터 프로그램안에 두개의 정수를 기억하는 공간이 있어야 합니다. 컴퓨터 언어로 해석을 해보면 위 두개의 정수는 '데이터' 이고 '더하라' 는 것은 컴퓨터 프로그램을 동작시키는 '명령어' 입니다. 간단하게 설명을 하면 -> 컴퓨터는 0과1로 표현된 정보만을 이해합니다. 그리고 0과 1로 표현되는 정보에는 크게 두 종류가 있는데 그게 바로 데이터 와 명령어 입니다 위 과정이 진행이 되며 저장 된 '데이터' ..
step 0. 개념정리 모든 클래스의 가장 최상위 클래스 : Object 클래스가 있습니다 자바에서 제공하는 모든 클래스들은 계층 구조로 형성 되있고 그 계층구조 최상위에는 Object 클래스가 있습니다. 모든 클래스들의 생성할때 적혀있지는 않지만 Object 클래스가 기본적으로 상속 구조가 되어있습니다 그래서 Object클래스에서 사용할 수 있는 메서드들을 사용할 수 있습니다. 즉 자바 라이브러리나 저희가 직접 만드는 클래스에는 Object 클래스를 부모클래스로 자동 상속 받아 사용하고 있다는 뜻 입니다. toString() 메서드? -> object(객체)가 가지고 있는 정보나 값들을 문자열로 만들어서 return 해주는 메서드 입니다. toString을 이용해 출력해보면 결과값에 어떠한 주소가 담기..
public 클래스클래스를 작성할 때 약간 헷갈렸던 부분이 있습니다public을 앞에 쓴 것과 public을 사용하지않고 그냥 -> class 클래스명 . 차이점이 궁금 하였습니다. 다음과 같은 클래스 파일을 MyTest.java라는 이름으로 작성해 보자.MyTest.javaclass MyTest {}문제 없이 컴파일이 잘 됩니다. 다음으로는 위 소스 파일에 다른 클래스를 하나 더 추가 해 보겠습니다.class MyTest {}class MyTest2 {}이것 또한 컴파일이 잘 됩니다.요번엔 다르게 수정 해 보았습니다..class MyTest {}public class MyTest2 {}MyTest2라는 클래스 앞에 public 접근제어자를 붙였더니 컴파일 에러가 발생하였다.다시 다음과 같이 수정 해 보..