Java
-
[Java] 리플렉션이란?Java 2022. 4. 7. 19:34
공부를 하다가 Reflection이라는 키워드를 듣고 해당 키워드에 대해서 전혀 모르겠어서 알아보고자 합니다. Reflection API란? 구체적인 클래스 타입을 알지 못해도 그 클래스의 정보(메서드, 타입, 변수 등등)에 접근할 수 있게 해주는 자바 API입니다. Reflection을 잘 나타낸 문장이지만 처음 공부하는 사람은 무슨 말인지 한 번에 이해하기 쉽지 않습니다. 아래와 같이 Car 클래스가 존재합니다. public class Car { private final String name; private int position; public Car(String name, int position) { this.name = name; this.position = position; } public vo..
-
[Java] 직렬화(Seralize)란?Java 2022. 3. 24. 00:01
직렬화(Seralize)란? 자바 시스템 내부에서 사용되는 Object 또는 Data를 외부의 자바 시스템에서도 사용할 수 있도록 byte 형태로 데이터를 변환하는 기술 객체를 파일 등에 저장하거나 네트워크로 전송하기 위해 연속적인 데이터로 변환하는 것 JVM의 메모리에 상주되어 있는 객체 데이터를 바이트 형태로 변환하는 기술 CSV, JSON의 경우 우리에게 많이 친숙한데 이들 또한 데이터를 문자열 형태로 확인 가능하도록 직렬화한 방법입니다. 그러면 자바에서도 CSV, JSON을 사용되는걸 직렬화를 써야 하는 이유는 무엇일까요? 정답은 없고 목적에 따라 적절하게 써야 합니다. CSV, JSON 형태의 포맷을 이용하면 특정 라이브러리를 도입해야하며, 구조가 복잡하면 직접 매핑시켜야 하는 작업도 포함해야 ..
-
[Java] Integer.parseInt() vs Integer.valueOf()Java 2022. 3. 20. 23:01
Java에서 String을 숫자로 변형할 때 Integer.parseInt()와 Integer.valueOf() 메서드를 활용합니다. 두 메서드는 어떤 차이가 있을까요? parseInt vs valueOf 차이점 1. Integer.valueOf()는 Integer객체를 반환하고 Integer.parseInt()는 기본형 int 타입을 반환합니다. parseInt() : 원시데이터인 int 타입을 반환 valueOf() : Integer 래퍼 객체를 반환 Java 1.5 에서 Autoboxing과 Unboxing이 도입된 이후로 차이는 거의 없을 것이라고 관련 자료에서는 말하고 있습니다. https://www.javainterviewpoint.com/java-autoboxing-and-unboxing-e..
-
[Java] try-catch와 try-with-recourcesJava 2022. 3. 13. 00:01
try-with-resources는 try(...)에서 선언된 객체들에 대해서 try가 종류 될 때 자동으로 자원을 해제해주는 기능입니다. try에서 선언된 객체가 AutoCloseable 인터페이스를 구현하였다면 Java는 try구문이 종료될 때 객체의 close() 메서드를 호출해 줍니다. try-catch가 존재했는데 JDK7부터 try-with-resources가 왜 등장했을까요? Java7 이전에, try-catch-finally 구문으로 자원을 해제하려면 코드의 양도 많고 지저분해집니다. 코드를 통해 설명드려보겠습니다. 다음 코드는 try-catch-finally를 사용하여 문자열 숫자를 입력받아 출력하는 코드입니다. import java.io.BufferedReader; import java..
-
[Java] Collections.sort () VS Arrays.sort()Java 2022. 3. 10. 13:13
Collections.sort()와 Arrays.sort()는 정렬할 때 많이 사용하는 2가지 메서드입니다. 두 메서드는 정렬을 어떤 방식으로 진행할까요? Arrays.sort() 배열을 정렬할 때 사용합니다. Arrays.sort() 내부구조 /** * Sorts the specified array into ascending numerical order. * * Implementation note: The sorting algorithm is a Dual-Pivot Quicksort * by Vladimir Yaroslavskiy, Jon Bentley, and Joshua Bloch. This algorithm * offers O(n log(n)) performance on many data sets..
-
[Java] BufferedWriter vs println 속도분석Java 2022. 3. 4. 00:01
알고리즘 문제를 풀다가 println으로 제출시에는 시간초과가 발생하고 BufferedWriter는 성공을 하는 문제가 있었습니다. 출력하는 구문이 숫자 1개 였기 때문에 버퍼를 사용하나 하지 않으나 동일할것으로 예상했었습니다. 하지만 숫자 1개를 출력할 때 속도 차이를 테스트했을시에 BufferedWriter가 10배이상 빠른 성능을 보였습니다. 테스트 코드 int iterate = 1; double startPrint = System.nanoTime(); for(int i=0; i
-
[Java] Java Multi-Thread Programming의 모든것을 알아보자Java/자바를 더 깊게 2022. 3. 2. 01:53
Multi-Thread란 무엇인가(What)? 우선 Multi-Thread에 대해 알아보기 전에 프로세스에 대해 먼저 알아보겠습니다. 프로세스란? 단순하게 말하자면 실행 중인 프로그램입니다. 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 됩니다. 우리가 친숙한 바탕화면의 실행 아이콘들이 프로그램입니다. 프로세스는 CPU, 메모리, 디스크, 네트워크 등의 자원을 사용하고 있습니다. 이클립스가 메모리를 1GB사용하고있네요. 프로세스는 프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원 그리고 스레드로 구성되어 있습니다. 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 스레드입니다. 따라서 모든 프로세스에는 최소한 하나 이상의 스레드가 존재하며, 둘 이상의 스..