개발/Java

    Java Datagram 관련 클래스

    TCP와는 다르게 클래스 하나에서 보내는 역할과 받는 역할을 모두 수행할 수 있다. 스트림을 사용하지 않고 DatagarmPacket이라는 클래스를 사용함 javadocs에는 아래와 같이 기술되어 있다. datagram packet를 나타내는 클래스이다. Datagarm 패킷은 비연결성 packet 전송 service에 쓰인다. 각각의 message는 여러개의 packets은 한 machine에서 다른 machine으로 전송된다. 순서가 보장되지 않고, 전송이 보장되지 않는다. * This class represents a datagram packet. * * Datagram packets are used to implement a connectionless packet * delivery service..

    자바 Socket 클래스

    package java.net에 선언된 클래스. 데이터를 보내는 쪽에서 객체를 생성하여 사용한다. 데이터를 보내는 쪽에서 많이 사용하고. 원격에 있는 장비와의 연결 상태를 보관하기 위한 클래스 javadocs에는 아래와 같이 기술되어 있다. "소켓은 두개의 machine의 연결을 위한 endpoint이다." 실제 동작은 SocketImpl의 instance에 의해 동작한다. 데이터를 보내기 위한 클래스이고, 데이터를 받는 서버에서는 클라에서 접속을 하면 Socket 객체를 생성하지만, 데이터를 보내는 쪽에서는 직접 생성해야 한다. * This class implements client sockets (also called just * "sockets"). A socket is an endpoint for..

    Funcitional Programming (함수형 프로그래밍)

    프로그래밍 패러다임 프로그래밍 패러다임은 프로그래머에게 프로그래밍의 관점을 갖게하고 결정하는 역할을 한다. 명령형 프로그래밍: 프로그래밍의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명하는 방식 알고리즘을 명시하고 목표는 명시 안함 절차지향 프로그래밍: 수행되어야 할 연속적인 계산 과정을 포함하는 방식 (C, C++) 객체지향 프로그래밍: 객체들의 집합으로 프로그램의 상호작용을 표현 (C++, Java, C#) 선언형 프로그래밍: 어떤 방법으로 해야 하는지(How)를 나타내기보다 무엇(What)과 같은지를 설명하는 방식 알고리즘은 명시하지 않고 목표만 명시 함수형 프로그래밍: 순수 함수를 조합하고 소프트웨어를 만드는 방식 (클로저, 하스켈, 리스프) 거의 모든 것을 순수 함수로 나누어 문제를 해결..

    Throwable, Exception Class

    https://codedragon.tistory.com/4447#:~:text=%C2%B7%20Throwable%20%ED%81%B4%EB%9E%98%EC%8A%A4%EB%8A%94%20%EB%AA%A8%EB%93%A0%20%EC%98%88%EC%99%B8,%ED%81%B4%EB%9E%98%EC%8A%A4%EC%9D%98%20%EB%B6%80%EB%AA%A8%20%ED%81%B4%EB%9E%98%EC%8A%A4%EC%9E%85%EB%8B%88%EB%8B%A4.&text=RuntimeException%20%ED%81%B4%EB%9E%98%EC%8A%A4%EB%A5%BC%20%EC%83%81%EC%86%8D%EB%B0%9B%EB%8A%94,%EC%98%88%EC%99%B8%EB%93%A4%EB%A1%9C%2..

    SplitIterator

    Primitive Wrapper Class

    자바는 모든 기본 타입은 값을 갖는 객체를 생성할 수 있음 래퍼 클래스로 감싸고 있는 기본 타입 값은 외부에서 변경할 수 없다. 만약 값을 변경하고 싶다면 새로운 포장 객체를 만들어야 한다. 자바에서 Primitive 타입을 객체화 하기 위한 rapper 클래스가 있다. 객체로 만들어 null을 넣거나, 메소드를 사용할 수 있고, toString() 메소드를 사용해 String 타입으로 바로 변환할 수 있음. List등의 컬렉션에 참조형 타입의 객체를 넣기 위해서 Wrapper 클래스로 한번 감싼것. Autoboxing : Primitive를 Wrapper Class의 인스턴스로 변환 Autounboxing : 그 반대의 과정 Integer num = 17; // 자동 박싱 int n = num; //자..

    java.util.collections 총정리 List편

    저번의 queue에 이어 list에 대해서도 알아보자. (javadoc, 구현 코드를 중심 분석해볼 예정) Collection List AbstactionCollection AbstractList ArrayList AbstractSequentialList LinkedList Vector Stack List sequence라고도 알려진 순서가 있는 collection이다. 각각의 원소가 어디에 있는지 알 수 있다. 정수인 인덱스를 통해, 원소에 접근할 수 있고, 검색할 수 있다. Set과는 다르게, 일반적으로 중복을 허용한다. null인 원소를 허용한다. public interface List extends Collection * An ordered collection (also known as a seq..

    java.util.collections 총정리 Queue편

    저번의 set에 이어 queue에 대해서도 알아보자. javadoc, 직접 코드를 확인해보면서 분석해보자. 아래와 같은 상속, 구현 구조를 띄고 있다. Collection Queue Deque ArrayDeque AbstractQeue PrioirtyQueue Queue public interface Queue extends Collection 위와 같이 Collection을 확장하고 있다. javadocs에 기술된 내용을 의역해보면 아래와 같다 1.5에서 소개됨. 처리하기 전에 elements들을 담아두기 위해 설계된 collection이다. 기본적인 collection의 연산 외에 추가적인 insertion, extraction, inspection 연산을 제공한다. 각각의 메소드는 연산에 따라 두 ..

    Netty란?

    Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming such as TCP and UDP socket server. 2009년 Ryan Dahl은 수천개의 동시 연결을 처리할 수 있는 Apache Http Server의 제한된 성능으로 인해 Node.js를 발명. JS Engine + Event Loop, I/O를 결합함. 완전 새로운 개념은 아님. 이미 자바에 1.4 NIO가 있었음. Netty는 이를 ..