포스트464 [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] 예외처리 - Throwable, Exception, Error 1. 자바 예외처리(Exception Handling) 자바 프로그램이 동작하면서 다양한 문제들을 만나게 된다. 개발자의 로직에 헛점이 생겨서 발생하는 문제도 있고, 자바 프로그램이 실행되는 JVM에서 문제가 생기는 경우, 사용자가 잘 못된 입력을 하는 경우도 있다. 자바의 예외처리(Exception Handling)은 프로그램의 사소한 문제가 시스템 전체를 망가트리지 않도록하는 안전장치다. 견고한(Robust) 소프트웨어를 작성하기 위해서는 애플리케이션이 실행되면서 만날 수 있는 이런 문제들에 대해서 적당하게 처리하는 것이 필요하다. 1.1 Throwable 클래스 자바는 Throwable 객체에 문제의 상황에 대한 설명과 문제가 발생했을 때의 상황을 저장해서 throw 구문을 통해 상위 메소드로 전달.. 2021. 5. 13. [Hadoop] 'Unable to load native-hadoop library for your platform' 에러 하둡 클라이언트를 통해서 데이터노드(Datanode)에 있는 데이터를 읽다보면 로그 파일에 다음과 같은 에러가 찍혀있는 경우가 있다. Unable to load native-hadoop library for your platform ShortCircuit Read라는 기능의 코드리뷰를 하다가 원격 디버거로 들여다볼라고 돌렸는데 이런 에러가 발생했었다. 에러 메시지의 내용은 libhadoop 라이브러리가 로드되지 않았다는 의미다. 하둡 클라이언트의 동작에는 문제가 없다. 다만 ShortCircuit Read 기능이 제대로 돌지 않기 때문에 성능 저하가 발생한다. 해결방법 이 문제를 해결하기 위해 libhadoop 라이브러리를 제대로 로드할 수 있도록 설정을 변경해줘야한다. 일반적으로 libhadoop.so.. 2021. 5. 12. [Python] 'PyInstaller' 설치 및 사용법 - 파이썬 바이너리(실행파일) 만들기 PyInstaller는 파이썬으로 작성된 소스파일(.py 확장자)을 바이너리 파일(예를 들어 .exe 파일)로 만들어주는 프로그램이다. 작성된 파이썬 코드를 실행하기 위해 필요한 라이브러리들을 한번에 묶어서 배포할 수 있고, 파이썬으로 작성된 코드를 사용자로부터 숨기고 싶을 때 PyInstaller의 사용을 고려해볼 수 있다. PyInstaller에 대한 자세한 내용은 PyInstaller 홈페이지에서 확인할 수 있다. (링크 : PyInstaller 홈페이지) PyInstaller 설치 PyInstaller는 파이썬 패키지 관리 도구인 pip를 이용해서 설치할 수 있다. 다음 명령을 실행하면 된다. pip install pyinstaller 만약 pip가 설치되어 있지 않은 상황이라면 pip 설치를 해.. 2021. 5. 11. [Python] 기본 연산자들의 시간복잡도(Big-O) 정리 알고리즘 문제를 풀다보면 작성한 알고리즘의 시간복잡도(Big-O) 값을 신경써야한다. 특히 정렬이나 탐색같은 메소드는 파이썬에서 제공하는 타입의 기본 연산자들을 사용하는 경우가 많다. 이 경우 내장 메소드들의 시간 복잡도를 정확하게 알고 있어야 효율적인 알고리즘을 작성할 수 있다. 파이썬의 기본 타입들과 관련된 메소드들과 시간복잡도를 정리해보았다. 우선 변수에 값을 할당하는 바인딩(Binding)의 시간 복잡도는 O(1)이다. 다시말해서 'a = 1'이라는 할당문은 O(1)의 시간에 종료된다. 마찬가지로 산술연산, 값에 대한 비교 연산들도 모두 O(1)의 시간복잡도를 갖는다. 리스트(list) 타입의 메소드와 시간복잡도(Big-O) 리스트 타입이 제공하는 내장 메소드들과 시간 복잡도를 정리해보자. 리스트.. 2021. 5. 10. 이전 1 ··· 37 38 39 40 41 42 43 ··· 52 다음