Java Category/Java80 [Java] 서버의 동시 요청 처리(스레드풀 이용) 이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 서버의 다중 작업 위와 같이 TCP와 UDP 서버에서는 accept()와 receive() 를 제외한 요청 처리 코드를 별도의 스레드에서 작업을 해야 서버에 들어오는 클라이언트의 무수한 요청을 동시에 처리할 수 있다. 스레드를 처리할 때 주의할 점은 클라이언트의 폭증으로 인한 서버의 과도한 스레드 생성을 방지해야 한다는 것이다. 자바에서는 이러한 과도한 스레드 생성을 방지하기 위해 스레드풀을 제공한다. 스레드풀은 작업 처리 스레드 수를 제한해서 사용하기 때문에 갑작스런 클라이언트 폭증이 발생해도 크게 문제가 되지 않는다. 다만 작업 큐의 대기 작업이 증가되어 클라이언트에서 응답을 늦게.. Java Category/Java 2023. 8. 14. [Java] UDP 네트워킹 이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. IP 주소로 프로그램들이 통신할 때는 약속된 데이터 전송 규약이 있다. 이것을 전송용 프로토콜이라고 부른다. 인터넷에서 전송용 프로토콜은 아래의 두 가지로 나뉜다. TCP(Transmission Control Protocol) : 우선 연결 후 데이터 전송 UDP(User Datagram Protocol) : 우선 데이터 전송 후 연결 UDP 네트워킹 UDP는 발신자가 일방적으로 수신자에게 데이터를 보내는 방식이다. TCP처럼 연결 요청 및 수락 과정이 없기 때문에 TCP보다 전송 속도가 상대적으로 빠르다. UDP는 고정 회선이 아니라 여러 회선을 통해서 데이터가 전송되기 때문에 특정.. Java Category/Java 2023. 8. 13. [Java] TCP/IP 네트워킹 이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. IP 주소로 프로그램들이 통신할 때는 약속된 데이터 전송 규약이 있다. 이것을 전송용 프로토콜이라고 부른다. 인터넷에서 전송용 프로토콜은 아래의 두 가지로 나뉜다. TCP(Transmission Control Protocol) : 우선 연결 후 데이터 전송 UDP(User Datagram Protocol) : 우선 데이터 전송 후 연결 TCP 네트워킹 TCP는 연결형 프로토콜로 상대방이 연결된 상태에서 데이터를 주고받는다. 클라이언트가 연결 요청을 하고 서버가 연결을 수락하면 통신 회선이 고정되고, 데이터는 회선을 통해 전달된다. 회선 고정 TCP/IP 통신에서는 클라이언트와 서버 간.. Java Category/Java 2023. 8. 12. [Java] 네트워크 개념 & IP 주소 얻기 이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 네트워크 네트워크 : 여러 컴퓨터들을 통신 회선으로 연결한 것 LAN(Local Area Network) : 가정, 회사, 건물, 특정 영역에 존재하는 컴퓨터를 연결한 것 WAN(Wide Area Network) : LAN을 연결한 것 WAN이 우리가 흔히 말하는 인터넷이다. Switch(Hub) : 특정 영역에 존재하는 컴퓨터를 연결하는 물리적인 장치 스위치와 허브의 개념은 엄연히 다르지만 특정 영역에 존재하는 컴퓨터를 연결하는 물리적인 장치라는 면에서 공통점을 가진다. 서버와 클라이언트 네트워크에서 유무선으로 컴퓨터가 연결되어 있다면 실제로 데이터를 주고받는 행위는 프로그램들이 한.. Java Category/Java 2023. 8. 11. [Java] File과 Files 클래스 이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. java.io 패키지와 java.nio.file 패키지는 파일과 디렉토리 정보를 가지고 있는 File과 Files 클래스를 제공한다. Files는 File을 개선한 클래스로, 좀 더 많은 기능을 가지고 있다. File 클래스 File 클래스로부터 File 객체를 생성하는 방법은 아래와 같다. File file = new File("경로"); 경로 구분자는 OS마다 조금씩 다르다. 윈도우에서는 \\ 또는 /를 둘 다 사용할 수 있고, 맥 OS 및 리눅스에서는 /를 사용한다. 아래는 윈도우에서 File 객체를 생성하는 코드이다. File temp = new File("C:/Temp/fil.. Java Category/Java 2023. 8. 10. [Java] 보조 스트림(문자 변환, 성능 향상, 기본 타입, 프린트, 객체) 이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 보조 스트림이란 다른 스트림과 연결되어 여러 가지 편리한 기능을 제공해 주는 스트림을 말한다. 보조 스트림은 자체적으로 입출력을 수행할 수 없기 때문에 입출력 소스로부터 직접 생성된 입출력 스트림에 연결해서 사용해야 한다. 입출력 스트림에 보조 스트림을 연결하려면 보조 스트림을 생성할 때 생성자 매개값으로 입출력 스트림을 제공하면 된다. 보조스트림 변수 = new 보조스트림(입출력스트림); InputStream is = new FileInputStream("..."); Reader reader = new InputStreamReader(is); 보조 스트림은 또 다른 보조 스트림과 연.. Java Category/Java 2023. 8. 9. [Java] 바이트 & 문자 입출력 스트림 이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 입출력 스트림 자바는 입력 스트림과 출력 스트림을 통해 데이터를 입출력한다. 스트림은 단 방향으로 데이터가 흐르는 것을 말한다. 입력 스트림 : 입력 장치 -> 프로그램 출력 스트림 : 프로그램 -> 출력 장치 프로그램을 기준으로 데이터가 들어오면 입력스트림, 데이터가 나가면 출력 스트림이 된다. 프로그램이 다른 프로그램과 데이터를 교환하려면 양쪽 모두 입력 스트림과 출력 스트림이 필요하다. 어떤 데이터를 입출력하느냐에 따라 스트림은 아래의 두 종류로 구분할 수 있다. 바이트 스트림 : 그림, 멀티미디어, 문자 등 모든 종류의 데이터를 입출력할 때 사용 문자 스트림 : 문자만 입출력할.. Java Category/Java 2023. 8. 8. [Java] 스트림(정렬, 루핑, 매칭, 기본 집계, 커스텀 집계, 수집, 병렬 처리) 이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 요소 정렬 정렬은 요소를 오름차순 또는 내림차순으로 정렬하는 중간 처리 기능이다. 요소를 정렬하는 메소드는 아래와 같다. Comparable 구현 객체의 정렬 스트림의 요소가 객체일 경우 객체가 Comparable을 구현하고 있어야만 sorted() 메소드를 사용하여 정렬할 수 있다. 만약 내림차순으로 정렬하고 싶다면 Comparator.reverseOrder() 메소드가 리턴하는 Comparator를 매개값으로 제공하면 된다. 아래의 더보기를 누르면 예제 코드를 볼 수 있다. 더보기 Student.java public class Student implements Comparable .. Java Category/Java 2023. 8. 7. [Java] 스트림(스트림 개념, 스트림 얻기, 필터링, 매핑) 이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 스트림이란 Java 8부터 컬렉션 및 배열의 요소를 반복 처리하기 위해 스트림을 사용할 수 있다. 스트림은 요소들이 하나씩 흘러가면서 처리된다는 의미를 가지고 있다. Stream은 Iterator와 비슷한 반복자이지만, 아래와 같은 차이점을 가지고 있다. - 내부 반복자이므로 처리 속도가 빠르고 병렬 처리에 효율적이다. (내부에서 멀티 스레딩으로 처리) - 람다식으로 다양한 요소 처리를 정의할 수 있다. - 중간 처리와 최종 처리를 수행하도록 파이프 라인을 형성할 수 있다.(필터링 후 원하는 데이터만 추출 및 가공) List 컬렉션의 stream() 메소드로 Stream 객체를 얻고,.. Java Category/Java 2023. 8. 6. [Java] 람다식 이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 람다식의 개념 자바는 함수형 프로그래밍을 위해 Java 8부터 람다식을 지원한다. 자바는 객체지향 프로그래밍 언어로써 객체가 없이 함수가 존재할 수 없다. 클래스 내부에 무조건 함수가 있어야 하기 때문에 자바에서는 함수를 함수라 부르지 않고 메소드라고 부른다. 함수형 프로그래밍 함수형 프로그래밍이란 함수를 정의하고 이 함수를 데이터 처리부로 보내 데이터를 처리하는 기법을 가진다. 데이터 처리부는 데이터만 가지고 있을 뿐, 처리 방법이 정해져 있지 않아 외부에서 제공된 함수에 의존한다. 즉, 함수에 어떤 처리코드가 적혀있느냐에 따라 해당 데이터를 가지고 발생하는 실행결과가 달라질 수 있.. Java Category/Java 2023. 8. 5. [Java] 컬렉션 프레임워크(LIFO & FIFO, 동기화된 컬렉션, 수정할 수 없는 컬렉션) 이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. LIFO & FIFO LIFO는 스택(Stack) 자료구조를 뜻하고, FIFO는 큐(Queue) 자료구조를 뜻한다. 컬렉션 프레임워크는 LIFO 자료구조를 제공하는 스택 클래스와 FIFO 자료구조를 제공하는 큐 인터페이스를 제공하고 있다. Stack Stack 클래스는 LIFO 자료구조를 구현한 클래스이다. 아래는 Stack 객체를 생성하는 방법이다. Stack stack = new Stack(); Stack stack = new Stack(); Stack 클래스는 Vector 클래스를 상속했다. 따라서 Stack 객체는 동기화 처리가 되어있다. 즉, 멀티스레딩 환경에서 안전하게 처리.. Java Category/Java 2023. 8. 4. [Java] 컬렉션 프레임워크(List, Set, Map) 이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 컬렉션 프레임워크(Collection Framework) 자바는 널리 알려져 있는 자료구조를 바탕으로 객체들을 효율적으로 추가, 삭제 검색할 수 있도록 관련된 인터페이스와 클래스들을 java.util 패키지에 포함시켜 놓았다. 이들을 총칭해서 컬렉션 프레임워크라고 부른다. 컬렉션 프레임워크는 몇 가지 인터페이스를 통해서 다양한 컬렉션 클래스를 이용할 수 있도록 설계되어 있다. 주요 인터페이스로는 List, Set, Map이 있다. 컬렉션 프레임워크 배열은 길이가 정해지면 바꿀 수 없었지만, 컬렉션 프레임워크는 길이가 가변적이다. 컬렉션 프레임워크는 인터페이스이기 때문에 인터페이스에 정.. Java Category/Java 2023. 8. 3. 이전 1 2 3 4 5 ··· 7 다음