Back-end/JAVA & Spring135 [Java] BufferedReader/BufferedWriter 자바 입출력 [자바 입출력 함수] BufferedReader / BufferWriter BufferedReader/BufferedWriter은 이름처럼 버퍼를 이용해서 읽고 쓰는 함수입니다. 이 함수는 버퍼를 이용하기 때문에 이 함수를 이용하면 입출력의 효율이 비교할 수 없을 정도로 좋아집니다. 한 번 거쳐가므로 느릴거 같은 데 왜 빠르냐고요? 하드디스크는 원래 속도가 엄청 느립니다. 하드뿐만 아니라 키보드나 모니터와 같은 외부 장치와의 데이터 입출력은 생각보다 시간이 걸리는 작업이예요. 버퍼링 없이 키보드가 눌릴 때마다 눌린 문자의 정보를 목적지로 바로 이동시키는 것보다 중간에 메모리 버퍼를 둬서 데이터를 한데 묶어서 이동시키는 것이 보다 효율적이고 빠릅니다. 그냥 전송하게 되면 CPU와 성능 갭이 많이 나서 비효.. 2021. 5. 12. [Java] Process, ProcessBuilder 자바에서 프로세스 다루기 1. 자바에서의 Process Runtime 클래스는 자바 런타임 환경을 캡슐화 한다. Runtime 클래스는 new 할 수 없지만 Runtime.getRuntime ()이라는 static 메소드를 이용하여 현재 실행중인 프로그램의 Runtime클래스에 대한 참조를 얻을 수 있다. Runtime의 exec() 메소드를 통해 프로그램을 실행 시키고 Process에 대한 참조를 얻는다. ProcessBuilder.start() 메서드를 통해 Process에 대한 참조를 얻을 수도 있다. Process 클래스는 프로세스에서 입력, 출력을 수행( getInputStream, getOutputStream, getErrorStream ), 프로세스가 완료 될 때까지 대기( waitFor ), 프로세스의 종료 상태를.. 2021. 5. 11. [Java] Java에서 ProcessBuilder를 이용하여 OS Command 실행 1. 개요 자바 코드 상에서 OS 명령어를 실행하기 위한 방법 중 ProcessBuilder를 이용하는 예를 살펴본다. 2. 사전지식 OS 명령어 실행을 위한 Arugument는 List 형태로 전달한다. 예를 들면 다음과 같다. List command = new ArrayList(); command.add("ls"); command.add("-l"); command.add("/"); 3. 예제 코드 ProcessBuilder processBuilder = new ProcessBuilder(command); try { System.out.println("run " + StrUtil.getListString(command)); Process process = processBuilder.start(); Bu.. 2021. 5. 11. [Java] ProcessBuilder 클래스 - 운영체제 프로세스 생성 이전 버전에서는 Runtime.exec()을 이용해 프로세스를 실행할 수 있습니다. 그런데 이 방법은 When Runtime.exec() won't에서도 소개 됐듯이 표준 입력과 출력에 대한 제한된 버퍼 사이즈로 인해 하위 프로세스가 block 되거나 데드락이 되기도 하는 문제가 있었습니다. 자바 JDK 7 이상에서는 이러한 문제점을 해결 하고자 Proccess Builder 클래스가 소개됩니다. 이 클래스는 운영체제 프로세스 생성할 때 사용합니다. Process Builder 클래스 인스턴스에는 프로세스를 제어할 때 필요한 유용한 속성을 제어합니다. 예를 들어 start() 메서드는 입력 받은 커맨드를 실행해 새로운 프로세스를 생성 합니다. 생성자의 역할 ProcessBuilder(List 커맨드): .. 2021. 5. 11. [Java] ExecutorService를 사용하는 방법 java.util.concurrent.Executors와 java.util.concurrent.ExecutorService를 이용하면 간단히 쓰레드풀을 생성하여 병렬처리를 할 수 있습니다. ExecutorService 생성 Executors는 ExecutorService 객체를 생성하며, 다음 메소드를 제공하여 쓰레드 풀을 개수 및 종류를 정할 수 있습니다. newFixedThreadPool(int) : 인자 개수만큼 고정된 쓰레드풀을 만듭니다. newCachedThreadPool(): 필요할 때, 필요한 만큼 쓰레드풀을 생성합니다. 이미 생성된 쓰레드를 재활용할 수 있기 때문에 성능상의 이점이 있을 수 있습니다. newScheduledThreadPool(int): 일정 시간 뒤에 실행되는 작업이나, 주.. 2021. 5. 11. [Java] Future 사용 방법 Future는 비동기적인 연산의 결과를 표현하는 클래스입니다. Future를 이용하면 멀티쓰레드 환경에서 처리된 어떤 데이터를 다른 쓰레드에 전달할 수 있습니다. Future 내부적으로 Thread-Safe 하도록 구현되었기 때문에 synchronized block을 사용하지 않아도 됩니다. 예제를 보면 더 쉽게 이해가 됩니다. 간단한 Future 예제 아래 예제에서는 두개의 Thread가 생성되어있고, Future를 이용하여 어떤 쓰레드에서 처리된 데이터를 다른 쓰레드로 전달합니다. ExecutorService executor = Executors.newSingleThreadExecutor(); Future future = executor.submit(() -> { System.out.println(L.. 2021. 5. 11. [Java] Collection이란? Collection 개념, Collection Framework 구조 Collection Framework 이란? 1. collection 2. map >> 크게 이 두 가지를 만들기 위한 인터페이스들, 인터페이스를 구현한 클래스들, 그리고 관련 알고리즘. ( A framework, by definition, is a set of interfaces that force you to adopt some design practices.) Framework는 쉽게 말하면 인터페이스 집합으로, 개발자의 설계 구현을 도와주는 밑바탕이라 생각하면 됨. 즉, collection framework는 collection 자료구조들을 구현할 수 있도록 도와주는 인터페이스 도구들이다. 우리는 이제 이 framework에서 깔아준 밑바탕 인터페이스들과 이걸 implement한 클래스들(Arra.. 2021. 5. 11. [Java] 문자 Stream : InputStreamReader / OutputStreamWriter 문자 Stream : InputStreamReader / OutputStreamWriter Stream은 바이트 단위는 바이트 단위로 연결하고 캐릭터 단위는 캐릭터 단위로 연결하는 것이 원칙이다. 하지만 캐릭터는 결국 바이트 2개가 모여서 구성한 데이터로 볼 수 있다. 따라서 두 가지 서로 다른 기준을 호환할 수 있는 통로가 제공되어야 한다. 이 두 클래스는 Stream 이라는 말고 Reader/Writer 라는 말을 동시에 가지고 있다. 결론적으로 이 두 클래스는 둘 사이의 연결을 담당한다고 볼 수 있다. Stream : 바이트 단위의 입출력 Reader/Writer : 캐릭터 단위의 입출력 InputStreamReader / OutputStreamWriter는 바이트 스트림에서 문자 스트림으로, 또는.. 2021. 5. 11. [Java] StringBuilder 사용법 및 사용하는 이유 StringBuilder 사용법 및 사용하는 이유 자바에서 문자열하면 자연스럽게 String이 떠오른다. String은 소위 불변(immutable)객체라고 한다. String str1 = "abc";, String str2 = "def"; 2개의 String객체가 있을 때, 만약 str1 + str2;와 같은 연산을 하게 되면 새로운 String을 생성한다. 즉, String객체와 String객체를 더하는(+)행위는 메모리 할당과 메모리 해제를 발생시키며 더하는 연산이 많아진다면 성능적으로 좋지 않다. 그래서 나온 것이 StringBuilder이다. 이름만 봐도 String 잘 만들게(?) 생겼다. StringBuilder는 String과 문자열을 더할 때 새로운 객체를 생성하는 것이 아니라 기존의 데.. 2021. 5. 11. 이전 1 ··· 6 7 8 9 10 11 12 ··· 15 다음 728x90 반응형