Java95 [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] 문자열 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 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] 예외처리 - Throwable, Exception, Error 1. 자바 예외처리(Exception Handling) 자바 프로그램이 동작하면서 다양한 문제들을 만나게 된다. 개발자의 로직에 헛점이 생겨서 발생하는 문제도 있고, 자바 프로그램이 실행되는 JVM에서 문제가 생기는 경우, 사용자가 잘 못된 입력을 하는 경우도 있다. 자바의 예외처리(Exception Handling)은 프로그램의 사소한 문제가 시스템 전체를 망가트리지 않도록하는 안전장치다. 견고한(Robust) 소프트웨어를 작성하기 위해서는 애플리케이션이 실행되면서 만날 수 있는 이런 문제들에 대해서 적당하게 처리하는 것이 필요하다. 1.1 Throwable 클래스 자바는 Throwable 객체에 문제의 상황에 대한 설명과 문제가 발생했을 때의 상황을 저장해서 throw 구문을 통해 상위 메소드로 전달.. 2021. 5. 13. [Maven] 'Received fatal alert: protocol_version', 'peer not authenticated' 에러 해결방법 개발서버의 환경이 바뀌는 경우 '메이븐(Maven)'이 'Received fatal alert: protocol_version', 'peer not authenticated'에러를 발생시키면서 실패하는 경우가 있다. 다음과 같은 에러 메시지를 출력하면서 실패하게 된다. ... [ERROR] Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5: Could not transfer artifact org.apache.. 2021. 5. 5. [Java] 원격 디버깅 사용하기 (IntelliJ, Eclipse) 자바로 만들어진 프로그램은 JVM을 통해서 실행이 된다. JVM은 '원격 디버깅(Remote Debugging)'이라는 매우 편리하면서 강력한 기능을 제공한다. 원격 디버깅 기능을 이용해서 로컬 머신이 아닌 서버에서 동작하는 자바 프로그램을 IntelliJ, Eclipase 같은 IDE를 통해 원격으로 디버깅할 수 있다. 이번 포스트에서는 도커(Docker)를 이용해 컨테이너 환경에서 자바 프로그램을 구동한 다음 호스트 머신에서 원격 디버깅으로 도커 컨테이너 안쪽에서 동작하는 자바 프로그램을 원격 디버깅해보겠다. 도커가 아닌 다른 머신에서 구동하는 자바 프로그램에 대한 원격 디버깅도 크게 다르지 않을 것이다. 실행할 자바 프로그램 우선 다음 자바 프로그램을 도커 컨테이너에서 실행해보자. public cl.. 2021. 5. 5. [Java] Iterable을 컬렉션(Collection)으로 바꾸는 방법 자바 라이브러리를 사용하다보면 Iterable 객체를 받아와서 컬렉션(Collection) 객체로 바꿔 쓰고 싶은 경우가 많다. 그냥 일반적인 자바 소스코드로 작성해서 사용하는 방법도 있고, 구아바(Guava), Apache Commons 라이브러리를 이용한 방법이 있다. Plain Java 코드 우선 Java8 이상의 JDK를 사용하는 경우 다음을 사용할 수 있다. List result = new ArrayList(); iterable.forEach(result::add); iterable 객체에서 제공하는 forEach() 메소드를 이용해서 list를 채워서 사용한다. 혹은 Spliterator 클래스를 이용해서 생성할 수도 있다. List result = StreamSupport.stream(ite.. 2021. 4. 29. 이전 1 ··· 5 6 7 8 9 10 11 다음