Old Posts/Java108 [Java] InputStream 객체와 File 객체 상호 변환하기 자바 프로그래밍에서 InputStream 객체를 File 객체로 만들거나 File 객체를 InputStream 객체로 만들어야 할 경우가 종종있다. 사용하고자하는 API에서 어떤 객체를 입력으로 받는지에 따라 상호변환이 필요할 수 있다. File 객체에서 InputStream 객체 얻기 우선 File 객체를 InputStream 객체로 만들어보자. File file = new File("path to file"); InputStream inputStream = new FileInputStream(file); FileInputStream 객체를 생성할 때, File 객체를 넘겨주면 된다. 간단한 사용법이다. InputStream 객체에서 File 객체 만들기 InputStream 객체는 어디에선가 데이터를.. 2021. 5. 26. [Java] ArrayList 사용법 및 예제 ArrayList 자바 프로그램에서 데이터의 나열을 저장하기 위해서 List 인터페이스를 구현한 클래스를 사용한다. ArrayList는 List 인터페이스를 구현하는 리스트로 배열처럼 연속된 메모리 공간을 사용하며, 인덱스를 이용해서 특정위치의 데이터에 바로 접근할 수 있다. 한번 생성되면 크기가 변하지 않는 배열과는 달리 객체가 추가되면서 필요할 경우 자동으로 크기가 늘어나도록 내부적으로 구현되어 있다는게 ArrayList 클래스의 특징이다. 리스트 자료구조를 만들고 싶을 때, 가장 많이 사용되는 클래스다. ArrayList 사용법 ArrayList 생성 import java.util.ArrayList; 자바는 java.util.ArrayList 클래스를 통해 ArrayList를 제공하고 있다. Arr.. 2021. 5. 24. [Java] Stack(스택) 사용법 및 예제 Stack(스택) 사전적으로 Stack(스택)은 '쌓다', '더미'라는 의미를 가지고 있다. 접시를 차곡차곡 쌓아 올리듯이 데이터를 쌓아올리는 형상을 생각하면 된다. Stack(스택)은 Queue(큐)와 함께 자바에서 사용되는 가장 기본적인 자료구조 중 하나다. Stack(스택)은 '마지막에 추가된 데이터가 가장 먼저 나오는' 특징을 가지고 있다. LIFO(Last In First Out) 동작이라고 한다. 함께 많이 사용되는 Queue(큐)의 경우 먼저 추가된 데이터가 먼저 나오는 FIFO(First In First Out) 동작을 갖는것과 비교된다. 일반적으로 스택에 데이터를 추가하는 동작은 'push'라고 하며, 스택에서 데이터를 빼는 동작은 'pop'이라고 한다. pop 메소드를 실행하면 가장 마.. 2021. 5. 23. [Java] Queue 클래스 사용법 & 예제 Queue(큐) 사전적으로 Queue(큐)는 (무엇을 기다리는 사람자동차 등의)줄이란 뜻이다. 자료구조에서 Queue(큐)는 처리를 기다리는 데이터들이 기다리는 줄이라고 보면 된다. 스택(Stack)과 더불어 가장 많이 사용되는 자료구조 중 하나로 FIFO(First In First Out) 형태로 데이터가 처리된다. 즉, 먼저 들어온 데이터가 먼저 처리된다. 큐에 데이터를 집어 넣는 동작을 'enqueue'라고 한다. 큐의 맨 뒤에 데이터를 추가하는 동작이다. 큐에서 데이터를 빼내는 동작은 'dequeue'라고 한다. 가장 앞에 있는 데이터가 dequeue 연산을 통해 큐에서 제거된다. enqueue 연산은 항상 데이터를 큐의 맨 뒤에만 추가한다. dequeue 연산은 큐의 맨 앞에 있는 데이터만 뽑아.. 2021. 5. 18. [Java] 문자열 to 정수 변환 - valuOf()와 parseInt() 차이 자바 프로그래밍을 하다보면 문자열 형태로 표현된 정수 데이터를 파싱해서 정수타입(int)으로 사용해야하는 경우가 자주 있다. 이 경우 valueOf() 메소드와 parseInt() 메소드를 사용하게 된다. 이 두 메소드의 차이점을 알아보자. int number1 = Integer.valueOf("100"); System.out.println("number1 = " + number1); int number2 = Integer.parseInt("100"); System.out.println("number2 = " + number2); "100"이라는 문자열을 정수타입(int)으로 변환하기 위해서는 위 코드처럼 Integer.valueOf() 메소드와 Integer.parseInt() 메소드를 사용하면 된다... 2021. 5. 18. [Java] 간단한 Netty Client 예제 코드 앞서 '[Java] Netty 프레임워크 소개'에서 Netty 프레임워크에 대해서 간단하게 알아봤다. 백문이 불여일견이라고 실제로 동작하는 Netty 애플리케이션 코드를 보고 눈으로 확인하는게 더 중요할 수도 있다. 이번 포스트에서는 지난번 포스트에서 구현한 서버에 문자열을 전송하는 클라이언트를 Netty 프레임워크로 구현해보겠다. (관련글 : [Java] 간단한 Netty Server 예제) 우선 메인 클래스다 package SimpleNettyServer; import java.net.InetSocketAddress; import java.util.Scanner; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; import .. 2021. 5. 16. [Java] 간단한 Netty Server 예제 코드 앞서 '[Java] Netty 프레임워크 소개'에서 Netty 프레임워크에 대해서 간단하게 알아봤다. 백문이 불여일견이라고 실제로 동작하는 Netty 애플리케이션 코드를 보고 눈으로 확인하는게 더 중요할 수도 있다. 이번 포스트에서는 클라이언트의 입력을 그대로 응답으로 돌려주는 에코(Eco) 서버를 Netty 프레임워크로 구현해보겠다. 동작하는 전체 에코서버 코드는 다음과 같다. 우선 메인 클래스다. package SimpleNettyServer; import java.net.InetSocketAddress; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; import io.netty.channel.ChannelFut.. 2021. 5. 15. [Java] Netty 프레임워크 소개 Netty 프레임워크 소개 Netty 프레임워크는 전세계 개발자들이 사용하는 자바 네트워크 애플리케이션 프레임워크다. Netty의 공식 홈페이지(netty.io)에서는 'Netty는 비동기 이벤트 기반 네트워크 응용프로그램 프레임워크입니다'라고 소개하고 있다. Netty는 아파치 프로젝트의 다양한 오픈소스들은 물론 카카오와 라인, 네이버는 물론 애플, 트위터 등에서도 사용되고 있다. 한국 개발자인 이희승님이 창시자로 알려져있다. (관련자료 : 비동기를 사랑하는 오픈소스 개발자, 이희승 - LINE Engineering) 네티 이전에도 이런 프레임워크들이 있었겠지만 대부분 자바 네트워크 프로그래밍은 Java NIO를 이용해 진행했다. 물론 Java NIO 역시 강력하지만 순수 NIO만을 이용해서 네트워크 .. 2021. 5. 14. [Java] 원격 디버깅 사용하기 (IntelliJ, Eclipse) 자바로 만들어진 프로그램은 JVM을 통해서 실행이 된다. JVM은 '원격 디버깅(Remote Debugging)'이라는 매우 편리하면서 강력한 기능을 제공한다. 원격 디버깅 기능을 이용해서 로컬 머신이 아닌 서버에서 동작하는 자바 프로그램을 IntelliJ, Eclipase 같은 IDE를 통해 원격으로 디버깅할 수 있다. 이번 포스트에서는 도커(Docker)를 이용해 컨테이너 환경에서 자바 프로그램을 구동한 다음 호스트 머신에서 원격 디버깅으로 도커 컨테이너 안쪽에서 동작하는 자바 프로그램을 원격 디버깅해보겠다. 도커가 아닌 다른 머신에서 구동하는 자바 프로그램에 대한 원격 디버깅도 크게 다르지 않을 것이다. 실행할 자바 프로그램 우선 다음 자바 프로그램을 도커 컨테이너에서 실행해보자. public cl.. 2021. 5. 5. 이전 1 ··· 6 7 8 9 10 11 12 다음